The three-way match gap: why matched invoices still overbill you
6 min read
The three-way match is the backbone of accounts payable control, and it works. It confirms you ordered the item, that it arrived, and that the invoice describes the same thing. What it does not do — in any ERP, with any configuration — is confirm the unit price against the contract that was in force on the invoice date.
Where the price check leaks out
- The PO itself was raised at the wrong price, so the invoice matches a document that was already incorrect.
- Price tolerance thresholds pass anything within a few percent, which is exactly the range price drift occupies.
- Blanket and open POs carry no line-level price to match against.
- Field-raised orders and counter pickups often have no PO at all.
- Price lists change mid-contract and nobody re-prices the open POs.
Tolerances are the quiet culprit
A two percent price tolerance exists so AP is not blocked by rounding and freight noise. It also guarantees that any error under two percent is invisible forever. On eight million of material spend, two percent is a hundred and sixty thousand dollars a year that the control is configured to ignore.
Add the fourth check, after payment
Blocking payment on small price variances is a bad trade — you damage supplier relationships and delay jobs over amounts that are cheaper to claim later. Run the contracted-price comparison after the fact, in batch, and route only the exceptions. The three-way match keeps protecting you from receiving errors; the price check runs alongside it and recovers through credits.
What good looks like
- Every line compared to the contract version effective on its invoice date, with no tolerance floor hiding small errors.
- Exceptions delivered as a short priced queue rather than a report.
- Each flag carrying the contracted price, the effective dates and the source document, so the claim writes itself.
- Tolerances used to decide what to claim, never to decide what to detect.
Related reading
- Why supplier invoice lines don't match your contract — the full taxonomy
Every unmatched invoice line has a reason. Here is the taxonomy — missing SKU, expired price, wrong unit, substitution, freight and more — and what to do about each.
- Unit-of-measure normalization: the quiet source of fake variances
Per square, bundle, thousand, or roll. How unit-of-measure mismatches create false overcharges, and how to build an alias table that fixes it.
- Standing, quoted, or isolated: classifying the discount you actually got
Not every price below contract is a win. How to tell a standing discount from a one-off quote or an isolated keying error — and why the difference changes what you negotiate.
New to the vocabulary? The glossary defines every term used here, and the audit checklist turns it into a process.
See this on your own invoices
Audit your first 500 invoice lines free. No card required.