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.
| Field | Example |
|---|---|
| Item | SKF-6205 |
| Cost, with effective date | $14.20 from 3/1/2026 |
| Prior cost | $13.30 |
| Customer | Acme Manufacturing |
| Customer price, with effective date | $18.90 from 6/12/2024 |
| Price basis | Fixed / cost-plus / matrix / contract |
| Invoiced price and date | $18.90 on 5/2/2026 |
| Quantity sold | 1,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.
- 1Pick one supplier that raised prices in the last twelve months and note the effective date and percentage.
- 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.
- 3For each item and customer, note whether the customer price changed after the cost effective date, and by how much.
- 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.
| Group | Lines | Units sold since change | Margin change |
|---|---|---|---|
| Price moved with cost | 310 | 48,200 | +$0 |
| Price moved by less | 140 | 22,900 | −$11,400 |
| Price did not move | 265 | 31,600 | −$27,900 |
| Contract-protected | 95 | 18,700 | Deferred 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.
Level 1
Visibility
A monthly report of items whose cost changed with the customer prices that did not, sorted by margin dollars at stake.
Level 2
Guardrails
Every customer-specific price gets a basis and a review date. Contract prices get a renewal owner.
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.
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.
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.
Related leaks
- Leak 03 · PricingExpired customer-specific pricingA special price was agreed for a project, a period, or a volume commitment. The project ended and the price stayed. Nobody owns the expiry.
- Leak 07 · PricingPoor handling of manufacturer price increasesThe increase notice arrives sixty days ahead. Nobody buys ahead, the cost file updates late, and customers are told after the fact. Each step leaves money on the table.
- Leak 18 · SuppliersBuying the same product at inconsistent costsBranch A pays $14.20. Branch B pays $15.60 for the same item from the same supplier. Or the invoice says $15.60 and the PO said $14.20, and nobody checked.
- Leak 05 · PricingPrice overrides without adequate controlsAnyone with order-entry access can change a price, and nothing records why. The override rate is the leak, and it is usually unmeasured.
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.