Job CostingJune 2026 · 12 min read

Construction Job Costing in QuickBooks Online — Complete Guide

Job costing is the single most valuable thing you can do for a construction contractor client. It tells them whether each job is actually profitable — and which jobs are bleeding money before it's too late to fix. Here's how to do it right in QBO.

Why most contractor QBO files have bad job costing

The #1 reason job costing fails in QBO is inconsistent cost coding. Bills get entered without a customer/job. Payroll isn't allocated to jobs. Material purchases sit in the wrong account. If you're inheriting a client's QBO file, cost coding cleanup is almost always the first step.

What job costing actually means in construction

Job costing means tracking all costs — materials, labor, subcontractors, equipment, overhead — against a specific project, then comparing those costs to the budget and contract value. The output is a per-job profitability report that shows:

  • Budget vs. actual variance — is the job running over or under budget?
  • Profit margin per job — which jobs are profitable, which are not?
  • Cost category breakdown — are materials, labor, or subs the problem?
  • Cost to complete — how much more will it cost to finish?

Without job costing, contractors often find out a job was unprofitable only after it's complete — when it's too late to do anything about it.

How QBO handles job costing — the structure

QuickBooks Online uses customers and sub-customers to represent jobs. The correct structure for a construction contractor is:

QBO Structure for Job Costing
Customer (top level)
The owner/client — e.g. "Smith Residence" or "Apex Commercial"
Sub-customer (job)
Each individual project — e.g. "Smith Residence:Kitchen Remodel 2026"
Products/Services
Line items on invoices — tied to income accounts
Expense accounts
Cost categories — materials, labor, subs, equipment
Classes (optional)
Division or project type segmentation

Every bill, expense, check, and payroll journal entry must be coded to the correct sub-customer to appear on job costing reports.

Setting up cost categories correctly

The standard construction cost categories to track separately in QBO:

  • Materials — lumber, concrete, fixtures, supplies purchased for the job. Use a dedicated "Job Materials" expense account.
  • Labor — direct labor costs for employees working on the job. Use payroll items mapped to a "Direct Labor" expense account.
  • Subcontractors — payments to subs for portions of the work. Use a "Subcontractor Costs" expense account. These need 1099 tracking.
  • Equipment — equipment rentals or owned equipment allocated to the job.
  • Other direct costs — permits, inspections, job-site utilities.
Tip: Don't use a single "Cost of Goods Sold" account for everything. Break it out. The whole point of job costing is to see which cost category is causing overruns.

How to code each transaction type to a job

Bills (subcontractors, suppliers)

Enter the bill, select the expense account (e.g. Subcontractor Costs), and in the Customer/Job column, select the sub-customer for that project. Make sure "Billable" is checked only if you plan to pass the cost through to the client.

Expenses / credit card charges

Same as bills — select the correct expense account and assign to the job in the Customer/Project field. Require your client to use separate cards per job or add job notes to every receipt.

Payroll

This is the hardest part. In QBO Payroll, you can assign hours to customers/jobs per employee per paycheck. Alternatively, book a weekly journal entry to distribute labor costs to jobs based on time records.

Material purchases (POs)

Create a Purchase Order in QBO and link it to the job. When the bill arrives, match it to the PO — it will automatically carry the job assignment.

The QBO reports to use for job costing

Once costs are coded correctly, these are the reports that matter:

  • Job Profitability Summary — one row per job, shows income, costs, and gross profit. Available on QBO Essentials and above.
  • Job Profitability Detail — drills into each job to show every transaction and cost category.
  • Budget vs. Actuals — compares actual costs to the budget entered on the estimate. Shows variance in dollars and percentage.
  • Profit & Loss by Customer — available on all plans, shows income and expenses per customer/job.

Budget vs. actual — how to set it up

For budget vs. actual to work in QBO, you need to create a budget or estimate for each job before costs start coming in. Here's the standard approach:

  • Create a QBO Estimate for the job with line items that match your cost categories
  • The estimate becomes the budget — it shows "expected costs" by category
  • As bills and expenses are entered, the Budget vs. Actuals report compares them to the estimate
  • Variance (positive = under budget, negative = over budget) shows up automatically

If your contractor doesn't create estimates before work starts, you can still run budget vs. actual by creating estimates retroactively — but it's much better to do it before the job begins.

What a complete job costing report should show

Column
What it shows
Source
Job name
Project identifier
QBO sub-customer
Contract value
Total invoiced/invoiceable
Invoices to date
Budget
Estimated total cost
QBO Estimate
Materials to date
Actual material costs
Bills/expenses coded to job
Labor to date
Actual labor costs
Payroll allocated to job
Subcontractors
Actual sub costs
Bills coded to sub account
Total actual cost
Sum of all cost categories
Calculated
Variance $
Budget minus actual cost
Calculated
Variance %
Variance as % of budget
Calculated
Status
Over/under/on budget
Calculated

Red flags to watch for in job costing

  • 🚩 Jobs with no costs coded to them

    Costs exist but aren't being assigned to jobs. This means your job costing reports are incomplete and the P&L is missing job-level detail.

  • 🚩 Labor costs all in overhead, none in jobs

    Payroll isn't being allocated to jobs. Labor is often the #1 cost for contractors — if it's not in job costing, the reports are meaningless.

  • 🚩 Large variance with no explanation

    A job that's 40% over budget with no change orders is either losing money or has a data entry problem. Either way it needs investigation.

  • 🚩 Contract value lower than costs to date

    The job is costing more than the entire contract value. The contractor is losing money on this job and may not know it.

Job costing reports — live from QBO, in seconds

ReconcileBook pulls your client's QBO data and builds the complete job costing report automatically — materials, labor, and subcontractors broken out per job, with budget vs. actual variance and over-budget alerts. Download as a PDF and send directly to your client.

Questions about job costing in QBO? Email us or browse more guides.