The Numbers Behind Why Roofing Contractors Can't Make Money (Even When They're Busy)

Published on The Automation Journal | Booked Solid Copy

This is not a post about marketing your roofing business or finding more leads. There are plenty of those.

This is about the specific financial and operational mechanics that cause roofing contractors to work full schedules, complete jobs, collect payment, and still end up with almost nothing at the end of the year. Or worse, end up behind.

The numbers here come from industry surveys, insurance data, NRCA research, and contractor-sourced reporting. They are specific on purpose. Vague advice has not helped this industry. Specific numbers might.

The Profit Problem Is Worse Than You Think

The roofing industry's dirty secret is not that profit margins are low. It's that most contractors don't know how low.

The National Roofing Contractors Association (NRCA) reports the average net profit margin for roofing contractors is 2.8 percent. Half of all roofing companies make less than that. On a $1 million revenue year, a 2.8 percent net profit is $28,000. That's before the owner pays themselves.

Gross margins across the industry look better on paper. Most residential roofing companies operate at a 20 to 40 percent gross margin. But gross margin only accounts for direct labor and materials. Once overhead enters the picture, those numbers collapse.

CEO Finance Academy, which works directly with roofing company financials, described this clearly: it is entirely possible to run a $5 million roofing company with a 35 percent gross margin and a 4 percent net margin. The company looks profitable on paper. The owner is barely ahead. The culprit is almost always overhead that grew faster than revenue.

Here is the math that kills most roofing businesses:

Overhead goes from 20 percent of revenue to 32 percent as the company grows. On $5 million in revenue, that 12-point swing is $600,000 that evaporates before a dollar of net profit appears. The company hired more people, bought more trucks, expanded the office, and never noticed the overhead ratio shifting underneath them.

The contractors who survive are the ones who set a target overhead ratio, measure against it monthly, and treat overhead creep the same way they treat a slow leak: as an emergency.

The Overhead Most Roofers Never Fully Account For

Ask a roofing contractor what their overhead is, and most will name a few things. Insurance. Truck payments. Maybe a shop. What they rarely name is the full picture.

Build-Folio's 2026 contractor overhead guide lays out the categories that eat roofing companies alive:

Insurance is typically the largest overhead category for roofers, and it is not close. General liability insurance for a roofing contractor runs an average of $267 per month, or $3,200 per year for a small operation. Workers’ compensation runs an average of $254 per month, or $3,054 per year, through construction-specific carriers. Commercial auto adds another $173 per month, or $2,075 per year.

That's roughly $8,300 per year in insurance before a single nail goes in. For a mid-size roofing company with multiple crews, total insurance costs commonly run $50,000 to $150,000 per year or more.

Workers’ comp deserves its own paragraph because it is routinely underestimated. Contractors Liability reports the national average workers’ comp rate for roofing is approximately 33 percent of payroll. In California, roofing class codes run $24 to $80 per $100 of payroll, depending on the carrier and loss history. A roofer paying a crew member $27 per hour, who has not accounted for a 33 percent workers’ comp rate on top of that wage, is already losing money before they price the job.

Vehicles are another number that surprises people. A work truck costs $3,000 to $5,000 per vehicle annually in payments, fuel, maintenance, and insurance, according to Build-Folio's analysis. A company running four trucks is looking at $12,000 to $20,000 per year just to keep those vehicles on the road, before a single job is booked.

The invisible overhead is owner time. Hours spent estimating, managing jobs, responding to calls, handling billing disputes, and chasing insurance supplements are all overhead. Most roofing owners do not track or value this time, which means it does not get priced into their work. A contractor who spends 20 hours per week on admin at $75 per hour of opportunity cost is absorbing $78,000 per year in unpriced overhead.

The Markup Versus Margin Math Error That Bleeds Contractors Out

One of the most common and costly mistakes in roofing estimating is confusing markup and margin. They are not the same thing, and the difference is significant.

ProLine Roofing CRM explains the distinction clearly: if a job costs $8,000 and you want a 20 percent profit margin, adding 20 percent to your cost ($1,600) does not get you there. You're actually operating at a 16.7 percent margin. To achieve a true 20 percent margin, you need to mark up your costs by 25 percent.

