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
Continuous finance control systemSource evidence moves through deterministic checks and a balanced approval gate before an entry can reach the ledger.CONTROL LEDGER / 01EVIDENCE / ENTRYBANK FEEDINVOICECARDPURCHASE ORDEREVIDENCEENTRYEXACT MATCHDUPLICATEPOLICYCLEARRULES SATISFIEDREVIEWNAMED APPROVERBLOCKMISSING EVIDENCEPREPARE CONTINUOUSLYPOST WITH AUTHORITY
Fig. 1The system may prepare the entry. Evidence and authority decide whether it moves.

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.

  1. 01

    Collect

    Read the invoice inbox, bank feed, purchase orders, supplier list, and chart of accounts.

  2. 02

    Link

    Store each proposal with its source, entity, supplier, period, and approval history.

  3. 03

    Check

    Use fixed rules to check totals, duplicates, tax fields, account status, purchase order limits, and balanced entries.

  4. 04

    Suggest

    Use the model to suggest coding, explain an unusual item, and summarise an exception.

  5. 05

    Route

    Send the item to the right person based on value, risk, company rules, and missing evidence.

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

OwnerRoleResponsibility
AssistantPrepare

Extract fields, find likely matches, suggest coding, explain anomalies, and assemble the review packet.

RulesVerify

Recalculate amounts, reject duplicates, enforce tolerances, confirm required evidence, and block invalid periods.

FinanceApprove

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.

01

Evidence

Did the system link the right invoice, transaction, order, and entity?

02

Coding

Was the account, tax code, cost centre, and counterparty suggestion correct?

03

Control

Did any item clear when policy required review or more evidence?

04

Routing

Did the exception reach the right person with enough context to decide?

05

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.

  1. 01

    Followed one transaction

    Recorded its evidence, approval, posting, and correction steps.

  2. 02

    Connected read-only

    Ingested one invoice mailbox, one bank feed, and the accounting records for one entity.

  3. 03

    Added fixed checks

    Built exact matching, duplicate checks, limits, and evidence rules before adding a model.

  4. 04

    Added suggestions

    Suggested coding and summarised exceptions, with a link to every source.

  5. 05

    Ran without posting

    Compared suggestions with finance decisions while keeping the ledger read-only.

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

01

Evidence complete before review

02

Routine items matched without a manual search

03

First-pass coding accepted by finance

04

Exceptions waiting beyond their service level

05

Items changed after approval or posting

06

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.

Have a finance queue worth fixing?

Start with one kind of transaction.

Book a 20‑minute call