Job costing answers the question every contractor asks at 9 p.m. on a Sunday: "Did we actually make money on that job, or did it just feel busy?"
QuickBooks Online can answer it. It just won't do it on its own. The software only knows what you tell it, and if half your lumber receipts say "Home Depot" with no job attached, the report will cheerfully tell you the Henderson kitchen made a 61% margin (it did not).
This guide walks through the full setup, in order, with the reasoning behind each step. We assume you have never set this up before. If you have, skip to the step that's giving you trouble.
Before you start: what you need
You need three things before you touch a single setting.
- The right plan. Job costing with Projects is available in QuickBooks Online Plus and Advanced. Simple Start and Essentials don't include Projects. Check your plan under Settings, then Subscriptions and billing. Intuit changes plan features from time to time, so confirm on Intuit's current plan page before you upgrade [1].
- Admin access. You need to be a primary admin or company admin to change account settings.
- A list of your open jobs. Customer name, job name or address, contract amount, and start date. A spreadsheet is fine.
One honest warning: job costing only works if the whole team uses it. The office manager entering bills, the foreman buying supplies on the company card and whoever runs payroll all need to know which job each cost belongs to. The setup takes an afternoon. The habit takes a few months.
If you're still deciding whether job costing is worth it, our job costing guide for contractors explains what it shows you and why it matters before you get into the software.
Step 1: Turn on Projects
Projects is the feature QuickBooks Online uses for job costing. It groups every income and cost transaction for a job in one place.
- Click the gear icon (Settings) in the top right.
- Choose Account and settings, then the Advanced tab.
- Find the Projects section and turn on the option to organize all job-related activity in one place.
- Click Save, then Done.
You'll now see Projects in the left menu (in some versions it sits under Business overview or under the Get paid and pay menu). Menu names shift between QuickBooks updates, so if you can't find it, search "Projects" in QuickBooks Help [2].
Why this step matters: without Projects, people tend to fake job costing with sub-customers or classes. That works for a while, then breaks the moment one customer has three jobs at once.
Step 2: Build cost accounts that match how you actually spend
Your chart of accounts decides what the job reports can tell you. If every job cost lands in one account called "Job Expenses", you'll know a job lost money but not why.
Set up separate cost of goods sold (COGS) accounts for the main kinds of job cost:
| Account (Cost of Goods Sold) | What goes in it | Example |
|---|---|---|
| Direct Labor | Wages and burden for field crews working on jobs | Crew hours on the Henderson kitchen |
| Materials | Lumber, fixtures, supplies bought for a specific job | Cabinets, drywall, fasteners |
| Subcontractors | Payments to subs for job work | Electrician, plumber, painter |
| Equipment Rental | Rented equipment used on a job | Lift rental for 3 days |
| Permits and Job Fees | Permit fees, dumpster, inspections tied to a job | City building permit |
Office rent, the estimator's salary and the shop truck insurance are overhead, not job costs. They stay in operating expenses. Mixing overhead into job costs is the most common reason job reports look worse than reality.
For a full contractor chart of accounts, with account numbers and the reasoning behind each line, see our chart of accounts for contractors guide.
To add an account: go to Accounting (or Transactions), then Chart of accounts, then New. Set the account type to Cost of Goods Sold and pick the closest detail type.
Step 3: Set up products and services that point to those accounts
Items (QuickBooks calls them products and services) are how a line on a bill or invoice knows which account to hit.
Create items for your main cost and income types. For each item, set both an income account and an expense account if you buy and resell it:
- Materials (resale): income account "Job Income", expense account "Materials" (COGS). Tick "I purchase this product/service from a vendor".
- Subcontract work: expense account "Subcontractors" (COGS).
- Labor (billable): income account "Job Income", expense account "Direct Labor" (COGS).
Now when someone enters a bill with the item "Materials", QuickBooks books the cost to the right COGS account automatically. That's one less decision for the person entering bills at 4:55 on a Friday.
Step 4: Create a project for every open job
- Go to Projects and click New project.
- Name it in a way your team will recognize: "Henderson Kitchen, 14 Oak St" beats "Job 2026-117" (unless your crews really do talk in job numbers).
- Pick the customer. If the customer doesn't exist, add them first.
- Add the contract amount, dates and notes if your version shows those fields.
- Save.
Repeat for every open job. For finished jobs that still have costs coming in (a late sub invoice, a warranty callback), create the project too, or those costs float with nowhere to land.
One customer, many jobs? That's exactly what Projects handles well. A property manager with five buildings gets one customer and five projects.
Step 5: Tag every cost and every invoice to its project
This is the step that makes or breaks job costing. Every transaction for a job needs the project in the Customer/Project field. That includes:
- Bills from suppliers and subs. Tag each line, since one supplier bill can cover two jobs.
- Expenses and checks, including company card purchases.
- Invoices and estimates to the customer.
- Time entries for field staff (see Step 6).
- Journal entries for anything else, such as moving a cost from the wrong job to the right one.
If a line has a billable checkbox and you plan to pass the cost on to the customer, tick it. If you don't bill costs back, leave it unticked. The cost still counts against the job either way.
The bank feed trap. When you categorize transactions in the bank feed, QuickBooks lets you add a customer or project. If you use bank rules to auto-categorize, the rule can't know which job a Home Depot charge was for. So for job costs, either review each charge by hand or let the rule set the account and leave the job for a person to add. Our guide to QuickBooks bank rules explains how to set rules that save time without hiding job costs.
Make it a team habit: ask whoever buys supplies to write the job name on the receipt, or snap a photo and text it with the job name. A receipt app that lets people pick the job at the time of purchase is even better.
Step 6: Handle labor (the part most setups get wrong)
Labor is usually the biggest job cost and the one most often missing from job reports. How you capture it depends on your payroll.
If you use QuickBooks Payroll with time tracking: have field staff log time against the project. Payroll costs then follow the hours to each job. Check that the employee's pay rate is current, because job reports use it.
If you use another payroll provider: you have two choices.
- Enter time activities in QuickBooks against each project and set a labor cost rate for each worker, so the project carries labor cost even though payroll runs elsewhere. Where this setting sits depends on your QuickBooks version, so search "labor cost rate projects" in QuickBooks Help.
- Or, after each payroll, record one journal entry that moves wages from a payroll clearing account to Direct Labor, split by project based on hours worked.
Don't forget labor burden. Employer payroll costs, workers' comp and benefits make an hour of labor cost more than the hourly wage. Many contractors use a burden rate (for example, wage plus a set percentage) in their cost rates so the jobs carry a realistic labor cost. Work out your own rate with your accountant; there's no universal number.
Step 7: Read the reports, once a month at least
Once costs are flowing, open these reports:
| Report | What it tells you | When to check |
|---|---|---|
| Project Profitability (in the Projects tab) | Income, costs and profit for one job | Monthly, and at job close |
| Profit and Loss by Customer | All jobs side by side | Monthly |
| Unbilled Time and Expenses | Costs you meant to bill but haven't | Before you send invoices |
| Time Cost by Employee or Vendor | Where labor hours went | Monthly |
| Estimates vs Actuals (Plus and Advanced) | Whether jobs are running over the estimate | Weekly on large jobs |
What to look for: jobs with no labor (labor wasn't tagged), jobs with a margin that's too good to be true (costs are missing), and costs sitting on a job that finished three months ago (a mis-tag).
Step 8: Add the pieces job costing doesn't cover by itself
Projects show what's been billed and spent. They don't show how far along a job is. For longer jobs, you'll also want:
- A work-in-progress (WIP) schedule that compares percent complete to percent billed, so you can see over- and under-billing. Our WIP schedule guide shows how to build one from your QuickBooks numbers.
- Retainage tracking if customers hold back part of each payment. Record retainage receivable in its own balance sheet account so it never hides inside regular receivables.
- A revenue method that fits your contracts. For how books recognize revenue on long jobs, read percentage of completion vs completed contract.
Classes or Projects? Use both, for different questions
Projects answer "how did this job do?" Classes answer "how did this part of the business do?" A remodeler might use classes for Residential and Commercial, and projects for each individual job. If you're unsure which to use, our QuickBooks classes vs locations guide covers classes in more depth.
Common mistakes (and the quick fix for each)
| Mistake | What it does to your reports | Fix |
|---|---|---|
| Costs tagged to the customer, not the project | Costs don't show on the job report | Re-tag to the project; customer-level costs only for true customer-wide costs |
| Overhead coded to COGS | Every job looks worse than it is | Move office, admin and shop costs to operating expenses |
| Labor missing | Jobs look wildly profitable | Set up time tracking or a monthly labor allocation entry |
| One "Job Costs" account | You can't tell materials from subs | Split into the accounts in Step 2 |
| Old jobs never closed | Late costs land on the wrong job | Mark finished projects Completed after the last bill is in |
When to get help
Job costing setup is a one-time job. Keeping it accurate is a monthly job: checking tags, fixing mis-coded bills, allocating labor and reconciling the accounts the job reports rely on. That monthly review is a big part of what ABFI does for contractors and trades, with a controller review of the close each month.
If you'd rather compare options first, see our lists of the best accounting software for contractors and the best bookkeeping services for contractors.
Keep reading
- Job costing for contractors: what it shows and why it matters
- Chart of accounts for contractors
- How to build a WIP schedule
Sources
- Intuit, QuickBooks Online plans and pricing, quickbooks.intuit.com/pricing. Checked November 6, 2026.
- Intuit QuickBooks Community, "How do I do job costing for an electrical services contractor on QuickBooks?", quickbooks.intuit.com/community/manage-suppliers-and-expenses-for-85/how-do-i-do-job-costing-for-an-electrical-services-contractor-on-quickbooks-or-is-it-an-option-176148. Checked November 6, 2026.
- Intuit, QuickBooks Online Help, search "Projects" and "Project profitability report", quickbooks.intuit.com/learn-support. Checked November 6, 2026.
Questions owners ask
Can I do job costing in QuickBooks Online Essentials?
Not with Projects. Projects is in Plus and Advanced. On Essentials, some businesses use sub-customers to approximate it, but reporting is weaker and labor costs are harder to track. If job profit matters to you, Plus is the usual starting point.
Should I use classes or projects for jobs?
Projects for individual jobs, classes for broader parts of the business such as residential and commercial. Using classes for every job gets messy fast because the class list grows forever.
How do I get payroll costs into each job if I don't use QuickBooks Payroll?
Either enter time against each project with a labor cost rate per worker, or post one journal entry after each payroll that moves wages to Direct Labor split by project based on hours.
Why does my job show a huge profit?
Usually because costs are missing: labor not tagged, supplier bills entered without the project, or card charges sitting in the bank feed. Check Unbilled Time and Expenses and the uncategorized transactions first.
How often should I review job costs?
Monthly at minimum, and weekly on large or fixed-price jobs where a cost overrun needs catching early.
Want job reports you can trust every month?
ABFI sets up job costing in your QuickBooks, then closes your books monthly with every cost on the right job. Start with a complimentary Business Accounting Diagnostic and we'll show you what your current job reports are missing.