Roofing Job Costing: How to Track Profit on Every Roof

A 28-square reroof sold at $24,000 with a 35% margin built into the estimate should leave $8,400 in gross profit, which works out to $300 per square. From keeping the books for home service and construction contractors, we've found that most roofing owners can't say whether that job came in at 35% or 28%, because the shingles went on a supplier account, the crew's hours landed in one payroll total, and the dumpster bill showed up a week after the final check cleared.

Job costing in roofing comes down to one habit, which is tagging every dollar spent on a roof to that roof at the time it's spent, so that when the job closes the estimate and the actual costs sit side by side. This post covers what to track, how roofing companies track material and labor costs per job, how to set it up in QuickBooks Online, and which numbers to read once the data is there. For the wider picture, see Roofing Bookkeeping: What to Track and Why, and for the benchmarks to measure your jobs against, see Roofing Profit Margins: What's Normal for a Roofing Company?

What roofing job costing tracks

Every roof needs its own job in your accounting system, and every cost on that roof lands in one of four buckets.

  • Materials, including shingles, underlayment, drip edge, ridge cap, flashing, vents, and fasteners

  • Crew labor at its burdened cost, meaning wages plus payroll taxes and workers' comp

  • Dumpster, permit, and equipment costs tied to that roof

  • Subcontractors, such as decking, gutter, or skylight crews

Revenue gets tagged the same way, including deposits, supplements, and change orders, so the job shows what was billed against what was spent. With all of that in place, a closed job shows its gross profit in dollars, as a percentage, and per square.

What estimate versus actual looks like

Take that $24,000 reroof. The estimate assumed $15,600 in direct costs and $8,400 in gross profit, and the list below shows how a job like that can close once the real costs are tagged.

  • Materials were estimated at $8,400 and came in at $9,150

  • Crew labor was estimated at $4,800 and came in at $5,500

  • Dumpster, permit, and equipment were estimated at $1,200 and came in at $1,450

  • Subcontractors were estimated at $1,200 and came in at $1,200

  • Gross profit was estimated at $8,400 and came in at $6,700

The job lost $1,700 against the estimate, and the margin fell from 35% to about 28%, or $239 per square against a planned $300. None of the lines looks alarming on its own. Material ran $750 over because the hips and valleys ate more shingles than the takeoff allowed, labor ran $700 over because tear-off took an extra half day, and a second dumpster pull added $250. Without job costing, this roof goes down as a good job, and the estimator bids the next steep, cut-up roof the same way.

How roofing companies track material costs per job

Material is the largest cost on most roofs and the easiest one to lose track of, because it's often bought on account and delivered straight to the site. Three practices keep it tied to the job.

Put a job name or number on every supplier order. The major roofing distributors will print it on the invoice when you give it to them at order time, so the bill arrives already labeled and gets entered against the right roof.

Tag card and cash purchases the same day. The extra box of coil nails or tube of sealant bought mid-job is small, but those purchases add up, and a receipt with no job on it ends up as a general supplies expense.

Run returns and stock through the job. A credit for returned bundles should reduce that job's material cost, and material pulled from your own stock should be moved onto the job at cost when it leaves the shop.

With those in place, waste becomes visible as the difference between the material you estimated and the material the job consumed. A clean job commonly runs 8% to 12% waste depending on how cut-up the roof is, while a messy one can run 18% to 25%, and tracking that number by estimator and crew lead shows where it's coming from.

Tracking crew labor by job

Labor needs the same treatment, and it starts with time tracked by job instead of by week. Crews often work two or three roofs in the same week, so a weekly timesheet shows what payroll cost without showing which roof the hours went to. A field time-tracking app, or a daily log the crew lead turns in, is enough to split the hours.

Those hours then need to be costed at the burdened rate. In Florida, workers' comp rates for roofing are among the highest in the country, and burdened labor commonly runs 30% to 50% above base wages, so a roofer earning $25 an hour costs closer to $32 to $38. Our Labor Burden Calculator works out the number from your own payroll. If you pay crews by the square or use subcontract crews, the approach is the same, and each crew invoice gets entered against the roof it covers.

Setting it up in QuickBooks Online

In QuickBooks Online, job costing runs through Projects, which is available on the Plus plan and higher. Create a project for each roof, named with the customer and address so it's easy to pick from a list, and then tag every invoice, bill, card charge, and timesheet to it. Insurance and retail jobs should post to separate income accounts so margin can be compared by type of work. When the job closes, the project's profitability report shows income, costs, and margin in one view, and the full walkthrough is in How to Set Up Job Costing in QuickBooks Online.

The setup itself is quick, and the routine is where job costing succeeds or fails, because tagging only works when it happens as the cost is incurred. After a storm, when crews are running several roofs a week, costs that weren't tagged at the time rarely get sorted out later.

The numbers to read once jobs are costed

Gross margin per square. Dividing a job's gross profit by its squares gives one number that compares a 20-square ranch to a 45-square two-story, and it shows quickly which roofs are worth chasing.

Estimate versus actual by bucket. A job that misses on material points to the takeoff or to waste on site, while a job that misses on labor points to production or to a bid that assumed too few crew days.

Margin by type of work. Insurance and retail jobs, and repairs and full replacements, carry different margins, and seeing them separately shows which side of the business is carrying the profit.

Margin by estimator and crew lead. Patterns across ten or twenty jobs show who bids tight and who runs clean, which is far more useful than judging anyone on a single roof.

Review each job when it closes, while the details are still fresh, and look at the roll-up by job type once a month.

When to bring in a specialist

Below about $500,000 in revenue, an owner can usually keep job costing going with a simple routine and an hour a week. Past $500,000, with multiple crews, supplier accounts, insurance supplements, and dozens of open jobs, the tagging and the review are more than one person can keep up with on top of running the company, and a bookkeeper who understands roofing is worth bringing in.

At Prophet Accounting, we work with roofing contractors and other home service trades across Port St. Lucie, the Treasure Coast, and nationwide. We set up job costing in QuickBooks and keep it current every month, so each roof shows its margin per job and per square. Schedule a consultation at prophetaccounting.com/contractors or give us a call at (772) 380-2871. For a quick read on monthly bookkeeping costs, our pricing calculator gives you a ballpark in about two minutes.

Next
Next

Roofing Profit Margins: What's Normal for a Roofing Company?