Roofing Profit Margins: What's Normal for a Roofing Company?

Most published benchmarks put roofing gross profit margins between 25% and 40% and net profit between 6% and 12%, and the companies that run well tend to land at 12% to 15%. From keeping the books for home service and construction contractors, we've found that most roofing owners can't say where they fall in those ranges, because their P&L blends insurance and retail work, leaves crew labor in one payroll total, and scatters dumpster and material costs across general expenses.

That blind spot costs more in roofing than in most trades, because materials and labor take such a large share of every job. On a $24,000 reroof where a third of the price goes to materials, a few points of waste and one unbilled supplement can take away most of the profit the job was quoted to make, and the books will never show which job it was.

What the benchmarks say

Roofing benchmarks come from several places rather than one definitive study, so the useful approach is to look at where the published ranges agree. Software companies that serve roofers, industry consultants, and trade publications land in roughly the same place.

  • Gross profit margin of 25% to 40% for most roofing companies

  • Net profit margin of 6% to 12%, with strong operators at 12% to 15%

  • Overhead that commonly runs around 20% of revenue or more

  • Repair and service work at the high end of the gross margin range, with large commercial and new construction work at the low end

Roofing Contractor magazine has long put the typical gross margin at 20% to 40%, and its benchmark column describes a 5% net profit as good and 8% as excellent when the number is measured after the owner has been paid. That last detail explains a lot of the spread in net margin figures. A company showing 15% net with no owner salary on the P&L and a company showing 8% after a market-rate salary can be equally profitable, which is why owner pay belongs on its own line (officer's compensation) where you can see it.

What four points of gross margin cost

Picture a $2 million roofing company running a 32% gross margin with overhead at 22% of revenue. That's $640,000 in gross profit, $440,000 in overhead, and $200,000 in net profit, which is a healthy 10%.

Now say gross margin slips to 28% over the year, because material waste runs a little over the estimate on most jobs, a few supplements never get billed, and crews take an extra half day on the steep roofs. Overhead doesn't move, so gross profit falls to $560,000 and net profit drops to $120,000. Four points of gross margin cost the owner $80,000, and net margin went from 10% to 6% without a single job looking like a disaster.

In contractor books, margin tends to drift a point at a time across dozens of jobs rather than vanish on one bad one, and a P&L that can't show gross margin by job has no way to catch it.

Markup and margin are two different numbers

A lot of roofing estimates are built on markup, and a lot of owners then read that markup as their margin. Markup is profit as a percentage of cost, while margin is profit as a percentage of the selling price, so the margin is always the smaller number.

  • A 30% markup produces a 23% gross margin

  • A 43% markup produces a 30% gross margin

  • A 54% markup produces a 35% gross margin

  • A 67% markup produces a 40% gross margin

A roofer who marks up every job 30% and expects a 30% margin is starting seven points short of the plan, before any waste or overruns show up.

Where roofing margin leaks

Material waste. Valleys, hips, dormers, and pitch changes push real usage above the takeoff, so a 25-square roof can easily consume 27 squares of material. That's 8% more material than the estimate assumed, and unless purchases are tagged to the job, the overage disappears into one big materials number.

Labor and burden. Crew wages are only part of the cost of labor. In Florida, workers' comp rates for roofing are among the highest in the country, and burdened labor commonly runs 30% to 50% above base wages. An estimate built on base wages is underpriced from the start, and our Labor Burden Calculator shows what a crew hour really costs.

Dumpsters, permits, and the small job costs. The dumpster bill arrives a week after the job closes and gets coded as a general expense, and permits, fuel, and equipment rentals tend to follow it. Each one is small, but they come straight out of the job's margin without ever appearing on a job report.

Supplements and change orders. On insurance work, the money for added scope only arrives if the supplement is documented and billed. On retail work, rotted decking found after tear-off needs a signed change order. Work that gets done and never billed is a direct margin loss.

Job mix. Repairs and service calls usually carry higher gross margins than full replacements, and large commercial or new construction work usually carries lower ones. Two companies with the same pricing discipline can show very different overall margins because of what they sell, which makes margin by job type more useful than one blended number.

Why most roofing P&Ls can't show any of this

Gross margin is only readable when the direct costs of doing the work sit in cost of goods sold. On many roofing P&Ls, crew wages share a payroll line with office staff, materials are split between COGS and a supplies account, and subcontractor and dumpster costs land wherever the bank feed suggested. The gross margin on that report is an accident of categorization, and comparing it to a benchmark tells you nothing. We cover the general version of this problem in Why Your Contractor P&L Is Lying to You.

Fixing it starts with a chart of accounts that puts materials, burdened crew labor, subcontractors, and job costs like dumpsters and permits in COGS, and that separates insurance revenue from retail revenue, as laid out in How to Set Up Your Chart of Accounts as a Contractor. Job costing comes next, so every reroof and repair shows its own margin, and we walk through the setup in How to Set Up Job Costing in QuickBooks Online. For the full picture of what a roofing company should track, see Roofing Bookkeeping: What to Track and Why.

Reading roofing margins in Florida

Florida roofing runs year-round, but the months don't look alike. Afternoon storms in the summer rainy season cut into crew days, and hurricane season from June through November can bring a surge of storm work followed by a quieter stretch. A single month's margin can swing for reasons that have nothing to do with how well the company is run, so the number to watch is gross margin on a trailing twelve-month basis, alongside margin by job type.

Storm work also changes the timing of cash. Insurance jobs pay in stages, with the first check, then supplements, then depreciation released after the work is verified, so a company can be profitable on paper while cash runs tight. Margin and cash flow need to be tracked separately for that reason.

When to bring in a specialist

Below about $500,000 in revenue, an owner can usually keep a workable read on margins with clean books and a simple job cost sheet. Past $500,000, with multiple crews, a mix of insurance and retail work, and sales reps on commission, the number of jobs outgrows what one person can track by feel, and a bookkeeper who understands roofing is worth bringing in to catch margin drift early.

At Prophet Accounting, we work with roofing contractors and other home service trades across Port St. Lucie, the Treasure Coast, and nationwide. We set up job costing and a roofing-specific chart of accounts so your P&L shows gross margin by job and by job type every month. Schedule a consultation at prophetaccounting.com/contractors or give us a call at (772) 380-2871. For a quick read on monthly bookkeeping costs, our pricing calculator gives you a ballpark in about two minutes.

Previous
Previous

Roofing Job Costing: How to Track Profit on Every Roof

Next
Next

No Tax on Overtime: What Contractors Need to Report on 2026 W-2s