Skip to main content
Complete guide 28 Apr 2026 · 18 min read

Three-way matching: the complete guide to reconciling invoices, purchase orders and delivery notes

ininvoice performs three-way matching automatically: it cross-checks purchase order, delivery note and invoice line by line, unit price and quantity, straight from your inbox. It detects overcharges against agreed prices, incorrect quantities and duplicates. Without that cross-check, a company pays what the supplier invoices, not what it actually ordered and received.

Three-way matching flow diagram: PO, delivery note and invoice converge into validation and approved payment
Purchase order (PO: agreed price) Delivery note (quantity received) Supplier invoice (price + qty charged) Match line by line OK Variance When all three documents agree line by line, payment is approved.
Three-way matching reconciliation flow: purchase order, delivery note and invoice converge in the line-by-line cross-check.

Most of the duplicate payments and price creep that pile up in a company's accounts payable have a common cause: nobody cross-checked the documents before paying. Or if they did, they compared the invoice total with the PO total, which is a way of checking nothing.

Three-way matching is the process that closes that gap. This guide explains how it works step by step, with the exact formulas, real worked examples in EUR and the errors finance teams make most often when trying to implement it.

What three-way matching is

Three-way matching is the verification that three documents agree before authorising payment of a supplier invoice:

  • The purchase order (PO) — what your company agreed to buy.
  • The delivery note — what the supplier actually delivered.
  • The supplier invoice — what the supplier is charging you.

If all three documents agree, the invoice is paid. If there is a discrepancy, the invoice is held and investigated. It is not rejected outright: only the lines with issues go for review. The rest can flow through.

In English it is known as three-way matching or 3-way matching. In other languages it is sometimes called invoice reconciliation, invoice-PO matching or PO-delivery-invoice cross-check. The concept is the same in every case: verify that what you ordered is what arrived and is what you are being charged, before any money leaves the bank.

What three-way matching is not

It is not bank reconciliation. Bank reconciliation cross-checks bank movements against the accounting ledger and happens after payment. Three-way matching happens before. Its goal is to decide whether to pay, not to confirm that a payment was made.

It is not checking the invoice total. Comparing the invoice total with the PO total is a minimal control. Two lines can offset each other: the supplier overcharges by 50 EUR on one and undercharges by 50 EUR on another, and the total still ties out. The error does not disappear; it is simply hidden. Three-way matching compares line by line.

Want to see line-by-line matching running on your inbox?

ininvoice automates three-way matching from your inbox. Book a demo and try it on your own invoices.

Why total-only matching does not work

A concrete example. Your company issues PO-2025-0884:

LineProductQuantityUnit priceTotal
1Cat6 UTP cable (305m reel)10 reels85.00 EUR850.00 EUR
2RJ45 connector (box of 100)5 boxes18.00 EUR90.00 EUR
3Cable tie 4.8x300 (bag of 100)20 bags4.00 EUR80.00 EUR

PO total: 1,020.00 EUR

The supplier invoice arrives with a total of 1,020.00 EUR. A total-only control approves payment.

But the invoice lines look like this:

LineProductQuantityUnit priceTotal
1Cat6 UTP cable (305m reel)10 reels87.00 EUR870.00 EUR
2RJ45 connector (box of 100)5 boxes16.00 EUR80.00 EUR
3Cable tie 4.8x300 (bag of 100)20 bags3.50 EUR70.00 EUR

Invoice total: 1,020.00 EUR

The total ties out perfectly. But line by line there are three discrepancies: the cable price went up by 2 EUR per reel (+20 EUR), the connector price dropped by 2 EUR per box (-10 EUR) and the cable tie price dropped by 0.50 EUR per bag (-10 EUR). Net zero. But the purchase contract specifies concrete prices per SKU. No variation is innocent until its origin is verified.

With a volume of 300 invoices per month, this kind of hidden offsetting can pile up thousands of euros in unauthorised overcharges before anyone notices.

