Approvals add a control step to your books: when a rule matches, an invoice, expense, payment or purchase order is held and cannot post until an authorised approver signs off. Turn it on from Approvals & automation, then manage everything from Approvals.
How a rule works
A rule says which records need approval and who approves them. For each of the four entities you can set:
- An amount threshold — records at or above the amount are held. Leave it blank to hold every record of that type.
- A creator role (optional) — only records created by that role are held, so you can, say, review only what an assistant raises.
- An approver — a specific team member, or anyone with approvals access. A pinned approver is the only person who can act on those requests.
- Active — only active rules hold records. Switch a rule off to pause it without deleting it.
With no active rules, nothing is ever held — your books behave exactly as before. A rule only ever engages once it matches a submitted record.
Approving and rejecting
Held records appear in the Pending queue with their amount, who submitted them and when. Approve to clear the hold so the record posts to your books; reject to send it back with a note. Rejecting an invoice returns it to draft.
Only the assigned approver — or a member with approvals write access — can act. This is enforced on the server, so a teammate who shouldn't approve can't, even if they reach the screen. Read-only members see the queue but no action buttons.
The audit trail
The History tab records every decision: who submitted the record, who approved or rejected it, when, and any note left. Approval rules and requests are financial-control records, so changes are captured in your tamper-evident audit log.
Chase overdue invoices with a dunning ladder
A dunning ladder is a ready-made set of staged reminders that escalate on their own as an invoice ages past its due date — for example a gentle nudge at 3 days overdue, a firmer one at 7, and a final notice at 14. Install it in one click from the Dunning tab under Workflows, then edit the day thresholds, the message label and the channel for each stage, and switch the whole ladder on or off.
- Each stage fires exactly once per invoice — the first day it crosses that stage's threshold — and never again, even if the reminder job runs late or skips a day. There is no daily spam.
- It stops the moment the invoice is paid or cancelled — a settled invoice matches no stage, so no further reminders go out.
- Every reminder respects consent. Each send goes through the same consent chokepoint as the rest of the app: a client who has opted out, is on the suppression list, or is inside quiet hours is skipped automatically and the run is logged as skipped — no message is sent. You never have to police this by hand.
The Dunning tab also shows where each overdue invoice currently sits in the ladder, so you can see at a glance who has reached the final notice.
Automate it from the API
Everything here is available over the Integration API: list the pending queue, approve or reject a request, and manage rules — with the approvals:read and approvals:write scopes. AI assistants can do the same through the connected MCP tools.
Related: Team & roles, Developers & API.