I'm an electrical contractor, and for years I paid supplier invoices the way most of us do: glance at it, recognize the vendor, looks about right, pay it. The supply houses are honest, mostly. But "mostly" is doing a lot of work in that sentence, and over a year of six-figure material spend, the gap between "about right" and "exactly right" is real money. Three-way matching is how you close that gap. Don't let the bookkeeping name scare you — the idea is dead simple.
The three documents
Every material purchase, done properly, generates three pieces of paper:
- The purchase order (PO) — what you ordered, at the price you were quoted. "200 ft of 3/4 EMT at $1.10/ft."
- The receipt — what actually showed up. Did all 200 feet arrive, or did 150 come and 50 backorder?
- The invoice — what the supplier is billing you. The price they're actually charging, which is not always the price they quoted.
Three-way matching just means: before you pay, you check that all three agree. Ordered = received = billed. When they don't, you've found a problem worth money.
Why it matters more than it sounds
Two things go wrong without it, and both cost you:
1. You overpay
The quote said $1.10 a foot. The invoice says $1.34 a foot. Maybe the price moved, maybe it's an error, maybe it's the wrong customer's pricing. On 200 feet that's $48 — not worth a phone call by itself. Across a year of orders, that kind of drift is a vacation you're accidentally buying the supply house. Matching the invoice against the PO surfaces the variance before you pay, while you still have leverage to ask "why?"
2. You double-count your own commitments
This one's subtler and it wrecks your job costing. When you cut a PO, that's a committed cost — money you've promised but haven't paid. Your job costing should show it as committed so you don't accidentally spend the same budget twice. But when the invoice comes in and you post it as an actual cost, the PO has to close — otherwise the job now shows both a $5,000 commitment and a $5,000 actual for the same materials, and your costing thinks you spent $10,000. Matching closes the PO automatically so the commitment converts to an actual instead of stacking on top of it.
An open PO plus its own paid invoice is your job costing counting the same money twice. That's how a job that's fine looks like it's bleeding.
Walking the workflow
Here's how it actually runs on a job:
- Order. The field (or office) cuts a PO — auto-numbered, tied to the job and phase. The job now shows that material as a committed cost.
- Receive. When the truck shows up, someone marks the PO received. Partial deliveries are fine — receive what came, leave the rest open.
- Invoice. The supplier emails the invoice. It lands in your bills inbox. If it quotes the PO number, it auto-matches; if not, you pick the PO to match it to.
- Match & review. The system lines up ordered vs. received vs. billed and flags any price variance for a human to eyeball.
- Post. You post the matched bill. The PO closes, the commitment becomes an actual cost, and the bill flows to QuickBooks as a payable — no double entry.
The payoff
Once this is running, two things stop happening: you stop quietly overpaying on price drift, and your job costing stops double-counting committed materials. What you get instead is a clean line of sight from "we ordered it" to "it showed up" to "we paid the right amount for it" — with a paper trail on every step. It's the least glamorous feature in the whole system and one of the most valuable.
The one-minute version
- Three-way matching = PO (ordered) vs. receipt (arrived) vs. invoice (billed) must agree.
- It catches price variances before you pay, while you still have leverage.
- It closes the PO so committed costs don't double-count against actuals.
- Keep the receive-match-post flow with AP; let the field cut and receive POs.