Case study 004
A finance system for a multi-entity company
We built a system that collects evidence, matches routine transactions, and sends exceptions to finance before the close.
- Client
- Multi-entity operations
- System
- Continuous reconciliation
- Type
- Case study
- Published
- 20 July 2026
What we built
Daily reconciliation with finance in control.
The system collects evidence, runs exact checks, suggests coding, and prepares exceptions. Unusual or unsupported items go to a named finance owner.
The finance team was finding missing evidence and unresolved transactions at the end of every month, when time was shortest.
01 / Why close is slow
Missing evidence makes the close slow.
The finance team worked across bank feeds, cards, invoice inboxes, purchase orders, contracts, and accounting systems. The information needed to explain a transaction usually existed, but it was scattered across systems and people.
This turned the close into reconstruction. Finance searched for receipts, asked who approved a supplier, checked which entity owned a cost, fixed duplicate invoices, and revisited coding decisions after the context had gone cold.
Models can read messy documents and suggest coding. Exact accounting checks are still needed. FinBalance, a 2026 reconciliation benchmark, found that six current models reached no more than 46% exact final balance-sheet accuracy across its 710-record split. The models could create plausible entries and still link them to the wrong evidence.
02 / The first build
We started with one kind of transaction.
The company operated several legal entities, bank accounts, card programmes, currencies, and approval policies. We started with invoice and bank-transaction reconciliation for one entity.
Release 01
Invoice and bank-transaction reconciliation for one entity.
- Input
- One invoice mailbox and one bank feed
- Context
- Supplier master, chart of accounts, and purchase orders
- Output
- A linked entry proposal or a complete exception packet
- Boundary
- No payment, bank-detail change, or unapproved ledger write
The first build was narrow enough to evaluate and useful enough to matter. It created the foundations needed later: source identity, evidence links, policy rules, approval routes, and a reliable audit record.
03 / How it works
Every item went through the same checks.
The accounting system stayed in place. Every proposal followed the same steps, whether it began as a clean invoice or a messy email attachment.
- 01
Collect
Read the invoice inbox, bank feed, purchase orders, supplier list, and chart of accounts.
- 02
Link
Store each proposal with its source, entity, supplier, period, and approval history.
- 03
Check
Use fixed rules to check totals, duplicates, tax fields, account status, purchase order limits, and balanced entries.
- 04
Suggest
Use the model to suggest coding, explain an unusual item, and summarise an exception.
- 05
Route
Send the item to the right person based on value, risk, company rules, and missing evidence.
- 06
Post
Use a restricted account to post the approved entry and record who approved it.
The evidence record became the centre of the system. We sent a proposal to review only when it had a source link, entity, rule result, and decision history.
04 / Who decides
The assistant prepares. Finance decides.
These were different jobs. The model could not approve its own suggestion. The account that read invoices could not also control payments or the ledger.
Extract fields, find likely matches, suggest coding, explain anomalies, and assemble the review packet.
Recalculate amounts, reject duplicates, enforce tolerances, confirm required evidence, and block invalid periods.
Own unusual coding, journal entries, tax treatment, bank-detail changes, payments, and policy exceptions.
The first version removed manual searches, prepared each decision, and had permission to take very few actions.
05 / Tests
Test the errors that matter.
We built a golden set of historical transactions and their approved evidence, coding, and decisions. We held back a full period for final testing and included clean examples, missing documents, duplicates, conflicting amounts, wrong entities, and adversarial instructions hidden in source files.
Evidence
Did the system link the right invoice, transaction, order, and entity?
Coding
Was the account, tax code, cost centre, and counterparty suggestion correct?
Control
Did any item clear when policy required review or more evidence?
Routing
Did the exception reach the right person with enough context to decide?
Correction
How often did finance change an approved suggestion after posting?
The primary safety metric was false clearance: an item the system allowed through when it should have stopped. We combined code-based checks, sampled human review, model-based grading where useful, and production monitoring.
06 / Access
Each agent received its own access.
We gave each agent its own identity and limited authority. This kept every action attributable and auditable instead of hiding the system behind one shared account.
- Separate identities for reading, drafting, approving, and writing
- Access limited by entity, account, action, and environment
- Human approval for payments, bank details, tax, and unusual journals
- Sources, rule results, model version, tool calls, approvals, and writes recorded
- Immediate access revocation and traceable corrections
- Email and attached documents treated as untrusted inputs
The reviewer saw the evidence, proposed entry, checks that passed, and the reason the item reached them before making a decision.
07 / Rollout
We started read-only and added writes later.
Before the system could change the ledger, it had to assemble the right evidence and stop at the right boundary.
- 01
Followed one transaction
Recorded its evidence, approval, posting, and correction steps.
- 02
Connected read-only
Ingested one invoice mailbox, one bank feed, and the accounting records for one entity.
- 03
Added fixed checks
Built exact matching, duplicate checks, limits, and evidence rules before adding a model.
- 04
Added suggestions
Suggested coding and summarised exceptions, with a link to every source.
- 05
Ran without posting
Compared suggestions with finance decisions while keeping the ledger read-only.
- 06
Allowed approved posts
Gave a restricted account permission to post entries after approval.
Each expansion became a new release. A second entity, new currency, or new write action changed the risk and received its own tests.
08 / Metrics
We measured whether the books were ready.
We tracked missing evidence, accepted matches, waiting exceptions, and corrected entries throughout the month.
Evidence complete before review
Routine items matched without a manual search
First-pass coding accepted by finance
Exceptions waiting beyond their service level
Items changed after approval or posting
Accounts ready for review before close
By month-end, finance reviewed prepared exceptions instead of starting with a pile of missing evidence.
Common questions
Short answers.
Can AI close the books automatically?
Current systems can collect evidence, suggest matches, and explain exceptions. Finance should still approve unusual entries, tax treatment, bank changes, and payments.
What should be automated first?
Choose a frequent, evidence-rich transaction class with clear rules and a painful manual queue. Invoice-to-transaction matching is often a better first release than broad autonomous accounting.
Does this replace the ERP or accounting system?
No. The accounting system remains the source of truth. This layer gathers evidence and prepares entries for approval.
How should approvals work?
Approval should follow consequence. Low-value exact matches may clear under an explicit policy. Unusual coding, journals, tax treatment, bank changes, payments, and missing evidence should always route to a qualified person.
Sources
Sources behind the controls.
- FinBalance: A benchmark for multi-document accounting reconciliationA June 2026 benchmark showing why plausible entries are not enough when evidence binding and final balances must be exact.
- NIST: Identity and authorization for software agentsCurrent guidance on agent identity, delegated authority, auditability, and non-repudiation.
- Anthropic: Demystifying evals for AI agentsA practical framework for combining deterministic, model-based, human, and production evaluation.
- OpenAI: Workspace agentsExamples of bounded connectors, draft and recommendation workflows, and approval before sensitive actions.
- NIST: AI Risk Management FrameworkA useful structure for mapping, measuring, managing, and governing AI risk over the system lifecycle.