Most small roofing companies don't lose money because they're bad roofers. They lose it because every bid is priced a little differently, from memory, late at night. A simple, written formula fixes that: the same inputs every time, so every roof covers your costs and leaves the profit you meant to make.
Here's a straightforward way to build one. Your numbers will differ by market, but the structure works anywhere.
1. Start with measured squares and a waste factor
A roofing square is 100 square feet of roof surface. Start from the measured area, whether from your own take-off or a measurement report, and convert it to squares.
Then add waste for cuts, starter and ridge. Simple gable roofs need less; roofs cut up with hips, valleys and dormers need more. Many roofers use around 10% on simple roofs and 15% or more on complex ones. Whatever you use, use it every time, and check it against what you actually order on a few jobs.
2. Price the materials
List everything that goes on the roof, not just the shingles:
- Shingles (by the square, after waste)
- Underlayment and ice and water shield
- Starter strip and ridge cap
- Drip edge and flashing
- Vents, pipe boots and nails
Keep a current price per square for each shingle line you install, and update it when your supplier's prices change. A bid priced on last year's shingle cost can wipe out the margin on its own.
3. Price the labor, with pitch and height
Labor is usually priced per square, then adjusted for what makes a roof slower and riskier:
- Steep pitch: a surcharge per square once the roof gets steep enough to need extra safety setup and slow the crew down
- Height: extra for two- and three-story homes
- Complexity: lots of valleys, dormers or skylights take longer
If you pay crews by the square, your labor cost is easy to see. If you pay by the hour or the day, track how many squares a crew actually installs per day so you can turn that into a per-square number.
4. Don't forget tear-off, disposal and permits
These are the costs that get forgotten on a rushed bid:
- Tear-off, priced per square for each existing layer
- Disposal: dumpster or dump fees, which add up fast on heavy multi-layer roofs
- Permits, where your city or county requires them
- Decking replacement, usually as a price per sheet so the homeowner knows the cost if you find rot
Tip: Put the decking price per sheet right on the bid. When you find rotted decking after tear-off, the homeowner has already agreed to the price, and there's no awkward phone call.
5. Add overhead and profit the right way
Overhead is everything that isn't on the roof: your truck, insurance, phone, software, marketing, office time. Work out roughly what that costs you per job, or as a percentage of sales, and include it.
Then add profit, and watch the most common pricing mistake in the trades: confusing markup with margin.
- Markup is added on top of cost. $10,000 of cost with a 30% markup is a $13,000 price.
- Margin is profit as a share of the price. That $13,000 job leaves $3,000, which is only a 23% margin.
- To hit a real 30% margin on $10,000 of cost, divide instead: $10,000 ÷ (1 − 0.30) = about $14,286.
If you've been adding 30% and thinking you make 30%, you've been making closer to 23%. Over a year of jobs, that difference is real money.
6. Set a minimum job charge
Small repairs still mean loading the truck, driving out and setting up. A minimum job charge makes sure a quick leak repair isn't a loss. Many roofers set it at whatever a half day of a crew plus travel costs them.
7. Write it down and use it every time
The formula only works if it's the same on every bid. Put your rates in one place: price per square for each service and shingle, waste percentage, pitch and height surcharges, tear-off per layer, disposal, permit and minimum job. Then every estimate is consistent, and you can raise a rate once instead of remembering it on every bid.
That's exactly how Ridgewise prices bids: you enter your rates once, then squares, pitch, layers and stories for each roof, and the total is worked out from your numbers. AI writes the scope of work, but it never sets a price.