In This Guide

  1. What Is Job Costing for Roofing Contractors?
  2. Why Job Costing Changes Your Business
  3. Which QuickBooks Plan You Need
  4. Setting Up Your Chart of Accounts
  5. Enabling and Using the Projects Feature
  6. Step-by-Step: Recording a Job in QuickBooks
  7. Job Costing Reports to Run Monthly
  8. What Are Healthy Profit Margins for Roofing?
  9. 3 Job Costing Mistakes That Kill Your Data

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 can calculate the actual profit or loss on every project you complete.

Instead of seeing "we made $60,000 in March," you see:

JobRevenueJob CostsGross ProfitMargin
Henderson Re-Roof$18,500$10,200$8,30045%
Smith Storm Claim$22,000$9,800$12,20055%
Downtown Commercial$41,000$31,200$9,80024%
Taylor Repair$3,200$2,900$3009%

Now you can see the commercial job is dragging down your margin and small repairs are barely worth doing. That's the information that changes how you bid and what work you take.

Why Job Costing Changes Your Business

Most roofing contractors price jobs based on gut feeling, past experience, or square footage estimates. Job costing gives you actual cost data to validate or correct those instincts.

With job costing data, you can answer:

Real outcome: One roofing contractor we work with discovered their commercial jobs averaged 21% gross margin — well below residential at 44%. They raised commercial pricing by 18% on new bids and declined low-margin commercial jobs. Revenue dropped slightly but profit increased $140,000 in the first year.

Which QuickBooks Plan You Need for Job Costing

Job costing in QuickBooks Online requires the Projects feature. Projects is only available in QuickBooks Online Plus and Advanced.

PlanPriceProjects (Job Costing)Verdict
Simple Start~$30/mo❌ NoNot for roofing
Essentials~$55/mo❌ NoNot for roofing
Plus~$90/mo✅ YesMost roofing companies
Advanced~$200/mo✅ Yes + custom reportsMulti-crew, $3M+ revenue

If you're on Simple Start or Essentials, you'll need to upgrade to Plus. Contact QuickBooks support or your bookkeeper to upgrade without losing data.

Setting Up Your Chart of Accounts for Roofing

The chart of accounts is the list of all the categories your transactions are recorded under. Most default QuickBooks charts of accounts are built for retail or service businesses — they're not set up for construction job costing.

Here's the chart of accounts structure we set up for roofing companies at JobCostBooks:

Income Accounts

Cost of Goods Sold (Direct Job Costs)

Operating Expenses (Overhead — Not Job Costs)

Key distinction: Job costs (COGS) are costs that exist because of a specific job. Overhead expenses exist regardless of jobs. Separating these correctly gives you accurate gross margin per job AND accurate overhead cost tracking. Getting this wrong is the single biggest bookkeeping mistake roofing contractors make.

Enabling and Using the Projects Feature in QuickBooks Online

Step 1: Enable Projects

  1. Click the gear icon (Settings) in the top right
  2. Select "Account and Settings"
  3. Click "Advanced" in the left menu
  4. Find "Projects" and toggle it on
  5. Click Save

Step 2: Create a Project for Each Job

  1. Go to the "Projects" tab in the left sidebar
  2. Click "New Project"
  3. Name it clearly (e.g., "Henderson - 142 Oak St Re-Roof - Jun 2026")
  4. Link it to the customer
  5. Add start date and expected end date
  6. Enter your estimated revenue and costs (optional but useful)

Step 3: Assign Transactions to Projects

Every transaction related to a job must be assigned to that project:

If a transaction isn't assigned to a project, it won't appear in your job cost reports. This is the most common error — consistency in assigning every transaction is critical.

Step-by-Step: Recording a Complete Job in QuickBooks

Here's how to record a typical roofing job from start to finish:

1. Create the Project

As soon as you sign the contract, create the project in QuickBooks. Name it with the customer name, address, and job type. Add the contract amount as estimated revenue.

2. Send the Deposit Invoice

Create an invoice for the deposit amount, linked to the project. If retainage applies (commercial jobs), create a line item for the contract total and a negative line item for the retainage amount. The net is what the customer owes now.

3. Record Materials Purchases

When you buy materials at the supply house, enter the bill in QuickBooks immediately. Assign it to the correct project. Split the bill if materials were bought for multiple jobs.

4. Record Subcontractor Costs

When you pay a subcontractor, record the bill or expense and assign it to the project. If the subcontractor works on multiple jobs in the same payment, split it proportionally.

5. Record Labor Costs

If your crew is on payroll, use QuickBooks Time (or manual time entries) to allocate hours to each project. This moves labor cost from overhead into job costs for that project.

6. Invoice Completions and Retainage Releases

On job completion, invoice the final amount. If retainage was withheld, create a separate retainage invoice using the Retainage Revenue account.

7. Close the Project

Once fully invoiced and paid, mark the project as complete. Run the Project Profitability report and record the final margin.

Job Costing Reports to Run Monthly

Project Profitability Report

Go to Reports → search "Project Profitability." This shows revenue, job costs, and gross profit for every project. Run it at month-end for all jobs active in the month.

What to look for:

Unbilled Costs by Project

Shows costs recorded for a project that have not yet been invoiced. Useful for catching jobs where work was done and costs entered but no invoice was sent.

Open Projects Summary

Lists all active projects with their current revenue, costs, and estimated vs. actual comparison. Alerts you to jobs that are running over budget before they're complete.

What Are Healthy Profit Margins for Roofing?

Gross margin is revenue minus direct job costs, divided by revenue. It does not include overhead.

Job TypeTarget Gross MarginBelow This — Investigate
Residential Re-Roof35–50%Below 28%
Storm Restoration / Insurance40–55%Below 32%
Commercial Roofing20–35%Below 18%
Service & Repair45–65%Below 35%
New Construction15–25%Below 12%

Net profit margin (after overhead) for a well-run roofing company should be 10–20%. If your net margin is below 8%, either your job margins are too low or your overhead is too high — job cost data tells you which.

3 Job Costing Mistakes That Kill Your Data

Mistake 1: Not Assigning Every Transaction to a Project

The most common mistake. If 20% of your material bills aren't assigned to projects, your job profitability reports are wrong. Establish a rule: nothing gets recorded without a project assignment. Review unassigned transactions weekly.

Mistake 2: Using the Wrong Cost Categories

Recording subcontractor payments as overhead expenses instead of job costs. This inflates overhead and understates job costs — making jobs look more profitable than they are. Subcontractors always go to COGS, always assigned to a project.

Mistake 3: Lumping All Materials into One Account

Using a single "Materials" account for everything. You lose visibility into which material types (shingles, underlayment, flashing, gutters) are running over budget. Break materials into 3–4 subcategories for meaningful data.

We Set This Up For You — Correctly, in 1–2 Weeks

Setting up proper job costing in QuickBooks takes time and construction accounting knowledge to do right. We do it every day, exclusively for roofing and restoration contractors. Book a free 15-minute assessment to see what your current setup is missing.

Book My Free Assessment →

About JobCostBooks

JobCostBooks is a specialized bookkeeping service for US roofing, restoration, and real estate companies. We set up and maintain QuickBooks Online with full job costing, retainage tracking, and monthly reporting — starting at $600/month, delivered remotely from India.