Cost Code Audit & Cleanup

Job Costing in QuickBooks for Builders: The Setup That Actually Works

QuickBooks is the most widely used accounting tool in construction. Most builders use it for invoicing, payroll, and taxes. Almost none use it for actual job costing. That gap is why profit looks fine on the P&L but disappears when you look at individual projects.

The Short Version

I have onboarded over 312 construction companies on their financial systems, and the single most common pattern is a QuickBooks setup built for the accountant, not for the builder. Standard QuickBooks setup tracks money. Construction job costing tracks where specific money went on a specific project, by trade, by phase, and by cost type. Those are not the same thing, and one setup serves both purposes poorly. The good news: QuickBooks absolutely handles construction job costing — but only when configured correctly from the start. This article walks through the setup that gives builders real gross margin visibility by project, without hiring a fractional CFO or switching software.

Sound Familiar?

If you recognize these patterns in your QuickBooks setup, you are using it for accounting compliance but not for construction job costing.

What We Found

Why Standard QuickBooks Setup Fails Construction Job Costing

When a bookkeeper or accountant sets up QuickBooks for a construction company, they almost always default to the standard chart of accounts: income, cost of goods sold, operating expenses, and a few sub-accounts for major expense categories. This setup is designed to produce a clean P&L and make tax filing straightforward. It is not designed to answer the question every construction owner actually needs answered: which of my active jobs are profitable right now?

There are two fundamental differences between accounting-focused QuickBooks and job costing-configured QuickBooks:

The account structure problem: Standard setups route all construction costs to broad accounts — "Subcontractors," "Materials," "Labor" — without any project-level attachment. Your P&L tells you total subcontractor spend for the year. It cannot tell you what you spent on subcontractors for 123 Oak Street versus 456 Maple Drive. That distinction is the foundation of job costing.

The items-versus-accounts problem: QuickBooks has two ways to record a cost: through an account directly or through a line item (called an "Item" in QuickBooks). Most bookkeepers use accounts. Job costing requires items. When you use a service item tied to an account and a job, QuickBooks can generate a P&L by job that shows revenue versus costs for that specific project. When you use accounts directly, that granularity disappears.

What We Find in Almost Every Audit

When we audit a new client's QuickBooks, we almost always find the same configuration: invoices posted to accounts, costs posted to accounts, and no Customer:Job structure below the company level. The P&L looks clean. Actual job profitability is completely invisible. This setup serves the CPA filing the annual return — not the builder trying to run a profitable business.

The CFMA's Construction Financial Benchmarker consistently shows that construction companies with active job costing systems achieve 3-5 percentage points higher gross margin than comparable companies without them. The visibility itself changes behavior. When you can see which jobs are winning and which are losing, you make better decisions on bidding, scope management, and subcontractor selection.

🗂
Free checklist: Cost Code Audit — find the duplicates killing your reports
Get It Free →

Customer:Job Hierarchy: The Foundation of Construction Job Costing in QuickBooks

The Customer:Job structure is QuickBooks's native way to attach transactions to specific projects. When configured correctly, it makes a P&L by Job — the most important report in construction finance — accurate and meaningful. Here is how to build it.

Level 1: Customer = Client
Create a customer record for each client. Use the client's name as the primary customer. This is your billing entity — the person or company you invoice.

Level 2: Job = Project
Under each customer, create a sub-customer (called a "Job" in QuickBooks) for each individual project. "Johnson — 123 Oak Street Kitchen Remodel" sits under "Johnson" the customer. "Johnson — Garage Addition" is a separate job under the same customer. When a repeat client has a second project, you create a second job — not a second customer.

Linking transactions to jobs:
Every invoice you send, every subcontractor bill you pay, every material purchase — each should be coded to a specific job. In QuickBooks, this is the "Customer:Job" field on every transaction line. When this field is populated consistently, your P&L by Job shows exact revenue and costs for every project.

The payroll problem:
Payroll is where job costing most often breaks down. When you run payroll through QuickBooks Payroll, the expense typically posts to a generic payroll account without job attachment. The fix is time allocation: use QuickBooks Time (or a third-party tool like TSheets) to record which employees worked on which job each day. Those hours then post to the correct Customer:Job when payroll is processed. Without this, labor — often 25-35% of total project cost — is invisible at the job level.

"I thought I had job costing set up because I was using customer names. But nothing was at the job level. When we added the proper Customer:Job structure and started allocating labor, I found out two of my five project types had been losing money for two years. I had been subsidizing them from the profitable work without knowing it." — Residential GC, Columbus, OH

