Why supplier invoice lines don't match your contract — the full taxonomy
8 min read
Comparing two numbers is easy. The hard part of auditing supplier invoices is matching a messy invoice line to the right contract line in the first place. When an audit tool says 'no match', that answer is worthless unless it also says why. Below is the taxonomy we use, in the order it usually bites.
1. The SKU exists nowhere in your price lists
The supplier billed a part number you never contracted. Sometimes it is a genuinely new product; more often it is the same product under a distributor-specific code. Before you chase the supplier, stem the SKU — strip prefixes, suffixes, dashes and pack indicators — and look for a family match. A large share of 'unknown SKU' lines resolve to a contracted item once stemming runs.
2. The SKU exists, but no price was in effect that day
This is a date problem, not a pricing problem. The contract started after the invoice date, expired before it, or a replacement list was loaded with a gap between the two. Always match against the price in effect on the invoice date, never the current price. Auditing against today's list is the single most common source of false overcharges.
3. Unit of measure mismatch
The contract is priced per square, the invoice is per bundle. Per thousand versus per piece. Per roll versus per linear foot. Without a normalization layer and a per-supplier alias table, these show up as enormous variances that are not variances at all. Normalize first, then compare.
4. Substitution
The supplier shipped an equivalent product because yours was out of stock. The line is legitimate, but the price may not be — a substitution should inherit the contracted price of the item it replaced, or be explicitly repriced. Flag substitutions separately so they get a human decision rather than an automatic dispute.
5. Non-product lines
Freight, fuel surcharge, pallet deposit, restocking fees, environmental levies. These will never match a product price list and should not pollute your unmatched rate. Classify them out, then audit them against the terms in your agreement, which is a separate exercise.
6. Credits and rebills
A credit line and a rebill line are two halves of one correction. Audited in isolation they look like a large undercharge and a large overcharge on the same account. Pair them by SKU, quantity and proximity in time before classifying anything.
7. Quantity-tier misses
The contract prices at tiers — 1-9, 10-49, 50+. The invoice qualifies for a tier the supplier did not apply, or aggregates across a period you are entitled to combine. Tiered contracts need the tier logic evaluated, not a single unit price lookup.
What to do with the taxonomy
- Report the unmatched rate broken out by reason, not as one number.
- Attack the reasons in cost order: date coverage and unit-of-measure aliases usually clear the most lines for the least work.
- Treat a persistently high 'unknown SKU' rate for one supplier as a data problem to fix at import, not a dispute to file.
- Never let unmatched lines quietly disappear. An unaudited line is an unaudited dollar.
Related reading
- Unit-of-measure normalization: the quiet source of fake variances
Per square, bundle, thousand, or roll. How unit-of-measure mismatches create false overcharges, and how to build an alias table that fixes it.
- Standing, quoted, or isolated: classifying the discount you actually got
Not every price below contract is a win. How to tell a standing discount from a one-off quote or an isolated keying error — and why the difference changes what you negotiate.
- Credit and rebill pairing: the correction that reads as two errors
A supplier correction arrives as a credit plus a replacement invoice. Audited naively it looks like a large overcharge and a large undercharge. How to pair them.
New to the vocabulary? The glossary defines every term used here, and the audit checklist turns it into a process.
See this on your own invoices
Audit your first 500 invoice lines free. No card required.