Roofing business owner reviewing job costing and margin numbers

How to Price Roofing Jobs for Profit

August 13, 2026

You are busy. Crews are running, the phone rings, revenue looks respectable — and at the end of the year there is almost nothing left. That is not a sales problem or a work-ethic problem. It is almost always a pricing problem, and it is the one thing most roofing owners never sit down and fix. Here is how to price roofing jobs for profit instead of pricing them to win.

How do you price roofing jobs for profit?

You price roofing jobs for profit by building the price up from your real costs rather than down from what a competitor charges. Add your direct job costs — materials, labor, subs, dump fees, permits — then add the share of overhead that job has to carry, then add the profit you intend to keep. If the resulting number loses you the job, the problem is your cost structure or your sales process, not your price.

Key Takeaways

  • Markup and margin are not the same number, and confusing them is the most expensive arithmetic error in roofing.
  • Overhead does not pay for itself. Every job must carry a share of it or the company loses money while looking busy.
  • Job costing after the fact is what makes pricing accurate. Estimates without job costing are guesses that never improve.
  • Discounting to win work destroys profit far faster than losing the occasional job does.
  • Being the cheapest roofer is a strategy that only works for whoever has the lowest costs — and that is almost never you.

Markup is not margin

This single confusion quietly bankrupts roofing companies.

If a job costs you $10,000 and you add 20% markup, you charge $12,000. Your gross margin on that job is not 20% — it is $2,000 of $12,000, which is 16.7%. Owners who believe they are running 20% margins on 20% markup are overstating their profitability on every single job, all year.

To actually achieve a target gross margin, divide rather than multiply. For a 35% gross margin on a $10,000 job: $10,000 ÷ (1 − 0.35) = $15,385. Not $13,500, which is what adding 35% would have given you.

Run that gap across a year of jobs and it is the difference between a profitable company and a busy one.

Build the price up, in this order

| Layer | What goes in it | Why it is there |
|---|---|---|
| Direct job cost | Materials, labor, subcontractors, dump fees, permits, equipment | What the job physically costs you |
| Job-specific extras | Steep pitch, multiple stories, difficult access, tear-off layers | Real cost differences the base price hides |
| Overhead allocation | Share of rent, trucks, insurance, office staff, software, marketing | Costs that exist whether or not you sell this job |
| Profit | What the business keeps | The reason the business exists |
| Price | | What the customer pays |

Most underpricing happens in the third row. Owners estimate materials and labor carefully, then forget that the truck payment, the general liability policy, the office manager and the lead cost all have to come out of the same jobs. Divide your annual overhead by the revenue you realistically expect, and you get the percentage every job must carry before a dollar of profit exists.

Job costing is what makes estimating accurate

An estimate is a prediction. Job costing is the scoreboard that tells you whether the prediction was right.

After a job closes, compare estimated versus actual on materials, labor hours and subs. Do it on every job for one quarter and patterns appear fast — a crew that consistently runs over on tear-offs, a supplier whose pricing moved, a job type you systematically underbid.

Without this loop, you are estimating the same way in year eight as you did in year one. With it, your pricing gets measurably more accurate every quarter, and you find out which work is actually worth chasing. Many roofing companies discover that a job type they thought was their bread and butter has been running near break-even for years.

The SBA's guidance on managing business finances covers the basic bookkeeping discipline this depends on.

The discount math nobody runs

Say you run a 30% gross margin. A salesperson knocks 10% off the price to close a deal.

That 10% does not come out of the price evenly — it comes almost entirely out of your profit, because the costs do not move. A third of your gross margin on that job just disappeared for a single concession. To earn back the same gross profit dollars, you now need to sell substantially more work at full price.

This is why "just take a little off" is the most expensive sentence in a roofing company, and why the fix is a sales process that sells value instead of a price list that invites negotiation. If your reps only have price to talk about, they will use it.

Charge for the things you actually do

Roofing companies routinely give away work they have already paid for: the second trip to a difficult property, the extra layer of tear-off nobody accounted for, the steep-pitch labor premium, the decking replacement, the disposal on an oversized job.

Each of those has a real cost. Putting them on the estimate as named line items does two things at once — it protects your margin, and it makes the price legible to the homeowner instead of looking like an arbitrary number. Homeowners rarely object to a cost they can see the reason for. They object to a total they cannot account for.

Why the cheapest roofer loses

There is always someone cheaper. There always will be, because there is always someone who has not yet realized they are underpricing.

Competing on price puts you in a race against companies with lower standards, thinner warranties, and — usually — a shorter remaining lifespan. When they go out of business, their warranties go with them, which is exactly why homeowners eventually stop buying on price alone.

The durable position is being the company that is clearly worth more: real crews, real warranty, real communication, and a price that funds all three. That is a positioning problem, and it is solvable. Underpricing is not solvable by working harder.

Get the rest of the system

*Roofing Secrets Black Book* is Justin Ledford's playbook for building a roofing company that is profitable and does not depend on you — the 4-step formula behind an eight-figure roofing business run while spending six months a year in Costa Rica. Clients using the system have gone on to over $100M in sales.

It is $7.95, carries a 30-day guarantee, and the next 9 buyers also get the audiobook.

Get the Roofing Secrets Black Book — or grab it on Amazon.

Justin Ledford

Justin Ledford

CEO | FOUNDER | COACH | AUTHOR | PODCASTER | FCU BUSINESS LEADER

Back to Blog