Every manufacturer running a purchasing department already does three-way matching, whether or not anyone calls it that. It's the check that happens before a vendor invoice gets approved for payment: does what we ordered, what we received, and what we're being billed for actually agree.

The concept isn't complicated. Doing it by hand, at volume, across a growing number of vendors, is what makes it painful. This post covers what three-way matching actually checks, why it exists, the variance types that cause most mismatches, and how to automate the comparison so your AP team is reviewing exceptions instead of re-checking every invoice from scratch.

What Three-Way Matching Checks

Three-way matching compares three documents before an invoice is approved for payment:

  1. Purchase order (PO): what you agreed to buy, at what price, in what quantity
  2. Receiving record / packing slip: what actually arrived
  3. Vendor invoice: what you're being billed for

If all three documents agree within an acceptable tolerance, the invoice is approved for payment. If they don't, it's flagged as an exception for someone to investigate before payment goes out.

Two-way match vs. three-way match

Two-way matching only compares the PO and the invoice, skipping the receiving confirmation. It's typically used for non-PO spend or services where there's nothing physical to receive (a consulting invoice, a software subscription). Manufacturers buying physical materials and components almost always need the three-way version, because the receiving record is what confirms you actually got what you're being billed for, not just that someone agreed to buy it.

Why This Control Exists

Three-way matching isn't paperwork for its own sake. It's the control that catches:

  • Overpayment for quantities never received (a partial shipment invoiced as complete)
  • Price discrepancies where a vendor bills at a rate different from what was quoted on the PO
  • Duplicate invoices, whether accidental resubmission or an attempt to bill twice
  • Fraud, including fictitious vendor invoices with no corresponding PO or receipt at all

Skipping this check doesn't just risk one bad payment. At volume, a manufacturer processing hundreds of invoices a month without consistent matching is effectively trusting every vendor's invoice at face value, every time.

Why the Manual Process Is Slow

The steps themselves aren't hard. The problem is that the three documents usually live in three different places:

  1. AP pulls the PO from the ERP or purchasing system
  2. AP tracks down the receiving record, often from a different system than the ERP, or a paper packing slip that has to be located physically
  3. AP pulls the invoice from a vendor email or a shared inbox
  4. AP manually compares line items across all three, often by eye or by re-typing numbers into a spreadsheet
  5. Any mismatch gets flagged, and someone has to chase down purchasing or the warehouse for an explanation before the invoice can move forward

For a manufacturer processing even a moderate invoice volume, this adds up to a meaningful chunk of AP's week spent on document retrieval and manual comparison rather than actually resolving the exceptions that need a human decision.

Common Mismatch Categories

Most matching exceptions fall into a small number of repeatable categories:

  • Quantity variance: A partial shipment arrives, but the vendor invoices for the full PO quantity anyway
  • Price variance: The invoiced unit price doesn't match the PO, often because a vendor price increase went into effect without an updated PO
  • Unit of measure mismatch: The PO is in cases, the invoice is in individual units, and the systems don't reconcile the conversion automatically
  • Early or duplicate invoicing: An invoice arrives before goods are received, or the same invoice is submitted twice under slightly different reference numbers

Recognizing which category an exception falls into is most of the work of resolving it quickly. A quantity variance and a price variance need entirely different follow-up (checking with the warehouse vs. checking with purchasing), so routing exceptions to the right category from the start saves the back-and-forth of figuring out who needs to look at it.

Setting Tolerance Thresholds

Not every discrepancy needs a human to look at it. A $0.02 rounding difference or a fractional unit-of-measure conversion artifact isn't worth AP's time to investigate manually every single time it happens.

Most manufacturers set a tolerance band, for example:

  • Quantity variance under 2%: auto-approve
  • Price variance under a fixed dollar threshold (e.g., $5) or a fixed percentage (e.g., 1%): auto-approve
  • Anything outside those bands: route to AP for manual review

Setting sensible tolerances is what turns three-way matching from "review every invoice" into "review only the invoices that actually need a decision." The right thresholds depend on your typical order size and vendor reliability; start conservative and loosen them as you confirm what's actually low-risk in practice.

Automating Three-Way Matching with n8n

The matching logic itself is a good fit for automation, because it's a repeatable comparison against a defined tolerance, not a judgment call for the majority of invoices.

A typical n8n workflow for this:

  • Pull the PO data directly from your ERP or purchasing system via API, so the workflow always has the current PO terms without anyone re-keying them
  • Pull the receiving confirmation from your warehouse system, or from a simple form the receiving team fills out when goods arrive, if you don't have a connected WMS
  • Capture the invoice as it arrives by email, parsing the PDF or structured data to extract PO number, line items, quantities, and prices
  • Compare all three against your defined tolerance thresholds automatically
  • Auto-approve matches within tolerance, routing them straight into the payment queue without anyone touching them
  • Flag exceptions with the specific mismatch category (quantity, price, unit of measure, timing) so whoever picks it up already knows what to check, instead of starting from scratch

This doesn't require replacing your ERP or buying a dedicated AP automation platform. It's a workflow layered on top of the systems you already use to issue POs, log receiving, and receive vendor invoices. See How to Automate Purchase Order Approvals in n8n for the upstream half of this process (getting the PO approved and issued in the first place), and How to Automate Invoice Processing in n8n for the invoice-parsing piece that feeds the matching workflow.

For the broader picture of where three-way matching fits into the full purchase-to-pay cycle, see Procurement Automation for Manufacturers: The Full Purchase-to-Pay Cycle. And for the accounts payable side more broadly, see AP Automation for Manufacturers: How to Do It Without Buying a New Platform.

The Flow Kaizen guide covers how to build the matching, exception-routing, and approval workflows above using n8n, without needing to license a new AP platform to get there.