Procurement & AP

PO matching software: match invoices to purchase orders automatically

Tavnit reads purchase orders and the invoices that follow them, extracts PO number, supplier, SKUs, quantities and prices as typed fields, and pairs invoice lines to PO lines automatically — even when the supplier describes an item differently. Header-level matching is a lookup on the PO number; line-level matching is a Matcher comparison; anything that does not agree goes to a named reviewer instead of to your ledger.

Why this is painful

PO matching is the check that what was billed is what was ordered. In most teams it is still done by eye: an AP clerk opens the invoice PDF, finds the purchase order, and compares quantities and prices line by line. It is slow, and it is where the two expensive errors — a wrong quantity and a wrong unit price — slip through because they look exactly like right ones.

Automated PO matching tools in ERPs assume both documents are already structured. They are not. The purchase order came out of your system, but the invoice came out of the supplier's, as a PDF, with their part numbers and their layout. Getting it into a comparable shape is the unsolved half of the problem, and it is the half Tavnit does.

What to extract

FieldWhy it needs care
PO numberThe key everything joins on. Extract it as text — prefixes and leading zeros are significant, and suppliers put it in different places on the invoice.
Supplier and buyerThe supplier's own name on the invoice rarely matches the vendor record verbatim. A lookup Cleaner resolves it to your vendor ID.
Line items: description, SKU, quantityA repeating table on both documents. Supplier part numbers usually differ from yours; descriptions differ in wording — this is what makes line matching hard.
Unit price and extended amountBoth, so unit price × quantity can be verified on the invoice itself before it is compared to the PO.
Invoice and PO totalsHeader-level match. A total that agrees while a line disagrees is a quantity/price swap — the case a total-only check misses.
Delivery date and delivery note referenceThe third document in a three-way match. Delivery notes are extracted the same way; see the delivery-notes page.
Payment terms and currencyShort fields with outsized consequences when the invoice disagrees with the PO.

What makes purchase orders hard

Two-way, three-way: the match only works if the shapes agree

A two-way match compares the invoice to the PO; a three-way match adds the goods-received note. Both fall apart when the documents are extracted into different field names. Running POs, invoices and delivery notes through flows that share the same field schema — PO number, SKU, quantity, unit price — is what turns matching into a comparison rather than a document read.

Supplier part numbers are not your part numbers

The PO lists your SKU; the invoice lists the supplier's. A lookup Cleaner maps supplier part numbers to your SKUs against your reference data during processing, so the invoice arrives already translated. Where no reference exists, a Matcher pairs lines by the meaning of the description — semantic, not exact — with an LLM tiebreaker for borderline pairs.

Line-level matching, not just totals

Set the PO run as the benchmark and the invoice as the run compared against it. The Matcher pairs each invoice line to a PO line and lays quantity and unit price side by side, with unmatched lines listed as warnings rather than silently dropped. A total-only check would pass an invoice that billed the right amount for the wrong items.

Only the exceptions should reach a human

Review on every invoice recreates the manual process. A formula Cleaner verifies that unit price × quantity equals the line amount on the invoice itself, and a condition flags lines outside your tolerance. Human-in-the-Loop review is triggered only for flagged runs, so the reviewer sees the three invoices that disagree, not the three hundred that match.

How the pipeline handles it

  • Collections Suppliers send POs, invoices and delivery notes to one address. Collections classifies each document and routes it to the right flow.
  • Cleaners Maps supplier part numbers and vendor names to your master data by lookup, verifies line arithmetic, and flags values outside tolerance.
  • Buckets Holds POs and invoices in the same shape, so header-level matching is a query on the PO number.
  • Human in the Loop Only flagged invoices pause for a named reviewer, with an append-only audit trail of who approved what.
  • API Integration Pushes matched, approved invoices into your ERP or AP system without a manual step.

Common questions

What is PO matching?
PO matching is the check that an invoice agrees with the purchase order it bills against — same supplier, same items, same quantities and prices. A two-way match compares invoice to PO; a three-way match also checks the goods-received note. It is the control that stops a supplier being paid for something that was not ordered or not delivered.
Can Tavnit match invoices to purchase orders automatically?
Yes. Extract both into the same field structure and header-level matching becomes a query on the PO number in your Bucket. For line-level matching, a Matcher in benchmark mode takes the PO as the baseline and pairs each invoice line to it, showing quantity and unit price side by side. Lines that cannot be paired are listed as warnings.
What if the supplier uses their own part numbers or descriptions?
A lookup Cleaner maps supplier part numbers to your SKUs during processing when you have reference data. When you do not, the Matcher pairs lines by the meaning of the description rather than the exact text, with an LLM tiebreaker for borderline pairs, so "Blue widget 10pk" and "WIDGET-BLU x10" land on the same row.
What happens when an invoice does not match?
It stops. A condition Cleaner flags the run and Human-in-the-Loop review routes it to a named reviewer, who sees the invoice, the extracted values and the disagreement. Matching invoices pass straight through to your ERP by API or webhook. Every view, edit and approval is written to an append-only audit trail.
Does it do three-way matching with delivery notes?
Delivery notes and goods-received notes are extracted the same way as POs and invoices — including handwritten quantities on signed PODs — into the same field shape, so the third leg of the match is a third run compared against the PO.
Do we need to change our ERP?
No. Tavnit sits in front of it: documents arrive by email or API, are extracted and matched, and approved results are delivered to your ERP or AP system by REST API or webhook. Zapier, Make and n8n recipes exist for teams that prefer not to write code.
Do line items come through separately?
Yes. Line items are table fields, so each row returns SKU, description, quantity, unit price and extended amount as separate typed values — which is what makes line-level comparison possible at all.

Other document types

Try it on one document

Build a flow, send a real purchase order through it, and see what comes back. Free credits to start.

Start free