In This Guide
What Is Roofing Bookkeeping?
Roofing bookkeeping is the process of recording, organizing, and reporting all financial transactions for a roofing or restoration business — at both the business level and the individual job level.
Unlike generic bookkeeping (which treats your roofing company like a restaurant or retail store), roofing-specific bookkeeping includes:
- Job costing — tracking every dollar of revenue and expense by individual job
- Retainage tracking — managing the 5–10% withheld until job completion
- Progress billing — billing in draws or milestones rather than a single invoice
- Insurance claim accounting — tracking ACV payments, supplements, and RCV releases
- WIP (work-in-progress) schedules — showing your financial position on every open job
When these elements are set up correctly in QuickBooks Online, you know exactly which jobs made money and which lost it — before you bid the next one.
The core problem: Most roofing companies doing $1M–$5M in revenue have decent overall financials but no idea which jobs are profitable. They win more work and get busier — but the margin never improves. Job costing fixes this.
How Is Roofing Bookkeeping Different from Regular Bookkeeping?
Regular bookkeeping tracks income and expenses at the business level. You see total revenue, total costs, total profit. It tells you if the business made money — but not which jobs drove it.
Roofing bookkeeping goes two levels deeper:
| Feature | Generic Bookkeeping | Roofing Bookkeeping |
|---|---|---|
| Income tracking | Business level only | Per job + business level |
| Expense tracking | Category only (materials, labor) | Per job + category |
| Retainage | Ignored or lumped in AR | Tracked as separate receivable |
| Progress billing | Single invoice per job | Draw schedule billing |
| Insurance claims | Recorded as lump sum revenue | ACV, supplement, RCV tracked separately |
| WIP schedules | Not applicable | Monthly per-job snapshot |
| Chart of accounts | Generic (Office Supplies, Utilities) | Construction-specific (Materials by job type, Subcontractor labor, Overhead) |
The difference isn't just complexity — it's the information you get out. A generic bookkeeper gives you last month's numbers. A roofing bookkeeper tells you which jobs to stop taking and which to scale.
QuickBooks Setup for Roofing Contractors
Which QuickBooks Plan Do You Need?
For job costing, you need QuickBooks Online Plus (minimum) or Advanced. The Projects feature — which powers job costing — is not available in Simple Start or Essentials.
| Plan | Price/mo | Job Costing (Projects) | Best For |
|---|---|---|---|
| Simple Start | ~$30 | No | Not suitable for roofing |
| Essentials | ~$55 | No | Not suitable for roofing |
| Plus | ~$90 | Yes | Solo operators to mid-size crews |
| Advanced | ~$200 | Yes | Multi-crew, $3M+ revenue |
Chart of Accounts for a Roofing Company
The chart of accounts is the backbone of your books. Most generic charts of accounts are useless for roofing — they don't separate job costs from overhead, and they have no construction-specific categories.
A proper roofing chart of accounts includes:
- Income accounts: Roofing Revenue, Restoration Revenue, Service/Repair Revenue, Retainage Revenue (separate)
- Cost of Goods Sold (Job Costs): Materials, Labor, Subcontractors, Equipment Rental, Permits, Dumpster/Disposal
- Overhead Expenses: Insurance (separate from job costs), Vehicle Expenses, Office & Admin, Marketing, Software
- Balance Sheet: Retainage Receivable (separate from regular AR), Equipment Assets, Loans
Critical mistake to avoid: Never put retainage in your regular Accounts Receivable. It needs its own balance sheet account. If it's mixed in AR, you'll think you have cash coming that may not arrive for months — and your AR aging will be wrong.
Setting Up the Projects Feature
QuickBooks Online's Projects feature is how you track job costing. Each roofing job becomes a "Project" in QuickBooks. Every invoice, bill, and expense gets assigned to the project. QuickBooks then shows you revenue, cost, and profit for that specific job.
Steps to set up:
- Go to Settings → Account & Settings → Advanced → Enable "Projects"
- Create a new project for each job (link to customer)
- Assign all invoices and bills to the project when entering them
- Run the "Project Profitability" report monthly
Job Costing: Tracking Profit Per Job
What Is Job Costing for Roofing Contractors?
Job costing is the process of tracking all revenue and expenses for each individual roofing job — so you know exactly how much profit (or loss) each job generated. Instead of seeing "we made $80,000 last month," you see "the Henderson re-roof made $12,400 and the Smith storm job lost $2,100."
That information changes how you bid, which jobs you take, and which types of work you focus on.
What Gets Tracked in Job Costing?
- Revenue per job — contract price, change orders, supplements
- Direct materials — shingles, underlayment, flashing, fasteners
- Direct labor — crew wages allocated to each job
- Subcontractors — payments to crews you hire out
- Equipment costs — rental, fuel allocated per job
- Permits and disposal — permit fees, dumpster rental
Job Cost Report: What to Look For
Run the QuickBooks "Project Profitability" report at the end of each month. For each completed job, you'll see:
| Line Item | What It Tells You |
|---|---|
| Revenue | Total billed (excluding uncollected retainage) |
| Job Costs | Materials + labor + subs for that job |
| Gross Profit | Revenue minus job costs (before overhead) |
| Gross Margin % | Target 35–50% for residential roofing |
If your gross margin on a job type is consistently below 30%, that job type is probably not worth bidding. This is the insight that changes businesses.
Retainage Tracking
What Is Retainage in Roofing?
Retainage (also called retention) is a percentage of the contract price — typically 5–10% — withheld by the property owner or general contractor until the roofing job is fully completed and inspected. Retainage protects the owner against incomplete work or defects.
For roofing contractors, retainage can represent $5,000–$50,000 per job depending on contract size. Many roofing companies leave significant retainage uncollected simply because nobody is tracking it.
How to Track Retainage in QuickBooks
The correct method for tracking retainage in QuickBooks Online:
- Create a "Retainage Receivable" account on your balance sheet (separate from Accounts Receivable)
- When billing, create a line item for retainage using a negative line item on the invoice (reduces the amount due now)
- Debit Retainage Receivable for the amount withheld
- When the job is complete and retainage is released, invoice the customer using a Retainage Revenue income account
- Run a "Retainage Receivable" balance sheet report monthly to see total uncollected retainage
Real example: A 6-crew roofing company doing $3M/year was carrying $87,000 in uncollected retainage that had been sitting over 90 days. Nobody on staff knew the total. Once tracked properly, they collected $61,000 within 30 days by sending invoices.
The 3 Monthly Reports Every Roofer Needs
You don't need 20 reports. You need three. Run these by the 10th of every month for the prior month:
1. Profit & Loss by Job (Project Profitability Report)
Shows revenue, costs, and gross profit for every job. Tells you which job types are most profitable. Use it to refine your bidding and focus on high-margin work.
2. Balance Sheet
Snapshot of your financial position: what you own (assets), what you owe (liabilities), and what's left (equity). Pay special attention to Retainage Receivable — this is your uncollected money.
3. Accounts Receivable Aging
Shows all outstanding invoices grouped by age: 0–30 days, 31–60 days, 61–90 days, 90+ days. Any invoice over 60 days needs immediate follow-up. Any retainage over 90 days past completion is at risk of never being collected.
5 Most Common Bookkeeping Mistakes Roofing Contractors Make
1. No Job Costing Setup
Recording all income and expenses at the business level with no job-level tracking. You see total profit but can't identify which jobs or job types drove it. Fix: Enable Projects in QuickBooks Plus and assign every transaction to a project.
2. Retainage Mixed Into Regular AR
Recording retainage in the same Accounts Receivable account as regular invoices. Your AR looks inflated, and you have no idea what's actually collectible. Fix: Create a separate Retainage Receivable balance sheet account.
3. Subcontractor Payments Not Allocated to Jobs
Paying subcontractors and recording it as a general expense rather than assigning it to the specific job. This destroys your job profitability reports. Fix: Always assign subcontractor bills to the correct project in QuickBooks.
4. Mixing Personal and Business Expenses
Running personal purchases through the business account. Makes your books messy, inflates costs, creates tax risk. Fix: Separate business account, separate business credit card, no exceptions.
5. Only Looking at Books at Tax Time
Treating bookkeeping as a tax-season activity rather than a monthly management tool. You fly blind all year, make bad bids, miss collection opportunities. Fix: Close your books by the 10th of every month. Review the three reports above.
DIY vs. Hiring a Roofing Bookkeeper
Should you do your own bookkeeping or hire a specialist?
| DIY in QuickBooks | Generic Bookkeeper | Roofing Specialist | |
|---|---|---|---|
| Cost | $0 (time only) | $300–$800/mo | $600–$1,800/mo |
| Job costing setup | Only if you know how | Rarely | Always |
| Retainage tracking | Only if you know how | Rarely | Always |
| Monthly reports | You run them | Standard P&L only | Full construction reports |
| Time cost | 5–15 hrs/month | 1–2 hrs/month oversight | 1 hr/month oversight |
| Tax prep quality | Depends on your skill | Adequate | CPA-ready books |
For a roofing company doing under $500K, DIY in QuickBooks is viable if you invest time in learning job costing. Above $500K, the hours you spend on books — and the mistakes you'll make without construction expertise — cost more than a specialist's monthly fee.
The real cost of DIY: A roofing contractor spending 10 hours/month on books is spending 120 hours/year on bookkeeping. At $200/hour (your effective rate as the business owner), that's $24,000/year in opportunity cost — to do something a specialist can handle for $7,200/year.
Get a Free QuickBooks Assessment for Your Roofing Company
We'll review your current setup, identify the biggest gaps in your job costing and retainage tracking, and show you exactly what's costing you money — in 15 minutes, free.
Book My Free Assessment →About JobCostBooks
JobCostBooks is a specialized bookkeeping service built exclusively for US roofing, restoration, and real estate companies. We set up and manage QuickBooks Online with full job costing, retainage tracking, and monthly P&L reporting — delivered remotely from India at a fraction of US specialist rates.
Plans start at $600/month. No contracts. Book a free 15-minute assessment at cal.com/jobcostbooks/15min.