The three documents: PO, delivery note and invoice

1. The purchase order: the agreed truth

The purchase order (PO) is the document your company creates when it agrees a purchase with a supplier. It includes what is ordered, in what quantity, at what unit price and under which terms. It is the starting point of the process.

If there is no formal PO, three-way matching is not possible. Companies that buy by phone, by informal email or with verbal orders have no reference to match against. The first step to implementing three-way matching is formalising purchase orders.

The PO can live in an ERP (SAP, Microsoft Dynamics, Holded, Sage), in a dedicated procurement system or in a disciplined spreadsheet. What matters is that it exists, that it is numbered and that the price and quantity data reflect what was agreed.

2. The delivery note: the received truth

The delivery note (also called goods receipt or GRN) confirms what actually came through the door. The warehouse or receiving department records what arrived, in what quantity and in what condition.

This is where quantity problems surface: 500 units were ordered, 480 arrived. Or they arrived in two partial deliveries of 300 and 200. Without a recorded delivery note, there is no evidence of what was received.

The delivery note closes the gap between what was agreed and what was delivered. Without it, reconciliation can only compare the invoice with the PO (two-way matching), which fails to detect phantom quantity issues.

3. The supplier invoice: what you are charged

The supplier invoice arrives by post, by email or through a supplier portal. It includes lines with description, unit price, quantity, taxes and total. It is what the supplier says you owe. It does not always match what was agreed or what was delivered.

A valid invoice for tax purposes must comply with the applicable invoicing regulations in your jurisdiction. Any mismatch between what the supplier invoices and what you have on record can affect the input tax you can deduct on your VAT return.

When the invoice arrives before the delivery note — which happens often on credit-line orders — the process does not stall. The invoice stays in a pending state until the delivery note confirms receipt. Only then can it be reconciled.

How line-by-line matching works

The core of three-way matching is two formulas applied to each invoice line, compared against the matching PO and delivery note lines.

The formulas always work on pre-tax unit prices. Never on header totals or gross amounts with VAT. The reason is simple: VAT can differ per line depending on product type, and gross totals are not directly comparable.

Price variance formula

price_variance = (invoice_price − po_price) × invoice_quantity

This formula detects whether the supplier is charging more (or less) per unit than agreed on the PO. It is multiplied by the invoiced quantity to obtain the real monetary impact.

Quantity variance formula

qty_variance = (invoice_quantity − delivery_note_quantity) × po_price

This formula detects whether you are being charged for more units than actually arrived. It is multiplied by the PO price (not the invoice price, to avoid amplifying a price error in the quantity calculation).

Worked example: PO-2025-1347

Purchase order:

LineProductQuantityUnit price (PO)
1M8x40 stainless A2 bolt2,000 units0.12 EUR
2M8 stainless A2 washer2,000 units0.04 EUR
3M8 hex stainless A2 nut1,000 units0.08 EUR

Delivery note:

LineProductQuantity received
1M8x40 stainless A2 bolt2,000 units
2M8 stainless A2 washer1,900 units
3M8 hex stainless A2 nut1,000 units

Supplier invoice:

LineProductQuantityUnit price (INV)Line total
1M8x40 stainless A2 bolt2,000 units0.12 EUR240.00 EUR
2M8 stainless A2 washer2,000 units0.04 EUR80.00 EUR
3M8 hex stainless A2 nut1,000 units0.09 EUR90.00 EUR

Line-by-line cross-check result:

LinePrice varianceQuantity varianceStatus
1(0.12 − 0.12) × 2,000 = 0.00 EUR(2,000 − 2,000) × 0.12 = 0.00 EURMatched
2(0.04 − 0.04) × 2,000 = 0.00 EUR(2,000 − 1,900) × 0.04 = +4.00 EURQuantity exception
3(0.09 − 0.08) × 1,000 = +10.00 EUR(1,000 − 1,000) × 0.08 = 0.00 EURPrice exception

