Document approval workflow for accounting: a 2026 guide
How to design a document approval workflow for accounting teams. Rules, deadlines, escalation, external approvers. Real examples and checklist.
What you will learn in this article
- The four required components of every approval workflow
- Typical failures of manual approval over email and chat
- The difference between a rule-based system and ad-hoc routing
- A real-world scenario of a EUR 2,000+ invoice from receipt to approval
- What SmartDocto in this area actually can and cannot do
Accounts payable teams approve invoices through a mix of forwarded emails, WhatsApp screenshots, and verbal sign-off, then spend hours reassembling that proof for the auditor at year-end. The work is invisible until something breaks: a missed payment deadline, a late-fee notice, or an auditor asking who exactly signed off on a EUR 80,000 invoice in March. A document approval workflow is a rule-based system that decides who approves what, in what order, with what deadline, and what happens when the deadline passes.
What is a document approval workflow?
A document approval workflow is the rule-based system that takes a document from arrival to a recorded binding decision (approve, reject, or send back). It replaces ad-hoc routing over email or chat with explicit, auditable rules. Every workflow has four required components.
Trigger
The condition that starts the flow. Typically a document type combined with a value threshold or a field condition (for example, supplier invoices over EUR 50,000). Without an explicit trigger the system cannot decide whether a document needs approval.
Routing rule
The rule that decides who receives the request. Routing maps a matched document to one or more approvers, optionally based on amount bands, cost centers, or supplier groups. Good routing rules are deterministic: the same input always produces the same approver list.
Deadline and reminders
Each request has a deadline (when a decision is expected) and a reminder cadence (when the approver is nudged). Reminders are configurable per ruleset, typically every 24 hours up to a capped number, then they stop and the request waits for escalation.
Escalation path
What happens when the deadline approaches and the assignee has not acted. A defined escalation target receives the handoff so the request never stalls. Good systems make escalation a human reassignment, not a silent auto-approval.
Why manual approval breaks down
Email-and-chat approval works at small scale and quietly fails as volume grows. Below are the six failure modes finance teams report most consistently when they move off manual approval.
No audit trail
WhatsApp screenshots and forwarded emails are not durable accounting evidence. When an auditor asks who approved a specific invoice and when, an answer assembled from memory is not defensible, and the history leaves the company with the employee.
Single point of failure
When the one person who approves invoices over a given threshold goes on a two-week holiday, the queue stops. There is no automatic fallback, payment deadlines slip, and no one is alerted until a supplier complains.
Missed payment deadlines
Without a deadline tied to each request, invoices float in personal inboxes until a supplier follows up. Late payments trigger penalties under EU late-payment rules, yet the cost is rarely tracked back to the approval process.
Inconsistent rules
Without a written ruleset, the policy lives in the head of one finance manager. The threshold for CFO approval and the rule for cross-cost-center sign-off vary by who you ask, and new joiners spend weeks learning informal rules.
Month-end bottleneck
Manual approval scales linearly with volume. At month-end close, when invoice volume spikes and journals must post on a deadline, the approval queue becomes the limiting factor. The team works late and errors increase.
No deadline visibility
A finance manager who wants to know how many invoices are sitting unapproved, and for how long, has no central view. Information lives in individual inboxes, so bottlenecks become visible only after they cause damage.
Rule-based vs manual approval
The table below contrasts a typical email-and-chat approval process with a rule-based workflow. Every row reflects capabilities SmartDocto actually has in production; rows that would overstate the product have been removed.
Manual (email/chat)
-
Trigger
A person decides to forward the document.
-
Routing
Whoever is online or whoever the sender remembers.
-
Deadline
Implicit, often inferred from supplier follow-up.
-
Audit trail
Partial. Email archive plus chat fragments, hard to reconstruct.
-
Escalation
Manual chase by the requester, usually after a supplier complaint.
-
External parties
Forward the email and hope they reply.
Rule-based workflow
-
Trigger
Document type and field conditions route automatically.
-
Routing
Defined ruleset per processing rule, deterministic per document.
-
Deadline
Explicit dueAt with configurable reminder cadence.
-
Audit trail
Per-request decision log with action, user, timestamp, and reason.
-
Escalation
Automatic reassignment to a configured escalation target.
-
External parties
Dedicated external approver role with a full user account.
How SmartDocto approaches approval workflows
SmartDocto is an AI platform for accounting firms and finance teams across the EU. The approval engine decides who reviews each document, on what deadline, and what happens when the deadline elapses. The capabilities below are verified against the product data schema.
Foundation
One ruleset per processing rule
Each processing rule (template × AI model) has exactly one approval ruleset. The schema enforces this with a unique constraint, keeping routing deterministic.
GATE validations
Configurable conditions auto-reject a document on failed business rules (missing VAT identifier, supplier not on the approved list). GATE auto-rejects, never auto-approves.
Reminder cadence
Configurable interval (1 to 720 hours, default 24) and maximum reminder count (0 to 10, default 3). Can be disabled.
Escalation target with silent fallback
On a missed deadline, the request reassigns to the escalation target. If none is set, it falls back to the first available Owner, Admin, or Approver. Requests never stall.
Advanced actions
AWAITING_INFO pause
An approver pauses a request and asks the uploader for more information. The original deadline is preserved in originalDueAt and the workflow resumes when the uploader replies. The pause has its own timeout.
Send back for correction
The approver returns the document to the uploader with a mandatory reason (API-enforced). Status moves to SENT_BACK and approval history continues without restart.
Delegation
The current assignee voluntarily hands off the request to another user (action DELEGATED). Manual, unlike escalation which is automatic. The original assignee stays in the audit history.
Parallel multi-approver
Multiple sub-rules within one ruleset create parallel requests. Typical use: independent sign-off by a department head and a cost-center owner. Sequential multi-step uses separate processing rules.
External approvers with full accounts
The EXTERNAL_APPROVER role lets clients and external advisors approve via team invitation. Full accounts, not one-time links, so the audit trail retains persistent identity.
- No transfer of approval ownership outside delegation (only the current assignee can hand off).
- No auto-approval based on AI confidence scores.
- No sequential N-step approver chain within a single ruleset.
A real workflow example
The walkthrough below uses generic values matching SmartDocto product behavior. The scenario is a single supplier invoice arriving by email, hitting a single processing rule, and proceeding through the approval engine end to end.
-
01
Supplier sends the invoice by email
A supplier emails the invoice to invoices@example-firm.com, monitored by the EMAIL upload channel. SmartDocto retrieves the attachment, runs a virus scan, and queues it for processing.
-
02
Extraction runs against the matched template
The document is identified as a supplier invoice and extracted against the configured template. Header fields and line items are parsed with field-level confidence scores.
-
03
Processing rule matches and triggers the ruleset
The supplier invoice processing rule matches and its single ApprovalRuleset loads automatically. The unique constraint prevents any ambiguity about which ruleset applies.
-
04
GATE validation passes
GATE validations run before the request is created. The VAT identifier is checked against the vendor list and the invoice total against the supplier limit. A failed GATE would auto-reject instead.
-
05
ApprovalRequest is created with deadlines
A request is created with the cost-center owner as assignee, dueAt at T+72 hours, and escalationDueAt at T+24 hours. The assignee is notified by in-app message and email.
-
06
Reminder fires before escalation
At T+24 hours, with no action from the assignee, reminder #1 is sent according to the configured cadence. The reminder repeats at the configured interval up to the maximum reminder count.
-
07
Escalation handoff to the fallback approver
When escalationDueAt is reached without a decision, the status moves to ESCALATED and the request is reassigned to the configured escalation target. The handoff is an explicit human reassignment, not auto-approval.
-
08
Fallback approver decides and outbound integration runs
The escalation target reviews and approves. Status moves to APPROVED, the approval history is sealed, and the document continues into the outbound integration to the ERP or accounting system.
Multi-level approval scenarios
Multi-level approval can mean two things. Parallel multi-approver routes the same document to several people who decide independently. Sequential multi-step routes to person A first, then to person B after A approves. SmartDocto supports parallel natively; sequential within one ruleset is not supported, so model it with separate processing rules using threshold-based routing.
Parallel multi-approver pattern
Within one ApprovalRuleset, multiple sub-rules can match the same document and each creates its own ApprovalRequest. The classic use is a department head and a cost-center owner signing off independently. The document is considered fully approved when all parallel requests close.
Threshold-based routing pattern
For sequential value-band approval, configure separate processing rules per band. Invoices under EUR 50,000 match rule A and route to the finance manager; invoices at or above EUR 50,000 match rule B and route to the CFO. The sequence lives in the routing logic, not inside a single ruleset.
Deadlines and escalation behavior
SmartDocto configures approval deadlines, not contractual SLAs. The behavior below describes what actually happens when a deadline elapses, answered as concrete questions so the rules are unambiguous.
What happens when an approver misses the first reminder?
Reminder #2 is sent at the next reminderIntervalHours interval, up to the configured maxReminders cap (default 3). After the cap, reminders stop and the request continues toward its escalation deadline without further notifications.
What happens when the escalation deadline passes?
The status moves to ESCALATED and the request is reassigned to the configured escalationTargetUserId. There is no auto-approval. Escalation is always a human handoff, recorded in the approval history with timestamp and recipient.
What if no escalation target is configured?
SmartDocto reassigns the request to the first available Owner, Admin, or Approver. The same fallback applies when the configured target is inactive. Requests never stall in limbo waiting for a user who cannot receive them.
What happens when the final dueAt deadline passes with no decision?
The status moves to ESCALATED. The data model includes an EXPIRED state, but the timeout job does not produce it in practice; the timeout always produces an escalation handoff. EXPIRED is reserved for a future state.
SmartDocto does not auto-approve documents on deadline expiry, nor when AI confidence reaches any threshold. Every approval requires an explicit decision from a human approver, or a GATE auto-rejection on a failed condition. Silent approval would invalidate the audit trail.
Audit trail and compliance
Every approval request maintains a full ApprovalHistory record. Each entry stores the action, user, previous and new status, decision, reason, optional notes, structured metadata, IP address, user agent, and timestamp. The history is append-only and survives any change to the underlying document.
This covers the accounting archive obligations and GDPR traceability requirements. An auditor can reconstruct the full decision chain.
The audit trail supports the evidence requirements of frameworks like ISO 27001, SOC 2, and GoBD: immutable decision log, per-request user attribution, timestamped status transitions, metadata traceability.
Frequently Asked Questions
How do I set up an approval workflow for invoices?
What happens when an approver misses the deadline?
Can someone outside my company approve invoices?
Does SmartDocto auto-approve documents when an SLA expires?
How many approval levels does SmartDocto support?
Can I attach approval rules to different document types separately?
A document approval workflow is the bridge between extracted data and a posted accounting entry. The right design captures who approved what, on what deadline, and with what reason, without silent shortcuts that undermine the audit trail. The pilot is the fastest way to test rules, deadlines, and escalation handoffs against your own invoice mix. Found an error in this article? Email info@smartdocto.com.