Cas d'usage

Compare a purchase order with an invoice

Dernière vérification · Cette page est fournie en anglais.

To compare a purchase order with an invoice, join the two by item code within the supplier and check three things per line: the code you ordered, the quantity you ordered, and the unit price you were quoted. Price Double Check does this from a forwarded email and replies with the lines that differ.

The purchase order is your own document, so this comparison answers a question the invoice and the price list cannot: did the supplier ship what you asked for. You forward the PO from your Sent folder, the order confirmation and the invoice from your Inbox, and the reply lists every line where the invoice departs from the order, with the price list in force as the third reference for the unit price. No system to key the order into, no receipt to book, no tolerance to configure.

What the purchase order leg catches

An invoice checked only against a price list tells you whether each billed price is the list price, not whether the line should be on the invoice at all. Compare a purchase order with an invoice and that question is answered too. In the chain we validated the service on, from a sports-nutrition manufacturer to a Baltic distributor, the PO leg produced findings the price-list leg could not see.

Every finding is one row: code, description, quantity, billed, expected, delta, in your favour or against you. The comparison is by code and never by description: in the validation set 335 of 442 lines had a description that did not match the price list wording, and a text match would have failed on most of them.

The order confirmation is the middle document

Between your purchase order and the supplier's invoice sits a document most buyers file and never read again: the order confirmation, also called an order acknowledgement or sales order confirmation. It is the supplier restating your order in their own codes, quantities and prices, before anything ships. A pro forma invoice plays the same role for prepaid and export orders.

This document matters for two reasons. First, it is the earliest point at which a substitution or a price change becomes visible, weeks before the invoice and before the goods are on a pallet. A confirmation that says 800 ml where you ordered 550 cc is a finding you can act on with one email; the same finding on the invoice is a credit note negotiation. Second, when the confirmation and the invoice agree but your order does not, the change was the supplier's decision; when the invoice departs from the confirmation, it happened in the warehouse or on the accounts desk. The three documents tell you where the difference was born.

So the sequence is: forward the purchase order, then the confirmation when it arrives, and the reply to the confirmation is already a comparison against the order. The invoice is then compared to both, and to the price list for the unit price. The same forward that gives you the invoice against the price list gives you the order against the invoice; there is nothing extra to set up.

What a two-way match costs in an ERP

Accounts-payable software calls this comparison a two-way match: the invoice against the purchase order. A three-way match adds the goods receipt, a four-way match adds inspection. Each system allows a difference up to a tolerance before it raises a match exception and blocks the invoice for payment. The figures below are from the vendors' own documentation, read on 7 September 2026.

SystemTwo-way matchToleranceWhat it needs from you
SAP S/4HANANative. Price variance against the PO net price; quantity variance against open quantity.Per tolerance key (PP price, DQ quantity). Over the upper limit the invoice is blocked.PO in SAP, invoice posted against it.
Dynamics 365 FinanceNative. Line matching of invoice unit price to PO unit price; three-way adds receipt.Price tolerance percentage per entity, item, vendor. Default is 0 percent.PO in Dynamics, receipt booked for three-way.
Oracle Fusion PayablesNative. Holds placed on invoices for variances from the PO.Ordered, price and amount tolerances. Zero allows no variance; blank allows any.PO in Oracle; invoice matched to it.
NetSuiteVia the 3 Way Match Vendor Bill Approval workflow.Quantity and amount limits, percent or absolute, per vendor or item. No defaults.PO, item receipt and vendor bill all in NetSuite.
Tipalti, StampliTwo-way and three-way, on top of your ERP.By amount or percentage, at bill or line level (Tipalti); customer-defined (Stampli).An ERP that holds the PO, plus the add-on licence.
Price Double CheckPO against confirmation against invoice, plus each against the price list.None to set. Half-up rounding of 4-decimal list prices accepted; the rest shown with a delta.The documents, forwarded by email.

Two things are true of every row above ours. The comparison only exists once the purchase order has been keyed into that system, and it never checks whether the PO price was right in the first place. A PO typed from an old price list matches the invoice perfectly and pays the old price. The price list is the reference none of them hold, and it is the reference we add to the two-way match. The trade-off is honest: an ERP match blocks payment and routes the exception to an approver; we report and you act. If you already run a purchase ledger with matching switched on, keep it and use us for the price-list leg.

On tolerance: vendors let you set one because a one-cent difference on every line would bury the AP team in exceptions. The only difference we absorb is the one the arithmetic itself creates, a list price held at four decimals and billed at two. Anything beyond that is reported with its amount and ranked by size. A tolerance hides small differences; ranking shows them last.

The purchase order lives in Sent

The reason most distributors, importers and shops have no purchase-order matching is not the licence. The PO they send the factory is a PDF or a spreadsheet attached to an email, and no system can compare a purchase order with an invoice until somebody types it in again. IOFM's benchmarking puts a large share of invoices arriving in AP with no system PO behind them; the PO sits in Sent.

We treat the purchase order as a document, the same way we treat the invoice and the price list. You open Sent, find the order you emailed the supplier, and forward it to your personal address. The service reads the codes, quantities and prices from the attachment, joins them to the same supplier's price list and, later, to the confirmation and the invoice. Nothing is re-typed. If the order was written in the supplier's own order form, the codes are already theirs; if it was written in yours, the confirmation carries their codes and the join is made through it.

The steps, once per supplier and then per order.

  1. Forward the supplier's current price list once. It stays on file.
  2. Forward each purchase order from Sent, at the moment you send it or in a batch later.
  3. Forward the order confirmation or pro forma when it arrives. The reply compares it with the order.
  4. Forward the invoice. The reply compares it with the order, the confirmation and the price list, and lists what it could not match, with amounts.

The reply always states what it read and passes an arithmetic gate first: the sum of the extracted lines must equal the printed total to the cent before a single line is compared. On the validation chain 11 of 11 invoices agreed with their printed total to the cent, which is the reason to trust a line-level finding rather than a parser's best guess.

What the order comparison does not do

For a purchaser who wants the full picture of what the chain of documents can prove without a purchase ledger, three-way matching without an ERP covers the receipt leg and where it stops. For the case where the quote, not the order, is the document that disagrees, see invoice does not match the quote.

En bref

A purchase order and an invoice are compared by item code, not by description.
Descriptions change between the order form, the confirmation and the invoice, often in wording and language. In the validation set most lines had a description that differed from the price list. The code is the only key that survives the whole chain, so the join is made on it and suffixed variants are normalised.
A short delivery is visible only from the purchase order.
An invoice for 18 units at the right price passes every price check. The order that asked for 24 is the only document that knows six are missing. Forwarding the PO is what makes quantity a finding at all.
The order confirmation shows a substitution before the goods ship.
The confirmation is the supplier restating your order in their codes and prices. A different code or price on it is the same finding as on the invoice, weeks earlier and before a credit note is needed. Forward it as soon as it arrives.
There is no tolerance to configure.
ERPs let you set a percentage below which differences are ignored. We report every difference beyond the rounding that four-decimal list prices create, with its amount, and rank them by size. Small differences are shown last, not hidden.
A purchase order sent as a PDF from your mail client is enough.
The order is read as a document, whatever form it was written in, and that is enough to compare a purchase order with an invoice. Forward it from Sent to your personal address, and the codes, quantities and prices are extracted from the attachment. Nothing is keyed into any system.

Forward one invoice and the price list to your address, then the purchase order from Sent, and the reply names what was substituted, what was short and what was billed at another price.