Most roofing companies don't have a pricing problem. They have a math problem.
The bid goes out based on gut feel, last year's numbers, and what the guy down the street is charging. The crew stays busy. The bank account doesn't grow. Sound familiar? You're not undercharging because you're generous. You're undercharging because you don't know your true cost per square.
Here's how to fix it.
Start with your true labor cost — not the hourly wage
If your roofer makes $25 an hour, your labor cost isn't $25 an hour. It's the wage plus workers' comp, payroll taxes, drive time, and the half-day you lose to weather every other week. For most shops, true labor burden lands 30–40% above the hourly wage. A $25/hr roofer really costs you $33–35 for every hour he's on your payroll.
Multiply that by the crew-hours a typical job takes — including setup, tear-off, and cleanup — and you have your real labor number. If you've been using the straight wage, you've been underpricing every job by thousands.
Allocate overhead per job, not per year
Insurance, trucks, office, phones, software — add it all up for the year, then divide by the number of jobs you actually complete. That's your overhead per job. A shop doing 80 roofs a year with $160,000 in overhead needs $2,000 of overhead in every single bid. Miss that and your "profitable" jobs are quietly paying your bills instead of building your business.
Price materials with a waste factor — and reprice them
Shingles, underlayment, flashing, drip edge, vents, nails, dumpsters. Price them at today's cost, not the cost from the supplier quote you got eight months ago. And add a waste factor: 10% on a simple gable, 15% on a cut-up roof with valleys and dormers. The offcuts in the dumpster were bought with real money.
Add a callback reserve
Warranty callbacks aren't free. One crew-day burned on a leak call wipes out the margin on a good job. Build 2–3% of the job price in as a callback reserve. If you never use it, it's profit. If you need it, you're covered.
The formula
(True labor + Materials with waste + Overhead per job + Callback reserve) × your profit margin = your bid.
A 1,800 sq ft roof might look like this: $4,200 true labor, $5,800 materials with waste, $2,000 overhead, $360 callback reserve = $12,360 cost. At a 20% margin, the bid is $14,832. If your gut told you $11,500, your gut was donating $3,300 to the homeowner.
Mistakes that kill margins
- Matching the low bidder. Somebody is always cheaper. Let them be — they're usually going broke.
- Forgetting drive time and setup. The crew doesn't teleport to the job.
- Pricing from last year's material costs. Suppliers don't care what you quoted.
- No annual repricing. If you haven't raised prices in two years, inflation gave you a pay cut.
When to walk away
If the honest math says the job needs $15,000 and the homeowner's budget is $11,000, walk away. A job that loses money is worse than no job — it burns a crew-week you could have spent on work that pays.
Pricing isn't about being the cheapest. It's about knowing your number and having the backbone to charge it.
Want someone to run the real math on your jobs with you? Talk with Us — free 15-minute call, no pitch.