← All guides
Roofing

How to Price Roofing Jobs for Profit (Not Just to Win the Bid)

Most roofers win bids and still end up broke. Here is the real math behind per-square costs, overhead, and the markup vs. margin formula so you price to actually earn.

How to Price Roofing Jobs for Profit (Not Just to Win the Bid)

You can stay busy all season and still end up broke. In roofing, that is not an exaggeration — it is what happens when you price to win rather than price to earn.

The math looks clean when you are quoting. Materials, labor, round up a bit. But after you pay the crew, haul off the old shingles, buy the extra blades and ice shield you forgot to count, cover insurance and your truck payment, and wait 30 days to collect — the $8,500 job you "won" might net you $900. That is on a good week.

The fix is not complicated. It is knowing your numbers. Once you do, you know your floor, and you stop apologizing for your price.

---

Start With Your Cost Per Square

The standard unit in roofing is the square — 100 square feet of roof. Build every bid around this unit and know your per-square cost without having to think hard.

For a standard asphalt shingle re-roof, the breakdown:

  • Materials: $120–$180 per square (shingles, underlayment, flashing, nails, caps, starter strips)
  • Labor: $80–$150 per square depending on pitch, crew experience, and your market
  • Disposal and haul-off: $30–$60 per square for tear-off jobs (dumpster, dump fees, loading time)
  • Miscellaneous: $10–$25 per square (permits, tarps, blade changes, drive time)

Bare-bones cost on a clean residential re-roof: somewhere between $240 and $415 per square, before you have paid yourself or covered a single day of overhead.

If your market expects full replacement at $350 installed, run that against your actual numbers and decide if it is a market worth working.

---

What Labor Actually Costs You

Most operators calculate labor at the wage on the check. That is wrong, and it is where margin quietly disappears.

A crew member at $22/hour seems manageable. Workers comp in roofing runs 15–25% of wages — add another $4–$6/hour. Then account for productive time: setup, cleanup, material staging, and breaks typically eat 25–30% of hours on a normal job. Your real cost for one person producing actual roofing work is closer to $38–$40/hour of billable output, not $22.

Price labor at the check rate and you have already destroyed margin before the first shingle goes down.

---

Overhead Lives in Every Square Whether You Put It There or Not

Add up your monthly fixed costs: general liability insurance, workers comp, vehicle payment and fuel, tools and equipment maintenance, phone, software, licensing. Divide by the number of squares you realistically complete in an average month — not your best month.

If fixed overhead runs $4,000/month and you complete 60 squares, that is $67 per square just to keep the business running. That number belongs in every single bid.

Plenty of guides say "add 25–30% for overhead." Use that as a starting point, then run your actual numbers once to confirm it covers you. For some operators it does. For others they are $15/square short and will not find out until they cannot make payroll.

---

Markup vs. Margin: A $12,000-a-Year Mistake

If your total job cost is $6,000 and you want a 20% profit, do you charge $7,200?

No. $7,200 is a 20% markup, which gives you a 16.7% margin. Margin is the percentage of the selling price that stays with you. Markup is the percentage added to cost. Across 40 residential jobs a year, using markup when you mean margin leaves $10,000–$15,000 behind.

To hit 20% profit margin:

Selling price = Cost / (1 - desired margin)
$6,000 / 0.80 = $7,500

Target for a healthy residential roofing operation: 15–20% net margin. Consistently under 12% and one slow month becomes a serious problem.

---

Where Bids Bleed

Every job has costs that do not appear on a material list. These eat margin the most:

Waste. Standard shingle jobs need 10–15% extra material for cuts, valleys, and starter edges. Hip-and-valley roofs run 20–25%. If you are not ordering and charging for that material, you are eating the difference out of margin.

Roof pitch. Crews produce more squares per day on a 5:12 than on a 10:12. Steeper roofs mean slower movement, more safety gear, and more labor hours per square. A 1.2–1.5x labor multiplier on steep work is not padding — it is coverage for real time spent. Most bids ignore it.

Two-layer tear-offs. Removing two layers takes roughly 40% longer than one, and the disposal weight doubles. If you are not pricing both those factors in, you are subsidizing the homeowner's decision to roof over instead of tear off.

Small jobs. A 10-square repair burns almost as much mobilization time as a 30-square one. Truck loaded, site staged, dump run at the end. Half a day gone. Price at your standard per-square rate and you are working the first few hours for nothing.

Set a minimum job fee. Know what half a day costs — crew, truck, your time — and do not go below it regardless of how simple the work sounds.

Repairs. A repair has higher diagnostic time, higher difficulty per square integrating with existing materials, and more callback risk if something fails. Most operators price repairs cheaper per square than replacements. That is backwards.

---

Complexity Multipliers Worth Having in Your Template

ConditionAdjustment
Standard pitch (4:12–6:12)Base rate
Steep (7:12–10:12)+15% on labor
Very steep (11:12+, walk boards required)+30–50% on labor
Two-layer tear-offAdd $40–$60/square
Limited or no vehicle accessAdd $15–$30/square
Metal or tile instead of asphaltSeparate labor rate entirely

Build these into your estimate template. The moment you are under bid pressure is not when you want to be calculating complexity factors from scratch.

---

When They Say "The Other Guy Was Cheaper"

You will hear this regularly. What works:

"I cannot speak to their number. What I can tell you is what mine covers — proper disposal, my insurance protecting your property throughout the job, and a labor warranty. If something fails six months from now, I will be back. That is either worth something to you or it is not."

Then stop talking.

You are not obligated to match a number that does not cover your real costs. If you chase the bid down and win it anyway, you will resent the job, cut corners you swore you would not, and probably not earn the referral. Some jobs are not worth having. Knowing your cost floor is how you recognize which ones those are.

---

A 4-Point Check Before Any Bid Goes Out

  1. Cost per square x number of squares — does the materials number hold against your supplier estimate?
  2. Real labor hours x all-in crew cost — is there actual gross profit here, or are you flat after paying the crew?
  3. Did you apply the complexity factor? Pitch, layers, access?
  4. Is this above your minimum job fee?

Five minutes. Catches most of the bids that would have cost money to complete.

---

Profitable Beats Busy

The contractors who last in roofing are not the ones who win the most bids. They are the ones who know their number, charge it, and stop taking work that does not pay.

Get your actual per-square cost, run your overhead math, learn the margin formula, and price from there — not from what you think a homeowner wants to hear or what a low-bid competitor might charge.

Ready to track job costs, margins, and leads without a spreadsheet mess? SideWRK is free to start — built for trade operators who run their business seriously. Check out the roofing contractor hub for more guides on winning better work.

Run your side-work like a real business

SideWRK turns your phone into estimates, professional invoices, photos, payments, and a public profile that wins repeat customers — built for roofing.

Start free →