How to price a roofing job with material and labor markup
How to Price a Roofing Job with Material and Labor Markup
Pricing a roofing job correctly is one of the hardest skills to master in the trades. Bid too high, and you lose the contract. Bid too low, and you spend the next three weeks working for free — or worse, paying out of pocket to finish a job you already underbid.
The difference between a profitable roofing company and one that's always stressed about cash flow usually comes down to one thing: a clear, repeatable markup system that accounts for both materials and labor. This guide walks you through exactly how to price a roofing job with material and labor markup, step by step.
Why Most Roofers Underbid (And Don't Realize It)
Most underbidding doesn't happen because contractors are bad at math. It happens because they forget to account for the full cost of doing business. Common mistakes include:
- Marking up materials only and treating labor as a flat number
- Forgetting overhead — truck payments, insurance, tools, office costs, fuel
- Ignoring material price fluctuations (asphalt, plywood, and metal have all spiked unpredictably in recent years)
- Not pricing change orders with the same discipline as the original bid
- Quoting from memory instead of using a consistent formula
If any of these sound familiar, the fix isn't working harder — it's building a pricing structure that catches every cost before you send the bid.
Step 1: Calculate Your True Material Costs
Start with a detailed material takeoff. Don't estimate — measure.
Your material list should include:
- Shingles or roofing panels (by square — 100 sq ft)
- Underlayment
- Ice and water shield
- Flashing (step, drip edge, valley)
- Ridge caps and vents
- Fasteners, nails, and sealants
- Decking/plywood for repairs
- Waste factor (typically 10–15% for complex roofs)
Then add a material markup. A common range for roofing is 15–35%, depending on:
- Whether you're buying at contractor pricing or retail
- How volatile the material is (metal and specialty shingles often justify a higher markup)
- Whether you're fronting the cost of materials before the client pays
Pro tip: Material prices change. If your bid is valid for 30 days, build in a clause that lets you adjust if supplier costs spike. This is one of the most overlooked parts of how to price a roofing job with material and labor markup — and one of the most expensive to ignore.
Step 2: Price Labor Correctly (Not Just Hourly)
Labor is where most bids fall apart. You need to cover:
1. Base crew wages — what you actually pay per hour
2. Payroll taxes and workers' comp — often 20–35% on top of wages
3. Production rate — how many squares your crew installs per day
4. Labor burden — benefits, tools, training, downtime
Example:
- Crew of 3 installs 12 squares/day
- Daily labor cost (with burden): $900
- Labor cost per square: $75
Now apply a labor markup of 35–55% to cover overhead and profit. That $75/square becomes $101–$116/square in your bid.
Many contractors skip this step and just "charge what feels right." That's how you end up with a full schedule and an empty bank account.
Step 3: Add Overhead and Profit (The Part Everyone Forgets)
Overhead is everything that isn't tied to a specific job:
- Insurance (general liability, auto)
- Truck and equipment payments
- Fuel and maintenance
- Office/software/phone
- Marketing and lead costs
- Your own salary
Add up your annual overhead, divide it by your annual revenue, and you'll get your overhead percentage. Typical roofing companies run 10–20%.
Then add net profit — usually 10–20% for a healthy roofing business.
Formula:
> Bid Price = (Materials + Labor) × (1 + Overhead %) × (1 + Profit %)
Or, more simply:
> Bid Price = Direct Costs × Markup Multiplier (typically 1.5–1.8)
Step 4: Build in Change Order Pricing
Change orders kill margins when they're handled casually. A homeowner asks for an extra vent, a chimney flashing repair, or upgraded shingles — and you "just add a little" without recalculating.
Rule: Every change order gets the same material + labor + overhead + profit treatment as the original bid. No exceptions.
Keep a one-page change order template with:
- Description of work
- Material cost (with markup)
- Labor hours (with burden and markup)
- Client signature and date
Step 5: Use a System, Not Memory
Here's the truth: even experienced roofers forget line items. The only reliable way to price consistently is to use a template or estimating system that forces you through every step.
This is exactly what «ProfitShield Estimating System: Stop Underbidding and Protect Your Margins» was built for. It's a done-for-you toolkit with pre-built Excel templates featuring dynamic pricing formulas, so material price changes flow through your bid automatically. It also includes a step-by-step guide for avoiding common estimating mistakes and managing change orders profitably.
For $39, it's less than the cost of one underpriced job — and it replaces the spreadsheet you've been rebuilding from scratch every season.
Quick Checklist: Before You Send Any Roofing Bid
- [ ] Full material takeoff completed (with waste factor)
- [ ] Material markup applied (15–35%)
- [ ] Labor hours estimated by production rate, not guesswork
- [ ] Labor burden included (taxes, insurance, comp)
- [ ] Labor markup applied (35–55%)
- [ ] Overhead percentage added
- [ ] Profit margin added (10–20%)
- [ ] Material price validity clause included
- [ ] Change order process defined
- [ ] Bid reviewed against a template or system
Final Thoughts
Learning how to price a roofing job with material and labor markup isn't about charging more — it's about charging correctly. When your bids reflect real costs, you stop losing money on jobs you "won," and you start building a roofing business that actually pays you what you're worth.
If you're tired of guessing, start with a system. Grab «ProfitShield Estimating System: Stop Underbidding and Protect Your Margins» and price your next job with confidence — not crossed fingers.
Get the ready-made toolkit →