Home Use Cases Work Insights About Contact
Back to Our Work

How a Financial Services Firm Built Straight-Through Invoice Processing with Exception Routing

Finance3
Open the walkthrough

Six-Step AI Workflow with Human Oversight

Each step shows the workspace, what the AI completed, and what still needs human review.

Steps 3, 4, 5 and 6 need a person. Step 4 is waiting for approval right now. Click it to open the full walkthrough.

Estimates are directional and based on stated assumptions. All names, organizations, and identifying details have been anonymized in accordance with our confidentiality agreements.

The Transformation

How a Financial Services Firm Built Straight-Through Invoice Processing with Exception Routing

Before
A clerk used to open every invoice and key what was on it.
A clerk used to match every invoice against the order by hand.
After
every invoice that arrived, read and normalised before anything is matched
three records compared, and a score that says how far apart they sit
every exception on one screen, in front of the person who can settle it
the short queue of payments only a person can release
which vendors cost us the queue, and which of those is our own doing
Executive Summary

Reads every invoice that arrives, checks it against what we ordered and what we actually received, and hands a person only the ones it cannot settle. Written for a financial services company where the work was never hard, only endless: 15,000 invoices a month across four business units, matched by three people who spent their days keying fields rather than talking to vendors. Six stations, run as a loop: what station 6 learns from the corrections changes what station 2 clears on its own.

What Was Broken

A clerk used to open every invoice and key what was on it
The real cost
A clerk used to match every invoice against the order by hand.

What We Built

Six stations and 13 subagents. Each subagent carries its own tasks and its own refusal.

A4
Arrival Watch
Poll every channel an invoice arrives on, and stamp each with its source
A3
Field Extraction
Extract vendor, invoice number, dates, totals and every line item from any layout
A3
Order Matching
Match each invoice to its purchase order by reference, then by vendor and amount
A3
Confidence Scoring
Score each match from how far the three records sit apart
A4
Authority Lookup
Read the variance size and the category against the approval matrix
A2
Case Packing
Assemble the invoice, the purchase order and the receiving record into one view
A2
Variance Reading
Read each variance back against the contract term it sits under
A2
Payment Drafting
Summarize each held invoice in one line the decision can be made from
A4
Pattern Counting
Count every exception by vendor, category and reason over the rolling quarter
A2
Cause Naming
Check whether a recurring price gap traces to an expired contract or a stale master record
A4
Correction Reading
Read every reviewer decision back against the match that produced it
A3
Threshold Testing
Search the last quarter for the threshold that would have cleared these correctly
A1
Rule Proposal
Draft the change to the matching rules this quarter's corrections support

How It Runs

1

Invoice Reading

Nobody is asked anything here

Subagents pull every invoice off every channel it arrives on, read the document rather than the filename, and normalise it into the same shape whatever format it came as. Nothing waits on a person here. An invoice reaches a reviewer only when station 3 cannot settle where it belongs.

2

Record Matching

Nobody is asked anything here

Subagents compare every invoice against its purchase order, the receiving record and the contract price, and score how far the three sit apart. A person sees a score with the three records behind it, not a verdict that arrived on its own.

3

Variance Routing

A person answers here

Subagents read the size of each variance against the approval matrix, send it to the person whose authority actually covers it, and assemble the three records into one view before it lands. A person opens one screen and sees the delta already calculated, rather than three systems and a calculator.

4

Payment Approving

A person answers here

Subagents read every variance back against the contract it sits under, draft each payment at the amount the contract supports, and stop. This is the station where a human works. Everything else exists to make this decision small and well-lit.

5

Vendor Watching

A person answers here

Subagents count every exception by vendor and reason, separate the ones we cause from the ones the vendor causes, and name the single change that would remove the most of them. A person has the vendor conversation. The pipeline only says which conversation is worth having.

6

Rule Learning

A person answers here

Subagents read every reviewer decision back against the match that produced it, find the threshold that would have cleared it correctly, and propose the change. A person accepts or rejects each proposed change. Nothing about what clears on its own changes without somebody signing for it.

Where a Person Decides

Step 3, Variance Routing. Move the six-day invoice before the discount lapses. Take the one nothing explains, or send it back with a question. an escalation is not an approval.
Step 4, Payment Approving. Read five lines and make five calls. Open the records only when the line is not enough. a person releases the money.
Step 5, Vendor Watching. Renew the Contoso contract, or accept 38 exceptions a quarter. Talk to the requester who orders by email. nobody calls a vendor but you.
Step 6, Rule Learning. Accept or reject the freight variance change. Read the threshold routed to the one business unit. nobody widens what clears but you.

Operating Model

This changes how work flows through the team.

Role
Responsibility
Variance Routing owner
Move the six-day invoice before the discount lapses. Take the one nothing explains, or send it back with a question. an escalation is not an approval.
Payment Approving owner
Read five lines and make five calls. Open the records only when the line is not enough. a person releases the money.
Vendor Watching owner
Renew the Contoso contract, or accept 38 exceptions a quarter. Talk to the requester who orders by email. nobody calls a vendor but you.
Rule Learning owner
Accept or reject the freight variance change. Read the threshold routed to the one business unit. nobody widens what clears but you.
Record Matching, when it goes wrong
Look at the 18 with no purchase order if the research queue is growing.