The formula:

  • Profit margin = (Selling Price minus Cost) divided by Selling Price

  • Markup = (Selling Price minus Cost) divided by Cost

A contractor adding 20 percent to costs is earning a 16.7 percent margin. If they want a 30 percent margin, they need a 43 percent markup. Almost no one doing quick mental math on a job gets this right consistently.

FieldCamp's 2025 pricing guide cites the average roofing contractor operating at just 15 percent profit margins against an industry target of 20 to 40 percent. The gap is almost entirely explained by this math error, applied across hundreds of jobs per year.

What Shingles Actually Cost Right Now (And Why Your Old Numbers Are Wrong)

Material pricing is where bids go silent. Roofing contractors who built their pricing on numbers from two or three years ago are quoting jobs at a loss without realizing it.

Roof Maxx reported in late 2025 that all major shingle manufacturers implemented price increases of 6 to 10 percent in early 2025. This follows years of compounding increases. Architectural asphalt shingles that ran about $70 per square several years ago now run $110 or more, a jump of over 50 percent in roughly seven years.

To put that in real numbers: a 30-square residential re-roof that used to carry $2,100 in shingle material cost now carries $3,300 or more, just for the shingles. That $1,200 difference does not disappear if you do not price it. It comes out of your margin.

The NRCA confirmed in late 2025 that construction material prices continued climbing across the industry, with the long-term trend remaining upward even in years where increases moderate. Some contractors locked in supplier pricing and avoided planned increases through negotiations, but that requires active supplier relationships and planning, not reactive estimating.

The practical implication: material pricing in any estimate older than 60 to 90 days should be considered suspect. Contractors running price lists that are six months or a year old are systematically underpricing every job they send.

The Labor Cost Calculation Most Roofers Get Wrong

A $30 per hour wage is not a $30 per hour cost. Not even close.

Home Hero Roofing's analysis of hourly roofing billing rates found that roofers charge homeowners 2 to 3 times the hourly wage they pay their employees once all overhead is factored in. An Illinois roofing contractor paying employees $27.59 per hour bills homeowners $84.83 per hour on average once labor taxes, workers’ comp, insurance, fuel, equipment depreciation, and business overhead are included.

What goes into converting a wage to a true labor cost:

  1. Payroll taxes: FICA, FUTA, SUTA add roughly 7.65 percent to the base wage at minimum

  2. Workers’ compensation: 33 percent of payroll on the national average for roofers

  3. General liability allocation: Spread across labor hours worked

  4. Benefits: Even minimal benefits add cost

  5. Non-billable time: Drive time, setup, cleanup, weather delays, safety training

FieldCamp's formula calculates true labor cost as: hourly wage plus burden (taxes plus insurance) divided by an efficiency factor. Labor typically represents 30 to 40 percent of total job cost. A contractor who underestimates labor by 15 percent on every estimate is systematically losing money on the largest cost component of their business.

The Cash Flow Trap That Looks Like a Revenue Problem

A roofing company can be profitable on paper and still run out of cash. This is not a rare edge case. It is one of the primary ways that roofing businesses that appear to be succeeding actually fail.

According to data cited by Truss Payments, 82 percent of contractors wait more than 30 days for payment after completing work. Many wait 45 to 60 days. During that window, the contractor has already paid for materials, paid labor, covered fuel and overhead, and is now floating the entire job cost with no incoming cash.

CEO Finance Academy quantifies what this actually costs: going from a 45-day average collection time to 30 days on a $5 million revenue business frees up approximately $200,000 in working capital. That $200,000 is currently sitting in outstanding invoices, unavailable to pay crew, buy materials for the next job, or cover overhead.

The billing mistakes that create this problem are predictable:

No deposit requirement: Roofing jobs should carry a deposit that covers materials at a minimum, typically 25 to 33 percent. Contractors who start jobs with no money in hand are financing their clients' projects.

Single invoice at completion: Multi-week jobs billed as a lump sum at the end extend the cash gap to its maximum. Milestone billing, even in two or three payments, significantly tightens the cash cycle.

Vague payment terms: "Due upon completion" means different things to different people. A specific due date, late fee policy, and accepted payment methods stated in writing before work begins removes the ambiguity that enables slow payment.

