Three-way match: Did we get what we paid for?
Before you pay a vendor bill, prove the purchase order, the receipt, and the invoice agree — or know exactly why they don’t. Here’s how Purchasing, Receiving, Inventory, and AP each own a step.
Three-way match answers one question before money leaves the building: did we get what we paid for? It is not a paperwork ritual for the audit file. It is the handshake between what you agreed to buy, what actually landed on the dock, what you put on the books as stock, and what the vendor is asking you to pay.
When those stories disagree, someone is about to overpay, under-receive, or fight a dispute with a weak file. A pallet in the aisle is not proof that the bill is right. A vendor invoice with a familiar PO number is not proof that the full order arrived. The match exists so Purchasing, Receiving, Inventory, and Accounts Payable work from the same facts instead of four versions of the truth.
Pay only after the purchase order, the receipt, and the vendor bill tell the same story — quantity, price, and item.
Who owns which part
Supply chain and finance only work when each department owns a clear slice of the same chain. The failure mode is not that people are careless. It is that each team is looking at a different document and assuming the others already checked it.
Purchasing
Purchasing creates the purchase order — the commercial promise. Item, quantity, unit cost, vendor, ship-to warehouse, and payment terms live here. Everything downstream measures against that promise. If the PO is vague, late, or missing lines, “match” turns into guesswork: Receiving cannot know what complete looks like, and AP cannot tell an approved price from a quiet bump on the invoice.
A good PO is specific enough that a stranger on the dock could count against it. That means SKUs, not nicknames; ordered quantities, not “a few pallets”; and a unit cost the vendor already agreed to. Change orders belong on the PO before the bill arrives, not as a hallway conversation after AP has already keyed the invoice.
SCM → Purchasing & Sales → Purchase orders
Receiving
Receiving records what physically arrived. Short ships, damaged cartons, wrong SKUs, and partial deliveries get written down here — not in email threads and not in someone’s memory of the truck. The receipt is the warehouse’s sworn statement: we counted this, on this day, against this PO, into this warehouse and bin.
Partial receipts are normal. Close a PO line only when it is fully received or explicitly cancelled. Over-receipts should be flagged before posting, because AP will later compare billed quantity to received quantity. If the dock “helps” by receiving the full PO when only half the cartons showed up, three-way match will bless a bill you should have held.
SCM → Purchasing & Sales → Receipts
Inventory
Inventory turns a good receipt into on-hand stock and cost you can sell, pick, or consume. Receiving says what landed. Inventory is the bridge from dock truth to shelf truth. If the receipt never posts into on-hand, operations will promise stock the system does not show, and finance will argue from a different quantity than the floor.
This is why three-way match is not only an AP control. A matched bill against a receipt that never hit inventory still leaves you paying for goods the books do not own. Cycle counts and transfers come later. The first integrity check is simpler: after the truck leaves, does on-hand match what Receiving counted?
SCM → Warehouse → On-hand inventory
Accounts payable (AP)
AP owns the vendor bill and the payment. Three-way match is AP’s gate: do not approve pay until the bill lines up with the PO and the receipt, within the tolerances your company has actually written down. Clean matches go to the payment run. Variances get held and sent back to Purchasing or Receiving with the documents attached — not a screenshot of the invoice and a hope that someone remembers.
AP is not the team that “slows purchasing down.” AP is the last person who can still stop cash from leaving for goods you did not get, at a price you did not agree to, or for a bill you already paid. Once the check or ACH is out, the conversation becomes a vendor dispute instead of a simple hold.
SCM → Accounting → Vendor bills
One clarification that saves a lot of confusion: this control lives in accounts payable, not accounts receivable. AR is the sell-side twin — sales order, shipment, and customer invoice — and it deserves the same discipline in the opposite direction. Today’s question is the buy side. You are not asking whether the customer paid. You are asking whether you should pay the supplier.
The chain, step by step
The chain is the same whether you run a handful of POs a week or a busy dock. The documents change names in software. The work does not.
1. Agree the buy
Purchasing issues a PO with clear lines: what, how many, at what price, from which vendor, into which warehouse. Share it with the vendor and with Receiving so the dock knows what “complete” looks like before the freight door opens. If the vendor will ship in two drops, say so on the PO. Surprise split shipments are how partial receipts get forgotten and full bills get paid.
2. Receive against the PO
Count what arrived. Post a receipt for the quantity that is actually on the dock, full or partial. Flag shortages and damage the same day. “We will fix it later” is how a short ship becomes a paid bill two weeks later when nobody still has the packing slip. The receipt should point at the PO. An ad hoc receipt with no PO can be necessary in a pinch; it is a weak file when the invoice shows up.
3. Put stock on the books
Post the receipt into on-hand so available quantity and inventory value match the dock. This is what operations trusts when they promise a customer, and what costing trusts when it values the shelf. If your process allows a receipt to sit unposted, three-way match will compare a bill to a document the warehouse already moved on from.
4. Capture the vendor bill
Enter the supplier invoice as a vendor bill: invoice number, due date, lines, tax. Tie each bill line to the PO line, and to the receipt when the system lets you. A free-floating amount with a vendor name is not a match. It is a reminder to pay, which is the opposite of control. Duplicate invoice numbers on the same vendor should stop you before you even start comparing quantities.
5. Run the match
Compare three things, line by line. Ordered quantity and price come from the PO. Received quantity comes from the receipt. Billed quantity and amount come from the vendor bill. Within tolerance, the bill is matched and can be approved. Outside tolerance, hold it. The hold is the control. Approving “most of it” and paying the rest as a rounding difference is how price creep becomes policy.
6. Pay only what matched
Approved, matched bills enter the payment run and, when you use QuickBooks, the AP export batch. Unmatched or disputed lines stay out until Purchasing, Receiving, or the vendor corrects the record. Paying the full invoice “to keep the vendor happy” and chasing the credit later is how credits get lost. Hold the unmatched dollars. Pay the rest when your process allows a partial.
What “got what we paid for” really means
The phrase sounds like a warehouse question. It is three questions, and you need all of them.
Quantity means billed units should not exceed received units, and they should not invent units you never ordered. If the PO said 100, Receiving posted 80, and the bill says 100, you did not get what you are being asked to pay for. Paying the 100 and hoping the balance arrives is a loan to the vendor, not a match.
Price means billed unit cost should match the PO, or an approved change that made it onto the PO before the bill. Vendors raise prices. That is allowed when you agree to it. It is not allowed as a quiet edit on the invoice after the PO was already issued. If the bill is higher and nobody in Purchasing signed off, AP should not treat the difference as a rounding error.
Identity means the same item, on the same PO line — not a substitute the dock never signed for, and not a similar SKU that happens to share a description. A pallet of “the close enough part” is not a match even if the quantity and the extended amount look tidy. If Receiving did not accept the substitute, AP should not pay for it.
Miss any one of those three and you did not get what you paid for, even if something is sitting in the aisle and the vendor is a long-term partner. Partnership is why you pick up the phone. It is not why you skip the hold.
Where money usually leaks
The leaks are boring, which is why they keep working. The vendor bills the full PO while Receiving only logged a partial, and AP keys the invoice because the PO number matches. The price on the bill differs from the PO by a few cents per unit, which looks small until you multiply it across a year of replenishment. A second bill arrives for the same receipt with a new invoice number, and nobody notices because the first one already left the queue.
The operational leak is quieter. The receipt never posts to Inventory, so finance and the floor argue from different truths. AP thinks the goods are on the books because there is a bill. The warehouse thinks the goods are on the shelf because they counted them. The system shows neither, or only one, and month-end becomes a negotiation instead of a report.
None of those problems require fraud. They require a missing document, a rushed approval, or a team that treats the vendor invoice as the source of truth instead of the third document in a set of three.
How to keep the chain clean in inveazy
In inveazy the buy-side path is the same chain, named the way the warehouse and the books already talk. Purchasing issues the PO under Purchase orders. When freight arrives, Receiving posts a Receipt against that PO so on-hand increases in the target warehouse. AP enters the Vendor bill and matches it before approval. Approved bills roll into AP export batches when you push payables to QuickBooks.
Use vendor bills for this work, not a cash expense shortcut. Cash entries are fine for incidental spend that will never need a PO, a receipt, or open AP aging. They are the wrong tool when you need to prove quantity and price against a purchase. If you skip the bill, you also skip the match, and the question “did we get what we paid for?” has nowhere to live.
Help inside the product walks the same flow under Supply chain: purchase orders, receipts, on-hand, vendor bills, and the end-to-end buy-side workflow. The software does not replace the habit. It gives each department a document the others can see, so the hold happens on the bill instead of in someone’s inbox.
Bottom line
Purchasing sets the deal. Receiving proves arrival. Inventory updates the shelf. AP pays only after the three documents agree on quantity, price, and item.
Three-way match is simply the disciplined answer to a question every operator already asks when the invoice hits the desk: did we get what we paid for? Ask it with the PO, the receipt, and the bill in the same view — and do not pay until the answer is yes, or until you know exactly why it is not.