HOW FIXED-PRICE CONTRACTS SQUEEZE SUBS WHEN MATERIAL JUMPS
A fixed-price contract locks your bid price for the duration of the project. If material costs jump 18% after you sign — lumber, steel, copper, pipe — the GC isn’t paying the difference. You are. The margin you bid is gone, and on long-duration projects you can be underwater before mobilization. The fix is contract language, supplier lock-ins, escalation clauses, and a financial structure that detects margin erosion before the job closes out.
This isn’t a theoretical risk. Subs lost six and seven figures on jobs signed in 2021–2023 when material indexes ran. The ones who survived had escalation language and supplier discipline. The ones who didn’t took it out of margin.
WHAT ACTUALLY HAPPENS
You bid a fixed-price job in February. Lumber is $480/MBF. You build that into your estimate. Job starts in May. Lumber is now $640/MBF. The GC isn’t reopening the price. Your contract says fixed. That 33% spike on a material category that’s 22% of your job cost just took 7.2 points out of your gross margin. If you bid 24%, you’re now executing at 16.8%. After overhead, you’re flat or negative.
This isn’t hypothetical. We’ve seen it across every trade we serve. Steel rebar in 2021. Copper for electrical in 2022. PVC and ductile iron for underground utility in 2023. Lumber for framers in 2021 and again in 2024. Every cycle, the same pattern: bid in one cost environment, execute in another, eat the difference if you didn’t protect yourself.
Fixed price is fine when commodity prices are stable. It’s a structural exposure when they’re moving.
THE THREE MISTAKES SUBS MAKE
NO ESCALATION CLAUSE IN THE CONTRACT
You signed the GC’s prime flow-down or a standard sub agreement that says “Subcontractor shall furnish all materials at the prices stated in Exhibit A.” No carve-out. No escalation language. No price adjustment trigger. When material moves, you absorb 100% of it. Most subs read the schedule of values, sign, and never look at the price-adjustment section — because there isn’t one. That’s the problem.
NO MATERIAL LOCK-IN WITH THE SUPPLIER
The estimator pulls a quote in February. The job doesn’t mobilize until May. Nobody calls the supplier in February to lock the quote with a deposit or a firm PO. By May the quote is expired and the supplier won’t honor it. You’re now buying at market. The bid math assumed February prices. The execution math is May prices. Three-month delta on volatile commodities can be 10–30%.
NO MARGIN-EROSION ALERT IN THE FINANCIAL SYSTEM
The job is bleeding margin and nobody sees it until the cost-to-complete review three months in. By then the loss is locked in. Real financial control means the PM and the controller see actual material costs against bid costs every week, not every quarter. If steel is running 18% over bid in week 3, that’s a Tuesday conversation with the GC about a change order or a co-pay — not a year-end writedown.
WHAT TO ACTUALLY DO
ADD ESCALATION LANGUAGE TO YOUR STANDARD CONTRACT
Three triggers worth fighting for in negotiation. First: a commodity price index clause — if [lumber/steel/copper] moves more than X% from the bid date to the order date, the price adjusts up or down by the delta. Second: a long-lead material exclusion — specific line items (transformers, switchgear, structural steel) get re-priced at PO date if the lead time exceeds 90 days. Third: a contingency line item disclosed in the SOV that the GC has to acknowledge before signing.
LOCK MATERIAL THE DAY THE CONTRACT IS SIGNED
The estimator and the PM split. Estimator wins the job. PM walks the supplier list within 48 hours, issues firm POs against the won bid, and locks pricing with a deposit if the supplier requires it. The cash cost of the deposit is real but it’s small compared to absorbing a 15% material spike. Treat material lock-in as part of mobilization, not as a procurement task you’ll get to next month.
BUILD WEEKLY ACTUAL-VS-BID MATERIAL TRACKING
Material purchases get coded to phase and compared to budget every week, not at month-end. If actuals are running 8%+ over bid, the PM gets a flag. If it’s a commodity move (not an estimating miss), that’s a documented basis for a change-order conversation. The conversation only works if the documentation exists in real time. Six weeks later, the GC’s answer is no.
USE A CONTINGENCY THE GC SEES
If you bid 5% material contingency, name it on the SOV. The GC can negotiate it down or accept it. Either way you’ve put it on the table. Hidden contingency feels safer, but when material moves and the job goes red, you can’t go back and ask for what you didn’t disclose. Visible contingency is harder to negotiate but easier to defend.
RECLASSIFY LONG-DURATION JOBS
If a job is over 12 months in duration, it doesn’t belong on a true fixed-price structure for materials. Push for cost-plus-with-cap on commodity-heavy line items. If the GC won’t move, either price the commodity risk into your bid (which loses you the job to subs not pricing it) or walk. Some work isn’t worth winning.
WHY THE NUMBERS HAVE TO BE LIVE
Contract language and supplier lock-ins reduce exposure. They don’t eliminate it. Some material moves are too big to escalate against and some GCs won’t negotiate either of those things. That’s when the financial system has to do the work.
The CFOS Cash Control module watches material spend against bid by phase, weekly, automatically. If a phase is bleeding, the PM gets a flag the day costs hit the system — not at month-end. That flag is the trigger for either a change order conversation, a re-sequencing decision, or a margin recovery action on a different phase. The point isn’t to prevent every loss. It’s to know about it on day 7, not day 90.
Subs who survive volatile material cycles don’t guess less. They see sooner.