eProcureAI / Resources / Guide

Guide

Three way matching,
explained properly

Three way matching is the oldest control in accounts payable and the one most often implemented badly. The difference is almost entirely in how tolerances are set.

Guide10 minute readWritten for procurement and finance teams

Three way matching compares three documents before releasing payment. The purchase order, the goods receipt and the supplier invoice.

The order says what you agreed to buy and at what price. The receipt says what actually arrived. The invoice says what you are being asked to pay. When all three agree, paying is safe. When they disagree, something needs a person.

The control is not complicated. What makes it succeed or fail is whether the goods receipt exists at all, and whether the tolerances are set so that genuine problems surface without burying the team in noise.

What it actually compares

Line by line rather than in total, which matters more than people expect. An invoice that matches on total can still be wrong on every line, and totals matching by coincidence is common enough to be worth guarding against.

The comparison covers quantity, unit price, and usually tax and freight as separate checks, because those behave differently and deserve their own tolerances.

DocumentWhat it establishesWho creates itCommon failure
Purchase orderWhat you agreed to buy, at what priceProcurement, from an approved requestAmended after issue without a new version
Goods receiptWhat physically arrived and in what conditionWhoever receives the deliveryNever created, which breaks the whole control
InvoiceWhat the supplier is asking to be paidThe supplierArrives before the goods, which is not an error

The goods receipt is the one that most often does not exist, and without it a three way match is really a two way match.

What it catches

Paying for goods that never arrived. The single most valuable thing it does, and impossible without a receipt.

Being billed for more than was delivered. Short deliveries are common and rarely announced by the supplier.

Price differences from what was agreed. Sometimes an error, occasionally a supplier applying an increase you did not accept.

Duplicate invoices. Not strictly part of matching, but usually implemented alongside it and worth as much.

What it does not catch

Worth being clear about, because overconfidence in the control is its own risk.

It does not tell you whether you should have bought the thing, whether the price was reasonable in the market, or whether the supplier is one you should be using. Those are procurement questions and matching is blind to all of them.

It also does not help with spend that has no purchase order behind it, which in most organisations is a meaningful share. Utilities, professional fees and one off services need a different control.

Setting tolerances

This is where implementations succeed or fail. Set tolerances too tight and everything becomes an exception, so the team starts clearing them without looking. Set them too loose and the control stops catching anything.

Use both an amount and a percentage, and apply whichever is more generous. A one percent tolerance is meaningless on a small line and dangerous on a large one, so the two together behave more sensibly than either alone.

Different categories deserve different settings. Freight varies legitimately. Unit prices on contracted items should not vary at all.

CheckSuggested starting pointWhy
Unit priceTight, especially on contracted itemsA contracted price should not move without a conversation
QuantityZero tolerance, but allow partial receiptsShort deliveries should always be visible
FreightLooser, by amount rather than percentageGenuinely variable and usually small
TaxSmall amount toleranceRounding differences are normal, larger gaps are not

Start tighter than you think and loosen based on what the exception queue actually contains after a month.

Handling exceptions

An exception is only expensive because of what happens next. Finding the order, finding the receipt, emailing the supplier, waiting.

If the exception arrives with the order, the receipt, prior invoices from that supplier and the variance already calculated, the work becomes a decision rather than an investigation. That single change does more for accounts payable throughput than tightening any tolerance.

Where to start

If you are implementing matching for the first time, do not start with matching. Start by making sure goods receipts exist, because without them there is nothing to match against and the control will appear broken.

Receiving has to work where deliveries arrive, usually on a phone at a dock. A receiving step that requires somebody to return to a desk does not happen reliably, and everything downstream inherits that gap.

In short

What to take away from this

The goods receipt is the weak linkWithout it you have a two way match, whatever the system calls it.
Match line by lineTotals can agree while every line is wrong.
Use amount and percentage togetherEither alone behaves badly at one end of the range.
Vary tolerances by categoryFreight legitimately varies, contracted unit prices should not.
Attach the evidence to exceptionsIt turns an investigation into a decision.
Fix receiving before matchingOtherwise the control looks broken when it is the input that is missing.

Send us a stack of real invoices

Including the awkward ones. We will run them through matching live rather than describe what should happen.

Book a demo

Back to all resources