Skip to content
CheckMySupply.com
Material Price Creep

Material Price Creep: What It Is and How to Spot It

Same part, same supplier, higher price every month, and no phone call. What material price creep is, why nobody flags it, and how to find it on your invoices.

By 12 min read

Material price creep is the slow upward drift of the unit price you pay for a part you buy all the time, from a supplier you have bought it from for years, without anyone telling you it moved. Not a letter. Not a call from your rep. The number on line 7 of the invoice is just different than it was in March, and you signed for the total, so it got paid.

That is the whole definition. It is not a scandal and it is usually not anyone’s decision. It is what happens when a price file gets updated on one side of a relationship and nobody on the other side is keeping a running record of what they used to pay.

Some of that drift is real. Copper genuinely moved. Steel genuinely moved. Your distributor is passing through a cost they also had to eat. That part is not creep, and a post that pretends otherwise is lying to you. Creep is the part that is left over after you account for the real move, plus the part that nobody notified you about even when the reason was legitimate.

So what is creep exactly, what mechanisms produce it, why is it close to invisible from the buyer’s side, and how do you separate genuine commodity movement from the rest using free published data?

What price creep is not

Two things get confused with creep, and getting them straight is most of the work.

An announced price increase is not creep. Your rep calls, or the manufacturer sends a letter with an effective date, and 12/2 Romex goes up 6% on the first of the month. You may not like it, but you know. You can bid around it, buy ahead of it, or push back on it. The information arrived before the invoice did. That is a functioning commercial relationship.

Genuine commodity movement is not creep either. When copper mill product prices climb, copper fittings climb. The BLS producer price index for copper and brass mill shapes went from 747.384 in January 2026 to 803.275 in June 2026 (preliminary), about 7.5% in five months. A distributor whose replacement cost went up 7.5% and who raises your fitting price 7.5% has done nothing to you. They have passed through a cost. The same is true across the board: steel mill products went from 315.369 in January 2026 to 361.439 in June (preliminary), roughly 14.6%, and every steel product on your invoice reflects that somewhere.

This is not a small pass-through, either. AGC’s read of the producer price index for inputs to new nonresidential construction had input costs up 8.4% year over year in May 2026 while contractors’ bid prices rose only 3.5%. Everyone in the chain is absorbing something.

So creep is the residual. It is the movement in your unit price that is not explained by the underlying commodity, plus the total absence of notification either way. The second half matters as much as the first. A 7.5% increase you were told about is a business condition. A 7.5% increase you discover eleven months later, while pulling invoices for a bid postmortem, is a hole in your cost control.

The mechanisms that actually produce material price creep

Creep is at least seven different things that all look identical on the invoice, because the invoice shows you a price and nothing about where the price came from.

Your contract or agreement quietly expired. Customer-specific contract pricing is a discrete function in distributor ERP systems, alongside counter sales and rebate management (Epicor’s electrical distribution product ships these as separate modules). Agreements have end dates. When one lapses, the system does not error out. It falls back to the next price tier, which is usually the counter or matrix price. Nothing broke, so nobody called. The single-transaction version of this is worth understanding on its own, because it is the most common one: how your contract price becomes the counter price.

The multiplier or discount category changed. Contractor agreements are commonly written as percentage discounts off list by category, something like 20% off lighting, 25% off wire and cable, 15% off breakers and panels. Change one category’s multiplier and hundreds of SKUs reprice at once, silently. That category structure is the tier your account sits in, and if you have never seen yours written down, start with what column pricing at a distributor actually means.

An SPA expired or the item fell out of it. A special pricing agreement is a negotiated deal between the manufacturer and the distributor covering specific products, often tied to purchase thresholds or qualifying criteria (Enable’s overview of SPAs covers the mechanics). Industry write-ups note that SPAs tend to be static rather than dynamic: they are set, then they sit, then they end. You never saw the SPA, so you cannot see it end.

List price files updated underneath you. If your price is a multiplier off list, then a list price change moves your price without anyone touching your account. Distributors run on managed price and product data feeds that carry list price as a field and sync into the ERP (Trade Service, now Trimble). Same multiplier, new list, new price.

A substituted SKU came in at a different price. The counter was out of your usual fitting and gave you the equivalent from another manufacturer. Fine at 4pm on a Tuesday. But that substitute is priced off a different agreement, and now the item is in your purchase history under a different part number, which also breaks your ability to see the trail.

Branch-level discretion. Counter staff and branch managers have some latitude, and ERP systems have explicit price override management for exactly that reason. Two branches of the same distributor can bill the same part differently on the same day. Neither is wrong.

You stopped hitting a quantity break. Volume tiers are real. If you used to buy the box and now you buy the bag, or your monthly volume slid under a threshold, your price legitimately steps up. It just steps up without a conversation.

Notice how few of these require anyone to intend anything. That is the point. Creep is a systems artifact, not a scheme, and treating it as a scheme is the fastest way to lose a supplier relationship you actually need.

Why price creep is structurally invisible

You are not missing this because you are careless. You are missing it because the way material gets bought makes it nearly impossible to see.

You buy the same part across dozens of jobs, and compare it against nothing. The elbow you bought in March went on a water heater swap. The one in June went on a repipe. Two different jobs, two different job costs, two different folders. The two prices never appear on the same page, so the trail does not exist anywhere except in the distributor’s system.

Invoices get approved on total, not on unit price. The question at the desk is “did we get this material, and does the total look about right for what we got?” Not “was line 7 the same number in March?” Nobody has time for the second question at 6pm with forty invoices in the stack. Bookkeepers reconcile totals; almost nobody re-checks unit prices line by line against three months ago. Approving on total is the same blind spot that lets a duplicate supply-house invoice get paid in full, because a second bill for material you already bought also looks about right.

