Three-Way Matching: What It Is and When You Need It
The short answer
Three-way matching compares three documents before an invoice is paid: the purchase order (what you agreed to buy), the goods receipt (what actually arrived), and the invoice (what you are being billed for). If all three agree within tolerance, the invoice clears. Two-way matching drops the goods receipt and compares only the PO to the invoice. Most small businesses do not raise formal purchase orders and therefore cannot do either; for them the equivalent control is a value threshold plus confirmation from whoever ordered the item.
Three-way matching is the control most often recommended and least often implemented in small business accounts payable, because implementing it requires a purchase order process that most small businesses do not have and do not need.
It is still worth understanding, because the logic behind it applies even when the formal version does not.
The three documents
| Document | Created by | Answers |
|---|---|---|
| Purchase order | You, before ordering | What did we agree to buy, at what price? |
| Goods receipt | You, on delivery | What actually arrived, in what quantity, in what condition? |
| Supplier invoice | The vendor | What are we being asked to pay? |
The control works because the three documents are created by different parties at different times. A supplier over-billing has to defeat a document you created before they quoted and a document your own warehouse created when the goods landed. That is a much harder problem for them than sending an inflated invoice into a process with no reference points.
What gets compared
- 1Vendor. Is the invoice from the vendor the PO was raised against?
- 2Item or description. Does each invoice line correspond to a PO line?
- 3Quantity. Does the invoiced quantity match what was received, not what was ordered? This is the distinction three-way matching exists for.
- 4Unit price. Does the price match the agreed PO price?
- 5Extended amount and tax. Do the line calculations and the total add up correctly?
Point three is the whole reason the goods receipt is in the picture. Two-way matching confirms you were billed for what you ordered. Three-way confirms you were billed for what you got. Those diverge constantly: partial shipments, backorders, damaged goods, short deliveries.
Tolerances
Exact matching creates an exception queue nobody can clear. Rounding, freight, small price adjustments and partial deliveries mean perfect three-way agreement is uncommon in reality. Tolerances define how close is close enough.
| Tolerance type | Typical setting | Purpose |
|---|---|---|
| Price variance, percentage | 2 to 5% | Absorbs small agreed price movements |
| Price variance, absolute | $25 to $100 | Stops tiny percentages triggering on large orders |
| Quantity variance | 0 to 2% | Usually tight; over-delivery should be a conscious decision |
| Total variance | $50 to $250 | A catch-all for freight and rounding |
Set tolerances too tight and the exception queue becomes the new bottleneck. Set them too loose and you are approving variances that should have been questioned. The practical approach is to start tight, look at what actually gets flagged in the first month, and loosen for the categories where variance is normal and expected.
Two-way matching
Two-way matching compares the purchase order and the invoice, skipping the goods receipt. It is appropriate when receipt is not a meaningful event:
- Services rather than goods. There is nothing to receive into a warehouse when a consultant delivers a report.
- Subscriptions and recurring charges.
- Utilities, where consumption is the receipt and the meter reading is on the invoice itself.
- Small businesses with no receiving function, where the person who ordered it is also the person who opened the box.
Two-way matching is what most small business tools mean when they advertise PO matching, and it is genuinely useful. It catches price changes between quote and invoice, quantity inflation, and invoices for orders never placed.
What small businesses should do instead
If you do not raise purchase orders, you cannot match against them, and building a PO process purely to enable matching is usually more overhead than the control is worth at small scale.
The equivalent controls that do work:
- 1Requester confirmation. Above a threshold, the invoice goes to whoever ordered the thing, with the PDF visible, and they confirm it arrived and looks right. This is three-way matching with a human doing the receipt step from memory.
- 2Vendor price history. If a vendor's unit price on a recurring item moves more than a set percentage from last time, flag it. This catches quiet price creep, which for restaurants and trades businesses is a bigger annual cost than any single billing error.
- 3Duplicate detection on vendor and invoice number. Not a matching control, but it catches the most common overpayment.
- 4Statement reconciliation. Once a quarter, reconcile major vendor statements against what you have posted. It catches both missing invoices and duplicates.
How automation handles matching
In an automated pipeline, matching happens after extraction and before approval. The extracted invoice carries a PO reference, either printed on the document or inferred from the vendor and amount. The system pulls the open PO, compares line by line, applies tolerances and routes anything outside them.
The quality difference between tools shows up in the awkward cases: an invoice covering two POs, a PO covering three partial invoices, line descriptions that do not textually match the PO but refer to the same item, and unit-of-measure mismatches where the PO is in cases and the invoice is in units. Any tool can match a clean one-to-one invoice; ask specifically about these before you assume it is handled.
