Contractor Bookkeeping
Job Costing for Contractors in QuickBooks
Two projects can bring in the same revenue and still have completely different profit margins. Job costing is how you find out which jobs actually make you money — before it's too late to fix it.
Most contractors know their total revenue for the month. Far fewer know whether the kitchen remodel in March actually turned a profit once every material receipt, labor hour, and subcontractor invoice is counted. That gap is exactly what job costing closes.
Job costing means tracking every cost — and every dollar of revenue — against the specific project it belongs to, instead of lumping everything into one general ledger. Done right in QuickBooks, it turns your books into a tool for pricing future jobs, not just a record for tax season.
What goes into job costing
To get an accurate picture of a project's profitability, every cost category needs to be tagged to that job — not just recorded in general expense accounts.
Materials
Lumber, concrete, fixtures, and every item purchased for a specific job.
Labor
Hours worked by your crew and subcontractors, allocated to the correct project.
Equipment & subs
Rental costs, equipment use, and subcontractor invoices tied to the job.
Overhead allocation
A fair share of insurance, office costs, and admin time spread across jobs.
Change orders
Extra costs and revenue from scope changes, tracked separately from the original bid.
Job profitability
Revenue minus total job costs — the number that tells you if a project was worth it.
How job costing works in QuickBooks Online
QuickBooks Online supports job costing through Projects(or sub-customers, depending on your plan). Every job is set up as its own project, and every transaction — bills, expenses, timesheets, invoices — gets linked to it.
- Each job is created as a Project or a sub-customer under the client.
- Every bill, expense, and purchase is tagged to that project as it's entered.
- Billable time and materials are marked so they can be invoiced back to the client.
- QuickBooks generates a Profitability report showing income, costs, and margin per job.
The result is a single report that shows exactly where a job stands — not weeks later during reconciliation, but as the project is still underway.
A job that looks profitable on the invoice can quietly lose money once labor overruns and change orders are factored in. Job costing is what surfaces that before you bid the next similar project.
Why it matters for contractors specifically
Unlike many small businesses, contractors run several "mini-businesses" at once — one per active job — each with its own crew hours, material costs, and timeline. A single profit-and-loss statement for the whole company hides which jobs are actually carrying the business and which are draining it.
Job costing also makes future bids more accurate. Once you know your real cost per square foot or per crew-hour on past jobs, you can price new estimates with confidence instead of guessing.
Common job costing mistakes to avoid
- Recording expenses to a general "Materials" account instead of the specific job.
- Not tracking labor hours by project, only by pay period.
- Forgetting to log change orders separately from the original scope.
- Skipping overhead allocation, which overstates how profitable each job looks.
- Reviewing job profitability only after the project closes, instead of while it's active.
Setting job costing up correctly from the start — and keeping it updated as the job progresses — is what turns QuickBooks from a record-keeping tool into a decision-making one.
Not sure if your jobs are actually profitable?
TrueBooksHQ sets up and manages job costing in QuickBooks for contractors across the United States, so you always know where each project stands.
Contact Us →