Accounts payable exception triage
A four-person AP team closed in six days instead of eleven, and captured 81% of early-payment discounts.
- Company
- $60M professional services, 310 employees
- Team affected
- 4-person AP team
- Systems
- QuickBooks + Bill.com
- Volume
- 2,400 invoices a month
- Build
- 7 weeks
- Diagnostic
- 5 days inside the AP function
Arrives from
Pipeline
- Intake and field extraction
- Three-way match against PO and receipt
- Exception classifier
- Duplicate detection, pre-payment
- Payment timing against discount terms
Lands in
One vision call on image-only documents, one classification call. $0.07 per invoice.
Outcomes at a glance
What the build changed.
The arithmetic behind every one of these is further down this page.
0 days
Month-end close
0%
Early-pay discount capture
0%
Routine exceptions touchless
0
Duplicate payments released
In plain terms
The problem, then the fix.
Four people handled 2,400 invoices a month. Nearly a third hit an exception, they were worked in whatever order the inbox presented, and every month-end a backlog of them was carried into the close. That is why the close took eleven days, and why only a third of available early-payment discounts were ever captured.
The fix is intelligent accounts payable automation: automating invoice intake, validation, exception resolution and payment prioritisation. The routine exceptions resolve themselves, the judgment calls arrive at a person with the conflict already identified, and approved invoices are ranked against the discount clock instead of the inbox. The rest of this page explains how, and what it is worth.
What the system does
- Extracts invoice data from emails, supplier portals and scanned PDFs.
- Matches invoices against purchase orders and goods receipts.
- Automatically resolves routine invoice exceptions.
- Detects duplicate invoices before payments are released.
- Prioritises approved invoices to capture early-payment discounts.
- Escalates high-risk or ambiguous cases to human reviewers.
The result that matters
Month-end close falls from eleven working days to six, and early-payment discount capture rises from 34% to 81%.
The situation
The close was long because the exceptions never closed.
Four people handled 2,400 invoices a month. 31% hit an exception, 744 a month, and the team worked them in whatever order the inbox presented. Routine exceptions took 7.5 minutes each, genuine ones 22.
Every month-end, 180 to 240 exceptions were still open and got carried into close, which is why close took eleven days. Early-payment discounts were captured on only 34% of eligible invoices, not because anyone decided to skip them but because the invoice cleared the approval chain after the window had shut.
What the five-day diagnostic found
- 68% of exceptions were the same nine types, recurring every month, each resolved the same way every time.
- Two duplicate payments had gone out in the previous twelve months, totalling $19k, and were recovered five months later.
- 90 recurring vendors regularly invoiced with no purchase order at all. That is a procurement problem being absorbed by AP.
- 41 payments a year went out late enough to attract a fee, averaging $140.
- 41% of invoice volume arrived as scanned images with no text layer.
Where we stopped
What we did not automate, and why.
In accounts payable the cost of a wrong decision is a payment that has already left the bank, so the boundaries here are drawn harder than in any other build in this set.
Stays with a person
A new vendor’s first invoice
Human review, every time. No exceptions and no confidence threshold.
Hard stop
Any invoice where the vendor’s bank details changed
Hard stop. Payment blocked, and a person calls the vendor back on a number already on file. Changed bank details are the single most common AP fraud vector, and this is the one rule in the build that an agent can never override.
Stays with a person
Invoices above $25,000
Their policy. Unchanged, and we did not ask them to change it.
Stays with a person
The no-PO invoices
We did not teach the agent to paper over them. It produced a report naming the 90 repeat offenders, and procurement closed 61 of them at source, which is a better outcome than automating the symptom.
What we built
Five stages, and only two of them involve a model.
Built over seven weeks. The matching, the duplicate check and the discount arithmetic are deterministic code, because that is accounting and it should not be probabilistic.
Intake and extraction
Across email, Bill.com, supplier portals and scanned PDFs, including the 41% of volume that arrives as images with no text layer.
Three-way match
Invoice against the purchase order and the goods receipt in QuickBooks.
Exception classifier
The nine routine types resolved autonomously. The seven judgment types routed with the invoice, the purchase order, the history and the specific conflict already assembled.
Duplicate detection
Fuzzy match on vendor, amount, date and invoice number across 24 months, run before payment rather than after.
Payment timing
Approved invoices ranked against discount terms and cash on hand, so the discount clock sets the order rather than the inbox.
Where the model is actually used
A vision call only on the 41% of documents that arrive as images. Where a text layer exists we read it, because paying a model to look at a picture of text you already have is waste. One small-model call for classification.
Matching, duplicate detection and the discount arithmetic are deterministic. That is accounting, and it should not be probabilistic.
$0.07
of inference per invoice processed
Results
Every number the build moved.
6 days
Month-end close
From 11 working days. The close was long because 180 to 240 unresolved exceptions were carried into it every month.
81%
Early-pay discount capture
From 34%. Nobody had decided to skip the rest: the invoices cleared the approval chain after the discount window had shut.
72%
Routine exceptions touchless
From zero. 68% of exceptions were the same nine recurring types, each resolved the same way every time.
0
Duplicate payments released
From two in the previous twelve months, totalling $19k and recovered five months later.
12-20
Exceptions open at close
From 180 to 240. The team worked 744 exceptions a month in whatever order the inbox presented them.
$27k
Duplicates caught pre-payment
Three duplicate payments caught in nine months, before the money left the bank rather than five months after.
How we know
Three hundred invoices, labelled by the AP lead.
Golden set: 300 invoices including 120 exceptions, labelled by the AP lead with the correct resolution and the reason for it.
Labelling the reason as well as the resolution is what makes the classifier measurable. An agent that reaches the right answer for the wrong reason will reach a wrong answer the moment the inputs shift.
Scroll the table sideways for Week 5 and the gate.
| Measure | Week 1 | Week 5 | Gate |
|---|---|---|---|
| Field extraction accuracy | 93.8% | 98.9% | |
| Exception classification | 84.0% | 96.8% | |
| Exceptions sent to a human | 38% | 11% | auto-resolve floor 0.92 |
The confidence floor for auto-resolution is 0.92, higher than the other builds in this set, because the cost of a wrong decision here is a payment that has already left the bank.
What it is worth
Value, with the maths.
A $60M company with four people in AP. The point of showing the arithmetic at this scale is that you can check whether it survives at yours.
Early-payment discounts now captured
$70-95k
$9.1M of spend on 2/10 net 30 x 47 more points of capture x 2%
Duplicate and overpayment avoidance
$20-36k
$27k caught in 9 months, annualised conservatively
Close acceleration
$18-26k
5 days/month of controller and staff time x 12 months
AP capacity recovered
$15-25k
804 hrs/yr x $31, discounted 30%
Late fees avoided
$4-7k
41 late payments x $140 average
Recurring annual value
$126-189k
On a $60M company. The largest line is the discount capture, and it is the line most sensitive to your own payment terms.
- Headcount
- The team is still four people. One moved to vendor management. We are not claiming redundancies, because at this size there are none to claim and pretending otherwise would scare the buyer we are trying to reach.
- Not counted as value
- Procurement closed 61 of the 90 no-PO vendor relationships at source after reading the report the build produced. That is a real improvement and it is not in the table, because it was procurement that fixed it.
What we got wrong
What we would do differently.
We shipped the payment-timing agent in week six. It was the single largest line of value and it waited behind work worth a fifth as much.
Sequence by value, not by technical dependency, when the dependency is soft. It was soft here and we treated it as hard.
Where this goes next
Five days inside your AP function, counting your exception types and building a golden set from your own invoices. The nine recurring types are specific to this company; yours will be a different nine, and that list is the whole build.
Tell us about your project.
A 30-minute discovery call with a senior engineer. Concrete next steps, honest scope, no boilerplate decks.