Where margin drift shows up when margin misses plan

A CFO checklist for where to look when gross margin misses plan, before accepting price and mix as the whole explanation. Written for finance and AP teams.

Twitter LinkedIn WhatsApp
Ask AI: ChatGPT Claude Gemini Grok
Where margin drift shows up when margin misses plan

Margin drift is the gap between what a vendor contract says and what the invoice actually charges. When gross margin comes in under plan, that gap is one of the first places to look, and one of the last places finance actually checks.

This guide is for the moment the variance report lands and the standard explanations, mix, price, input cost, don't fully close it. It walks through what to check, in what order, before you present a margin bridge that leaves a piece unexplained.

Executive Summary

When gross margin misses plan, the finance team usually starts with price and volume: mix shift, discounting, input cost inflation. Those explanations are real but partial. A share of the gap is margin drift, the difference between what a vendor contract says and what the invoice actually charges, and it sits inside cost of goods sold and indirect spend where nobody is reconciling invoice to contract line by line.

The mechanism is specific. Freight invoices carry accessorial charges that were never in the rate card. Contract labor bills at a rate that crept past the agreement.

MRO vendors apply list price instead of the negotiated schedule. None of this shows up as a single obvious variance. It shows up as basis points of margin that erode across a hundred small invoices, none large enough on its own to trigger a review.

What changes it is checking the invoices against the contracts that govern them, category by category, before accepting the standard explanations for a margin miss. That check either confirms the miss is priced in correctly, or finds the part of it that is a billing problem, not a market one.

1. What should you check first when gross margin misses plan?

Start with the vendor categories that sit inside cost of goods sold and touch every invoice cycle: freight and logistics, contract labor, and maintenance or MRO spend tied to production. These are the categories where a rate card, a labor agreement, or a service contract governs the charge, and where the invoice can drift from that governing document without anyone noticing until the margin line moves. Pull the last two quarters of invoices in these categories before touching the sales-side.

The instinct in a margin miss is to look at revenue first: price realization, customer mix, discount creep. That work is necessary but it only explains the top half of the bridge. The cost side gets less scrutiny because it is assumed to be governed already, by a signed contract or a negotiated rate.

That assumption is the gap. A signed contract does not enforce itself. Someone has to check that the invoice matches the rate card, the labor rate, the volume tier, and the surcharge schedule it was built against, invoice by invoice.

Most AP workflows check that the invoice matches the purchase order and that the math on the invoice is correct. Neither of those checks tests whether the rate itself is still the contracted rate.

So the first move is not a deeper revenue analysis. It is pulling invoices in the categories above and testing them against the contract terms that are supposed to govern them.

2. Why does contract compliance get missed inside a normal AP process?

Three-way matching checks the invoice against the purchase order and the goods receipt. It confirms quantity and a unit price were agreed before payment. It does not test whether that unit price is still the one in the current contract, whether a volume tier discount should have applied, or whether a surcharge has a stated expiration condition the vendor kept billing past.

The control was built to catch a different kind of error.

A purchase order captures the price at the moment it was cut. If the underlying contract has a volume tier that lowers the rate after a threshold, or a rebate clause that triggers annually, the PO does not know that and neither does the three-way match. The invoice can pass every AP control and still be wrong relative to the contract.

Surcharges compound this. A fuel surcharge or an expedite fee often has a condition attached, a date range, a volume floor, a specific lane, but the invoice line item just shows a dollar amount. AP pays it because it looks structurally normal.

This is not a failure of the AP team. It is a scope gap: the control tests invoice-to-PO agreement, not invoice-to-contract agreement. Closing it requires reading the contract itself and building the comparison the PO cannot make.

3. Which contract terms are worth pulling before you review invoices?

Before reviewing a stack of invoices, pull the documents that actually define what should have been charged: the rate card, the volume tier schedule, any rebate or credit memo terms, the not-to-exceed cap if one exists, and the surcharge definitions with their trigger conditions. These are usually PDFs sitting outside the ERP, not fields configured inside it, which is exactly why the ERP's own controls cannot check against them.

Rate cards and surcharge schedules are frequently negotiated once at contract signing and then never re-entered anywhere the system can reference automatically. The ERP holds a price field populated at setup. It does not hold the tier logic, the expiration date on a promotional rate, or the rebate percentage owed back once volume crosses a threshold.

Gather these documents by vendor and category before starting the invoice review. Reviewing invoices without the governing terms in hand just repeats the three-way match's blind spot with more effort.

A. Rate cards and volume tiers

The rate card states the base price by unit, lane, or service line. A volume tier schedule sets a lower rate once cumulative spend or units cross a threshold within a period. Checking these together means confirming both the base rate and whether a threshold was crossed and the discount applied on the following invoice.

B. Not-to-exceed caps

