Job Costing in QuickBooks: The Contractor’s Full Setup Guide
Job costing in QuickBooks works, with two conditions almost nobody meets: every cost has to be tagged to a job the moment it enters, and every cost has to actually enter. Most contracting businesses fail the second condition without knowing it, which is why the job profitability report looks fine while the bank account disagrees. This guide is the honest setup, the traps in order of expense, and the line where QuickBooks stops being able to help.
Projects, classes, or items: pick the right skeleton
QuickBooks Online gives you three ways to slice job money, and mixing them is the first mess we untangle at most companies:
- Projects are the right backbone for job costing in QBO today. One project per job, attached to the customer. Every invoice, expense, bill, and timesheet gets tagged to it.
- Classes are for slicing the whole business (by crew, by division, by location), not for individual jobs. Using classes as jobs runs out of road at scale.
- Items (products and services) are your cost codes: the categories inside a job. Set up a short list that mirrors how you estimate: labor, materials, subs, equipment, permits. If your estimate and your item list use different categories, estimated versus actual will never line up.
The labor burden trap
The most expensive job costing mistake in the trades is counting wages but not burden. An employee at $30 an hour costs $40 or more with payroll taxes, comp, insurance, and PTO. Book jobs at wages alone and every labor-heavy job looks about 25% more profitable than it is, which quietly rewards exactly the jobs that lose money. Fix: cost jobs at a burdened rate per crew role, reviewed twice a year.
Where the costs leak
QuickBooks can only cost what reaches it with a job tag. On a real crew, three leaks are almost universal:
- Hours live in the field app or the group chat, and get entered late, rounded, or attached to the wrong job.
- Materials live on card statements. A supply-house run on the company card lands in QuickBooks as a lump, jobless, weeks later.
- The estimate lives in a spreadsheet that QuickBooks has never met, so estimated-versus-actual, the one comparison that changes bidding behavior, does not exist.
A job profitability report that is missing burden, late hours, and untagged materials is not a report. It is a rumor with columns.
The reports worth running (once the data is real)
Three reports do the actual work: Project profitability (QBO) per open job, week by week rather than at closeout; an estimated versus actual comparison per job and per cost code, which QBO only half-supports and usually needs outside assembly; and a monthly work-in-progress schedule, which your accountant and your bank will ask for and QuickBooks does not produce on its own.
When to wire, when to switch
The industry reflex is to buy job costing software when the reports go quiet. Sometimes that is right. But if your books are in QuickBooks and the crew already uses a field app they tolerate, switching platforms mostly relocates the problem: the new tool still cannot see the card statements or the spreadsheet. The alternative is wiring what you already run so the hours, materials, and estimates flow into one place with the job tag intact, and someone checks the result every day. That is the service we built ProvesTrue to be, and it is why we do not ask your crew to learn anything new.
Want the answer without the setup project? Bring us one job you are not sure made money. Fifteen minutes, no slides, and you leave knowing which of your tools hold that job’s real costs.
Bring me one job