Bookkeeping for a roofing company is fundamentally different from bookkeeping for a restaurant, a law firm, or even most other contractors. Roofing has a unique financial structure: revenue that spikes with weather events and insurance cycles, a labor model that mixes W-2 crews with 1099 subcontractors, retainage held on every commercial job, and job profitability that varies wildly by job type. Generic bookkeeping misses all of this. Here is what roofing bookkeeping actually needs to look like.
Why Is Bookkeeping for Roofers Different from Regular Bookkeeping?
Bookkeeping for roofers is different because the core financial questions a roofing contractor needs answered — which jobs make money, how much retainage is outstanding, what is the true margin on an insurance job vs. a retail re-roof — cannot be answered by a generic bookkeeping setup. Standard bookkeeping records transactions. Roofing bookkeeping organizes them in a way that reveals job-level profitability.
| Financial Question | Generic Bookkeeping | Roofing Bookkeeping |
|---|---|---|
| Did the business make money last month? | ✅ Yes — P&L shows totals | ✅ Yes |
| Which jobs made money? | ❌ No visibility | ✅ Project Profitability report |
| How much retainage is outstanding? | ❌ Not tracked | ✅ Retainage Receivable account |
| Is insurance work more profitable than retail? | ❌ Revenue is lumped together | ✅ Revenue split by job type |
| Which subcontractor is hurting margins? | ❌ All subs in one bucket | ✅ Sub costs per job |
| Are the books accurate at month-end? | 🟡 Depends on bookkeeper | ✅ Monthly reconciliation standard |
The QuickBooks setup that works for a $500K roofing company is completely inadequate at $2M, and by $4M the lack of financial visibility is actively costing money in bad bids, uncollected retainage, and tax surprises.
Should Roofers Use Cash Basis or Accrual Accounting?
Roofing companies doing more than $1M in revenue should use accrual-basis accounting, not cash basis. Cash basis records revenue when money hits your bank account and expenses when money leaves. This sounds simple — but for roofing contractors it creates a dangerous distortion.
Accrual accounting fixes this by matching revenue to the period when work is earned and expenses to the period when costs are incurred — regardless of when cash moves. The result is a P&L that reflects actual job performance, not the timing of bank deposits.
| Cash Basis | Accrual Basis | |
|---|---|---|
| Revenue recorded when | Cash received | Work earned / invoice issued |
| Expenses recorded when | Cash paid | Cost incurred |
| Monthly P&L accuracy | Distorted by timing | Reflects actual performance |
| Insurance claim revenue | Spikes when check clears | Spread across job completion |
| Best for | Under $500K, simple operations | $500K+ roofing companies |
| Required for bank/bonding | No | Often required |
| Tax filing | Simpler at year-end | More accurate, better planning |
In QuickBooks Online, you can switch between cash and accrual views in reports — but your underlying bookkeeping methodology (how transactions are entered and matched) determines whether accrual reports are meaningful. A roofing bookkeeper sets this up correctly from the start.
What Should a Roofing Company's Chart of Accounts Look Like?
A roofing-specific chart of accounts separates costs in a way that makes your P&L useful for decision-making, not just tax filing. The key differences from a generic setup:
| Account | Type | Why It Matters |
|---|---|---|
| Residential Roofing Revenue | Income | Separate from insurance work — different margin profiles |
| Insurance Restoration Revenue | Income | Track insurance job profitability separately |
| Commercial Roofing Revenue | Income | Commercial margins differ — must be visible |
| Materials — Shingles | COGS | Largest cost item — needs its own line |
| Materials — Underlayment & Accessories | COGS | Second-largest materials category |
| Subcontractor Labor | COGS | Separate from W-2 labor — 1099 compliance, different margins |
| Employee Labor — Field | COGS | W-2 crew cost — per job via QuickBooks Projects |
| Permits & Disposal | COGS | Direct job cost, not overhead |
| Retainage Receivable | Other Current Asset | Holdback owed — visible on balance sheet |
| Depreciation Holdback Receivable | Other Current Asset | Insurance ACV/RCV holdback (restoration contractors) |
Never put retainage in regular Accounts Receivable. Never combine subcontractor and employee labor. These two mistakes alone make it impossible to run an accurate job profitability report or comply correctly with 1099 filing requirements.
Job Costing: The Non-Negotiable for Roofing Bookkeeping
Job costing means tracking every dollar of revenue and cost against each individual roofing job so you can see gross profit and margin per job — not just company-wide totals. In QuickBooks Online, this is done through the Projects feature (available on Plus and Advanced plans).
Without job costing, a roofing company doing $2M in revenue might show 32% gross margin overall — but that average hides the fact that residential re-roofs run 44% and insurance restoration jobs run 21%. The owner keeps bidding both at the same rate, wonders why margins don't improve, and eventually learns the hard way which jobs were carrying the business.
With job costing, the Project Profitability report shows exactly this data every month. It takes 30 minutes to set up correctly in QuickBooks. It changes how you bid, which jobs you take, and how you evaluate subcontractor performance.
Full setup guide: QuickBooks job costing for roofers — step-by-step →
Retainage Tracking: The $40K–$120K Problem Most Roofers Have
Retainage is the 5–15% of contract value withheld by the property owner or GC until the roofing job reaches final completion. It's money you've earned. Without a dedicated Retainage Receivable account in QuickBooks, it's invisible — and roofing contractors at $2M revenue commonly have $40,000–$120,000 in uncollected retainage that simply doesn't exist in their books.
The fix is a single QuickBooks account: Retainage Receivable (type: Other Current Asset). Every invoice that has a holdback creates an entry here. A monthly balance sheet review flags any retainage over 60 days past job completion for collection follow-up.
Full setup guide: Retainage tracking in QuickBooks Online →
Insurance Claim Revenue: How to Record It Correctly
Insurance claim accounting is the most complex part of roofing bookkeeping, and the part most generic bookkeepers get wrong. An insurance job typically has three separate payments: the ACV check upfront, the depreciation holdback released after job completion, and any approved supplements. Each is a separate receivable and must be recorded separately in QuickBooks.
The cash basis mistake: recording the ACV check as full job revenue. The job isn't complete, you still owe the work, and the holdback hasn't been released. Your books show income that isn't fully earned yet.
The correct approach: invoice for full RCV at job start, record ACV receipt as partial payment, track the depreciation holdback in a Depreciation Holdback Receivable account, and invoice for the holdback release when work completes and documentation is submitted.
Full guide: Insurance claim accounting for restoration contractors →
The 3 Monthly Reports Every Roofing Company Needs
You don't need 15 reports. You need three, delivered by the 10th of every month for the prior month:
Company-level revenue by job type, COGS by category (materials, labor, subs), gross margin %, and net profit. Target: 35–50% gross margin on residential, 25–38% on commercial. If gross margin is below 28% consistently, there's a pricing or cost problem job costing data will surface.
Gross profit and margin per individual job, sorted by margin %. The most useful report in roofing bookkeeping. Shows which job types, which crews, and which geographic areas produce the strongest margins. Use it to refine your bidding every month — not just at year-end.
Snapshot of financial position. Pay particular attention to Retainage Receivable — any balance over 60 days past job completion needs a follow-up call. Also check accounts payable aging to make sure no supplier invoices are aging past terms.
JobCostBooks delivers all three of these as standard monthly deliverables for every client. See what's included in each plan →
DIY Roofing Bookkeeping vs. Hiring a Specialist: Which Is Right for You?
| DIY QuickBooks | Generic Bookkeeper | Roofing Specialist | |
|---|---|---|---|
| Monthly cost | $0 (time only) | $300–$800 | $600–$1,800 |
| Job costing setup | Only if you know how | Rarely done correctly | Standard — day one |
| Retainage tracking | Only if you know how | Usually missed | Standard — day one |
| Insurance claim accounting | Almost never correct | Usually wrong | Standard workflow |
| Monthly time required (owner) | 8–15 hours | 1–2 hours oversight | 30 min review |
| Risk of tax errors | High | Medium | Low |
For a roofing company doing under $500K, DIY with QuickBooks is manageable if you invest time in setup. Above $500K, the hours you spend on books — and the mistakes made without construction expertise — cost more than a specialist's monthly fee. A roofing contractor spending 10 hours/month on bookkeeping is spending $24,000/year in opportunity cost (at $200/hour effective rate) to do something a specialist handles for $7,200–$21,600/year.
How Much Does Bookkeeping for a Roofing Company Cost?
Roofing bookkeeping costs vary significantly by provider type:
| Provider Type | Monthly Cost | Job Costing | Retainage Tracking |
|---|---|---|---|
| Generic bookkeeper (local) | $300–$800 | ❌ Rarely | ❌ Rarely |
| Bench / generic online | $299–$700+ | ❌ Not available | ❌ Not available |
| JobCostBooks (roofing specialist, India) | $600–$1,800 | ✅ Standard | ✅ Standard |
| US roofing specialist | $3,500–$5,000 | ✅ Standard | ✅ Standard |
JobCostBooks provides roofing-specialist bookkeeping — job costing, retainage tracking, monthly P&L and job profitability reports — at $600–$1,800/month. That's the same quality as a US-based roofing specialist at one-third the price, because we operate from India with lower overhead and pass the savings directly to clients.
Full pricing breakdown: How much does a bookkeeper for a roofing company cost? →