Three-way matching: catch PO errors before you pay
Three-way matching for small stores: match PO, goods receipt, and supplier invoice on one sheet to catch short-ships and price errors before you pay.
InventoryX is in development and not available today. ClearStock is the live Shopify app.
Three-way matching means paying a supplier invoice only after it agrees with two other documents: the purchase order (what you ordered), the goods receipt (what arrived), and the invoice (what they say you owe). Run all three against each other and the classic supplier errors — short-ships billed at full price, quiet price increases, duplicate invoices — get caught in the five minutes before payment instead of the five weeks after.
This is the small-store version. Enterprise procurement suites do this automatically; you'll do it with a spreadsheet and one repeatable sheet per PO. Before reading further, pull three things: your last PO, your receiving notes (or just what your count said arrived), and that supplier's invoice for the same order. Those are the inputs for the worksheet below.
The match sheet
One row per PO line, three columns of numbers, and two comparison columns that do all the work:
| Line | PO qty × price | Received qty | Invoice qty × price | Price match? | Qty match? | Action |
|---|---|---|---|---|---|---|
| STV-PRP-2B stove case (INV-2027-041) | 25 × $88.00 | 25 | 25 × $88.00 | ✓ | ✓ | Pay |
| STV-PRP-2B-GRP grate (INV-2027-041) | 40 × $6.75 | 40 | 40 × $7.40 | ✗ | ✓ | Dispute $26.00 |
| LTR-DRC-1L fuel bottle (INV-2027-042) | 60 × $9.20 | 54 | 60 × $9.20 | ✓ | ✗ | Short-ship claim |
The rules are mechanical:
- Price match: invoice unit price = PO unit price, per line. Not "close." Exactly.
- Qty match: invoice quantity ≤ PO quantity, and invoice quantity = received quantity. The invoice may never bill more than you ordered, and it shouldn't bill more than you received.
- Freight and fees: compare against the PO's terms line. Freight was FOB your dock? A freight line on the invoice is a disagreement, not a surprise.
Pay when both columns check. Dispute or deduct when either fails — and the match sheet tells you which conversation to have: a price miss goes to whoever bills you; a quantity miss goes to the short-ship claim process.
Worked example: one invoice, two POs, two errors, $81 on the line
Illustrative numbers from a camping-gear store, two POs to Summitware Outfitting Co., invoiced together:
- PO INV-2027-041: 25 stove cases @ $88.00, 40 grates @ $6.75 → $2,470.00 committed
- PO INV-2027-042: 60 fuel bottles @ $9.20 → $552.00 committed
- Committed total: $3,022.00
- Received (your count): 25 cases, 40 grates, 54 fuel bottles — 6 bottles short
- Invoice: 25 cases @ $88.00, 40 grates @ $7.40, 60 bottles @ $9.20 → $3,048.00 billed
The naive move is paying $3,048.00. The match says otherwise:
- Grate price: 40 × ($7.40 − $6.75) = $26.00 overbilled — price error, disputed against the PO.
- Fuel bottles: billed 60, received 54 → 6 × $9.20 = $55.20 overbilled — short-ship, claimed or deducted.
- Correct payable today: $3,048.00 − $26.00 − $55.20 = $2,966.80, with the two gaps documented.
Two errors on one ordinary PO. Neither is dramatic; both would have been paid without the match, and both recur on every future PO until someone notices. Over a year of similar orders the grate drift alone is a few hundred dollars of margin — and the short-ship pattern, if it repeats, is a supplier conversation backed by a date-stamped log rather than a feeling.
Where each document comes from
The match is only as good as its inputs, so each one needs an owner:
- The PO comes from the purchase order process — your committed quantities and prices, with a PO number that appears on every downstream document.
- The goods receipt comes from receiving: the counted quantities, not the packing slip's claimed quantities. The receiving checklist produces exactly this — per-line counted numbers and a discrepancy log. If your receiving step is "shelve it and update Shopify from the PO," you have no receipt document and the three-way match degenerates into a two-way match between two of the supplier's own claims.
- The invoice arrives by email; file it against the PO number the day it lands.
One honest warning: the receipt is the document most small stores don't actually have, and it's the one that catches the money. PO vs invoice alone (a two-way match) catches price errors and duplicates; it cannot catch a short-ship, because both documents say 60 and the shelf says 54.
Two-way, three-way, four-way
You'll see "four-way match" mentioned in procurement writing — it adds an inspection/acceptance step (the goods weren't just received, they passed QC). For a small store this is worth adopting only where it's real: if you inspect and reject units at receiving, your rejection count is the fourth document, and rejected units don't get paid for. If you don't inspect, don't fake the column. For most sub-$2M stores the three-way match is the working version, with quality claims handled separately as short-shipment and wrong-goods claims after receipt.
The spreadsheet method
Set up once, reuse forever:
- Sheet per supplier (or one master with a supplier column). Columns: PO number, line SKU, PO qty, PO unit price, received qty, invoice qty, invoice unit price, price delta ($), qty delta (units), payable, status (Pay / Dispute / Deduct).
- Formulas:
price delta = (inv price − PO price) × inv qty;qty delta = inv qty − received qty;payable = MIN(inv qty, received qty) × PO pricefor clean lines, manual for disputed ones. The MIN formula quietly enforces the best rule in payables: you pay for what arrived, at the price you agreed, and nothing else. - Status discipline: every line ends at Pay, Deduct (documented short-pay), or Dispute (open claim with a date). A match sheet with lines stuck in "TBD" for a month is a claim going stale.
- One log, all suppliers. The deltas accumulate into a pattern file: which suppliers overbill, which short-ship, which do both on the same POs. That log is the input your quarterly supplier scorecard wishes it had.
What three-way matching is not
It's not an audit of the supplier's intent. Most invoice errors are clerical — a price list updated on their side without notice, a duplicate send, a case-pack conversion slip. The match isn't accusation; it's arithmetic. Suppliers respect a deduction email that reads "line 2 billed at $7.40 against PO price $6.75 — please reissue or credit $26.00" far more than a vague "this seems high." The match sheet is the email.
It's also not inventory counting. Variances you find later — the count that says 53 bottles when the system says 54 — are a different investigation with different causes — count variances have their own workflow, separate from payables. The match happens at the payment boundary; counts happen on their own schedule.
Common questions
What is three-way matching? Comparing three documents before paying a supplier invoice: the purchase order (what you ordered and at what price), the goods receipt (what actually arrived, counted), and the invoice (what the supplier bills). Payment happens when quantities and prices agree across all three, and discrepancies get resolved first — as a dispute or a documented deduction.
Do I need software for three-way matching? No. At small-store scale it's a spreadsheet with one block per PO and three comparison columns. Software earns its keep above roughly the point where you're processing dozens of POs a month or multiple people touch payables — below that, the five-minute manual match is faster than configuring a system.
What do I do when the invoice doesn't match? Split by error type: price disagreements go back to the supplier's billing contact with the PO cited; quantity shortfalls become short-ship claims (or deducted lines) with your receiving count as evidence. Never pay the discrepancy "to sort out later" — unmatched balances turn into credits nobody remembers in two months.
Which document should I trust if two disagree? The one you generated by counting: the goods receipt. The PO states intent, the invoice states a claim, and the receipt states what physically happened — so billed-above-received is overbilling and billed-below-received is usually a partial invoice for a partial shipment, worth checking before the balance invoice arrives.
Next step: take the supplier invoice nearest its due date and run it through the match sheet above tonight. If it's clean, you've confirmed the habit works. If it isn't, you've found real money — dispute it with the PO number attached, and keep the sheet as the first entry in your match log.