Line 1 matches. Line 2 has a quantity discrepancy: the invoice charges for 2,000 washers but the delivery note only recorded 1,900. The potential overpayment is 4.00 EUR. Line 3 has a price discrepancy: the supplier raised the unit price by 12.5% above the PO. The potential overpayment is 10.00 EUR.

Total unjustified variance: 14.00 EUR on this PO. Multiplied by 200 similar POs per month, that is 2,800 EUR that can pile up without anyone spotting it.

Purchase order (PO) 100 units 50.00 EUR/unit PO total: 5,000 EUR Delivery note received 98 units received 2 units missing Supplier invoice 100 units charged 51.00 EUR/unit Total charged: 5,100 EUR Variance calculation line by line pre-tax Price variance: (51-50)x100 = +100 EUR Quantity variance: (100-98)x50 = +100 EUR
Line-by-line variance calculation: pre-tax unit price vs PO, invoiced quantity vs delivery note.

Tolerances: what variance is acceptable

Not every discrepancy is worth holding an invoice over. If a line variance is 0.02 EUR, the cost of investigating it far exceeds the amount at stake.

That is why tolerances are configured. Thresholds below which variance is accepted automatically and the line is flagged as matched. If variance exceeds the tolerance, the line becomes an exception and goes to review.

The industry standard, according to the IOFM (Institute of Finance & Management), points to OR-mode tolerances: variance is accepted if it meets the percentage OR the absolute criterion, whichever is broader:

Purchase typePercentage toleranceAbsolute tolerance
Office supplies, consumables5%2.00 EUR per line
Equipment, machinery2%1.50 EUR per line
Raw material, critical components1%0.50 EUR per line
Professional services0% (fixed amount)

In the earlier example, the line 2 quantity variance (4.00 EUR on 80.00 EUR = 5%) would be on the edge if the configured tolerance is 5%. The line 3 price variance (12.5%) exceeds any reasonable tolerance and triggers an exception.

OR-mode tolerance means that if variance is 0.03 EUR on a line with a 0.50 EUR absolute tolerance, it is accepted even though the percentage is high. This avoids stopping invoices over rounding on very low-priced items.

Each company tunes its tolerances based on sector, volume and risk appetite. What matters is that they are a conscious decision, documented and reviewed periodically — not the result of having no policy at all.

Exception matrix: who resolves what

When a line raises an exception, it has to reach the right person to be resolved. If every exception lands in the same inbox, they get mixed up and lost. If there is no assigned owner, they do not get resolved.

The standard is a routing matrix by discrepancy type:

Discrepancy typeOwnerMaximum lead time
Price varianceProcurementImmediate
Quantity variance (charged > received)Warehouse / receiving24 hours
Missing delivery noteReceiving / logistics24 hours
Duplicate invoiceAutomatic block + financeImmediate
Unknown supplierProcurement + financeImmediate
Cancelled POProcurementImmediate
Discrepancy type Owner Urgency Price variance Supplier charges more per unit than agreed Procurement Normal Quantity variance Invoice charges for more units than received Warehouse / receiving Normal Missing delivery note No recorded confirmation of receipt Logistics / receiving High Duplicate invoice Same invoice received or recorded twice Automatic block + finance Immediate
Exception routing matrix: every discrepancy type has an assigned owner and lead time.

Without this matrix, exceptions die in the inbox. The finance controller spends the day forwarding emails to the warehouse asking whether the material arrived. The warehouse has no idea what they are talking about because they have no access to the invoicing system. The supplier calls because they have not been paid. Meanwhile, the supplier payment deadline keeps running.

Accounts payable automation turns this matrix into automatic routing. When a line raises an exception, the system notifies the assigned owner directly with full context: which invoice, which line, which PO, how big the variance is. No manual searching, no intermediate emails. More on exception handling in our exception management guide.

2-way, 3-way and 4-way matching: when to use each

