Questions

How do you price a roofing job so it still makes money?

Build the cost line by line from your own history, then add the margin your overhead requires. Use a per-square figure as a sanity check at the end, never as the method. The losses live in the lines that got left off, not in the rate on the lines that are there, because an incomplete estimate looks exactly like a correct one until the invoices land.

Written by JD Davenport, who still sells for a living. Updated 4 November 2026.

Roofing in the question because that is where the examples come from. The arithmetic is the same for any business that quotes the work, does the work and sends an invoice: landscaping, fencing, decking, power washing, painting, HVAC, plumbing, electrical, remodeling.

Pricing is two separate problems and most people only solve the first. What does this job cost, and what do I need to add on top. Getting the second right cannot rescue a wrong answer to the first.

Why a per-square number is a trap

A single dollars-per-square figure bundles material, labor, disposal, overhead and margin into one number and then applies it to jobs that differ in all five.

Steep is not walkable. Two story is not one story. Three layers is not one. A tight alley is not a wide driveway. A job with eighteen penetrations is not a job with four. Per-square pricing prices all of those the same and then you wonder why some jobs come back thin.

Use a per-square figure as a sanity check at the end. Never as the method.

Build the cost, line by line

Material by quantity, from the measurement, at your actual current supplier pricing rather than last season's.

Labor at your real installed cost. Not the crew's number. Your cost, including what you pay around it.

Then the lines that get left off, which is where the losses live. Disposal. Permits. Steep and height charges. Plywood you may need and cannot see yet. A second trip. Rental. Delivery and stocking. Protection and cleanup. Any callback allowance.

Then margin on the total, set by what your overhead requires, not by a number you heard.

The failure that actually costs you

A rate priced too low, you will notice, because the number on the page looks wrong next to the invoice.

A line that was never on the page at all, you will not notice, because there is nothing to check. The estimate was not incorrect. It was incomplete, and an incomplete estimate looks exactly like a correct one right up until the invoices land.

That is a structural problem and it has a structural fix. The fix is not more care at the kitchen table at seven in the evening. It is that the estimate cannot be finished with a line unanswered. A line marked not applicable is a decision. A line that is absent is an accident, and once the job is sold the two are indistinguishable.

If your estimate is a blank page you fill in, you will keep omitting things under pressure in somebody's driveway. If it is a list you have to answer, the omission has no route in.

Price from history, not from theory

The most useful pricing document in a roofing business is not a price book. It is the gap between what you quoted and what the job actually cost, on the last fifty jobs, line by line.

That tells you which lines run short, which run long and which you keep forgetting. A price book tells you what you believed last year.

If the same line is short on six of ten jobs, that is not bad luck. That is an estimating defect that has been billing you quietly for however long it has been there.

Two things to check before you hand the price over

Does the job clear the margin you actually need, calculated from your overhead rather than from habit. And is every line on the page answered, including the ones that usually come back as zero.

Those two questions catch most of what goes wrong, and both of them happen before the customer ever sees a number.

The estimate that cannot be submitted with a line unanswered is The Appointment Standard. The quoted-against-actual comparison that tells you which lines keep running short is The Job Cost Standard. More answers on the questions page.