Vertical SaaS · Expenses

Expense Report Automation

Expense Report Automation is the work that turns a collection of business systems into a coherent operation. ERP, CRM, e-commerce, payment, marketing, support — each is a tool.

John Kihiu12 min read

Expense report automation almost never fails on the OCR step. It fails on the policy step — the part where a submitted receipt has to be checked against a per-category limit, a per-employee approval chain, and a chart of accounts that finance actually wants to reconcile against. Get the capture right and the rest is still half the project.

Capture is a solved problem, policy is not

Receipt OCR — pulling merchant, date, amount, and currency off a photographed receipt — is commodity technology now; every expense tool from Expensify to SAP Concur does it well enough. The differentiator was never extraction accuracy. It is what happens after: does this line item match an active policy, does it need a second approver because it crossed a threshold, and does the GL coding survive an audit. Teams that treat capture as the hard part end up with a fast way to submit expenses that are wrong in the same way they were wrong on paper, just faster.

Policy rules as data, not code

The rules change every fiscal year — per-diem caps, mileage rates, receipt thresholds — and they differ by country and cost center. Hardcoding them means a code deploy every time finance updates a number. The pattern that holds up is a policy table keyed by category, region, and effective date, evaluated at submission time, with the evaluation result (approved, needs receipt, needs second approval) stored alongside the expense line so an auditor can see why a report was approved six months later without re-running the rule engine.

Store the decision, not just the rule

If policy versions change and you only store a pointer to "the policy," historical approvals become unexplainable once the policy is edited. Snapshot the applicable limit and the evaluation outcome on the expense line itself.

The approval chain is the actual workflow

Most expense automation projects underestimate how organizational the approval chain is. It is rarely a flat "manager approves." It is manager approval up to a threshold, finance approval above it, a separate path for travel versus procurement card reconciliation, and an exception path when the approving manager is also the submitter. Model the chain as a directed sequence of approval steps keyed off amount, category, and org-chart position — not as a single boolean flag on the employee record — or every reorg becomes a data migration.

YAML · POLICY RULE EXAMPLE
category: meals
region: US
effective_date: 2026-01-01
daily_limit_usd: 75
receipt_required_above_usd: 25
approval:
  - threshold_usd: 0
    approver: direct_manager
  - threshold_usd: 500
    approver: finance_controller

Reconciliation is where trust is won or lost

An automated expense system earns finance's trust the moment reconciliation stops being manual. Every approved expense needs a GL account, a cost center, and — for corporate card programs — a match against the card issuer's transaction feed. Unmatched card transactions (an employee who never submitted a report for a charge) are the single biggest source of month-end cleanup. Surface those as a queue, not a spreadsheet someone builds by hand at close.

Currency and tax add-ons are not optional

Multi-currency expense reports need the FX rate captured at transaction time, not at approval time — the two can be weeks apart and the difference matters for reimbursement accuracy. VAT/GST reclaim, where applicable, also depends on the rate and tax code on the original receipt, not a rate looked up later.

What to build vs. buy

Building expense capture and OCR from scratch is rarely worth it — the commodity vendors have years of receipt-format training data you cannot replicate cheaply. Where custom work earns its keep is the policy engine, the approval chain, and the integration into whatever ERP or accounting system already owns the chart of accounts. That is also where every off-the-shelf tool is weakest, because policy is specific to your organization in a way receipt parsing is not.

LayerBuild or buyWhy
Receipt OCR / captureBuyCommodity, high accuracy already available
Policy evaluationBuildOrg-specific rules that change yearly
Approval chainBuildTied to org chart and cost centers
GL/ERP integrationBuildNo two charts of accounts match

Wrapping up

Expense report automation succeeds when the policy and approval logic are treated as first-class, versioned data — not when the OCR is marginally better than a competitor's. Buy the capture, build the policy engine, and make sure every approved line carries enough of a snapshot that an audit six months later doesn't require reconstructing what the rules used to say.

John Kihiu
Acumatica ERP Developer · Laravel Engineer

Independent software engineer in Nairobi specialising in Acumatica customisations, Laravel backends, and tax fiscalisation integrations across East and Southern Africa.