An NTE clause caps total billing regardless of hours or units logged. It is worth checking separately from the rate itself because a vendor can bill correctly against the rate and still exceed the cap, since nothing in the invoice format flags that the cumulative total has crossed it.

4. How do you separate a compliance finding from an inflation-driven cost increase?

A compliance finding is a charge that contradicts the vendor's own contract: a rate above the card, a surcharge billed past its trigger window, a rebate never issued. An inflation-driven increase is a charge that matches a contract the business agreed to at a higher rate than before. The test is simple: does the invoice match the current, signed terms?

If yes, it's a pricing decision to revisit at renewal. If no, it's a billing error to recover now.

This distinction matters because the two problems have different owners and different timelines. A pricing decision, a carrier's general rate increase or a labor agreement's cost-of-living adjustment, is a procurement and renewal conversation. It belongs on next year's negotiation list.

A compliance finding is a today problem. The vendor already agreed to the lower rate or the capped total. The invoice simply does not reflect it. That is recoverable through a credit memo or an adjusted future invoice, not through renegotiation.

Conflating the two in a margin bridge understates the part of the miss that is fixable immediately. It also weakens a board explanation, because leadership will ask what changes going forward, and the answer is different for a market rate increase than for a billing error.

5. What does a fast check look like before a full audit?

A fast check samples the highest-dollar vendors in freight, contract labor, and MRO, pulls their governing contract, and compares the last three months of invoices line by line against the rate card and any volume tier or NTE cap. This is a scoping exercise, not a full audit: it tells you within days whether contract compliance is contributing to the margin miss before committing to a longer engagement.

The goal at this stage is a directional answer, not a complete recovery figure. Pick the five or six vendors with the largest annual spend in each category under review. Pull their contracts and their most recent invoices.

Check three things on each: does the unit rate match the card, has any volume threshold been crossed without a corresponding rate change, and does any surcharge line item have a stated trigger condition that the invoice does not satisfy. Flag anything that fails.

If the sample turns up findings, that is the signal to scope a full review across the category and vendor base rather than a handful of accounts. If it does not, contract compliance is likely not the driver of this quarter's miss, and the investigation moves back to price and mix with more confidence than before.

6. What should the finding look like when you bring it to the board?

A board-ready finding states the vendor category, the specific contract term violated, the dollar amount tied to invoices already paid, and whether it is a one-time recovery or a recurring control gap. It separates what is being recovered from what is being prevented going forward, and it does not present a partial sample as if it were the complete answer for the whole vendor base.

The board does not need the mechanics of surcharge trigger conditions. It needs three numbers: how much of the margin miss is now explained by a contract compliance finding, how much of that is recoverable through credit memos on invoices already paid, and what changes in the AP process going forward so the same drift does not recur next quarter.

Be explicit about scope. If the check covered a sample of vendors, say so, and say what a full review would be expected to add rather than implying the sample is the total. A stated sample size is more credible than a number presented as complete when it was not.

This is also where the recurring control matters more than the one-time recovery. A single credit memo closes this quarter's gap. A standing invoice-to-contract check is what keeps the same category from reopening it next quarter.

For the wider pattern this sits inside, start with the margin drift guide.

7. Frequently Asked Questions (People Also Ask)

What is the first thing to check when gross margin misses plan?

Check whether vendor invoices in freight, contract labor, and MRO categories match the rate cards, volume tiers, and surcharge terms in the underlying contracts. These categories sit inside cost of goods sold and are rarely reconciled against contract terms as part of normal AP processing.

Can a margin miss be caused by billing errors rather than market conditions?

Yes. A charge that contradicts a vendor's own signed contract, a rate above the card, a surcharge billed past its trigger window, is a billing error, not a market-driven cost increase. It is recoverable through a credit memo, unlike a genuine rate increase the business agreed to.

Does three-way matching catch contract compliance problems?

No. Three-way matching checks the invoice against the purchase order and the goods receipt. It confirms quantity and an agreed unit price. It does not test whether that price still matches the current contract, a volume tier, or a surcharge's expiration condition.

How do I know if the margin gap is inflation or a compliance issue?

Compare the invoice to the current signed contract. If the charge matches the contract, even at a higher rate than before, it is a pricing issue for the next renewal. If it contradicts the contract the vendor already agreed to, it is a compliance finding recoverable now.

What documents do I need before reviewing vendor invoices for drift?

Pull the rate card, volume tier schedule, rebate or credit memo terms, any not-to-exceed cap, and surcharge definitions with their trigger conditions. These usually exist as separate documents outside the ERP, which is why standard system controls cannot check against them.

How fast can I find out if this is contributing to my margin miss?

A sample check on the highest-spend vendors in freight, contract labor, and MRO, comparing three months of invoices against their contracts, can return a directional answer within days. That tells you whether a fuller review is worth scoping before committing more time.

