What is three-way matching?
Three-way matching is a control that compares three documents before an invoice is paid: the purchase order, the record of what was received, and the invoice itself. If the quantities and amounts agree across all three within an allowed tolerance, the invoice can be paid. If they disagree, the invoice becomes an exception and goes to a person to resolve.
It is the most common accuracy and fraud control in accounts payable, and it is also the single largest source of exceptions.
Three documents have to tell the same story
The three documents each answer a different question.
The purchase order says what the company agreed to buy: the items, the quantities, and the prices. It is created before anything is delivered.
The goods receipt, sometimes recorded as a GRN, says what actually arrived. A warehouse or requester confirms that the goods showed up and in what quantity. For services, this step is often a confirmation that the work was performed.
The invoice says what the supplier is billing for. It arrives last and is the document the company is being asked to pay.
Three-way matching lines these up and checks that they tell the same story.
The match clears agreement and flags everything else
In a standard match, the system checks that the invoice quantity does not exceed the received quantity, and that the invoice price agrees with the purchase-order price, within tolerance. A related check confirms the invoice isn't billing for more than was ordered.
When all three documents agree, the invoice clears and can be paid without review. When they don't, the system flags the difference and routes the invoice out for resolution. Related variants include two-way and four-way matching, which change how many documents are compared. The step-by-step mechanics are worth understanding before tuning anything.
Tolerances are a balancing act you have to tune
Almost no company matches to the exact penny, because small differences are normal. A tolerance is the allowed gap before an invoice is flagged. It might be a fixed amount, such as a few dollars, or a percentage of the line value, or both.
Set tolerances too tight and the system flags trivial rounding differences, which floods the AP team with low-value exceptions. Set them too loose and real overbilling slips through. Most companies tune tolerances over time, and the right setting varies by category and supplier. The match tolerances page goes deeper on how to set them.
Ordinary business breaks the match
The control fails whenever the three documents don't line up, and there are many ordinary reasons for that:
- A partial delivery arrives, so the received quantity is lower than the invoice until the rest ships.
- A price was renegotiated after the purchase order was cut, so the invoice is correct but the order is stale.
- The goods receipt was never entered, or was entered late, so the system thinks nothing arrived.
- Freight or tax appears on the invoice but not on the order.
- A services invoice has no clean receipt to match against, which is why non-PO and services invoices are such a frequent source of exceptions.
None of these means anyone did anything wrong. They are the normal friction of buying physical goods and services at scale. But each one stops the match, and a stopped match is an exception. The failure catalog covers each break in detail.
The alternative to matching is worse
Despite the exception volume it creates, three-way matching is standard because the alternative invites overbilling, duplicate billing, and payment for goods that never arrived. The control catches those before money leaves the building. The cost is the manual work of clearing everything the control flags.
Matching was automated years ago; resolution is the frontier
The mechanical part of matching has been automated for years inside ERP and P2P systems. The part that stays manual is the resolution of what the match flags, because that requires understanding why the three documents disagree and what to do about it. That is a context problem, and buying more matching software rarely lowers the exception count. The pricing gives away why: seat-licensed software earns more when more people work the flags.
Systems that can read the surrounding context, the buyer's rules, the supplier history, the notes buried in the purchase order, can resolve most flagged matches without a person and escalate only the ones that genuinely need judgment. That shifts three-way matching from a control that generates work to a control that runs quietly in the background.
Fragment reads that context in place and clears the routine matches on its own, so your team only sees the exceptions that actually need a human. See how Fragment reads that context or request a demo.
