Roofing Business 9 min read

Roofing Job Costing: How to Know Your Real Margin

June 17, 2026HailMate Team· Storm Restoration Experts

Plenty of storm restoration companies do a lot of revenue and have no idea which jobs actually made money. The claim pays what it pays, the crew gets paid, a check clears, and everyone moves on to the next roof. But "the claim paid" and "we made margin" are two completely different statements — and if you can't tell them apart job by job, you're flying blind.

Job costing in insurance restoration is trickier than retail because what the claim pays isn't one number. It's a stack of pieces — ACV, depreciation, supplements, the deductible — and your true cost is its own stack. This post walks through both sides so you can figure out your real margin on every job, not just guess at it.

What the claim actually pays

Start with the revenue side, because it confuses people. When a homeowner has a covered claim, the carrier doesn't hand over the full roof price up front. It comes in stages.

ACV (actual cash value) is the first check. It's the replacement cost of the roof minus depreciation — what the carrier figures the old roof was actually worth given its age and wear. This is the money you usually see before the work is done.

Depreciation is the rest, held back. Once you complete the job and the carrier confirms it, they release the recoverable depreciation. On a recoverable-depreciation policy, you eventually collect close to full replacement cost. On an actual-cash-value policy, you don't — and that changes your margin, so you need to know which kind you're dealing with before you ever quote labor.

The deductible is the homeowner's piece. The carrier subtracts it from what they pay, and the homeowner is legally on the hook for it. That's real revenue you collect from the homeowner, not the carrier — and uncollected deductibles quietly eat margin. If you want the full breakdown of how the deductible fits into the claim total, the deductible glossary entry lays it out.

Supplements are the part that often makes or breaks the job. The adjuster's first estimate is almost never complete — they write fast and miss line items. When you file a supplement and the carrier agrees, they revise the scope upward, and that's additional revenue on the same roof.

Add it up and your total claim revenue is: ACV plus recoverable depreciation plus the deductible plus any approved supplements. Miss any one of those in your tracking and your margin math is wrong.

Why supplements and O&P swing the margin so hard

Here's the thing about supplements: they're close to pure margin. Your fixed costs — mobilizing the crew, the dumpster, the permit, the overhead of running the job — are largely the same whether the claim pays the original scope or the supplemented scope. So when a supplement adds revenue, most of it drops to the bottom line.

That's why two companies can build the identical roof and walk away with very different margins. The one that documents ridge cap, drip edge, starter strip, steep and high charges, ice-and-water shield, and code upgrades — and files clean supplements for them — collects money the policy already owed. The one that just builds to the adjuster's first scope leaves that money on the table. If supplements are new territory for you, the breakdown of common supplement line items is a good place to start.

Overhead and profit (O&P) is the other big swing. On complex jobs that involve multiple trades or significant coordination, the claim often qualifies for O&P — typically an extra 10% overhead and 10% profit added to the scope. Carriers don't always include it on the first estimate, which makes it a major supplement opportunity. On a large claim, O&P alone can be a meaningful chunk of your margin. The overhead and profit glossary entry explains when a job qualifies.

The takeaway: your margin on a storm job isn't set when you sign the contract. It's set by how well you work the scope. A disciplined supplement process is one of the highest-leverage things you can do for profitability, which is exactly why it sits at the center of the HailMate platform.

Your true cost side

Now the part most companies underestimate. To know real margin, you have to count every cost — not just materials and the crew.

Materials. Shingles, underlayment, ice-and-water, the soft metals, fasteners, ventilation, flashing. Price these to the actual job, not a rough per-square average, because material prices move and a stale estimate hides margin erosion. If prices jumped between the adjuster's scope and your build, that's often a supplement — but only if you caught it.

Labor. Whether you pay your crews by the square or as a percentage, this is your biggest variable cost. Track it per job, including any tear-off complications, steep or multi-story charges, and re-work. A job that needed a second trip because of a punch-list item cost you more labor than the one that didn't.

Job-specific costs. Dumpster, permit, equipment rental, materials delivery, magnetic nail sweep, any subcontracted work. These are easy to forget and they add up.

Overhead. This is the one companies skip, and skipping it is how you convince yourself a job was profitable when it wasn't. Your office staff, software, trucks, fuel, insurance, advertising, and sales commissions all have to be paid out of your jobs. Allocate a share of overhead to each job — even a rough percentage of revenue — so the margin number you're looking at is your real margin, not a fantasy that ignores the cost of running the business.

Putting both sides together

Real gross margin on a job is dead simple once you have both stacks:

RevenueCost
ACV checkMaterials
Recoverable depreciationLabor
Deductible collectedDumpster / permit / equipment
Approved supplementsSubcontracted work
O&P (if applicable)Allocated overhead

Total revenue minus total cost is your gross profit. Divide by revenue and you've got your margin percentage. Do this on every job and patterns show up fast: maybe steep roofs eat your margin, maybe one crew's labor cost runs higher, maybe the jobs where you skipped supplements are your worst performers.

Two collection items deserve their own watch list because they're revenue you earned but haven't banked: uncollected depreciation and uncollected deductibles. A job isn't truly profitable until that money is in. Recoverable depreciation you never went back to collect is margin you walked away from, and a deductible the homeowner never paid is a hole in the job. Track both per job until they hit zero.

Stop doing this in spreadsheets

You can build all of this in a spreadsheet, and a lot of companies do. The problem is that spreadsheets don't connect to the rest of your operation. The supplement that got approved last week doesn't automatically update the job's revenue. The deductible nobody collected doesn't flag itself. The depreciation check sitting in limbo doesn't nudge anyone. So the margin number is always a few weeks stale and a few entries wrong.

The fix is tracking job costing inside the same system that already holds the claim, the supplements, the photos, and the invoicing — so revenue and cost update as the job moves instead of getting re-keyed by hand. This is part of running a tight shop overall; if your back office is the weak point, start with how to run an organized roofing business and make sure your billing is clean with a proper roofing invoice template so collected revenue actually matches what the job earned.

Know your number on every job

Job costing in storm restoration isn't optional bookkeeping — it's how you find out which work to chase more of and which to price differently or walk away from. Count the full revenue stack, count the full cost stack including overhead, watch your uncollected depreciation and deductibles, and work your supplements like the margin they are. Do that consistently and you stop guessing which jobs made money. You'll know.

Start your 14-day free trial →

Run your next storm with HailMate

Stop managing jobs with spreadsheets. Get every tool your crew needs in one app.

14-day free trial · no credit card · $60/user