What is a not-to-exceed overrun and why does it matter for margin?

An NTE cap limits total billing on a contract regardless of hours or units logged. An overrun happens when a vendor keeps billing past that cap because nothing in the invoice format flags that the cumulative total has crossed it. It shows up as cost above what the contract allows.

Should this finding go in my board margin bridge?

Yes, but state it clearly: name the amount tied to invoices already paid, whether it was found in a full review or a sample, and separate the one-time recovery from any change to the AP process that prevents recurrence next quarter.

Is checking invoices against contracts the same as a full audit?

Not necessarily. A fast, sampled check on top vendors is a scoping step. A full audit extends the same comparison across the entire vendor base in a category. The sample tells you whether the fuller review is worth doing.

Executive Summary

When gross margin misses plan, the finance team usually starts with price and volume: mix shift, discounting, input cost inflation. Those explanations are real but partial. A share of the gap is margin drift, the difference between what a vendor contract says and what the invoice actually charges, and it sits inside cost of goods sold and [indirect spend](/guides/indirect-spend-is-30-60-of-operating-cost-and-gets-a) where nobody is reconciling invoice to contract line by line. The mechanism is specific. Freight invoices carry accessorial charges that were never in the rate card. Contract labor bills at a rate that crept past the agreement. MRO vendors apply list price instead of the negotiated schedule. None of this shows up as a single obvious variance. It shows up as basis points of margin that erode across a hundred small invoices, none large enough on its own to trigger a review. What changes it is checking the invoices against the contracts that govern them, category by category, before accepting the standard explanations for a margin miss. That check either confirms the miss is priced in correctly, or finds the part of it that is a billing problem, not a market one.

1. What should you check first when gross margin misses plan?

Start with the vendor categories that sit inside cost of goods sold and touch every invoice cycle: freight and logistics, contract labor, and maintenance or MRO spend tied to production. These are the categories where a rate card, a labor agreement, or a service contract governs the charge, and where the invoice can drift from that governing document without anyone noticing until the margin line moves. Pull the last two quarters of invoices in these categories before touching the sales-side. The instinct in a margin miss is to look at revenue first: price realization, customer mix, discount creep. That work is necessary but it only explains the top half of the bridge. The cost side gets less scrutiny because it is assumed to be governed already, by a signed contract or a negotiated rate. That assumption is the gap. A signed contract does not enforce itself. Someone has to check that the invoice matches the rate card, the labor rate, the volume tier, and the surcharge schedule it was built against, invoice by invoice. Most AP workflows check that the invoice matches the purchase order and that the math on the invoice is correct. Neither of those checks tests whether the rate itself is still the contracted rate. So the first move is not a deeper revenue analysis. It is pulling invoices in the categories above and testing them against the contract terms that are supposed to govern them.

2. Why does contract compliance get missed inside a normal AP process?

Three-way matching checks the invoice against the purchase order and the goods receipt. It confirms quantity and a unit price were agreed before payment. It does not test whether that unit price is still the one in the current contract, whether a volume tier discount should have applied, or whether a surcharge has a stated expiration condition the vendor kept billing past. The control was built to catch a different kind of error. A purchase order captures the price at the moment it was cut. If the underlying contract has a volume tier that lowers the rate after a threshold, or a rebate clause that triggers annually, the PO does not know that and neither does the three-way match. The invoice can pass every AP control and still be wrong relative to the contract. Surcharges compound this. A fuel surcharge or an expedite fee often has a condition attached, a date range, a volume floor, a specific lane, but the invoice line item just shows a dollar amount. AP pays it because it looks structurally normal. This is not a failure of the AP team. It is a scope gap: the control tests invoice-to-PO agreement, not invoice-to-contract agreement. Closing it requires reading the contract itself and building the comparison the PO cannot make.

3. Which contract terms are worth pulling before you review invoices?

Before reviewing a stack of invoices, pull the documents that actually define what should have been charged: the rate card, the volume tier schedule, any rebate or credit memo terms, the not-to-exceed cap if one exists, and the surcharge definitions with their trigger conditions. These are usually PDFs sitting outside the ERP, not fields configured inside it, which is exactly why the ERP's own controls cannot check against them. Rate cards and surcharge schedules are frequently negotiated once at contract signing and then never re-entered anywhere the system can reference automatically. The ERP holds a price field populated at setup. It does not hold the tier logic, the expiration date on a promotional rate, or the rebate percentage owed back once volume crosses a threshold. Gather these documents by vendor and category before starting the invoice review. Reviewing invoices without the governing terms in hand just repeats the three-way match's blind spot with more effort. ### A. Rate cards and volume tiers The rate card states the base price by unit, lane, or service line. A volume tier schedule sets a lower rate once cumulative spend or units cross a threshold within a period. Checking these together means confirming both the base rate and whether a threshold was crossed and the discount applied on the following invoice. ### B. Not-to-exceed caps An NTE clause caps total billing regardless of hours or units logged. It is worth checking separately from the rate itself because a vendor can bill correctly against the rate and still exceed the cap, since nothing in the invoice format flags that the cumulative total has crossed it.

