If you run a construction or contracting business, job costing is not optional β it is the only way to know whether each individual project is making or losing money. Without it, you might finish a $500,000 project and genuinely not know if you made $50,000 or lost $20,000 until tax season.
QuickBooks Online has solid job costing tools built in β but the default setup does not turn them on, and most bookkeepers who are not construction specialists never configure them correctly. This guide walks through the complete setup, the way we do it for our contractor clients.
Step 1: Enable Projects in QBO Settings
Job costing in QuickBooks Online runs through the Projects feature (previously called Jobs). Before anything else, turn this on:
- Go to Settings β Account and Settings β Advanced
- Under "Projects" toggle it On
- Save and close
You will now see a "Projects" tab in your left-hand navigation. Every client project you create here becomes a tracking bucket for all costs and income related to that job.
Step 2: Set Up Your Chart of Accounts for Construction
Your chart of accounts needs to reflect how a construction business actually spends money. The default QBO chart of accounts is built for retail or service businesses β it is wrong for construction. Here are the key categories you need:
- Direct Job Costs: Labour (direct), Materials, Subcontractors, Equipment Rental, Permits & Inspections
- Indirect Job Costs / Overhead: Insurance, Tools & Small Equipment, Vehicle Expense, Project Management Software
- Contract Revenue: Separate income accounts per project type if needed
The critical principle: every expense that can be tied to a specific job must be coded directly to that job. Overhead is what you cannot tie to a specific project.
Step 3: Create Your First Project and Add Sub-Customers
In QBO, go to Projects β New Project. Link it to a customer (the project owner) and give it a name that matches how you reference the job internally (e.g. "Smith Residence β Foundation 2025").
For large projects with multiple phases, create the main project and then sub-customers for each phase: Site Prep, Foundation, Framing, Mechanical, Finishing. This lets you see cost versus budget at both the total project level and the phase level.
Step 4: Use Classes for Cost Types
Turn on Class tracking (Settings β Advanced β Categories β Track classes). Use classes to track cost types across all jobs:
- Labour
- Materials
- Subcontractors
- Equipment
- Other Direct Costs
The combination of Project (which job) + Class (what type of cost) gives you a powerful two-dimensional view of where your money is going.
Step 5: Record Every Transaction Against a Project
Every time you enter a bill, expense, or time entry, assign it to a project. This is the discipline that makes job costing work. The most common failure point is inconsistency β some transactions get coded to a project, some do not, and your reports become meaningless.
Best practice: review your open projects at the end of every week and check for any unassigned transactions that should have been coded to a job.
Step 6: Run the Job Profitability Report
Once transactions are coded correctly, go to Reports β Job Profitability Summary. This shows every project with revenue, costs, and margin side by side. If a project has negative margin, you now know immediately β not six months after the job is finished.
Run this report monthly. It is the most important report a contractor can read.
Common Mistakes to Avoid
- Not assigning owner draws to jobs β if you take owner draws, do not code them to job costs
- Mixing overhead with direct costs β your job profitability will be distorted
- Using one big "Construction" expense account β too vague, provides no useful data
- Not reconciling the project balance to actual invoices issued β always tie out
Need this set up for your business?
Our construction accounting team handles Buildertrend β QBO integrations, job costing setup, and monthly WIP reporting for contractors across the US. We get the setup right the first time.
Book a Free Setup Call β