Roofing looks simple on paper: buy materials, put a crew on the roof, collect. In practice the money moves in strange ways. Insurance jobs pay in pieces over weeks or months, checks arrive made out to the homeowner and their mortgage company, crews are often subcontracted and paid by the square, and a good storm season can be followed by a very quiet winter.
General contractor bookkeeping advice covers part of this. Here is what is specific to roofing, and how to set up your books so you know what each job actually made and how much of the money in the bank is really yours.
Insurance jobs: track the claim, not just the invoice
On a typical insurance replacement, the carrier approves a scope and pays the actual cash value first, holding back recoverable depreciation until the work is done. After completion, you submit the final invoice and any paperwork the carrier requires, and the held-back amount is released. Supplements for items the original estimate missed, such as extra layers, decking, or code upgrades, are approved separately. The homeowner owes the deductible.
That means one job can involve four or five separate payments from two or three different payers. Set the job up with its full contract value, then track what has been received from the homeowner, what is still held by the carrier, and what is waiting on a supplement. Without that, held depreciation that never gets claimed quietly turns into lost revenue, and nobody notices because the job was marked paid when the first check cleared.
Checks made out jointly to the homeowner and a mortgage company often go through the lender's loss draft process, which can hold funds for weeks. Record those balances as receivables, not as income you have in hand. And record discounts honestly: in many states it is illegal for a contractor to waive or absorb a homeowner's deductible, so a job's books should never show a deductible quietly disappearing.
Job costing: materials, returns, and the extra costs that eat margin
Tag every material delivery, dumpster, permit, and dump fee to the job it belongs to. Most roofers buy on a charge account with a supply house, so the monthly statement should be reconciled against individual delivery tickets, each assigned to a job. Returns of unused bundles, drip edge, or underlayment come back as credits; apply each credit to the job that ordered the material, or that job will look worse than it was and the next one better.
Labor needs the same discipline. If crews are paid per square, record each crew payment against the job and compare it to the squares actually installed. If you pay sales reps commission on job profit, accurate job costing directly affects what you owe them, so mistakes become payroll disputes.
Set up a separate expense account for warranty and callback work. A leak repair on a roof you installed two years ago is a real cost of doing business, but it should not be charged to whatever job happens to be open, and tracking it separately tells you whether your workmanship warranty is costing more than you priced in.
Subcontracted crews, insurance audits, and seasonal cash
Collect a W-9 and a current certificate of insurance from every subcontracted crew before their first payment. For payments made in 2026, the 1099-NEC threshold rose to $2,000, so confirm the cutoff with your accountant, but track every crew's payments all year either way. Workers' compensation and general liability carriers usually audit your policy annually, and payments to subs who cannot show their own coverage are often added to your payroll for premium purposes. Clean records of who was paid, how much, and whether they were insured can make a large difference in that audit.
Roofing revenue is seasonal and storm-driven. Use your monthly profit and loss to set aside cash during busy months for the slow ones, for the year-end tax bill, and for the insurance audit adjustment. A strong month that is mostly unreleased depreciation and pending supplements is not cash you can spend yet.
Keep your roofing books current
If your books are behind and you are not sure which insurance jobs still have money outstanding, a cleanup is the place to start. Evolv Bookkeeping does it for $199 for each month behind, caught up within 2 days, guaranteed in writing.
After that, we reconcile your accounts every month for $199 flat, with 1099 prep for your crews at year end. No contracts, cancel anytime. Get an instant quote on our homepage.