
Most specialty contractors lose 8-15% of their profit margins to QuickBooks job costing mistakes they can't even see. The four setup traps below turn profitable bids into margin killers, and fixing them takes 90 minutes of focused work this weekend.
Why QuickBooks job costing fails specialty contractors from day one
QuickBooks Desktop had job costing figured out 15 years ago. QuickBooks Online launched with a watered-down version that assumes every contractor runs the same type of business.
Specialty contractors get hit hardest. Your electrical work, plumbing runs, or HVAC installs have different cost structures than general contracting. But QuickBooks Online's default setup treats labor like materials and jobs like customers.
The result? Average gross profit margins for specialty trade contractors should run 15-25% according to Aladdin Bookkeeping (2025), but contractors using broken QuickBooks setups report margins closer to 7-12%. The difference isn't market conditions — it's invisible cost bleeding.
Trap 1: Using customers instead of projects for job tracking
The first mistake happens in setup week one. QuickBooks suggests creating each job as a "customer" with sub-customers for individual projects.
This breaks when you have repeat customers. ABC Construction becomes "ABC Construction: Kitchen Remodel" and "ABC Construction: Bathroom Addition" — but your reports show two customers instead of one customer with two profitable (or unprofitable) jobs.
The fix: Use Projects, not sub-customers- Create ABC Construction as one customer
- Create "Kitchen Remodel - 123 Oak St" as a Project under that customer
- Run job profitability reports by Project, not Customer
- Track customer lifetime value separately from individual job performance
Projects give you job-level P&L statements. Customer sub-accounts give you customer confusion.
What's the difference between items and classes in QuickBooks job costing
This is where 60% of QuickBooks job costing disasters start. Items and Classes serve completely different functions, but QuickBooks doesn't explain the difference clearly.
Items are what you sell — your products and services. "Electrical rough-in," "200-amp service upgrade," "LED fixture installation." Items carry your pricing, cost basis, and inventory tracking.
Classes are where you work — your locations, divisions, or cost centers. "Residential Division," "Commercial Projects," "Service Calls." Classes let you slice your entire P&L by business segment.
| Function | Items | Classes |
|---|---|---|
| Purpose | What you sell | Where you work |
| Examples | Electrical rough-in, Service call | Residential, Commercial, Service |
| Reports | Profitability by service type | Division performance |
| Required | Every invoice line | Optional but recommended |
The disaster happens when contractors create Items for jobs instead of services. "Smith Kitchen Job" becomes an Item, then "Johnson Bathroom Job" becomes another Item. Six months later, you have 200 job-specific Items and no way to analyze which services actually make money.
How to track labor costs per job in QuickBooks Online without losing your mind
Labor tracking breaks more QuickBooks job costing setups than any other factor. The default payroll integration assumes you want to track labor by employee, not by project.
But specialty contractors need job-level labor costs to bid accurately. When your electrician spends Tuesday morning on the Morrison project and Tuesday afternoon on the Davis project, both jobs need their fair share of that $32/hour burden rate.
The three-step labor allocation system that works:- Set up time tracking by project — Use QuickBooks Time (formerly TSheets) or integrate with your existing time tracking. Every hour gets tagged to a specific project before payroll runs.
- Create labor Items by skill level — "Journeyman Electrician," "Apprentice," "Helper." Don't create separate Items for each employee.
- Run weekly labor cost allocation — Import time data to job costing reports every Friday. Monthly allocation creates too much lag to catch overruns early.
The key insight: track time by project, but pay employees by total hours. Your payroll stays simple while your job costing stays accurate.
IRS Section 263A compliance trap for growing specialty contractors
Here's the compliance nightmare most contractors don't see coming. The threshold for average gross receipts over the previous three tax years requiring compliance with IRS Section 263A is $25 million according to CliftonLarsonAllen (August 2023).
Section 263A requires "uniform capitalization" — you must allocate indirect costs (shop rent, office overhead, truck payments) to specific jobs, not just expense them monthly. QuickBooks Online's default setup doesn't handle this automatically.
When specialty contractors hit the $25 million threshold, their QuickBooks job costing suddenly becomes a compliance liability. The IRS wants to see how much overhead went into each completed project, allocated based on direct labor or direct costs.
The overhead allocation setup that passes audits:- Create overhead cost pools in QuickBooks Classes
- Track direct labor hours by job (you're already doing this above)
- Calculate overhead rates monthly: total overhead ÷ total direct labor hours
- Apply overhead to jobs based on labor hours consumed
- Document the allocation method for your CPA
Smaller contractors can ignore this complexity. But if you're approaching $8-9 million annually and growing, build the overhead allocation system before you need it.
Davis-Bacon Act compliance requires bulletproof labor documentation
Federal construction projects over $2,000 trigger Davis-Bacon Act requirements according to zlien (September 2025). That means prevailing wage compliance and detailed payroll documentation that ties specific workers to specific projects on specific days.
QuickBooks Online fails Davis-Bacon audits when contractors use shortcuts in labor allocation. "Close enough" job costing becomes "failed compliance" when federal investigators want to see exactly how many hours John Smith worked on the courthouse electrical project versus the private office building next door.
The documentation standard is simple: every hour of labor must be traceable to a specific job with a specific date range. QuickBooks can handle this, but only if you set up labor tracking correctly from day one.
Trap 4: Monthly WIP schedules that hide job cost overruns
The final setup trap is invisible until it kills a big job. QuickBooks Online reports job costs monthly, but specialty contractors need weekly work-in-progress (WIP) visibility to catch overruns before they compound.
A commercial electrical project that goes 15% over budget in week three becomes a 35% disaster by month end. Monthly reporting means you discover the problem after it's unfixable.
Construction input prices are up 6.2% year-to-date according to Associated Builders and Contractors (April 2026). Material cost increases compound weekly, not monthly. Your job costing needs to match that pace.
The weekly WIP system that catches overruns early:- Run job profitability reports every Friday afternoon
- Compare actual costs to budget for all active projects
- Flag any job running more than 5% over budget
- Update project completion percentages based on work actually completed
- Adjust upcoming week's work plans based on cost performance
The contractors who figure out weekly WIP stop losing money on change orders. The ones who wait for monthly reports keep blaming material price increases.
The hidden cost: QuickBooks job costing doesn't integrate with bidding
Here's the setup mistake that compounds over time. QuickBooks tracks job costs after the work happens, but most specialty contractors bid jobs in spreadsheets or separate estimating software.
The disconnect means you never learn from your bidding mistakes. You estimate electrical rough-in at 16 hours, but QuickBooks shows you actually spent 22 hours. Six months later, you bid the next similar job at 16 hours again because your bidding software never learned from the QuickBooks reality.
The solution isn't changing software — it's changing process. Your estimating needs to reference actual job costs from completed projects, not industry averages or gut feelings.
| Bidding Input | Accuracy Rate | Source |
|---|---|---|
| Your actual job costs | 85-90% | QuickBooks completed projects |
| Industry cost guides | 60-70% | RS Means, similar |
| Experience/gut feeling | 45-55% | Memory |
The most profitable contractors run this feedback loop monthly: update estimating templates with actual costs from QuickBooks completed job reports. It takes 30 minutes and prevents repeating the same bidding mistakes.
What to do next
Your QuickBooks job costing audit can happen this weekend. Block out 90 minutes and work through these steps in order:
- Convert customers to projects — Export your current job list and rebuild it using the Projects feature instead of sub-customers
- Clean up your Items list — Delete job-specific Items and create service-based Items you'll use across multiple projects
- Set up labor tracking — Connect time tracking to projects and create labor Items by skill level, not by employee
- Build your WIP schedule — Create a weekly job profitability report template and commit to running it every Friday
- Document your methods — Write down your cost allocation approach for your CPA and for compliance purposes
The work is front-loaded but the results compound. Every project you complete with proper job costing makes your next estimate more accurate.
Need this handled by someone who does it every day?
Salisbury Bookkeeping is the construction-only bookkeeping + fractional CFO firm that contractors trust to get their books, WIP schedules, and job margins right. And BuilderCFO — our dashboard — gives you real-time job cost visibility, 13-week cash forecasting, and a margin-by-job view in one screen.
See how Salisbury Bookkeeping helps contractors like you → · Try BuilderCFO →
Further reading: Contractors who want a done-for-you financial operation can see the full scope on the fractional CFO page.
Frequently Asked Questions
- Should I use Items or Classes for job costing in QuickBooks Online?
- Use both but for different purposes. Items track what you sell (services and products), while Classes track where you work (divisions or locations). Never create Items for specific jobs.
- How often should I run job cost reports in QuickBooks?
- Weekly, not monthly. Friday afternoon job profitability reports catch cost overruns early enough to adjust the following week's work plans and prevent disasters.
- What's the difference between Projects and sub-customers for contractors?
- Projects give you job-level P&L statements and proper profitability tracking. Sub-customers create reporting confusion when you have repeat clients with multiple jobs.
- Do I need to track overhead allocation in QuickBooks for every project?
- Only if your average gross receipts exceed $25 million over three years, which triggers IRS Section 263A uniform capitalization requirements. Smaller contractors can skip this complexity.
- How do I set up QuickBooks for Davis-Bacon Act compliance?
- Track every labor hour to specific jobs with specific dates. Use time tracking software that integrates with QuickBooks and maintain detailed payroll records for federal projects over $2,000.
- Can QuickBooks Online handle complex specialty trade job costing?
- Yes, but only with proper setup. The default configuration assumes general contracting workflows and breaks for electrical, plumbing, and HVAC cost structures.
- Should I create separate Items for different employees in QuickBooks?
- No. Create Items by skill level (Journeyman, Apprentice, Helper) not by individual employee. This keeps your Items list manageable and your labor costing consistent.
- How do I connect my bidding software to QuickBooks job costs?
- Manually update your estimating templates monthly with actual costs from completed QuickBooks projects. This feedback loop improves bidding accuracy from 60% to 85-90%.
Book a free 30-minute call.
You walk away with a list of leaks in your books. Free. No pitch.
Book a free call