How Plumbing Contractors Catch Supply-House Billing Errors
Plumbing contractors catch supply-house billing errors by checking the invoice against the original quote line by line — matching every SKU, quantity, and unit price to what was actually quoted, not just the total. Most shops only do this on invoices that already look wrong, because a full check by hand takes an afternoon per invoice. The errors that survive are the ones buried inside fixture packages, substitutions, and unit-of-measure switches that never show up in a total-dollar comparison. Software that reads both documents and flags every difference cuts that afternoon down to minutes.
Where the Pricing Drifts Between Quote and Trim-Out
Most plumbing quotes get built once and billed against twice. A fixture package gets priced at bid — the tubs, the trim sets, the valves — and it doesn't hit an invoice until trim-out, sometimes six months to a year later. Supply-house pricing moves in that window. The bill you get at trim-out reflects today's cost, not the number your quote locked in, and unless someone is holding the original quote next to the invoice, the drift just gets paid.
Rough-in and trim are usually two separate pulls against one quote, ordered months apart. That means two invoices, two delivery dates, and two chances for the supply house to bill against a line item that's already shifted — a different case pack, a different unit price, a fixture swapped for something close enough. Nobody on either side is doing anything wrong. The quote and the bill are just drifting apart in slow motion, and by the time trim-out closes out the job, the gap between what was quoted and what was billed is buried three purchase orders deep.
Where the Substitutions and Fees Hide
The quoted SKU isn't always on the shelf when the order actually goes out. The supply house substitutes — a different wye, a different valve, a different brand of the same fitting — at whatever that substitute costs, and it lands on the invoice at a price the quote never mentioned. Unit of measure is another quiet one: copper priced per stick on the quote can show up billed per foot on the invoice, or the reverse, and the math only works out if someone actually does the math.
Then there are the charges that were never quoted at all — restocking fees on returned material, delivery charges added line by line instead of rolled into the price. None of these are hidden exactly; they're printed right on the invoice. But on a fixture package or a rough-in pull with 60 or more line items, a handful of unquoted charges and drifted unit prices don't stand out. They're a few lines out of ninety, sitting in a column of numbers that all look plausible on their own.
Why These Errors Survive the Office
The manual check works. Pull the quote, pull the invoice, read every line against every line, flag anything that doesn't match. The problem is time. A large invoice — the kind with 60 or more line items across a rough-in and trim pull — takes an afternoon to check by hand, and most offices don't have a spare afternoon for every invoice that comes in. So the check only happens on invoices that already look wrong: the ones where the total feels high, or a job's margin came in soft and someone finally goes looking for why.
That triage misses a lot. Industry benchmarks put errors in roughly 39% of construction invoices, averaging about 2.5% overbilling on invoice value. Those errors don't announce themselves with a total that looks obviously off — they hide inside packages, substitutions, and unit-of-measure switches on invoices that otherwise look completely normal. If the only invoices getting checked are the ones that already raise an eyebrow, the ones doing the real damage are the ones nobody ever opens.
How to Catch Them in Minutes
CheckIT Invoice does the same line-by-line check, without the afternoon. Drag in the invoice, drag in the quote or contract. The CheckIT Engine reads every line on both and flags every difference — unit prices off the original quote, quantities that were never ordered, charges that were never quoted. Setup takes about five minutes, there's no IT project, and every seat on the team can run it.
Every flag comes with a one-click dispute email already drafted, so the office isn't starting from a blank page with the supply house. And because the QuickBooks Online connection is live, once an invoice is verified it pushes into QBO as a bill with per-line cost codes attached, retainage-aware — the paperwork matches the job cost report instead of fighting it. Contractors using this method see on average 75% less manual review time than the line-by-line check, which is exactly the afternoon nobody had.
The One-Job Test
You don't need to check every invoice from the last three years to know if this is worth doing. Pick one job — ideally one with a fixture package and a rough-in/trim split, the kind that generates the highest line counts — and run its supply-house invoices against its quote. If the job is clean, you've spent a few minutes confirming it. If it's not, you've found the drift before it gets buried in next month's cost report.
On annual spend between $500K and $2M, early customers have recovered $50K to $150K annually this way. That range is extrapolated from early-customer data — results vary by invoice volume and contract complexity — but the math holds either way: catch it at the invoice, not after the job closes. One plumbing contractor on California's Central Coast ran this test and switched entirely; you can read why on the CheckIT vs. SubBase comparison. If you'd rather have someone else run the first pass, the free audit reviews one job's invoices for you.
Questions, answered.
Match every line on the invoice to the same line on the quote — SKU, quantity, unit price, and unit of measure, not just the total. Package pricing at bid often looks different by the time trim-out bills months later, and substitutions or delivery fees can add lines the quote never had. The only way to catch a mismatch is checking line by line, either by hand or with a tool that reads both documents at once.
Fixture packages are usually priced once at bid, but rough-in and trim get ordered as two separate pulls months apart, sometimes closer to a year on larger jobs. Supply-house pricing moves in that gap, so the trim-out invoice can reflect current cost instead of the number in the original quote. Unless the invoice is checked against the quote at trim-out, that drift gets paid without anyone noticing.
Industry benchmarks put errors in roughly 39% of construction invoices, averaging about 2.5% overbilling on invoice value. Those errors are usually substitutions, unit-of-measure switches, or unquoted fees rather than obvious total-dollar mistakes, which is why they survive a quick glance at the total. Catching them requires checking each line against the original quote.
By hand, a large invoice with 60 or more line items — the kind a fixture package or a combined rough-in and trim pull generates — takes about an afternoon to check line by line. That's why most offices only check invoices that already look wrong instead of every invoice that comes in. CheckIT Invoice reads both documents and flags every difference in minutes instead of hours, with setup taking about five minutes.
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.