QuickBooks Job Costing for Contractors
Last updated:
Expertly reviewed by: Kaaviya Sivakumar
Illustrative Scenario
The Job That Was Profitable Until Reconciliation (Anonymised)
A remodeler ran a $62,000 basement build-out tracked in QuickBooks Online Projects. Mid-job, the Project Profitability report showed a healthy 31% gross margin, so he priced the next two bids off it. Then his bookkeeper reconciled the month: $4,800 of lumber on the owner's personal card, two subcontractor invoices sitting in an email inbox, and 60 crew hours that had been logged against the wrong project. The "31%" job was actually a 19% job — and the two bids he'd priced off the phantom margin were already signed.
⚡ QuickBooks Job Costing in 60 Seconds
- ✓ QuickBooks Online: use Projects (Plus plan or higher) and tag every expense, bill, and timesheet to a project.
- ✓ It tracks what's been ENTERED — not committed costs, unbilled change orders, or labor burden.
- ✓ Accuracy depends entirely on discipline: every receipt, every hour, every sub invoice, coded to the right job, fast.
- ✓ The Job Profitability Summary report is your primary QuickBooks job costing report — run it per project, not company-wide.
- ✓ The 3 gaps QuickBooks can't close: no mobile field entry, no real-time budget alerts, no automatic labor burden.
- ✓ Keep QuickBooks for accounting and taxes. Add RemodelFin as the real-time field layer for job-level decisions.
What QuickBooks job costing actually is
QuickBooks is an accounting system. Job costing in QuickBooks means tagging accounting transactions — expenses, bills, invoices, payroll — to a job, so that reports can group them per job. Done with discipline, that produces an accurate historical record of what each job cost.
That’s genuinely useful. It’s also a different thing from what most contractors mean when they say they need job costing: knowing whether the job you’re standing on is still on budget today. Keep that distinction in mind through the setup below, because every limitation in this guide traces back to it.
The rest of this guide covers: how to set up QuickBooks job costing correctly, how Classes and Projects differ, how to run and read the Job Profitability report, and the three gaps that make QuickBooks insufficient as a standalone tool — plus exactly how to fill those gaps.
QuickBooks Classes vs. Projects for Job Costing
Before you set anything up, you need to choose the right tool within QuickBooks. The three options — Projects, Classes, and sub-customers — do different things, and choosing the wrong one produces reports that don’t answer the questions you’re actually asking.
QuickBooks Projects (QBO Plus and above — recommended)
Projects is the purpose-built job costing feature in QuickBooks Online. You create one Project per job, assign every expense, bill, timesheet, and invoice to it, and the Project Profitability report shows income minus costs for that job.
Why Projects wins for remodelers:
- One dashboard per job showing revenue, costs, and profit
- Time entries link to projects natively via QuickBooks Time
- Project Profitability report is generated per job without manual filtering
- Change orders can be tracked as additional invoices under the same project
QuickBooks Classes
Classes are a tagging system that cuts across your entire chart of accounts. You create a class for each job (or each division), then tag every transaction. The Profit and Loss by Class report shows revenue and expenses per class.
Why Classes is the wrong tool for per-job costing:
- Classes are company-level slices, not job-level containers — they don’t have their own dashboards
- Overhead allocation across classes is manual and error-prone
- Classes and Projects can both be used simultaneously, which creates confusion about which method to follow
Best use for Classes in construction: Use Classes for divisions (Remodeling vs. Service Work vs. Commercial), not for individual jobs. If you run both remodeling and service/repair work, create a class for each division and use Projects within the remodeling division for individual job tracking.
Sub-customers / Customer:Job (QuickBooks Desktop legacy method)
In QuickBooks Desktop, the standard job costing method is Customer:Job records — you create a customer (the client) and a job under them (the project). This is mechanically powerful: the estimates-vs-actuals report in Desktop is significantly better than QBO’s Project report. But Desktop is moving toward end-of-life, and this guide focuses on QBO for new setups.
Summary:
| Method | Best For | Limitation |
|---|---|---|
| Projects (QBO) | Per-job profitability tracking | No committed cost view; lags field reality |
| Classes (QBO) | Division-level P&L segmentation | Not designed for per-job costing |
| Sub-customers (Desktop) | Legacy Desktop setups | Platform end-of-life direction |
Setting it up correctly in QuickBooks Online
You need the Plus plan or higher — that’s the cheapest tier with the Projects feature and project profitability reporting.
- Turn on Projects (Settings → Advanced → Projects) and create one project per job, under the customer.
- Tag everything. Every expense, check, bill, and credit-card charge gets a project assigned. No exceptions — one untagged lumber run quietly inflates your margin.
- Use items/products & services for cost codes. Set up service items for your major cost buckets (demo, framing, electrical, finish) so reports can break a job down past one lump number.
- Route time through payroll or timesheets with a project attached, and add a burden factor — more on that below, because this is where most QBO job costing silently breaks.
- Enter bills when committed, not when paid. A sub invoice entered on payment day is a cost your reports missed for 30 days.
On Desktop/Enterprise, the equivalent is customer:job records with items — mechanically stronger (item-level estimates vs. actuals reports are better than QBO’s), but it inherits every timing problem below, plus Desktop’s own end-of-life pressures.
The older workarounds — classes and sub-customers — still function, but for per-job profitability in 2026, Projects is the answer.
How to Run the Job Profitability Summary Report
The Project Profitability report is your primary QuickBooks job costing report. Here’s how to run it and what each section means:
In QuickBooks Online:
- Go to Reports → search “Project Profitability”
- Set your date range to cover the full project period
- Filter to the specific project using the dropdown
The report shows:
- Income: all invoices issued against this project
- Cost of Goods Sold: expenses, bills, and timesheet costs tagged to the project, broken down by item/service
- Gross Profit: income minus COGS
- Gross Margin %: gross profit divided by income
How to read it critically:
| What the Report Shows | What It Might Be Missing |
|---|---|
| Billed invoices | Unbilled change orders, retainage not yet invoiced |
| Entered expense receipts | Receipts on personal cards not yet submitted |
| Posted subcontractor bills | Sub invoices in email inbox not yet entered |
| Timesheet hours × pay rate | Employer burden (taxes, workers’ comp, liability) |
| PO amounts (if linked) | Sub contracts signed but not yet invoiced |
Note: Always run this report alongside a conversation with whoever enters transactions. If the last reconciliation was two weeks ago, assume the report is describing a two-week-old version of the job.
Run these supporting reports alongside Project Profitability:
- Time Cost by Employee or Vendor: breaks down labor costs by person
- Expenses by Vendor Summary: filters to the project and shows sub costs by subcontractor
- Unbilled Time and Expenses: shows work completed that hasn’t been invoiced yet — critical for identifying under-billing
The 3 Biggest Gaps in QuickBooks Job Costing
These aren’t setup mistakes. They’re what QuickBooks, used perfectly, still can’t do for a remodeler who needs real-time margin visibility.
Gap 1: No Mobile Field Entry — The Data Timing Problem
A job’s true cost includes the lumber bought this morning, the sub working today who invoices next month, and the PO issued last week. QuickBooks sees none of that until a transaction is entered. For shops where receipts ride in the truck for two weeks before the bookkeeper sees them, the Project Profitability report describes the job as it stood weeks ago.
The specific failure mode: You’re running a $95,000 kitchen renovation. Your bookkeeper enters costs every two weeks. On Day 22, your QuickBooks Project Profitability report shows 38% gross margin — healthy. What it doesn’t show: $7,200 in tile material purchased on your lead carpenter’s card (not yet submitted), a $5,400 sub invoice from the electrician (sitting in your email), and 40 crew hours from last week (logged on paper, not yet entered). The real margin on Day 22 is closer to 24%. You don’t see that until Day 36 when reconciliation catches up.
By Day 36 you’ve already priced a bid for similar work using the 38% phantom margin.
What solves this: Field-first cost capture. Every receipt photographed from the job site posts the same day. Crew hours logged before they leave the site. Sub invoices forwarded to an email integration that posts them to the job immediately. That’s what purpose-built job costing software does — it closes the data timing gap that QuickBooks’ accounting-first architecture can’t close.
Gap 2: No Real-Time Budget Alerts — The Silent Overrun
QuickBooks does not alert you when a cost category crosses budget. You have to actively open QuickBooks, navigate to the project, run the report, and compare the numbers to what you estimated. Most contractors do this inconsistently — especially when running multiple concurrent jobs. The overrun that could have been caught in week two gets discovered at closeout.
Compound this with the timing problem above: you’re looking at data that’s two weeks stale, on a job you check monthly, and the report format isn’t designed to surface variance at a glance. It shows totals, not “this line is 22% over budget.”
What solves this: Real-time budget-vs-actual dashboards with threshold alerts. When framing labor crosses 85% of its budgeted amount, you get a notification. When tile material variance exceeds 10%, the dashboard flags it. You don’t have to remember to look — the system surfaces the problem when there’s still time to act. This is the core function of the budget-vs-actual system that dedicated job costing software provides.
Gap 3: No Automatic Labor Burden — The Invisible Margin Leak
QuickBooks Payroll posts gross wages. Your $35/hour carpenter costs $45–$55/hour once payroll taxes, workers’ comp, and liability are added — a 25–40% gap. Unless you’ve built burden allocation manually (most shops haven’t), every labor-heavy job in QuickBooks looks more profitable than it is.
Here’s the math on why this matters: A bathroom renovation with 320 crew-hours budgeted at $35/hr shows $11,200 in labor cost. The actual burdened cost at $50/hr is $16,000. That $4,800 gap — invisible in QuickBooks — turns a 35% gross margin job into a 24% gross margin job. On a $45,000 bathroom, that’s $4,950 in margin the report says you have but your business doesn’t.
Get your real burdened rate from the labor burden calculator and check it against what your QuickBooks reports assume. Most contractors who run this calculation for the first time discover they’ve been systematically overstating profitability on labor-heavy jobs.
What solves this: Job costing software that applies burdened labor rates automatically per employee. You configure each person’s burden rate once, and every time they log hours against a job, the cost posted is the fully burdened cost — not the wage rate. The margin you see is the real margin. Use the construction profit calculator to model what the burden gap costs you across your annual job volume.
How RemodelFin Fills the QuickBooks Gaps
RemodelFin is not a QuickBooks replacement. It’s a real-time field layer that sits on top of your accounting workflow, captures costs where they’re created, and shows you live job margin — then syncs to QuickBooks so your accounting remains accurate.
Here’s how the integration works:
Field cost capture: Your crew photographs a receipt on-site. It posts to the job’s cost report immediately — cost code assigned, amount entered, photo attached for documentation. No trip to the office. No re-keying from memory. The cost is in the system within 60 seconds of purchase.
Automatic labor burden: You configure each crew member’s burdened rate once. Every timesheet entry applies the burdened rate, not the wage rate. Your QuickBooks payroll handles payroll compliance; RemodelFin handles job-level cost accuracy.
Real-time budget-vs-actual: The job dashboard shows every cost code against its budget, updated with every posted cost. Threshold alerts fire at 70%, 85%, and 95% of budget. You see the overrun while the job is open, not on Day 68.
QuickBooks sync: At the end of each billing period, job cost data syncs to QuickBooks — expenses categorized to the right accounts, jobs tagged to the right projects. Your bookkeeper’s reconciliation is easier because the field data is already clean.
Change order margin tracking: Every approved change order gets its own cost tracking. You see whether the change order is actually profitable (the client paid $3,500 extra; you spent $2,100 on it — real margin: $1,400) or whether it’s just recovering costs (the client paid $3,500; the actual cost was $3,800 — you’re $300 in the hole on that change).
This division of labor — QuickBooks for accounting, RemodelFin for real-time job decisions — is how profitable remodeling businesses operate. They don’t ask their accounting system to be a job management system. They use the right tool for each function.
So should you job cost in QuickBooks?
Yes, if you run a handful of jobs, your bookkeeper enters costs within a few days, and you mainly need to know how jobs ended up — for pricing reviews and taxes. QuickBooks Projects, set up as above, is a real upgrade over job costing in Excel.
No longer sufficient, if any of these are true:
- You learn about overruns at closeout — the “profit autopsy” — instead of mid-job.
- Costs wait on office data entry because the crew won’t touch QuickBooks.
- You’re pricing new bids off margins that later get revised down at reconciliation (the case study above).
- You need committed costs, change-order capture, or per-phase budget vs. actual that QBO reports can’t produce.
- Your labor-heavy jobs consistently come in under margin but you can’t identify why.
The fix is rarely to rip out QuickBooks. It does accounting, payroll, and taxes well, and your accountant lives in it. The fix is a dedicated job costing layer that captures costs as they’re incurred — field time entry, receipt photos, sub invoices, change orders — and shows a live per-job margin, while QuickBooks stays the system of record for accounting. That division of labor is exactly what purpose-built job costing software does, and we’ve written a direct comparison of the options in QuickBooks alternatives for contractors.
See also: contractor expense tracking for the full field-to-ledger workflow, and the WIP report guide for how to track over/under billing across all your active projects.
How old is the newest cost in your QuickBooks job report right now — days, or weeks?
Your answer helps us improve our financial tools and guides for the trade.
"How old is the newest cost in your QuickBooks job report right now — days, or weeks?"
Feedback Received
Thank you. Your real-world input helps us build better financial tools for the trade.
Bottom line
Set up QuickBooks Projects properly and it will tell you, accurately, what every job cost — eventually. Just don’t ask it whether today’s job is on budget; it structurally cannot know. The three gaps — no mobile field entry, no real-time alerts, no automatic labor burden — mean that QuickBooks job costing describes the past. You need a real-time layer to manage the present.
Use QuickBooks for the books. Use RemodelFin for the decisions that still have time to change the outcome.
RemodelFin’s 30-day free trial lets you track your first job at no cost. Connect to QuickBooks in minutes, set up your cost codes, and see your real-time job margin alongside your QuickBooks data — before you spend a dollar. Start your free trial today.
Sources & Further Reading
Written by Kaaviya Sivakumar
Kaaviya Sivakumar is the founder and lead engineer of RemodelFin. She built the platform after studying the financial failure patterns of residential remodeling firms, and works directly with contractors to understand how job costing, labor burden, and change order workflows affect real-world profitability.
Contractor Q&A
Can you do job costing in QuickBooks Online?
Yes — on the Plus plan or higher, using the Projects feature. Create a project per job, then assign every expense, bill, invoice, and timesheet to it. The Project Profitability report shows income minus costs per job. The catch: it only reflects transactions that have been entered and categorized, so the report typically lags the real job by weeks.
What's the difference between QuickBooks Projects, Classes, and sub-customers for job costing?
Projects (QBO Plus+) is the modern method — one project per job with its own profitability report. Classes tag transactions by category or division and suit company-level reporting more than per-job costing. Sub-customers (jobs under a customer) are the legacy Desktop-style method. For a remodeler starting today in QBO, use Projects. Classes are better used for divisions (remodel vs. service work) than individual job tracking.
Why is my QuickBooks job costing report wrong?
The usual causes: costs entered as journal entries or batch credit-card imports without a project assigned, labor entered at raw wages with no burden (taxes, comp, insurance — typically 25–40% on top), missing subcontractor bills that haven't arrived yet, and change-order work performed but never invoiced. The report is only as accurate as the slowest, least disciplined entry.
When have I outgrown QuickBooks for job costing?
Three signals: you discover overruns after the job closes instead of during it; your field crew won't open QuickBooks so costs wait for a bookkeeper; and you can't see committed costs (POs issued, sub contracts signed) against the budget. At that point keep QuickBooks for accounting and add a dedicated job costing layer on top.
How do I run the Job Profitability Summary report in QuickBooks Online?
In QBO: Reports → All Reports → search 'Project Profitability.' Select the date range covering the job period and filter to a specific project. The report shows income, cost of goods sold (labor, materials, subs as entered), and gross profit per project. For a more granular breakdown, run the 'Time Cost by Employee or Vendor' report alongside it. Remember: this report only reflects entered transactions — always check that all subcontractor bills, receipts, and timesheets have been posted before drawing conclusions.
Can QuickBooks track committed costs for a construction job?
Not natively. QuickBooks can track purchase orders (as estimates committed to a vendor), but the PO must be manually matched to a project and doesn't automatically generate a committed cost view against your budget. Full committed-cost tracking — where signed subcontracts and issued POs reduce your remaining budget before any invoice arrives — requires a dedicated job costing system like RemodelFin.
Does QuickBooks calculate labor burden automatically?
No. QuickBooks Payroll posts gross wages and employer-side taxes as separate line items in your general ledger. For job costing, those employer costs don't automatically roll up to the job's labor cost — they sit in payroll expense accounts. To get true burdened labor cost per job in QuickBooks, you need to manually add burden allocations as separate expense lines, or run a workaround using payroll items. Most shops don't bother — which is why their QuickBooks job reports overstate profitability on labor-heavy projects.
Should I use QuickBooks Desktop or QuickBooks Online for construction job costing?
For new setups in 2026, QuickBooks Online. Desktop has stronger item-level estimate vs. actual reporting (the Customer:Job structure is more detailed), but Intuit has signaled the end-of-life direction for Desktop products and the integration ecosystem for QBO is far larger. QBO Projects, properly set up, handles job-level profitability tracking adequately for most remodeling firms. If you're already on Desktop Enterprise and it's working, no urgent reason to migrate — but new implementations should start on QBO.
What is the difference between QuickBooks job costing and RemodelFin?
QuickBooks is an accounting system that can group historical costs by job. RemodelFin is a real-time job costing system that captures costs as they're incurred in the field and shows your live margin against budget, updated with every receipt photo, timesheet entry, and sub invoice. They're designed to work together: QuickBooks as the accounting system of record, RemodelFin as the field-level decision tool.
Ready to protect your margins on every job?
RemodelFin gives you live job costing, change order tracking, and profit alerts so you never finish a job wondering what you made.
Does this guide address the specific profit leak you're seeing on-site?
Your answer helps us improve our financial tools and guides for the trade.
"Does this guide address the specific profit leak you're seeing on-site?"
Feedback Received
Thank you. Your real-world input helps us build better financial tools for the trade.