TypeDocuments cross-checkedWhen to use it
2-way matching PO + invoice Intangible services with no physical delivery: consulting, SaaS licences, insurance, subscriptions. There is no delivery note because there is no shipped good.
3-way matching PO + delivery note + invoice Physical product purchases with goods receipt. Standard for most industrial, distribution, hospitality and construction companies.
4-way matching PO + delivery note + invoice + quality inspection Sectors with strict quality requirements: pharmaceutical, food, aerospace, defence. Receiving the product is not enough; you must certify that it meets technical specifications.
2-way matching Purchase order Supplier invoice Services with no physical delivery 3-way matching Purchase order Delivery note Supplier invoice Standard for physical products 4-way matching Purchase order Delivery note Supplier invoice Quality inspection Pharma, aerospace, defence
2-way / 3-way / 4-way comparison: documents cross-checked by each variant and when to use it.

Most SMEs that buy physical products need 3-way matching. Pure services companies can operate with 2-way. Regulated sectors with mandatory inspection need 4-way. See the practical case in 4-way matching in pharma and chemistry.

Some suppliers send invoices for services that have no delivery note (fixed monthly maintenance, equipment rental). For these cases you can configure an exception rule: if the supplier is on the recurring-services list and the amount matches the contract, the invoice is approved without a delivery note. But this is not three-way matching; it is a separate approval rule that coexists with the main process.

For construction, with its progress certifications and multiple delivery notes per line item, the casuistry has its own quirks. The same is true for distribution, where partial deliveries are the norm. You can see the details in the guides on construction invoices and distribution invoices.

Common errors in SMEs

These are the five errors that show up most often when a finance team tries to do three-way matching without a formal process.

1. Matching the total, not the lines. The most frequent error. The total amount agrees and the team assumes everything is fine. As we saw earlier, the total can agree even when discrepancies between lines offset each other.

2. Excel as the matching system. A spreadsheet works for 30 invoices per month with two disciplined people. With 300 invoices, two people who take turns going on holiday and a shared file on the network drive, it is a system that is broken by design. The 3.6% data-entry error rate reported by the IOFM is not theory; it is what they measure in real departments that work this way.

3. Not recording partial deliveries. The PO is for 1,000 units. 600 arrive in a first shipment. The warehouse does not log the partial delivery note because they are waiting for the full delivery. The invoice for 1,000 units arrives. Without a delivery note saying only 600 arrived, the invoice gets paid in full. When the second shipment arrives, there is no open PO line to link it to.

4. Verbal orders with no written PO. The buyer agrees a special price over the phone with the supplier. The price is not captured anywhere in the system. The invoice arrives at the catalogue price. There is no reference to compare against. The finance team pays without knowing the price was different.

5. Tax mismatches on input VAT. When an invoice is paid for a quantity or price that differs from what was recorded on the PO, there can be a difference in the deductible input VAT. For companies subject to near-real-time VAT reporting, these differences flow through to the tax authority. An inconsistent matching process can generate discrepancies in the received-invoices register that later have to be reconciled with the regulator. Consult your tax adviser for the specific implications in your situation.

How ininvoice automates three-way matching

[Image: ininvoice reconciliation panel with line-level detail: available soon]

ininvoice automates three-way matching from the moment an invoice arrives in the inbox through to notifying the owner of every exception. The process has four phases:

Phase 1: ingestion. ininvoice reads your company inbox (Gmail or Outlook). When an invoice arrives as a PDF attachment, it is captured automatically. Manual upload is also supported if the supplier does not send invoices by email.

Phase 2: line-by-line OCR extraction. The OCR engine extracts every field of every line: description, quantity, unit price, tax, total. It does not extract only the invoice total. It extracts the full structure. Accuracy on standard documents is 95-98%. The remaining 2-5%, typically very degraded or handwritten invoices, requires manual review.