What Transfers, What Must Be True

What transfers
A person is in the loop wherever money moves or a relationship is at stake. Four of the six stations refuse to proceed on their own, Variance Routing, Payment Approving, Vendor Watching and Rule Learning, and those are the four a person carries. Everywhere else the subagents run at volume and reach you only when they cannot settle something.
Variance Routing stops for a person, and an escalation is not an approval.
Payment Approving stops for a person, and a person releases the money.
Vendor Watching stops for a person, and nobody calls a vendor but you.
Rule Learning stops for a person, and nobody widens what clears but you.
Every subagent says what it will not do. 13 of them do.
What must be true in your environment
The agent can read the systems your records already live in. This one reads 22.
Somebody owns Variance Routing and has time for it.
Somebody owns Payment Approving and has time for it.
Somebody owns Vendor Watching and has time for it.
Somebody owns Rule Learning and has time for it.

Failure Modes

What breaks this pattern:

✗ Matching an invoice to nothing

An invoice arrives with no purchase order behind it, and the pipeline finds it a match anyway. That is the oldest fraud in accounts payable: a bill for goods nobody ordered, paid because a system wanted every invoice to fit somewhere.

✗ Routing past the approval limit

A fifty thousand dollar variance lands with a reviewer whose limit is five thousand. They approve it because the system chose them. The person with the authority to say no never sees the case.

✗ Recommending the lower figure

The invoice and the receipt disagree, and the pipeline suggests paying the smaller number. That feels safe, but it is a money decision made by a reader of records. The reviewer signs a figure no document supports, and nobody researches why the records split.

✗ Building a rule from one correction

A reviewer fixes one invoice, and the pipeline proposes a new rule from it. One correction can be a typo, a one-off vendor problem, or a bad day. A rule built on it changes how every future invoice clears, on evidence that would convince no one.

Directional Outcomes

What the agent counts, and the station that counts it.

These counts are the tallies from one monitored run of the agents. They are not monthly or annual totals.

Invoices read
Counted at Invoice Reading
694
Read wrongly
Counted at Invoice Reading
0
Refused as unreadable
Counted at Invoice Reading
18
Invoices matched
Counted at Record Matching
694
Matched to a guessed PO
Counted at Record Matching
0
Held with no PO
Counted at Record Matching
18
Our measurement policy: We do not publish precise ROI without baseline methodology. Every figure above carries its basis.

What Runs Where

Every step names the subagent that does the work, the record it writes, the thing that raises a question for a person, and what it is allowed to touch. This is drawn from the source, not from a diagram somebody kept in sync by hand.

1Invoice Reading
subagentarrival-watch
writesap/inbound/<inv-id>.json
raisesreject-unreadable
may touchap/**, vendors/** read-only
2Record Matching
subagentthree-way
writesap/matched/<inv-id>.json
raisesno-purchase-order
may touchap/**, erp/** read-only
3Variance Routing
GATE
subagentroute-variance
writesap/queue/<inv-id>.json
raisesabove-reviewer-limit
may touchap/queue/**, erp/** read-only
4Payment Approving
GATE
subagentpayment-brief
writesap/decisions/<inv-id>.json
raisesawait-human-approval
may touchap/decisions/**, everything else read-only
5Vendor Watching
GATE
subagentvendor-read
writesanalytics/vendors/<period>.json
raisespropose-vendor-action
may touchanalytics/**, vendors/** read-only
6Rule Learning
GATE
subagentrule-read
writesanalytics/rules/<period>.json
raisespropose-threshold-change
may touchanalytics/**, rules/** read-only

Stack

Every system this agent reads or writes.

System
Read at
Stations
Power BI
Vendor Watching
2 of 6
Teams
Variance Routing
1 of 6
the AP mailbox
Invoice Reading
1 of 6
the ERP payables record
Payment Approving
1 of 6
the ERP purchase orders
Record Matching
2 of 6
the ERP vendor master
Invoice Reading
2 of 6
the Teams approvals channel
Payment Approving
1 of 6
the approval matrix
Record Matching
2 of 6
the business unit policy records
Rule Learning
1 of 6
the contract library
Payment Approving
2 of 6
the contract price list
Record Matching
1 of 6
the correction log
Rule Learning
1 of 6
the document store
Invoice Reading
2 of 6
the exception history
Vendor Watching
1 of 6
the goods receipt records
Record Matching
2 of 6
the match history
Rule Learning
1 of 6
the payment terms table
Variance Routing
2 of 6
the procurement request log
Vendor Watching
1 of 6
the scanner drop folder
Invoice Reading
1 of 6
the threshold table
Rule Learning
1 of 6
the vendor correspondence file
Payment Approving
1 of 6
the vendor portals
Invoice Reading
1 of 6
Next Step

Want to see if this pattern fits your invoice processing?

No build commitment·Real samples, not a demo·Estimate in writing