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.
| Metric | Construction: Specialty trade contractors (NAICS 238) |
|---|---|
| Net margin | 15.7% VERIFIED DATA |
| Average receipts per return | $102,220 VERIFIED DATA |
| Average net income per return | $16,054 VERIFIED DATA |
| Materials & supplies | 12.1% VERIFIED DATA |
| Contract labor | 12.9% VERIFIED DATA |
| Cost of labor + salaries and wages | 11.0% VERIFIED DATA |
| Car and truck | 7.7% VERIFIED DATA |
| Supplies | 6.5% VERIFIED DATA |
| Depreciation | 4.3% VERIFIED DATA |
| Insurance | 1.8% VERIFIED DATA |
| Advertising | 0.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.
Jobs = fixed monthly cost / (average ticket × gross 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. 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. This sector-level Schedule C table cannot identify roofer pay. Separate compensation for the owner's estimating and field work from residual business profit. State the inspection limit and change-order method in the contract. Record authorized decking replacement as additional revenue and direct cost. No. Compare the full subcontract scope and correction risk against employee crew cost, supervision, and schedule capacity.Break-Even Calculator
Jobs Per Month — CALCULATED Show formula
Frequently asked questions
What is a healthy roofing profit margin?
Is a roofing business profitable?
How much does a roofing business owner make?
How should hidden decking affect profit?
Does subcontracting guarantee a better margin?
Continue with the roofing business hub.
Official sources
Last updated: October 2, 2026