The increments are small enough to read as noise. A fitting going from $14.20 to $14.65 is not a red flag. It is a rounding error on a $2,300 invoice. Four of those in a row, on eleven SKUs, over a year, is a different number entirely. Creep only becomes visible in aggregate and over time, which is precisely the view no one has.

Counter runs have no paper discipline. Will-call tickets are paper, they live in the truck, and half of them never get compared to anything. The buying pattern where price discipline collapses is also the buying pattern that generates the least usable record. The exception is a quoted job, where you do have a written baseline to hold the invoice against, which is why a quote versus invoice mismatch is the one version of this you can catch the same week it happens.

What a real price trail looks like

Here is the shape of it. The unit prices below are illustrative composites, built from the same examples on our homepage and aligned to a January-to-June 2026 window so they can be set against published index months. The index columns are real: each one links to the BLS series it came from, and 2026 readings are marked preliminary by BLS.

SKU (illustrative) Jan unit price Jun unit price Your change Index used Index change Unexplained
3/4“ copper 90 elbow, bag of 10 $14.20 $17.80 +25.4% Copper and brass mill shapes +7.5% +17.9 pts
12/2 Romex, 250 ft roll $89.00 $104.50 +17.4% Copper wire and cable +7.6% +9.8 pts
1/2“ PVC Sch 40, 10 ft $3.85 $4.60 +19.5% Plastics pipe +6.6% +12.9 pts
3/4“ EMT, 10 ft stick $9.10 $10.40 +14.3% Steel mill products +14.6% -0.3 pts
1/2“ chrome angle stop $6.40 $6.45 +0.8% Plumbing fixture fittings and trim +0.4% +0.4 pts

Read the last two rows first. The EMT moved 14.3% and the steel index moved 14.6%. That is a distributor passing through a real cost, and if you walk into a price review swinging at that line, you will look like you did not do the homework. The angle stop barely moved at all, and the trim index barely moved either. Two rows out of five are clean.

The top three rows are the argument. Copper moved, genuinely, and it explains about seven and a half points of a twenty-five point increase on the elbow. The other eighteen points came from somewhere else: an expired agreement, a category multiplier, a lapsed SPA, a branch override. You do not know which. But you now have a specific, quantified, non-accusatory question to ask, and that is worth more than an opinion.

How to separate real commodity movement from creep

The method is short.

  1. Pick one index per material family, not per SKU. There is no BLS series for a Nibco 3/4 inch elbow. There is a series for copper and brass mill shapes, and it is close enough to tell a 7% move from a 25% one. For plastic pipe use the commodity series, plastics pipe and plastics pipe fittings and unions, rather than the industry index; neither commodity series separates PVC from CPVC from PEX, but both track the material rather than an industry’s output prices. For HVAC equipment use unitary air-conditioners, except air source heat pumps or heat pumps, whichever matches what you install, because the two have gone opposite directions in 2026: unitary AC ran 280.520 in January to 297.025 in May (preliminary), while heat pumps ran 146.923 in January to 141.564 in June (preliminary). Note that WPU114802 publishes about a month behind, so its newest reading is May while the others already show June. Keep air-conditioning and refrigeration equipment manufacturing as a backstop only where a scope spans both. For a whole-basket sanity check on your overall material spend, inputs to new nonresidential construction is the series AGC quotes monthly.
  2. Compare percentage change over the same window, not levels. The index base years are all different and meaningless on their own. Only the change matters.
  3. Subtract. Your percentage change minus the index percentage change is your unexplained movement. That difference is your entire agenda.
  4. Expect a lag and some slack. Mill prices reach your counter after distributor inventory turns, so a two to three point difference in either direction over a few months is noise. A fifteen point difference is not.
  5. Use the preliminary label. BLS marks recent months preliminary and revises them. Re-pull the number before you put it in an email.

What to do once you have found it

Finding creep is the hard part. What comes next is short and unglamorous.

Do not lead with an accusation. The counter is not the villain here, and your rep is very likely seeing this trail for the first time too. The email that works is three lines: here is the part number, here are the four dates and four unit prices, can you tell me what changed. If you want the exact wording, there is a credit request email template built around prior invoices that does this without making a case. Nine times out of ten the answer is an expired agreement or a category change, and it can be fixed forward with one phone call.

Move fast on the recent stuff. Credit and adjustment windows are real and short. Published AP policies routinely escalate uncollected credit balances at 45 and 90 days, and the practical reality at a supply house is the same: a 30-day-old error gets fixed, a 9-month-old one gets “sorry, that’s already posted.” Creep you find this month is negotiable. Creep you find next year is tuition.

Ask to be told next time. Worth more than a credit: your rep agreeing to email you when a multiplier, an agreement, or a list file changes on your top twenty SKUs. That costs the distributor nothing and removes most of the problem permanently. It is also the cheapest thing to put on the table when you sit down to negotiate with your supply house, because notification costs them nothing to give.

Feed it back into the bid. A price variance is the difference between what you paid and what you assumed, times the quantity you bought (the standard materials price variance formula). If your unit costs drifted 18 points past the index and your estimating assumptions did not move, every bid you wrote in that window was wrong by that much, on every one of those lines.

The short version

  • Creep is unit price drift on a repeat purchase, with no notification.
  • An announced increase is not creep. A real commodity move is not creep. The residual is.
  • It is produced by expired agreements, changed multipliers, lapsed SPAs, list file updates, substitutions, branch overrides, and missed quantity breaks, almost never by intent.
  • It hides because you compare invoice totals, not unit prices per SKU over time.
  • You detect it by building a unit price history per part number and differencing it against a published index.
  • You fix it by asking a specific question fast, and by asking to be notified next time.

Sources