Once the Customer:Job structure is in place and transactions are linked correctly, run a P&L by Job quarterly. Sort by gross margin percentage. The patterns you see will change how you price, which clients you take, and which project types you pursue.

The Five Items Every Construction Company Needs in QuickBooks

The "Items" list in QuickBooks is where construction job costing gets its power. Items are the service and product codes that sit between your transactions and your accounts — they carry the job, the cost type, and the account, all in one code. Here are the five items every construction company should have, and how each one works.

1. Subcontractor Services
Create a service item for each subcontractor trade: Framing Sub, Plumbing Sub, Electrical Sub, HVAC Sub, Drywall Sub. Link each to your "Subcontractor Expense" account. When you pay a framing sub, use the Framing Sub item and code it to the correct job. You can now see total framing subcontractor spend by project.

2. Direct Labor
A service item for your in-house crew labor, linked to a Direct Labor account separate from payroll benefits and overhead. When time is allocated from payroll to a job, it flows through this item. Keeping direct labor separate from indirect labor and overhead is critical for accurate gross margin reporting.

3. Materials by Trade
Create material items for your primary material categories: Lumber and Framing Materials, Concrete and Masonry, Rough Electrical Materials, Rough Plumbing Materials, Finish Carpentry Materials. Link each to a Materials Expense account or a sub-account by trade. This level of granularity lets you run variance analysis: are your material costs running higher than estimated on this trade across multiple projects?

4. Equipment and Tool Cost
An item for equipment rental, tool purchases, and equipment depreciation allocation. Many builders bundle this into materials or overhead and lose visibility into what equipment is actually costing them per project. Equipment tracked as its own item surfaces when rental costs are eating into project margin.

5. Overhead Allocation
This is the most advanced but most important item for accurate job profitability. Create a service item for overhead allocation — your standard overhead burden percentage applied to each job. If your overhead runs 18% of direct job costs, this item allocates that cost to each project. Without overhead allocation at the job level, every project P&L overstates gross margin because it does not include the carrying cost of running the business. See our overhead burden guide for how to calculate your specific rate.

These five items, combined with the Customer:Job structure, give you a QuickBooks setup that produces meaningful job-level reports. The setup takes 3-4 hours. Maintaining it correctly requires training whoever codes your transactions — bookkeeper, office manager, or yourself — on the item-and-job protocol. Our cost code and accounting alignment service covers this setup as a core deliverable and includes the QuickBooks item configuration and training.

The Report That Changes Everything

Once your items and Customer:Job structure are in place, run this report monthly: Reports > Company & Financial > Profit & Loss by Job. Sort by gross margin percentage, descending. You will see immediately which project types are most profitable and which are not. Most builders who run this for the first time find a 10-15 percentage point spread between their best and worst project type — information that permanently changes their bidding strategy.

🗂

Cost Code Audit Checklist

Step-by-step checklist to audit, clean up, and standardize your cost codes. Get job-level profitability visibility in one afternoon.

Get the Free Checklist →

Frequently Asked Questions

Job costing is tracking every dollar of cost — labor, materials, subcontractors, equipment — against the specific project that incurred it, then comparing those actual costs to your original budget. It is the only way to know whether a project is profitable while it is running, not months after close. Without job costing, you manage margin by gut feel — and gut feel is consistently optimistic.

QuickBooks can absolutely handle construction job costing when configured correctly. The Customer:Job hierarchy, Items list, and class tracking together give you project-level P&L reports, labor cost by job, and margin analysis by project type. Most builders who say QuickBooks cannot do job costing are using a setup designed for general accounting, not construction.

Labor costs attach to jobs through time tracking. Use QuickBooks Time or an integrated timesheet tool to record which employee worked on which project each day. When payroll is processed, those hours post to the correct Customer:Job. Without time allocation, labor — often your largest single cost — is invisible at the project level.

Both, configured to work together. Your PM tool (JobTread, BuilderTrend) handles field-level job costing — daily logs, budget vs. actual by cost code, real-time subcontractor cost tracking. QuickBooks handles financial reporting, payroll, tax compliance, and P&L by project. When the two are synced, QuickBooks becomes your reporting layer and your PM tool becomes your operational layer. Using only one means losing capabilities the other provides.

At minimum: Profit & Loss by Job (margin by project), Accounts Receivable Aging (what you are owed and how late), Open Purchase Orders (committed costs not yet invoiced), and Job Profitability Summary (gross profit by job, sortable by margin). These four reports take 20 minutes to review and tell you most of what you need to know about your financial position.

Want systems advice specific to your company?

Book a free diagnostic call. In 30 minutes, we'll identify what's broken in your systems and what to fix first.

Book Your Free Diagnostic Call