Finance Ops·10 min read

3 Way Match: The Fields, Tolerances, and Exceptions Explained

How a 3 way match compares a purchase order, goods receipt, and invoice line by line, what a matching tolerance actually is, the mismatches that turn up most often, and when three-way matching is more control than your business needs.

Monty Ali·August 14, 2026·Updated August 14, 2026
A warehouse operations manager comparing a purchase order and goods receipt at their desk before a 3 way match

A pallet shows up eighteen units short. The invoice bills for all of them anyway. Nobody notices, because it gets paid before anyone puts the delivery note next to the invoice, and the shortfall turns up three weeks later as a line item nobody can explain.

3 way match is the accounts payable control built to catch exactly that. It compares three documents before anything gets paid: the purchase order, showing what was agreed; the goods receipt, showing what actually arrived; and the invoice, showing what the vendor wants for it. When the three agree, the invoice pays. When they don't, someone reviews the gap first.

This goes deep on the mechanics: what each document actually contributes, the exact fields worth comparing, how to set a tolerance instead of chasing every cent, the mismatches that show up most often and what to do about each, and an honest read on when three-way matching is more control than your business needs.

What each document brings to a 3 way match

The purchase order (PO) is where the match starts. It's the record of what your business agreed to buy, at what price, and in what quantity, issued before any money moves. Everything downstream gets checked against it, because it's the only one of the three documents that reflects what you actually authorized.

The goods receipt is the physical reality check. Someone counted what came off the truck and logged it, separate from anyone touching the invoice. It exists to answer one question: did what you ordered actually show up, in the quantity you're about to be billed for?

The invoice is the vendor's claim on your money, and it's the only one of the three the vendor controls. That's exactly why it doesn't get paid on its own. A three-way match works because the PO and goods receipt are both generated inside your business, independent of what the vendor decides to bill.

A two-document match, invoice against PO, tells you the price and quantity you agreed to. Only the goods receipt tells you what actually arrived, which is the entire reason a three-way match exists.

The fields a 3 way match actually compares

Invoice matching isn't a document-level check, it's line by line, field by field. The table below shows what each document is expected to say, and which fields the match is actually built to catch a disagreement on.

FieldPurchase orderGoods receiptInvoice
VendorApproved vendor on the orderVendor who delivered (should match)Vendor billing (should match)
Item / SKUItem code orderedItem code receivedItem code billed
QuantityQuantity orderedQuantity actually receivedQuantity billed
Unit of measureCase, pallet, or each, as orderedUOM logged on receiptUOM billed
Unit pricePrice agreed at orderNot applicable, receipts don't carry pricePrice billed
Extended line totalQuantity × price orderedNot applicableQuantity × price billed
Tax and freightUsually excluded from the matchNot applicableMatched separately, see below

Price and quantity carry most of the match. Unit of measure is the field people forget, and it's the one that quietly multiplies an error: if the PO says cases and the invoice bills individual units, every other field can agree and the total will still be wrong by the pack size.

What a matching tolerance is, and how to set one

A tolerance is the small, defined difference a match allows without flagging an exception. Without one, a match run at face value throws an exception on every currency rounding difference and every case that ships half a unit light, which turns a control meant to save time into the thing eating it.

FieldTypical toleranceWhy
Price2 to 5%, or a small fixed amount (e.g. $5 per line), whichever is largerAbsorbs currency conversion and rounding, not real overbilling
QuantityZero, or a defined unit or case countPartial pallets and breakage are real, but should stay visible, not get silently absorbed
Freight and handlingMatched separately against agreed shipping terms, not the PO priceFreight is rarely on the PO line at all
TaxRecalculated, not matchedTax is a rate applied to the line, not a quantity or price comparison
Too tight a tolerance turns every rounding difference into a manual exception, which is how a control built to save time ends up costing more of it. Too loose, and it stops catching anything real. Start at 2% or $5 on price, whichever is larger, and tighten it only if real exceptions keep slipping through.

A worked 3 way match example

Say a distributor orders two things on the same purchase order: 1,000 corrugated shipping boxes at $0.85 each, and 200 rolls of pallet stretch wrap at $12.00 each. The truck arrives, the warehouse counts what's on it, and logs a goods receipt before the invoice even lands.

The boxes show up in full. The stretch wrap doesn't: 185 rolls arrive instead of 200, but the invoice bills for the full 200 anyway, at the agreed price. Here's the match, line by line.

Line itemPO: qty @ unit priceGoods receipt: qty receivedInvoice: qty @ unit priceMatch result
Corrugated shipping boxes1,000 @ $0.851,0001,000 @ $0.85Matched
Pallet stretch wrap200 @ $12.00185200 @ $12.00Quantity variance
Totals$3,250.00Value at PO price: $3,070.00$3,250.00Held: $180.00

The variance is exactly the 15 rolls that never arrived: 15 × $12.00 = $180.00. A 3 way match catches this because the goods receipt, not the invoice, is the source of truth for quantity. Pay the $3,070.00 the receipt supports, hold the $180.00 open, and let the vendor either ship the rest or issue a credit.

3
documents compared
15 units
short-shipped
$180
held back
A purchase order and goods receipt laid side by side on a desk during a 3 way match
The goods receipt is the tiebreaker: it's the only one of the three documents the vendor never touches.

See what manual matching costs you

Checking three documents by hand on every invoice adds up fast. The labor cost calculator turns your own invoice volume into an annual number.

Use the labor cost calculator

How to resolve a 3-way match exception, step by step

