Most contractors know whether the business made money this year. Far fewer know which specific jobs made money and which lost it. Job costing answers that question — and the answer is usually surprising.
Job costing is the difference between running a contracting business and running on instinct. Without it, you finish a year with a profit number and a vague sense of which jobs went well. With it, you know — line by line — exactly where your money came from.
I see contractors who’ve been in business for 10 years discover, the first time they look at job costing data, that one client they’ve been working with for years is consistently unprofitable. Or that a category of work they assumed was bread and butter is their thinnest margin.
QBO has two ways to track jobs: sub-customers (older) and Projects (newer, introduced 2017, now recommended). Projects is better because it has a dedicated project dashboard, integrates with QuickBooks Time for labor tracking, and handles unbilled costs.
From the gear icon → Account and settings → Advanced → Projects → toggle on “Organize all job-related activity in one place.” A “Projects” tab appears in the left sidebar. From there: New Project → enter project name, assign customer, optionally add start date.
Pick a project naming convention and stick to it. A common one: [YYYY-MM] [Customer last name] - [Job type]
The principle: job-related costs live in Cost of Goods Sold (COGS), not Expenses. The reason: QBO’s project P&L report calculates gross profit by job (revenue minus COGS). If you put materials, subcontractor costs, and job supplies under “Expenses,” your project gross profit numbers will be inflated and useless.
For a contractor, COGS should include: Materials — Direct Job Costs, Subcontractor Costs — 1099, Equipment Rental (for specific jobs), Permits and Inspection Fees, Job Supplies — Consumable, Direct Job Labor.
Every transaction that touches a job needs the project field populated. The biggest place this falls apart: bulk transactions that span jobs. You bought $800 of lumber for three jobs. You have to split the transaction in QBO and assign portions to each project.
The discipline that makes this sustainable: get specific receipts at the time of purchase. Have the lumber yard ring you up separately for each job.
Three approaches: (1) Daily summary entry — cheap, low-tech, prone to memory error. (2) QuickBooks Time (formerly TSheets) — mobile app with GPS clock-in, syncs directly to QBO Projects. ~$20/month base. Best mid-tier option. (3) Buildertrend or CoConstruct — industry-specific construction management software. Overkill for smaller contractors.
The whole point of job costing. What to look for: Gross profit percentage by job — a $5k job at 45% is more valuable than a $20k job at 8%. Jobs that ran long — labor allocation should be higher. Customers whose jobs consistently underperform. Job types that consistently overperform.
The QuickBooks Online for General Contractors course walks through job costing setup with a real sample contractor file.
Not splitting receipts. A single $800 receipt for three jobs gets thrown against one. Not job-costing overhead time. Hours spent doing admin and driving between jobs are still costs. Backfilling job costs at month-end. Job costing only works at the moment of entry. Tag at entry or your data is junk.
Foad is a federally licensed Enrolled Agent who writes about tax and bookkeeping for small businesses.