Invoice matching
Three-way matching: what it is and how it works, line by line
Three-way matching is the control that, before a supplier invoice is paid, checks line by line that it agrees with the purchase order on price and quantity and with the delivery note on the quantity received. If every line is within tolerance, the invoice can be paid; if any line exceeds it, the invoice is held and the difference is stated in euros.
The three documents and what each one proves
| Document | Who produces it | What it proves | What it contributes to the match |
|---|---|---|---|
| Purchase order | The buying company | What was authorised | Agreed unit price and quantity ordered |
| Delivery note | The supplier; the warehouse signs it on receipt | What was actually delivered | Quantity received |
| Invoice | The supplier | What is being charged | Invoiced unit price and quantity |
2-way, 3-way and 4-way matching compared
| 2-way | 3-way | 4-way | |
|---|---|---|---|
| Documents | Invoice + purchase order | Invoice + purchase order + delivery note | Invoice + purchase order + delivery note + inspection |
| Catches a price not agreed | Yes | Yes | Yes |
| Catches charging for goods not received | No | Yes | Yes |
| Catches paying for defective goods | No | No | Yes |
| Typical use | Services, subscriptions, rentals | Goods and materials | Raw materials and components with mandatory quality control |
| Cost to run | Low: a purchase order is enough | Medium: every receipt must be recorded | High: the inspection result must be recorded too |
The two formulas
Matching is done per line, with unit prices before tax. Header totals are useless: they include VAT, sometimes freight and global discounts, and on a partial delivery they never equal the purchase order.
- Price difference = (invoiced unit price − purchase order unit price) × invoiced quantity.
- Quantity difference = (invoiced quantity − reference quantity) × purchase order unit price. The reference quantity is the one received according to the delivery note; it is valued at the purchase order price so that a price error is not counted twice.
Worked example in euros (synthetic purchase order)
Purchase order, delivery note and invoice made up to explain the calculation.
| Line | PO | Received | Invoice | Price diff. | Qty diff. | Result |
|---|---|---|---|---|---|---|
| M8×40 stainless bolt | 2,000 × 0.12 | 2,000 | 2,000 × 0.12 | 0.00 | 0.00 | Matches |
| M8 stainless washer | 2,000 × 0.04 | 1,900 | 2,000 × 0.04 | 0.00 | +4.00 | Held: 100 invoiced that did not arrive |
| M8 stainless nut | 1,000 × 0.08 | 1,000 | 1,000 × 0.09 | +10.00 | 0.00 | Held: price 12.5% above the PO |
The invoice totals EUR 410 against EUR 400 on the purchase order. Comparing totals, EUR 10 on EUR 400 (2.5%) looks like rounding; line by line there are two different problems with two different owners: the warehouse for the quantity and purchasing for the price.
Want to match purchase order, delivery note and invoice today? The three-way matching Excel template does it line by line with formulas and tolerances. Download the three-way matching template
Tolerances: when a difference is a difference
Tolerance is the maximum difference accepted on a line without holding the invoice. Two thresholds are combined: an amount threshold, which protects against large differences on expensive lines, and a percentage threshold, which protects against large relative differences on cheap lines.
In ininvoice, by default, a line is held if its difference exceeds EUR 1.50 or exceeds 2%: exceeding either threshold is enough. A difference exactly equal to the threshold is within tolerance. The organisation can change both values.
| Line (synthetic) | Difference | % of line | Over EUR 1.50? | Over 2%? | Result |
|---|---|---|---|---|---|
| Cardboard pallet, EUR 1,200 | +1.20 | 0.1% | No | No | Matches |
| Film reel, EUR 900 | +9.00 | 1.0% | Yes | No | Held |
| Labels, EUR 40 | +1.00 | 2.5% | No | Yes | Held |
| Sealing tape, EUR 75 | +1.50 | 2.0% | No (equal) | No (equal) | Matches |
GRNI: the reverse side of three-way matching
GRNI (goods received not invoiced) is the balance of delivery notes received that do not have an invoice yet. Three-way matching looks for each invoice's purchase order and delivery note; GRNI collects the delivery notes that have not found an invoice. At month end that balance is accrued. Unreviewed GRNI accumulates delivery notes that will never be invoiced (unrecorded returns, cancelled deliveries) and invoiced delivery notes left open because the invoice was posted without linking it, which lets a second invoice for the same shipment find "its" delivery note and be paid again. ininvoice flags delivery notes that have been received for days without their invoice arriving.
How ininvoice does three-way matching
ininvoice reads the invoice without templates, line by line, assigns it to the group entity by the recipient's tax ID and matches it against that entity's purchase orders and delivery notes. For each line it computes the price and quantity differences with the formulas on this page, applies the organisation's tolerance and leaves the invoice matched or held, with the difference in euros and the line that causes it. Invoices that match need nobody to review them; those that do not reach whoever has to decide.
Frequently asked questions
What is the difference between 2-way and 3-way matching?
2-way matching compares the invoice with the purchase order only (price and quantity ordered). 3-way matching adds the delivery note, so it also checks that what was invoiced was received. 2-way is enough for services; goods need 3-way.
What tolerance is reasonable in three-way matching?
A per-line tolerance combining an amount and a percentage, so that a few cents of rounding do not hold the invoice while a real difference on an expensive line does. By default ininvoice holds a line whose difference exceeds EUR 1.50 or exceeds 2%, and the organisation can change both values.
Why is comparing the invoice total with the purchase order total not enough?
Because two errors of opposite sign on two lines cancel out and the total matches. The total also includes taxes and freight that the purchase order may not have, and with partial deliveries the invoice total never equals the order total.
What is GRNI and how does it relate to three-way matching?
GRNI (goods received not invoiced) is the balance of goods received whose invoice has not yet arrived. It is the reverse of three-way matching: delivery notes that find no invoice form the GRNI, which must be accrued at close and reviewed so nothing is paid twice or left open forever.
Every invoice line, matched against its purchase order and delivery note
ininvoice matches every line against its purchase order and delivery note, with partial deliveries, grouped invoices, credit notes and rebates, and configurable tolerances (2 % or €1.50 by default). Send me 3–5 supplier invoices and, if you have them, the purchase order and delivery note for one of them.
Request a demo with your own invoices