Job Costing in QuickBooks: How to Track Costs by Job
Jul 9, 2026
PDF, JPG, PNG, BMP, HEIC, TIFF
Upload your bank statement
Drop file here or click to upload
PDF, JPG, PNG, BMP, HEIC, TIFF
Uploading...
To do job costing in QuickBooks, you set up each job as a Project (QuickBooks Online Plus or Advanced) or as a Customer:Job (QuickBooks Desktop), then tag every piece of income and every cost to that job as you enter it. Assign each bill, check, credit card charge, and labor hour to the right job using the Customer/Project field. Once the income and costs are attached, you run a job profitability or Project profitability report to see revenue, cost, and gross profit for each job. Accurate numbers depend on getting every transaction tagged, which is why importing your full statement history matters.
Last updated July 2026.
What job costing is and why it matters
Job costing is the practice of tracking income and expenses for each individual job or project rather than lumping everything into company-wide totals. A remodel, a build, a landscaping contract, or a fixed-fee client engagement each becomes its own bucket. You collect the materials, labor, subcontractor invoices, and equipment costs that belong to that job, then compare them against what you billed. The payoff is knowing which jobs actually made money and which ones quietly lost it. Without job costing, a contractor can post a healthy year on the Profit and Loss while three individual jobs bled cash, and there is no way to see it. Good job cost data also makes your next estimate sharper, because you are bidding from real history instead of a guess.
QuickBooks Online Projects vs Desktop Customer:Job
QuickBooks handles job costing two different ways depending on the product. In QuickBooks Online, the Projects feature is the job costing tool, and it is available on the Plus and Advanced plans. A project is attached to a customer and collects the income and costs you tag to it. In QuickBooks Desktop (Pro, Premier, Contractor, or Enterprise), the equivalent is the Customer:Job structure, where each customer can have one or more jobs listed under them. Desktop gives you more granular, item-level reporting and estimate-versus-actual detail, which is why many established construction shops stay on it. Online is simpler and cloud based, and it calculates profitability in real time on the project screen. The core discipline is the same on both: attach every dollar to a job.
How to set up job costing in QuickBooks
The setup differs slightly between Online and Desktop, but the sequence is similar. Do this once at the start and the tagging becomes routine.
- Turn on the feature. In QuickBooks Online, go to Settings, then Account and settings, then Advanced, and turn on the setting to organize all job-related activity in one place. In Desktop, Customer:Job tracking is on by default.
- Build your products and services (items). Create service and non-inventory items for the work you do, such as framing, concrete, or design hours. In Desktop, set up two-sided items so each one has both an income account and an expense account. This is what feeds job costing detail.
- Set up cost categories. Decide how you want costs grouped: materials, labor, subcontractor, equipment, and overhead. You can use accounts, items, or classes to separate them.
- Create the job or project. In Online, open the Projects menu, select New project, name it, and pick the customer. In Desktop, add a Job under the customer in the Customer Center.
- Tag as you go. From this point, every expense, bill, check, and time entry gets the job selected in the Customer/Project or Customer:Job field.
Assigning bank and card transactions to a job when you import a statement
Most job costs hit a bank account or a credit card before they ever touch a form: supply house runs, fuel, equipment rentals, subcontractor payments. When those transactions come into QuickBooks, each one needs a job attached or it will never show up in your job cost totals. As you categorize a downloaded bank or card line, set the Customer/Project field (Online) or the Customer:Job column (Desktop) along with the category, and mark it billable if you plan to pass it through. The catch is that live bank feeds usually only pull the last 90 days, so older costs on a job that started months ago are simply missing. That is where a statement import fills the gap. You can convert your PDF statements to a .qbo file so every job-related transaction lands in QuickBooks, then tag each one to the correct job. If you run a construction business, the workflow to convert bank statements to QuickBooks for construction walks through the same import path, and you can import into QuickBooks Online the same way.
Tracking the main cost buckets
Job costs fall into a handful of categories, and each one has a natural home in QuickBooks. Materials and subcontractor costs usually arrive as bills or card charges, labor comes through payroll or time tracking, and equipment and overhead need a deliberate rule so they do not distort a single job. The table below maps the common cost types to how you record and tag them.
| Cost type | How it enters QuickBooks | Job costing treatment |
|---|---|---|
| Materials | Bill, check, or credit card charge from the supplier | Enter on the item or category line and select the job in Customer/Project; mark billable if reimbursed |
| Labor | Payroll with time tracking, or timesheets by project | Assign hours to the job so payroll cost flows to the project; use hourly cost rates if payroll is not connected |
| Subcontractor | Bill or check to the sub, often against a 1099 vendor | Tag the job on the expense line; keep sub costs in their own account for clean reporting |
| Equipment | Rental invoice, or an internal charge for owned equipment | Tag rentals directly to the job; allocate owned-equipment use with a consistent hourly or daily rate |
| Overhead | Rent, insurance, office costs, general fuel | Leave unassigned or spread with a defined allocation method; do not dump it on one job |
Labor is where many contractors lose accuracy. If your payroll is connected, QuickBooks Online can push wage cost to the project once you run payroll; if it is not, you can enter an estimated hourly cost rate per employee to get a faster, rougher number. On the accounts payable side, many contractors also automate paying subcontractor invoices so the costs flow back to the right job without manual re-keying.
Running the job profitability report
Once income and costs are tagged, the report ties it together. In QuickBooks Online, open the Projects menu, select a project, and the Overview tab shows income, costs, and gross profit in real time; for a printable version, go to Project Reports and run Project Profitability, then filter by customer, vendor, and date range. In QuickBooks Desktop, go to Reports, then Jobs, Time and Mileage, and choose Job Profitability Summary or Detail; the Contractor and Enterprise editions add estimate-versus-actual reports so you can see where a job ran over its bid. Read these reports job by job. A negative or thin margin on one job tells you where to look, whether it was underbid, hit with change orders, or dinged by material costs you did not pass through.
Common mistakes that break job costing
The most frequent problem is untagged expenses. A single supply run categorized without a job never reaches the profitability report, so the job looks more profitable than it is. Second is posting overhead to a job: rent, general insurance, and office costs are not direct job costs, and pushing them onto one job distorts its margin while flattering the others. Third is missing statement history. If a job spanned six months and your bank feed only reached back 90 days, the earliest material and subcontractor costs are absent, and the numbers are wrong from the start. Import the full statement range, tag every line, and reconcile so the job cost total matches what actually left your accounts. Finally, be consistent about billable versus non-billable and about which account each cost type lives in, because sloppy categorization makes every report harder to trust.
Frequently asked questions
Can QuickBooks do job costing?
Yes. QuickBooks Online does job costing through the Projects feature on the Plus and Advanced plans, and QuickBooks Desktop does it through the Customer:Job structure on Pro, Premier, Contractor, and Enterprise. In both, you tag income and costs to a job, then run a profitability report to see revenue, cost, and gross profit per job.
What is job costing?
Job costing is tracking the income and expenses of each individual job or project separately instead of company-wide. You attach materials, labor, subcontractor, and equipment costs to a specific job, then compare them to what you billed. It shows which jobs actually made money and gives you real data to bid future work more accurately.
How do I track job costs in QuickBooks Online?
Turn on Projects in Account and settings, then create a project tied to a customer. On every bill, check, expense, and downloaded bank or card transaction, set the Customer/Project field to that job. Assign labor through connected payroll or hourly cost rates. The project Overview and Project Profitability report then show income, costs, and profit.
What is the difference between Projects and classes in QuickBooks?
Projects track profitability for a specific job or customer engagement, pulling together its income and costs with built-in job costing reports. Classes segment your whole business by department, location, or line of work across all customers. Projects answer did this job make money; classes answer how each part of the company is performing. Many contractors use both together.
How do I run a job profitability report?
In QuickBooks Online, open Projects, pick a project to see the Overview, or go to Project Reports and run Project Profitability, filtering by customer and date. In QuickBooks Desktop, go to Reports, then Jobs, Time and Mileage, and select Job Profitability Summary or Detail. Both show income, cost, and gross profit per job.
Convert your first statement free.
Upload a PDF bank statement, get a QuickBooks-ready .qbo back in seconds. No card to try it.