3-Way Matching Doesn't Work for Trade Contractors — Here's What Does
Three-way matching verifies an invoice by comparing it against a purchase order and a goods receipt, and it works well in businesses where every purchase starts with a formal PO. Trade contractors rarely have that trail: materials get ordered from the truck, picked up at the supply-house counter, and priced against a quote written months earlier, so there's often no PO to match and no clean receiving document. The verification that actually fits the trades is quote-to-invoice matching — checking every invoice line against the quote or contract that set the price, since that's the document that holds the number you agreed to. Industry data shows 39% of construction invoices contain at least one error, so the check matters; it just has to run against the documents contractors actually have.
What 3-way matching actually is
Three-way matching is the textbook accounts-payable control, and in the businesses it was designed for, it's a good one. Before an invoice gets paid, someone lines up three documents: the purchase order that authorized the buy, the goods receipt proving the items arrived, and the invoice asking for payment. If the quantities and prices agree across all three, the invoice is approved. If they don't, it gets held until someone explains the difference.
The logic is airtight. Nobody pays for something that wasn't ordered, nobody pays for something that didn't show up, and nobody pays a price that wasn't authorized. Manufacturing plants, hospital systems, and corporate purchasing departments have run on this for decades, and enterprise AP software is built around it — the PO number is the key that ties the whole chain together.
That's also the catch. Three-way matching doesn't verify prices against reality; it verifies documents against each other. The entire process assumes the purchase order exists, that it was created before the material was ordered, and that it carries the correct agreed price. Take away that assumption and the whole control quietly falls apart.
The assumption it stands on: every purchase starts with a PO
In a corporate purchasing department, the PO comes first by policy. A requisition gets approved, a PO gets cut with negotiated pricing on it, the vendor ships against the PO number, receiving logs the delivery, and AP matches the three documents at their desk. The sequence is the control. Every document downstream inherits its authority from the PO at the top.
Notice what makes that work: purchasing happens at a desk, before the need. Someone has time to create the PO, the vendor won't ship without one, and the goods arrive at a dock where a person whose actual job is receiving counts them against the paperwork. The process was built for environments where the buying is planned, centralized, and slower than the work it supports.
Construction trades are the opposite on every axis. The buying is reactive, decentralized, and faster than any paperwork process can keep up with — because the alternative is a crew standing around waiting on a fitting.
Where it breaks in the field
Walk through a normal week at a trade contracting shop and count how many purchases begin with a purchase order created at a desk.
- Field orders. A foreman discovers mid-morning that the job needs forty more feet of conduit or a different valve than the plans showed. He calls the supply house from the truck, the order ships that afternoon, and if a PO number exists at all, it was invented after the fact to satisfy the accounting system — which means it verifies nothing.
- Counter sales. An apprentice runs to the supply house, loads a cart, and signs a ticket at the counter. There is no PO, no receiving dock, and no receiving clerk. The signature on the counter ticket is the goods receipt, scrawled by someone whose priority was getting back to the job.
- Phone and will-call orders. Material gets ordered against an open account and picked up in pieces across days. One quote, several tickets, several invoices — nothing that maps one-to-one the way a matching system expects.
- Deliveries signed blind. Even when material does arrive on a truck, it's signed for by whoever is closest, usually without a line-by-line count, because the crane is waiting. That signature becomes the "goods receipt," and it confirms almost nothing.
Try to run textbook 3-way matching on top of that and you get one of two outcomes. Either the office burns hours manufacturing POs and receipts retroactively — paperwork theater that documents what already happened rather than controlling it — or the match runs on garbage inputs and passes invoices that a real check would have caught. Both look like a process. Neither is one.
The deeper problem: the PO was never the price source of truth
Even a contractor disciplined enough to cut a PO for every order runs into a harder problem: in the trades, the PO doesn't set the price. The quote does.
The supply house priced the job months ago. That quote — the fixture package, the wire, the pipe, the gear — is the document the contractor bid the job against, and it's the number that protects the margin. The PO, when one exists, usually just references it: "per quote #4471." So a 3-way match that ties the invoice back to the PO is verifying against a document that never contained the agreed pricing in the first place. The invoice can match the PO perfectly and still be wrong against the quote.
And the quote-to-invoice gap is where the money actually leaks. Prices escalate between bid and delivery. Out-of-stock items get substituted at whatever the substitute costs. Quantities drift between what was ordered, what was signed for, and what was billed. Fees appear that were never quoted. Industry benchmarks put at least one error in 39% of construction invoices, with average overbilling around 2.5% of invoice value — and almost none of it is the kind of discrepancy a PO match is designed to catch, because the PO drifted right along with the invoice.
What works instead: quote-to-invoice verification
The fix isn't more paperwork discipline. It's changing what the invoice gets matched against. Instead of forcing a PO trail that doesn't fit how the trades buy, verify the invoice against the document that actually holds the agreed price: the quote or the contract.
The check itself is simple to describe. For every line on the invoice, find the corresponding line on the quote and confirm three things:
- The price. Is the unit price the one that was quoted — same number, same unit of measure? Per-foot quoted and per-case billed is a mismatch even when both figures look plausible.
- The item. Is it the SKU that was quoted, or a substitution shipped at a different price nobody flagged?
- The quantity. Does the billed quantity match what was actually ordered and received — including credits for returns that were processed but never made it onto a bill?
Anything on the invoice with no counterpart on the quote — fuel surcharges, delivery fees, restocking charges, small-order fees — gets flagged as unquoted and questioned rather than absorbed. Delivery tickets still matter as evidence of what arrived, but they support the check instead of anchoring it.
This is a two-document match built around the documents contractors actually generate: a quote from the supply house and an invoice against it. No requisition workflow, no receiving department, no pretending the foreman's phone call was a purchase order.
Field orders and counter sales fit this model instead of breaking it. A counter ticket with no quote behind it still gets checked — against the supplier's published contractor pricing or the account terms you negotiated — and a field order phoned in against an open quote gets matched to that quote like any other pull. The verification follows the price agreement, wherever it lives, rather than demanding a paper trail the job site was never going to produce.
Making it stick without hiring an AP department
The honest obstacle is time. A line-by-line check against the quote works every time it's done — and it stops being done the first week the office gets busy, because a high-line-count invoice takes an afternoon by hand. Most shops fall back to spot-checking the invoices that look wrong, which misses the whole point: at a 39% error rate, the expensive errors are hiding on invoices that look completely normal.
Start manageable. Pick one active job and run every supplier invoice on it against the quote, line by line. If the job is clean, you've confirmed your suppliers and your process in an afternoon. If it isn't, you've found the drift while it can still be disputed — supply houses fix documented discrepancies routinely; what they don't do is volunteer them.
When the volume outgrows the afternoon, this is the specific job CheckIT Invoice was built for: drag in the invoice and the quote or contract, and it reads every line on both and flags every difference — off-quote unit prices, quantities that were never ordered, charges that were never quoted — with a dispute email drafted for each flag. Contractors running line-level verification this way report about 75% less manual review time than checking by hand. However you run it, the principle is the same: match the invoice to the quote, because in the trades, the quote is the contract price. The PO never was.
Questions, answered.
Three-way matching is an accounts-payable control that compares an invoice against the purchase order that authorized the buy and the goods receipt proving delivery before the invoice gets paid. It was designed for centralized purchasing environments where every order starts with a formal PO. In construction trades, where materials are ordered from the field and picked up at the supply-house counter, the PO and receiving documents it depends on often don't exist in any meaningful form.
Trade contractors buy materials reactively — a foreman calls in an order from the truck, an apprentice signs a counter ticket at the supply house — so purchases rarely start with a purchase order, and deliveries are signed for without a formal receiving count. More fundamentally, the agreed price in the trades lives on the supplier's quote, not on a PO, so even a perfect PO match can pass an invoice that's wrong against the quoted price.
Match each invoice against the quote or contract that set the pricing. For every invoice line, confirm the unit price and unit of measure against the quoted line, confirm the item is what was quoted rather than a substitution, and confirm the billed quantity matches what was ordered and received. Anything on the invoice with no counterpart on the quote, such as delivery fees or surcharges, gets flagged and questioned rather than paid by default.
Industry benchmarks show at least one error in 39% of construction invoices, with average overbilling around 2.5% of invoice value. Most of these errors are price drift against the quote, substitutions billed at different prices, quantity discrepancies, and unquoted fees — the kinds of problems a quote-to-invoice check catches and a PO match usually doesn't.
It's a form of two-document matching, but against a different anchor. Classic 2-way matching compares the invoice to a purchase order. Quote-to-invoice verification compares the invoice to the supplier's quote or the contract, because in the trades that's the document that actually holds the agreed pricing. Delivery tickets still serve as evidence of what arrived, but the price check runs against the quote.
The most useful thing to read is your own invoice, verified.
Send one job's invoices and the quote they should match — we'll report every difference inside 48 hours. Or run it yourself in the app in minutes.
Free audit: one job, 48 hours, no credit card. Plans from $455/mo.