Matching Invoice Totals Are Not Enough: Build a PO Exception Review

Allocate each invoice line once, preserve missing approvals, and reconcile the review queue before anyone pays.

Buda Team
← Back to Blog
Matching Invoice Totals Are Not Enough: Build a PO Exception Review

Two documents can both say $100 and refer to different purchases. Another $100 document may be a duplicate copy. Matching the total is a weak starting point for an accounts-payable decision.

A finance workflow you can build with Buda supports reviewable invoice and reconciliation preparation. Give an agent authorized purchase orders, invoices, and approval records to prepare an exception packet. A finance owner decides what is payable; this workflow does not make payments, post entries, determine tax, or update an ERP.

Freeze the comparison basis

Keep supplier identity, invoice number, purchase-order ID and line, currency, quantity, unit price, tax, and approval evidence separate. Decide whether the comparison uses pre-tax or tax-inclusive amounts. Preserve original-currency values. Without a confirmed exchange rate and basis, do not combine different currencies.

The following six invoice documents are fictional. All amounts are USD before tax, with zero tax explicitly assumed for this arithmetic example. The $620 document total includes a suspected duplicate and is not a statement of liability.

DocumentAmountReview result
I1100PO line, quantity and approval match
I2100Same invoice number as I1; suspected duplicate
I3100Same total, different PO; allocation needs confirmation
I4120Billed quantity exceeds its PO line
I5100No PO supplied
I6100PO match, but approval evidence missing

For I1, PO-A line 1 orders 100 units at $2. This invoice bills 50 units: 50 × $2 = $100. Allocate those 50 units once. The remaining 50 units are unbilled in this sample, not automatically received or owed. I2 must not consume the same allowance again until its identity is resolved.

One purchase-order line supports a partial invoice without duplicating allocation

Keep allocation separate from review status

A different invoice total, a similar invoice number, and a missing approval are different exceptions. An identical number is a reason to investigate supplier, document version, credit note, and invoice identity; it is not permission to delete a record. The same total on I3 cannot establish that it belongs to PO-A.

I4 bills 60 units at $2 against a separate 50-unit PO line. Its $20 overage needs a responsible reviewer; retain the full $120 document in the pending-review bucket until its treatment is confirmed. I5 has no supplied PO, so its $100 stays unallocated. I6 remains pending despite its matching amount because approval is not evidenced.

Assign each input amount to exactly one top-level review bucket: $100 matched, $420 pending review, and $100 unallocated. The arithmetic is $620 = $100 + $420 + $100. “Matched” describes this example’s checks, not payment authorization. If duplicate identity is later confirmed, reconcile a revised document population explicitly rather than silently changing the original total.

Avoid the multiplication hidden in a join

If two invoices and two approval rows match the same PO ID, a raw many-to-many join can produce four rows and repeat the money. Allocate using invoice-document, invoice-line, PO-line, and allocation identifiers, then check that allocations sum back to each invoice line exactly once. Where one invoice covers several PO lines, retain separate allocation amounts; do not copy the full invoice total onto every line.

Ask for invoice-exceptions.csv containing source file and row, supplier, invoice identity, PO line, quantity, unit price, tax basis, allocation amount, match type, difference, missing evidence, and review owner. Add review-note.md naming the document to obtain and the person who must decide each exception. Keep source totals, allocated totals, and unresolved amounts independently reconcilable.

An agent instruction can say: “Prepare a review packet from the authorized files. Preserve original amounts and source rows. Allocate each line once; identify unresolved joins. Do not infer missing approvals, remove suspected duplicates, convert currency without an approved basis, or execute financial actions.”

Questions that change the review

How should partial billing be handled?

Allocate the billed units to the relevant PO line and retain the remaining quantity separately. Do not infer receipt, acceptance, or payment terms from an unbilled balance.

What if tax creates the difference?

Separate tax, quantity, unit price, and rounding. Ask the finance owner to confirm the comparison basis and treatment. A matching pre-tax figure does not resolve an unexplained tax difference.

Can matching amounts establish an order match?

No. Confirm supplier and line-level PO evidence. I3 demonstrates why the amount alone is insufficient.

Can the agent fill in a missing approval?

It should name the missing record and its owner, leaving the exception open. A file containing an approver’s name is not proof of the relevant approval.

Reuse a checked reconciliation method

Keep the authorized inputs, allocation table, and review decisions in the Agent Workspace. Accept one packet by tracing each row back to its source and reconciling every amount. Then preserve the method as a Skill; suitable Skills can be searched for and installed in the Buda AI Marketplace. The useful handoff is a small set of explainable exceptions with the money still tied out.