No follow-up system: A $500 overdue invoice might be easy to forget. A $15,000 overdue invoice gets forgotten just as easily without a structured follow-up process. Most small roofing operations have no such process.

The Overhead Absorption Problem Nobody Talks About

When business is slow, roofing contractors face a specific pricing trap. The temptation to drop prices to keep crews working is real and understandable. But the math of what it actually does to the business is rarely walked through clearly.

Roofing Contractor magazine's financial analysis illustrates this directly: a company completing $100,000 per month with 70 percent direct costs, 25 percent overhead, and 5 percent profit makes $5,000 per month in profit. If they instead complete $120,000 that month at the same cost ratios, profit more than doubles to $11,000, because overhead is largely fixed and does not scale with additional revenue.

The reverse is also true. A company that drops prices to win slow-season work and completes $80,000 instead of $100,000 may find that overhead consumes all profit and more. The overhead is still there. The revenue to cover it is not.

This is why margin per job matters more than job volume, and why aggressive discounting to stay busy can accelerate failure rather than prevent it.

The Insurance Supplement Gap

For roofing companies that do significant insurance restoration work, there is a specific and largely invisible revenue leak: unsupplemented insurance claims.

Insurance adjusters use Xactimate estimating software to set scope and pricing on claims. Roofing Insights has documented this extensively: Xactimate does not automatically include overhead and profit for roofing work. Insurance companies routinely allow 10 percent overhead and 10 percent profit on general claims, but dispute these same amounts on roofing-specific claims, arguing that roofing is a single trade.

The line items that most commonly get left off initial insurance estimates include:

  • Overhead and profit (O&P), typically 10/10

  • Starter strips and drip edge

  • Proper ridge cap shingle quantities

  • Steep slope and story height charges

  • Satellite dish relocation

  • Code upgrade requirements

  • Permit and inspection fees

A contractor who accepts the initial adjuster estimate without supplementing is leaving money on every insurance job they complete. Over a year of insurance work, this can represent tens of thousands of dollars in uncollected revenue.

What the Profitable 10 Percent Actually Do Differently

The contractors who consistently operate at 8 to 12 percent net profit are not necessarily working harder or closing more jobs. According to the CEO Finance Academy's analysis of the contractors they advise, the separation happens in four specific areas:

Job-level costing, not just monthly P&L: A monthly profit and loss statement tells you how the company did. Job costing tells you which specific work is making money. Residential service and repair work almost always carries higher margins than commercial new construction. Contractors who shift 20 percent of revenue from commercial new construction toward residential re-roofing have seen net profit increase by 3 to 4 percentage points without adding a single dollar of revenue.

Current material pricing in every estimate: Not last quarter's pricing. Not last year's pricing. Suppliers send price increase notices. Most contractors acknowledge them and then continue using their old price list. The contractors who win on margin update pricing when suppliers do.

Overhead ratios tracked monthly, not annually: Setting a target overhead ratio and checking against it monthly is the difference between catching overhead creep early and discovering it at year end when it's already done the damage.

A 13-week cash flow forecast: Most roofing owners react to cash problems after they happen. A rolling 13-week forecast maps expected revenue and expenses 90 days out, giving enough lead time to either accelerate collection on outstanding invoices, delay non-essential purchases, or arrange short-term credit before the crunch hits rather than during it.

The Common Thread

Read through the problems above, and you will notice they share a structure. Each one involves a number that the contractor does not know, applied consistently across every job they bid, every employee they pay, every invoice they send.

The workers comp rate they're not pricing for. The markup percentage isn't achieving their target margin. The material price list is eight months out of date. The overhead ratio has drifted from 22 percent to 29 percent without anyone noticing. The cash gap that's been quietly growing for three years.

None of these are complicated problems once the numbers are visible. The contractors who make it past five years are not necessarily better roofers. They are the ones who found a way to make the numbers visible before the business told them in the worst possible way.

Booked Solid Copy builds custom estimation and business automation tools for trade contractors, with one-time fixed pricing and no monthly fees. Learn more at bookedsolidcopy.com.

Sources:

Next
Next

Contractor Profit Margins by Trade: The Real Numbers for 2025