Not every exception means the same thing, and treating them all as "call the vendor" wastes the one advantage a three-way match gives you: it tells you exactly which figure disagrees. Here's what each common mismatch means and what to do about it.

  1. Price variance. The invoice charges more per unit than the PO agreed. Hold the payment at the PO price and ask the vendor to either match it or send a credit for the difference before paying the balance.
  2. Quantity variance. The invoice bills for more than the goods receipt shows arrived. Pay against the received quantity, not the invoiced quantity, and leave the gap open until the vendor ships the rest or credits it.
  3. Partial delivery. The goods receipt shows the order split across two or more shipments. Match and pay each shipment against its own portion of the PO as it arrives, rather than waiting for the whole order to land.
  4. Freight and handling charges. The invoice adds a shipping or handling line that never appeared on the PO. Check it against the agreed shipping terms separately, since freight usually isn't a line the match itself is built to catch.
  5. Duplicate invoice. The same invoice number, amount, and vendor show up twice, sometimes weeks apart. Reject the second one outright rather than matching it again, since a duplicate will pass every check and pay in full a second time.
Duplicate invoices are the one exception a 3 way match doesn't catch on its own. Both copies can match the same PO and receipt perfectly; only a check against invoice number and vendor stops the second payment going out.

Where exceptions land varies by business, but the shape is fairly consistent. Quantity variances are usually the most common, price variances close behind, and duplicates are rare but the one type worth catching every single time. Here's a typical, illustrative split, not a figure from any one client.

A typical mix of 3-way match exceptions
  • Quantity variance38% (38%)
  • Price variance27% (27%)
  • Partial delivery18% (18%)
  • Freight / handling12% (12%)
  • Duplicate invoice5% (5%)
An accounts payable clerk circling a quantity discrepancy on a vendor invoice with a red pen
A quantity variance is a hold, not a rejection. Pay what the receipt supports and leave the gap open.

When two-way match is enough, and what changes when it runs itself

Three-way matching earns its cost when goods receipts actually exist and someone checks against them. If your business doesn't carry physical inventory, a services firm, an agency, most SaaS spend, there's nothing for the goods receipt to compare against, and the control quietly becomes a two-document match wearing a three-document label.

Two-way match, invoice against PO, catches the same overbilling with one fewer document to chase on every invoice, forever. For fixed recurring bills, rent, software subscriptions, utilities, even a formal match is often more process than the risk justifies. Approve those on a schedule instead. For the wider process this control sits inside, see the accounts payable process.

If nobody logs what physically arrives, don't run three-way matching. It gives the appearance of a check with nothing behind it, and that's worse than an honest two-way match, because it looks solved when it isn't.

The manual version of this doesn't scale past a handful of invoices a week: three documents, however many line items, checked by a person who also has other things due today. That's the part that's actually mechanical, comparing numbers across three sources, which is exactly what the agents we build do for document intake: read the PO, the receipt, and the invoice, flag only the lines that fall outside tolerance, and leave the judgment call, is this variance real, to a person.

It's the same capability behind SmallERP, which reads receipts and invoices and keeps them coded and matched without someone re-typing every line by hand. The match logic doesn't change; what changes is who's running it, and how few exceptions a person actually has to look at. The automation ROI calculator will tell you whether closing that gap is worth building against at your invoice volume.

Frequently asked questions

A 3 way match compares three documents before an invoice gets paid: the purchase order, showing what was ordered and at what price; the goods receipt, showing what actually arrived; and the invoice, showing what the vendor wants for it. If all three agree on vendor, item, quantity, and price, the invoice pays. If they don't, someone reviews the gap first.
Two-way match checks the invoice against the purchase order only, confirming the price and quantity billed match what was agreed. Three-way match adds the goods receipt, confirming what actually arrived. The extra step catches a case two-way match can't: being billed for more units than were physically delivered.
The core fields are vendor, item or SKU, unit of measure, quantity, and unit price, checked line by line across the purchase order, goods receipt, and invoice. Extended line totals get checked too. Tax and freight are usually matched separately, since neither typically appears on the purchase order itself.
A tolerance is the small, defined difference a match allows without flagging an exception, usually a percentage or fixed dollar amount on price, and a set unit count on quantity. It exists so rounding, currency conversion, and minor packaging differences don't generate a manual review on every invoice. A common starting point is 2% or $5 on price, whichever is larger.
The invoice gets held instead of paid. Accounts payable reviews which figure disagrees, price, quantity, or vendor, and either pays against the lower of the three documents, asks the vendor for a corrected invoice or credit, or escalates a larger variance for approval. The invoice releases once the documents agree or someone signs off on the gap.
Only if you carry physical inventory or make large purchases where the quantity received genuinely needs checking against a physical receipt. Most service businesses, agencies, and software-heavy companies get the same protection from a simpler two-way match against the purchase order, without tracking a goods receipt for every invoice.
Yes. The comparison itself, checking quantities, prices, and units across three documents, is mechanical and well suited to automation. What still needs a person is judgment on a real exception: whether a variance is a fraud risk, a vendor error, or a legitimate partial delivery worth approving anyway.

The bottom line

A 3 way match is only as useful as the documents behind it. If a goods receipt exists and someone's logging it accurately, the match catches real overbilling before it goes out the door. If it doesn't, the match is theater, and an honest two-way match against the PO is the better control.

Set a tolerance so rounding doesn't eat a day's work, know the five ways a match actually fails, and decide, on purpose, whether your invoice volume justifies checking it by hand or automating the comparison and keeping a person on the exceptions.

Is your matching process worth automating?

Bring your invoice and PO volume to a 30-minute call. If three-way matching isn't the right control for your business, we'll say so.

Book a 30-min call
Read with AIView as Markdown

Get one sharp idea on shipping AI, no hype, no spam

The occasional deep-dive on what actually works when you put AI into a real business. Written for owners and operators, not engineers.

Talk to us

Your workflow. 30 minutes. Honest answer.

Bring a workflow. Leave with a yes or no.