Skip to main content

What causes a three-way match failure between the PO, receipt, and invoice?

A three-way match compares the PO, the receipt (what was actually delivered), and the invoice on quantity, price, and charges. A failure means one of those three disagrees beyond tolerance — usually because the invoice bills a quantity that isn't fully receipted yet, the unit price differs from the PO, or the invoice adds a charge, like freight, the PO never included.

Zuny FesterBy Zuny Fester, Head of Operations and Marketing
Reviewed by Zuny Fester
Published Last reviewed Editorial policy

Part of the accounts payable and invoice processing guide.

SymptomAn invoice is held or flagged instead of posting automatically for payment
Most common triggerPartial or staged delivery — the invoice bills the full PO quantity before all units have been receipted
Second most common triggerPrice variance — the invoiced unit price differs from the PO's agreed price beyond tolerance
Third triggerUnplanned charges — freight, rush fees, or surcharges on the invoice with no corresponding PO line
Where to checkCompare invoice line quantity and price against both the PO line and the matched receipt line, not just the PO alone

What's actually being compared

Three-way matching checks a vendor invoice against two other documents before it's approved for payment: the purchase order, which sets the agreed price and quantity, and the receipt — the record of what was actually delivered, created by whoever received the goods or confirmed the service. A match failure just means the invoice disagrees with one or both of those documents by more than the tolerance your AP process allows.

The three things that actually cause a failure, in order of how often they happen

Quantity variance against the receipt is the most common cause in practice. A vendor bills for the full PO quantity the moment the order ships, but if the delivery arrived in multiple shipments, or the receiving team hasn't logged the receipt yet, the invoiced quantity exceeds what's actually been receipted — even though the order will eventually be fulfilled in full.

Price variance against the PO is the second most common cause: the invoice's unit price differs from what was agreed on the purchase order, whether from a vendor price change that wasn't reflected back into the PO, a currency conversion difference, or a straightforward billing error.

Charges with no PO line — freight, a rush fee, a restocking charge — are the third common cause. These weren't part of the original agreement the PO represents, so a strict match has nothing to compare them against and flags the whole invoice rather than silently accepting an unplanned amount.

How to tell which one you have

Pull the invoice, the PO, and the receipt for the same line side by side. If the invoiced quantity is higher than the receipted quantity but matches the PO quantity, it's a timing issue — the shipment isn't fully receipted yet, not a real billing error. If the invoiced quantity matches the receipt but the unit price doesn't match the PO, it's a price variance. If a line item on the invoice has no corresponding PO line at all, it's an unplanned charge, and the question becomes whether it should be approved as a legitimate exception or rejected back to the vendor.

Why the fix usually isn't loosening the tolerance

The instinct when match failures pile up is to widen the tolerance percentage so fewer invoices get flagged. That trades a review backlog for exactly the exposure three-way matching exists to catch: overbilling, invoices for goods never delivered, and duplicate submissions under a new reference number. A narrower, better-targeted fix is usually to shrink the timing gap that causes most quantity-variance flags in the first place — receipting deliveries the day they arrive rather than batching it at week's end clears the single largest source of false-positive holds without giving up real matching discipline.

Next step

Map the finance workflow with the most exposure and prove the automation path.

Bring the invoice, contract, payment reconciliation, or customer finance workflow you have to defend at audit. Loopfour can map the trigger, controls, integrations, and approval loop.

Book a workflow review

Worked example

A $240 quantity variance that isn't a billing error

A purchase order is cut for 500 units at $12.00 each — $6,000 total. The vendor ships in two batches; the warehouse has only logged a receipt for the first 480 units delivered so far. The vendor's invoice arrives billing the full PO: 500 units at $12.00, $6,000. Three-way match compares the invoice against the receipt, not just the PO, and flags a 20-unit, $240 quantity variance — the invoice is billing for 20 units that haven't been receipted yet. The price is correct and the PO is correct; the invoice is simply ahead of the delivery. Holding the invoice until the second batch is receipted (or splitting the payment to match what's actually arrived) resolves it without ever reaching for the price or charges fields.

Frequently Asked Questions

Two-way matching compares only the invoice against the purchase order — price and quantity ordered. Three-way matching adds the receipt, comparing invoiced quantity against what was actually delivered, which is what catches billing for undelivered goods.

Most AP systems support tiered matching policies by vendor, item, or PO type — low-risk, low-value purchases are often left on two-way or totals-only matching, reserving three-way matching for higher-value or higher-risk purchases.

It's held from posting and routed for review rather than rejected outright — someone confirms whether the variance is a timing issue, a legitimate exception, or an error that needs to go back to the vendor.

Sources

Related

Diagnostic

How do I reconcile a phantom AP liability from a broken Bill.com sync?

Compare open bills in your AP aging against actual disbursements on the bank statement. A phantom liability shows up as a bill still open in AP with a matching payment already visible on the bank side, which means the payment posted in Bill.com but its corresponding payment record never synced back to the accounting system, leaving the original bill looking unpaid.

Read more

Topic

AP & Invoice Processing

Accounts payable and invoice processing is the set of steps a vendor bill goes through between arriving at a company and turning into a payment: capturing what the vendor sent, checking it against wha…

Read more

Diagnostic

Why did we pay the same vendor invoice twice?

Almost always one of two things: the vendor exists as two separate records in your vendor master, so a duplicate-invoice-number check that only compares within one vendor ID never sees the second copy — or the invoice was entered twice by different people, because it arrived through two channels and each assumed they had the only copy.

Read more

How-to

How do I look up or update an AP bill in Xero?

Use getInvoice, updateInvoice, or listInvoices with the bill's InvoiceID — Xero has no separate Bill resource. A bill is an Invoice with Type=ACCPAY, and Loopfour's Xero integration exposes full get/update/list for Invoices generically. createBill is a convenience wrapper for creation only; reading and updating a bill happens through the Invoice actions, not a Bill-named one.

Read more