Educational pricing guidance for residential contractors — from the Contractor Authority™ system by P4 One LLC
Contractor AuthorityContractor Authority™Pricing, profit & proposals
Home / Pricing Guides / Roofing
Roofing pricing

How to Price Roofing Jobs Without Killing Your Margin

Tear-off, weather days, and steep-pitch labor make roofing one of the easiest trades to underbid — and the costliest.

Why pricing roofing jobs is its own problem

Roofing pricing has to absorb disposal, weather, and decking surprises. Tear-off generates tons of waste with real dumpster and dump-fee costs, rain can push a one-day job into three, and you rarely know the deck's condition until the old roof is off. Steep or multi-story work is slower and riskier. A price-per-square pulled from memory ignores all of it.

The fix isn't a magic number — it's pricing from your real, burdened costs and the cost drivers specific to roofing work. Below: the fundamentals applied to roofing, the cost drivers to build into every quote, a worked example, and the mistakes that quietly turn good jobs into breakeven ones.

Start with the fundamentals

Roofing margin disappears in tear-off, weather days, and decking you can't see, so the markup-vs-margin math only protects you if your burdened labor and waste are in the number before the first square goes on. For the full breakdown of the two numbers that protect every contractor's margin, see our markup vs margin guide and labor burden guide — and run the markup ↔ margin calculator for your own numbers.

The cost drivers specific to roofing work

These are the line items that separate a real roofer's quote from a guess. Build each one into your price:

Tear-off and disposal

Stripping the old roof creates heavy waste — dumpsters, hauling, and dump fees that scale with layers and size. Count the layers before you quote.

Weather and reschedule risk

A rained-out crew still costs you. Build schedule float and the cost of stop-start days into seasonal pricing.

Pitch, height, and access

Steep and multi-story roofs are slower and need more safety setup. A 12/12 pitch is not the same labor as a walkable 4/12.

Decking and surprises

Soft or rotted decking found at tear-off is unplanned material and labor. Price a clear per-sheet replacement rate up front so it's a known change, not a fight.

A worked example

A re-roof estimated at $9,500 with $6,500 cost (32% margin) hits two rain days and 8 sheets of bad decking. Without a per-sheet decking rate and weather float, the extra material, labor, and lost days can pull the job under 20%. With a stated $X/sheet decking rate and seasonal float in the price, the decking becomes an approved add and the margin holds.

Numbers here are illustrative to show the method — your real costs, local market, and rates differ. Price from your own books.

Common roofing pricing mistakes

  • Quoting price-per-square from memory without counting layers or pitch.
  • No per-sheet decking-replacement rate agreed before tear-off.
  • Ignoring dumpster and dump fees that rise with every layer.
  • Pricing steep or multi-story roofs at walkable-roof labor rates.

Stop pricing from memory

The Contractor Authority System™ turns this into a repeatable process — a profit-control engine with burdened labor and overhead, change-order protection, and client-ready proposals. One-time $97.

Get the System — $97 Free Profit-Leak Checklist

FAQ

How do I handle bad decking I can't see until tear-off?

Put a clear per-sheet replacement price in the contract. Then it's a documented, pre-agreed change when you find it — no awkward renegotiation on the roof, no eating the cost.

Should insurance jobs be priced differently?

Storm and insurance work has its own documentation and scope rhythm. Price the real work and keep accurate records; don't assume the carrier's number matches your true cost — verify scope against your own estimate.

The P4 Ecosystem · One Accountable Partner
From free checklists to starter toolkits to premium builds — every stage lives inside one ecosystem.
Contractor Authority™ is a brand of P4 One LLC · SAM Active · CAGE 17SM1 · UEI SW9VDGLV8AY6 · NJ MBE #A0654-63 (Provisional) · NJ SBE #A0704-18 · NJ SEDB #A0704-17