4. How do you separate a compliance finding from an inflation-driven cost increase?

A compliance finding is a charge that contradicts the vendor's own contract: a rate above the card, a surcharge billed past its trigger window, a rebate never issued. An inflation-driven increase is a charge that matches a contract the business agreed to at a higher rate than before. The test is simple: does the invoice match the current, signed terms? If yes, it's a pricing decision to revisit at renewal. If no, it's a billing error to recover now. This distinction matters because the two problems have different owners and different timelines. A pricing decision, a carrier's general rate increase or a labor agreement's cost-of-living adjustment, is a procurement and renewal conversation. It belongs on next year's negotiation list. A compliance finding is a today problem. The vendor already agreed to the lower rate or the capped total. The invoice simply does not reflect it. That is recoverable through a credit memo or an adjusted future invoice, not through renegotiation. Conflating the two in a margin bridge understates the part of the miss that is fixable immediately. It also weakens a board explanation, because leadership will ask what changes going forward, and the answer is different for a market rate increase than for a billing error.

5. What does a fast check look like before a full audit?

A fast check samples the highest-dollar vendors in freight, contract labor, and MRO, pulls their governing contract, and compares the last three months of invoices line by line against the rate card and any volume tier or NTE cap. This is a scoping exercise, not a full audit: it tells you within days whether contract compliance is contributing to the margin miss before committing to a longer engagement. The goal at this stage is a directional answer, not a complete recovery figure. Pick the five or six vendors with the largest annual spend in each category under review. Pull their contracts and their most recent invoices. Check three things on each: does the unit rate match the card, has any volume threshold been crossed without a corresponding rate change, and does any surcharge line item have a stated trigger condition that the invoice does not satisfy. Flag anything that fails. If the sample turns up findings, that is the signal to scope a full review across the category and vendor base rather than a handful of accounts. If it does not, contract compliance is likely not the driver of this quarter's miss, and the investigation moves back to price and mix with more confidence than before.

6. What should the finding look like when you bring it to the board?

A board-ready finding states the vendor category, the specific contract term violated, the dollar amount tied to invoices already paid, and whether it is a one-time recovery or a recurring control gap. It separates what is being recovered from what is being prevented going forward, and it does not present a partial sample as if it were the complete answer for the whole vendor base. The board does not need the mechanics of surcharge trigger conditions. It needs three numbers: how much of the margin miss is now explained by a [contract compliance finding](/guides/contract-compliance-in-industrial-distribution), how much of that is recoverable through credit memos on invoices already paid, and what changes in the AP process going forward so the same drift does not recur next quarter. Be explicit about scope. If the check covered a sample of vendors, say so, and say what a full review would be expected to add rather than implying the sample is the total. A stated sample size is more credible than a number presented as complete when it was not. This is also where the recurring control matters more than the one-time recovery. A single credit memo closes this quarter's gap. A standing invoice-to-contract check is what keeps the same category from reopening it next quarter. For the wider pattern this sits inside, start with the [margin drift](/guides/cfo-agenda-mid-market-manufacturing) guide.

Questions & Answers

What is the first thing to check when gross margin misses plan?

Check whether vendor invoices in freight, contract labor, and MRO categories match the rate cards, volume tiers, and surcharge terms in the underlying contracts. These categories sit inside cost of goods sold and are rarely reconciled against contract terms as part of normal AP processing.

Can a margin miss be caused by billing errors rather than market conditions?

Yes. A charge that contradicts a vendor's own signed contract, a rate above the card, a surcharge billed past its trigger window, is a billing error, not a market-driven cost increase. It is recoverable through a credit memo, unlike a genuine rate increase the business agreed to.

Does three-way matching catch contract compliance problems?

No. Three-way matching checks the invoice against the purchase order and the goods receipt. It confirms quantity and an agreed unit price. It does not test whether that price still matches the current contract, a volume tier, or a surcharge's expiration condition.

How do I know if the margin gap is inflation or a compliance issue?

Compare the invoice to the current signed contract. If the charge matches the contract, even at a higher rate than before, it is a pricing issue for the next renewal. If it contradicts the contract the vendor already agreed to, it is a compliance finding recoverable now.

What documents do I need before reviewing vendor invoices for drift?

Pull the rate card, volume tier schedule, rebate or credit memo terms, any not-to-exceed cap, and surcharge definitions with their trigger conditions. These usually exist as separate documents outside the ERP, which is why standard system controls cannot check against them.

Margin Drift Resources