Phase 3: PO fuzzy matching. ininvoice looks up the matching purchase order in your system. If the PO number is on the invoice, it links directly. If not, it uses fuzzy matching: it compares supplier, date, line descriptions and amounts to find the most likely PO. If a high-confidence candidate is found, it is proposed for confirmation. If there is no strong match, the invoice is flagged as PO-less and routed to procurement. More detail on how approximate matching works in the fuzzy matching guide.

Phase 4: reconciliation and scoring. With the invoice extracted and the PO linked, ininvoice applies the line-by-line variance formulas. Lines within tolerance are reconciled automatically. Lines that exceed tolerance generate an exception. Every invoice receives a 0-to-100 score that summarises its risk level: variances, new supplier, PO-less invoice, possible duplicate. High-risk invoices appear first in the review queue. More on the scoring system in how risk scoring works.

The result is that invoices that agree get approved with no human intervention. The ones with issues arrive at the right owner with full context already attached. The finance team stops being the bottleneck and shifts to managing exceptions, which is the work that actually adds value.

ininvoice is not an ERP and does not replace the accounting system. It is the reconciliation layer between the supplier inbox and the ERP. Approved data is exported to Holded, Sage, A3 and other systems as clean accounting entries. You can see the full flow on the features page.

249 EUR/mo. Instant activation. No commitment.

ininvoice automates three-way matching from your inbox. No implementation, no consultant, no ERP swap.

Get started

What it costs not to have three-way matching

APQC (American Productivity & Quality Center) publishes AP productivity benchmarks based on data from thousands of companies. According to its reference report, accounts payable departments that operate manually process an average of 6,082 invoices per employee per year. Those that have automated the process reach 23,333 invoices per employee per year: a 3.8x multiplier.

Translated into euros: if an AP employee costs 28,000 EUR per year (gross median salary for this profile), the cost per invoice manually is 4.60 EUR in headcount time alone. With automation it drops to 1.20 EUR. With 300 invoices per month, the annual delta is 12,240 EUR.

And that is before the errors.

According to the IOFM, the duplicate payment rate in non-automated departments is between 0.1% and 0.5% of purchase volume. For a company that pays 2 million EUR per year to suppliers, that is between 2,000 and 10,000 EUR per year in duplicate payments, most of which are recovered late, with processing cost, or not recovered at all.

There is one cost that does not show up in any benchmark: the time the finance manager spends chasing delivery notes, asking the warehouse whether the 500 or only 450 units arrived, calling the supplier to ask for the duplicate of an invoice. That time is not measured, but it takes 2 to 4 hours per day in departments with 300 or more invoices per month.

Implementing three-way matching without changing ERP

The question finance leaders ask most is: «Do we have to change our ERP to do three-way matching?» The answer is no.

Three-way matching needs three types of data: purchase orders, goods-receipt delivery notes and supplier invoices. Those data can live in the current ERP (SAP, Microsoft Dynamics, Holded, Sage, A3), in a dedicated procurement system, in spreadsheets or even in scanned documents. What matters is that they exist and are accessible.

The minimum process to get started:

  1. Formalise the POs. If POs do not exist as numbered documents with price and quantity, that is where you start. Without a PO there is no reference.
  2. Log receipts. The warehouse or receiver has to confirm in writing what arrived. It can be a signed delivery note, a note in the system or a confirmation by email with quantity and date.
  3. Funnel the invoices. All supplier invoices must land in the same place: an invoices inbox, a portal or a dedicated mailbox. The process breaks down if invoices arrive in ten different inboxes.

With those three elements in order, the matching tool does the rest. ininvoice connects to Gmail or Outlook to read incoming invoices. POs are loaded from your existing system (CSV export, API or manual upload). Delivery notes are entered into the system or confirmed by email from receiving. There is no need to migrate historical data or change how the ERP operates. ininvoice acts as a middle layer between the supplier inbox and the accounting system.

For companies that already run SAP or Microsoft Dynamics with a fully-featured AP module, the decision is different: matching can live inside the ERP. But implementing and configuring that module takes months and a consulting team. For mid-sized companies, a specialised tool with instant activation is usually the practical option. You can see the differences in the AP automation software comparison.

