Roofing Business Profit Margin: IRS Data, Costs & Break-Even

Quick answer: IRS tax-year 2023 data shows a 15.7% net margin for sole proprietors in specialty trade contracting (NAICS 238), including roofing and other trades. It is not a roofer-specific margin, and Schedule C net income is before owner pay. A roofing contractor’s margin turns on material takeoff, crew or subcontract cost, disposal, weather delays, change orders, and warranty work.

Read roofing margins in the right order

Gross profit on a roof is its collected contract price less materials, paid crew or subcontract labor, disposal, and other direct job costs. Divide by collected revenue for gross margin. Net margin also deducts estimating, vehicles, insurance, office staff, marketing, and equipment costs. A markup applied to shingles or crew cost is not the margin on the full contract. The markup versus margin calculator makes the conversion explicit.

Schedule C profit for an owner-operated roofing business includes pay for the owner’s own estimating, supervision, and field work. To compare with a staffed company, assign a cost to those duties before assessing residual profit. The IRS table below covers all NAICS 238 specialty trades. It cannot establish either a healthy roofing target or an owner’s take-home amount.

IRS Statistics of Income, sole proprietorships (Schedule C), tax year 2023 — Construction: Specialty trade contractors (NAICS 238)
MetricConstruction: Specialty trade contractors (NAICS 238)
Net margin15.7% VERIFIED DATA
Average receipts per return$102,220 VERIFIED DATA
Average net income per return$16,054 VERIFIED DATA
Materials & supplies12.1% VERIFIED DATA
Contract labor12.9% VERIFIED DATA
Cost of labor + salaries and wages11.0% VERIFIED DATA
Car and truck7.7% VERIFIED DATA
Supplies6.5% VERIFIED DATA
Depreciation4.3% VERIFIED DATA
Insurance1.8% VERIFIED DATA
Advertising0.6% VERIFIED DATA

Schedule C net income is before any owner salary: sole proprietors do not deduct pay to themselves, so net margin here includes the owner's compensation for their own labor.

Sector-level figures: the table does not split electricians, plumbers, roofers etc.; NAICS 238 covers all specialty trades, NAICS 561 covers landscaping, pest control and building services together with unrelated admin services (staffing, security, travel).

Roofing costs that deserve job-level tracking

A takeoff error on squares, underlayment, flashing, or edge metal changes the job’s direct cost before work begins. Tear-off can expose damaged decking or unusual disposal needs. Document allowances and obtain authorized change orders rather than silently absorbing the extra work. Crew productivity varies with roof pitch, access, weather, and material handling. A subcontract quote should state scope, insurance expectations, and responsibility for corrections; it is still a direct job cost.

The source data lists a BLS roofer median wage of $26.65 per hour (official occupational wage). It does not include employer burden or unbillable time. BLS ECEC construction total compensation is $51.96 per hour (official broad-industry measure), which is not a roofing wage quote. Track actual crew cost, fall-protection and equipment expense, vehicles, insurance, and post-completion leak visits. Rain delays can push payroll or subcontract scheduling into another week while fixed costs continue. See the startup cost and license pages for related planning.

A roof contractor’s example month

Example inputs, not a benchmark: Take $100,000 of collected project revenue, $35,000 in roofing materials and disposal, $30,000 in paid crew and subcontract cost, and $25,000 in operating expense. Gross profit is $100,000 − $35,000 − $30,000 = $35,000; gross margin is 35%. Net profit is $35,000 − $25,000 = $10,000; net margin is $10,000 ÷ $100,000 = 10%. If the owner personally estimated and supervised jobs without payroll, that $10,000 includes payment for those hours. Substitute your completed-job ledger in the calculator.

Profit Margin Calculator

Profit— CALCULATED
Margin Percent— CALCULATED

Show formula

Results use the entered costs, revenue, hours, and percentages shown above. Percentages are divided by 100 before calculation.

Count jobs, then check crew capacity

Subtract project-variable material, crew, and disposal cost from an average collected roof price to find contribution. Divide fixed monthly cost by that contribution and round up to the next full roof. The break-even calculator handles this threshold; the jobs-needed calculator handles a revenue goal. Test a repair-only month separately from a replacement-heavy month and compare the result with crews and workable weather days. Use the roofing labor-rate guide when setting crew assumptions.

Break-Even Calculator

Jobs Per Month— CALCULATED

Show formula

Jobs = fixed monthly cost / (average ticket × gross margin).


Frequently asked questions

What is a healthy roofing profit margin?

The IRS does not provide a roofing-only figure here. Its 15.7% NAICS 238 sole-proprietor margin includes owner labor; compare your own adjusted net results across completed roofs.

Is a roofing business profitable?

It can be if contracts cover materials, crews, disposal, weather disruption, corrections, and overhead. Profit must be measured from collected work, not the bid total.

How much does a roofing business owner make?

This sector-level Schedule C table cannot identify roofer pay. Separate compensation for the owner's estimating and field work from residual business profit.

How should hidden decking affect profit?

State the inspection limit and change-order method in the contract. Record authorized decking replacement as additional revenue and direct cost.

Does subcontracting guarantee a better margin?

No. Compare the full subcontract scope and correction risk against employee crew cost, supervision, and schedule capacity.

Continue with the roofing business hub.

Official sources



Last updated: October 2, 2026