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.

01 / 08

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.

02 / 08

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.

03 / 08

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.

04 / 08

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.
05 / 08

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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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.

  8. 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.

06 / 08

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.

07 / 08

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.

08 / 08

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

Frequently Asked Questions

How do I set up an approval workflow for invoices?
Create a processing rule for your invoice template and attach a single ApprovalRuleset. Configure assignee, deadline, reminder cadence, and escalation target on the ruleset, and add GATE validations for automatic rejection on failed business rules.
What happens when an approver misses the deadline?
Reminders fire at the configured interval up to the maximum reminder count, then stop. When the escalation deadline passes, the request is reassigned to the escalation target (or to the first available Owner, Admin, or Approver if none is set).
Can someone outside my company approve invoices?
Yes. External approvers receive a team invitation, set a password, and approve under a restricted EXTERNAL_APPROVER role. They hold full accounts, not one-time links, so the audit trail keeps a persistent identity.
Does SmartDocto auto-approve documents when an SLA expires?
No. When a deadline expires, the request is reassigned and the status moves to ESCALATED. There is also no auto-approval based on AI confidence scores. Every approval requires an explicit decision.
How many approval levels does SmartDocto support?
Parallel multi-approver is native: one ruleset can create multiple ApprovalRequests via multiple matched sub-rules. Sequential N-step chains within one ruleset are not supported; for sequential value-band approval, use separate processing rules with threshold-based routing.
Can I attach approval rules to different document types separately?
Yes. Each processing rule is scoped to a document template plus an AI model, so each document type (purchase invoices, contracts, expense reports) gets its own ruleset. Routing, deadlines, and escalation targets can differ per type.

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.

David Maj, Zakladatel TechOne