Leak 02 · Pricing & Margin - Cost increases not reaching customer prices

A supplier raises cost. The customer price stays where it was. Margin on that item quietly compresses until someone notices, often a year later.

What is it?

Supplier cost changes arrive constantly: annual price lists, mid-year surcharges, freight and commodity adjustments, and one-off notices buried in email. Each one has to be applied to the item cost, and then somebody has to decide what happens to the customer price.

The leak happens in the gap between those two steps. The cost updates, the price does not, and the margin on the item shrinks by the size of the increase. On a 25% margin item, a 6% cost increase that is not passed through takes the margin to roughly 20%. Nobody sees a loss. They just see a slightly worse gross margin percentage at month end.

It is most common on customer-specific prices, contract prices, and items priced by hand rather than by a cost-plus or matrix rule, because those are exactly the prices no automatic process touches.

Where does it occur?

Anywhere a customer price is fixed in a record rather than calculated from cost: customer price files, contract pricing, special pricing agreements, quotes converted into standing prices, and prices set years ago and never revisited.

Family
Pricing & Margin
Primary owner
Pricing Manager
Secondary owners
Purchasing, CFO, Branch Managers
Primary impact
Gross margin
Typical data source
ERP item cost history, price records, invoice lines
Detection difficulty
30-day measurability

Ask yourself

Do supplier cost increases automatically trigger a customer-price review?

Yes, partially, no, or don’t know. “Don’t know” is the most useful answer, because it points at the test below.

What does it look like?

Warning signs. None of these proves the leak exists. They tell you where to look.

  • Gross margin percentage drifting down on a product line while volume is flat.
  • A set of items with the same margin dollars per unit they had two or three years ago.
  • Customer-specific prices with no effective or review date.
  • Purchasing applies supplier increases, but nobody is told which customers are affected.
  • Salespeople learn about a cost increase from an unhappy customer who noticed the invoice before anyone else did.

What data do I need?

The minimum viable set. Most of it is already in your ERP.

FieldExample
ItemSKF-6205
Cost, with effective date$14.20 from 3/1/2026
Prior cost$13.30
CustomerAcme Manufacturing
Customer price, with effective date$18.90 from 6/12/2024
Price basisFixed / cost-plus / matrix / contract
Invoiced price and date$18.90 on 5/2/2026
Quantity sold1,150 in the last 12 months

The initial check

Start with a small sample. Gathering the exports, agreements, or observations is separate from running the check; agree that work with the person who owns the records.

  1. 1Pick one supplier that raised prices in the last twelve months and note the effective date and percentage.
  2. 2Pull the twenty highest-volume items from that supplier with their current cost, cost before the increase, and the current customer price for your five largest customers on each.
  3. 3For each item and customer, note whether the customer price changed after the cost effective date, and by how much.
  4. 4Count the lines where cost went up and price did not. Look at the margin percentage on those lines before and after.
Margin lost per line = (cost increase per unit − price increase per unit) × units sold since the cost effective date

Then ask one question: On the lines where price did not move, was that a decision someone made, or did nobody get asked?

The 30-day test

Extend the check to every cost change in the period and every customer price on the affected items. Classify each customer-item line into one of four groups: price moved by at least the cost change, price moved by less, price did not move, or price is protected by a contract with a defined term.

Then weight by volume. A few high-volume lines usually carry most of the money, and those are the ones to review with the salesperson who owns the account.

GroupLinesUnits sold since changeMargin change
Price moved with cost31048,200+$0
Price moved by less14022,900−$11,400
Price did not move26531,600−$27,900
Contract-protected9518,700Deferred to renewal

Hypothetical distributor. Fictional numbers.

The contract-protected group is not a leak today, but it needs a renewal date and someone responsible for it. The “did not move” group is the immediate question, and the answer is usually a mix of oversight and legitimate commercial decisions that nobody wrote down.

How much could it be costing us?

A conservative range, not a headline. The goal is a number management can trust enough to investigate.

Σ over affected lines of (unpassed cost increase per unit × annual units) × realistic recovery rate

Worked example

  • 265 customer-item lines where cost rose and price did not
  • Average unpassed increase of $0.88 per unit
  • 31,600 units sold per year across those lines
  • Assume 60% can be repriced at the next order cycle without losing the business

$0.88 × 31,600 × 60% ≈ $16,700 per year for one supplier

Repeat for each supplier with a material increase. Do not count contract-protected lines until the renewal date, and do not count lines where the customer would plausibly leave.

Common root causes

Fixes fall into three layers. Not every problem needs software, and almost none needs AI first.

Process
No defined step that connects a supplier cost change to a review of the customer prices it affects, and no owner for that step.
Data
Customer prices are stored as fixed numbers without a basis, effective date, or link to the cost they were built on, so there is nothing to recalculate.
Technology
Cost updates and price maintenance live in different screens or systems, and nothing surfaces the affected customer lines to the person who should decide.

What should we do?

Start with the simplest intervention that could solve it. Move down the list only if the one above is not enough.

  1. Level 1

    Visibility

    A monthly report of items whose cost changed with the customer prices that did not, sorted by margin dollars at stake.

  2. Level 2

    Guardrails

    Every customer-specific price gets a basis and a review date. Contract prices get a renewal owner.

  3. Level 3

    Better pricing rules

    Move hand-set prices to cost-plus or matrix rules wherever the customer relationship allows, so the price follows the cost automatically.

  4. Level 4

    Workflow intervention

    When a cost change is posted, generate a review list for the affected accounts and route it to the salesperson with a proposed price and a deadline.

  5. Level 5

    Document-to-decision automation

    Read supplier price-change notices as they arrive, match them to items, calculate the affected customer lines, and queue the decisions with evidence attached. See the pricing and cost check example project for what this looks like.

Where AI helps

  • Reading supplier price notices in whatever format they arrive and extracting the item, percentage, and effective date.
  • Matching supplier part numbers to your items when the notice uses different identifiers.
  • Drafting the customer communication once the pricing manager has approved the change.

Where AI probably doesn’t

The calculation of which prices are affected and by how much is arithmetic. It should be ordinary code you can inspect and rerun, not a model’s opinion. If your item costs already update reliably, the missing piece is a report and an owner, not AI.

Before you call it a leak

  • A supplier cost increase does not automatically authorize a customer price increase. Contract terms, competitive position, and the relationship all matter.
  • Check the unit of measure and currency before comparing cost and price. Many false positives come from a case cost compared to an each price.
  • Cost changes can be reversed or corrected. Use the cost that was actually in effect when each invoice was cut.

ERP note. Most ERPs keep a cost history table and a price record with a last-changed date. Comparing the two dates is usually enough for the five-minute test. If price records do not carry a basis field, the thirty-day test will need someone who knows which customers are on contract.

Think this might be happening in your business?

Turn the finding into a next step.

If the numbers say there is something there, send us what you found and we will help you decide whether it is worth a full investigation. No transaction files needed for that conversation.

Let’s start with one thing.

What would better performance look like?

Bring a result you want to improve, a symptom, or a workflow you already understand. You do not need to know the bottleneck yet. We’ll help choose what to investigate first.

No transaction files needed for the first conversation.