Get started this week

249 EUR/mo · up to 300 invoices/mo · no commitment · no implementation fee · instant activation.

Book a demo

12 frequently asked questions about three-way matching

What happens if the invoice arrives before the delivery note?
The invoice is held in a delivery-note-pending state. It is not rejected or returned to the supplier. When the delivery note confirms receipt, the system resumes the cross-check automatically. If the delivery note does not arrive within a configured window, an alert is sent to the receiving department.
Does it work with invoices that have no PO number?
Yes, with limitations. The system tries to identify the PO by supplier, amount, date and line descriptions. If match confidence is high, it is proposed for confirmation. If there is no clear candidate, the invoice is routed to procurement to assign the PO manually. PO-less invoices are the main source of exceptions in teams without a formal PO process.
What is the default tolerance?
The ininvoice default tolerance is 2% OR 1.50 EUR per line (OR-mode). Each company can configure it by supplier, by product category or globally. There is no universally correct tolerance: it depends on sector, volume and purchase mix.
How are duplicates detected?
A duplicate is detected by cross-referencing four fields: invoice number, supplier tax ID, total amount and a date window (±30 days). If two invoices match across these four fields, the second one is blocked automatically and finance is notified. The duplicate detection system works even when the supplier changes the invoice number format between sends.
How accurate is the OCR?
On digitally generated PDF invoices, line-by-line accuracy is 95-98%. On well-scanned invoices, between 90% and 95%. Very degraded, handwritten or non-standard layouts (some construction, hospitality or import formats) may require manual review. ininvoice flags these invoices with a low-confidence indicator on the extraction.
What about partial deliveries?
Each partial delivery note is recorded against the original PO. The invoice can only be reconciled against lines for which there is a confirmed delivery note. If the supplier invoices the full amount before delivery is complete, the system detects the quantity discrepancy and raises an exception until the second shipment arrives and is recorded.
Is three-way matching mandatory by law?
No regulation explicitly requires three-way matching. But internal control frameworks (COSO, SOX for listed companies or subsidiaries of US groups), external audits and compliance requirements from large customers treat it as a standard practice. Any internal or external auditor expects to see it in companies with meaningful purchase volume.
How does it affect VAT reporting and e-invoicing?
Near-real-time VAT reporting regimes require received invoices to be reported to the tax authority within a few days of being booked. A fast and accurate matching process makes it easier to meet that window. As mandatory e-invoicing rolls out, price and quantity data will be structured digitally from the source, which makes automated matching even more precise. Consult your tax adviser on the specific implications for your situation.
What is the difference with two-way matching?
Two-way matching only cross-checks the invoice against the PO. It does not include the delivery note. It is appropriate for services with no physical delivery. The risk of two-way is that it does not detect quantity discrepancies: you can end up paying for goods that did not arrive. For tangible purchases, three-way matching is the minimum standard.
Does it work with e-invoices (FacturaE, Peppol)?
Yes. E-invoices in FacturaE (XML) or Peppol BIS format already have structured data. OCR is not required. ininvoice can read these formats directly and matching is more precise because the data does not depend on OCR interpretation.
Can it integrate with Holded, Sage or A3?
ininvoice exports approved invoice data in formats compatible with Holded, Sage 50/200 and A3 ERP. It does not compete with the ERP; it sits in front of it. The accounting entry reaches the ERP already reconciled and approved, with no further review needed. Native integrations are in development.
How long does activation take?
ininvoice activation is plug and play. You connect your inbox and it starts working. There is no implementation project, no mandatory training and no setup fee. Historical POs can be loaded by CSV or manually for the active ones. The system starts processing invoices from day one.

Automate three-way matching from your inbox

Connect Gmail or Outlook. ininvoice reads the invoices, finds the PO, cross-checks the delivery note and sends you only the exceptions that need attention.

Get started

249 EUR/mo · No commitment · No implementation fee