An approval workflow is simply your sign-off rules, written down once and then applied automatically. Instead of an invoice or variation sitting in someone's inbox hoping to be noticed, it's routed to the person who needs to approve it, with a clear record of the decision at the end.
What you can route for approval
Approvals can sit in front of the moments that carry risk or cost:
- Invoices and applications — before they go out to a client.
- Variations — so scope changes are authorised, not assumed.
- Subcontractor payments — before money leaves the business.
- Timesheets — so hours are signed off by the right manager.
Building a workflow
In Settings → Approvals, create a workflow by deciding three things: what it applies to, who approves it, and any value thresholds. For example, payments under a set value might need one approver, while larger ones need two. You're encoding the rule you already follow — DuoApp just enforces it consistently.
Three questions, set once
- What needs approving — invoices, variations, payments, timesheets
- Who approves it — and in what order for multi-stage sign-off
- When extra approval kicks in — value thresholds and conditions
How it feels day to day
When something needs a decision, the approver is notified and can review and sign off from wherever they are, including the mobile app. Nothing proceeds until it's approved, so an unapproved invoice can't accidentally be sent and an unauthorised variation can't quietly become work.
A record of every decision
This is where approvals earn their keep. Every sign-off is captured — who approved it, when, and what they approved — and stored in the audit trail. When a client disputes a variation or you need to show a payment was authorised, the answer is recorded, not remembered.
Keep it simple to start
You don't need to map every possible scenario on day one. Start with the one or two approvals that matter most — usually invoices and subcontractor payments — and add more as you go. A workflow that's actually used beats an elaborate one that gets bypassed.