01
The problem
Approval policy usually lives in a spreadsheet and a few peoples heads: under 1,000 dollars a manager signs off, over 25,000 dollars the CFO does, and everything in between depends on the cost center. Enforcing that by hand means invoices sit in a shared inbox until someone remembers to route them.
02
How it is built
- 1Webhook trigger starts the run when an invoice is ready for approval.
- 2Condition block reads the amount and cost center from the invoice record.
- 3Condition branches send the invoice down the tier its amount requires: auto-approve, manager, or executive.
- 4Approval block posts to the right owner on Slack with the invoice detail and approve or reject buttons, and carries its own timeout set with `timeoutHours`.
- 5On timeout or rejection, the Approval block routes down its escalation branch to the next tier, so nothing stalls indefinitely.
- 6ERP block posts the approved invoice with the approver, timestamp, and any comment attached to the record.
03
Why it holds up in an audit
| Control | How the template enforces it |
|---|---|
| Segregation of duties | Approver is never the requester; tiers are encoded |
| Authority limits | Threshold routing runs on every invoice, no exceptions |
| Timeliness | Approval timeout escalation prevents indefinite stalls |
| Evidence | Decision, approver, and time logged per invoice |
Want this workflow built and maintained for your finance stack?
Book a demo