Skip to main content
Viithiisys
Professional services

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
How the build is wired: Email, Bill.com, Supplier portals, Scanned PDFs (41%), through Intake and field extraction, Three-way match against PO and receipt, Exception classifier, Duplicate detection, pre-payment, Payment timing against discount terms, into Approved for payment, Human reviewer, Hard stop.

Arrives from

EmailBill.comSupplier portalsScanned PDFs (41%)

Pipeline

  1. Intake and field extraction
  2. Three-way match against PO and receipt
  3. Exception classifier
  4. Duplicate detection, pre-payment
  5. Payment timing against discount terms

Lands in

Approved for paymentHuman reviewerHard stop

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.

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

  2. Three-way match

    Invoice against the purchase order and the goods receipt in QuickBooks.

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

  4. Duplicate detection

    Fuzzy match on vendor, amount, date and invoice number across 24 months, run before payment rather than after.

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

Evaluation results, Week 1 compared with Week 5.
MeasureWeek 1Week 5Gate
Field extraction accuracy93.8%98.9%
Exception classification84.0%96.8%
Exceptions sent to a human38%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.