Bookkeeping for Construction Companies: Job Costing Basics

A general contractor we’ll call Dave (details changed, but the story is common) ran a $2 million framing and remodeling business for six years using one QuickBooks file and a gut feeling for which jobs made money. Then a single kitchen remodel that “felt profitable” came in $14,000 in the red — because labor and material costs from two other jobs had been lumped into the same account. Dave isn’t unusual. Construction is one of the few industries where a company can have healthy revenue, full crews, and steady work, and still lose money on job after job simply because the books don’t separate one project from another.

That’s what job costing fixes. It’s the single most important bookkeeping practice a construction company can adopt, and it’s also the one most owners skip because it sounds complicated. It isn’t, once you understand the basic structure. This guide walks through what job costing actually is, how to set it up, the mistakes that trip up most contractors, and how it connects to the reports that keep a construction business solvent.

Why Construction Bookkeeping Is Different From Other Industries

Most small businesses sell a product or a service at a relatively predictable cost. A construction company sells dozens of unique, temporary projects at once, each with its own crew, subcontractors, materials, permits, equipment rental, and timeline. Revenue often gets billed in progress draws that don’t match when the costs actually hit the books. A few features make construction accounting its own discipline:

  • Costs and revenue for the same job can land in different months, distorting monthly profit and loss if you’re not tracking by project.
  • Retainage — the 5–10% clients hold back until a job is fully accepted — has to be tracked separately from collected revenue.
  • Subcontractor payments often require W-9 and 1099 tracking on top of the expense itself.
  • Overhead (insurance, office staff, equipment depreciation) has to be allocated across jobs, not dumped into one general expense bucket.

Standard “income minus expenses” bookkeeping papers over all of this. Job costing is what makes the numbers usable.

What Is Job Costing, and Why Is It the Backbone of Construction Accounting?

Job costing means tracking every dollar of revenue and cost against the specific project (or “job”) it belongs to, instead of tracking it only at the company level. Instead of one number for “materials expense” for the whole month, you’d see materials expense broken out by the Miller kitchen job, the Sanders deck job, and the 4th Street commercial buildout — each showing its own profit or loss.

Direct Costs vs. Indirect Costs

Job costing splits every expense into two buckets:

  • Direct costs — costs you can trace to one specific job: framing lumber for that house, the plumber’s invoice for that remodel, the dumpster rental parked at that address, labor hours a crew logged on that site.
  • Indirect costs (overhead) — costs that support all jobs at once: office rent, the bookkeeper’s salary, general liability insurance, the owner’s truck payment, software subscriptions. These get allocated across jobs, usually as a percentage of direct labor or revenue, so each job carries its fair share of the cost of running the business.

A job that looks profitable on direct costs alone can turn into a loss once its share of overhead is added in — which is exactly why so many contractors are surprised at year-end.

Setting Up a Job Costing System

You don’t need custom software to start. Here’s the setup most small and mid-sized construction companies use inside QuickBooks or Xero:

  1. Create a customer or sub-customer for every job. In QuickBooks Online, each project becomes a “sub-customer” under the client. This is what lets every transaction — invoice, bill, payroll entry — be tagged to a specific job.
  2. Build a job-costing-friendly chart of accounts. Keep cost categories broad (labor, materials, subcontractors, equipment, permits) rather than job-specific — the job tag does the granular tracking, not the account list.
  3. Tag every transaction at entry, not later. Every bill, receipt, and timesheet should be assigned to a job the moment it’s entered. Reconstructing job assignments after the fact is where most job costing systems fail.
  4. Track labor by job, including payroll burden. Payroll taxes, workers’ comp, and benefits should be allocated to jobs along with wages — labor is usually the largest and most misallocated cost on a job.
  5. Run a Job Profitability report monthly, not just at project close. Catching a job running over budget in month two is fixable. Catching it after the final invoice is not.

If your company runs 10+ active jobs at a time, or does government or commercial work that requires certified payroll and detailed job cost reporting, dedicated construction accounting software (Buildertrend, CoConstruct, or QuickBooks Contractor edition) may eventually make sense — but most residential and small commercial contractors can run accurate job costing in standard QuickBooks Online Plus or Xero with the setup above.

Common Job Costing Mistakes Construction Companies Make

  • Lumping small jobs together. “Miscellaneous repairs” as a catch-all customer defeats the purpose — even small jobs should get their own tag if you want accurate profitability data.
  • Ignoring change orders in the books. A verbal change order that adds scope but isn’t invoiced or cost-tracked separately is one of the most common ways a profitable-looking job quietly loses money.
  • Not allocating overhead at all. Tracking direct costs only tells you gross margin, not true profit. Without an overhead allocation, every job looks better than it actually is.
  • Mixing owner draws and business purchases on the job card. Personal purchases run through a job’s supply account distort that job’s real cost — a broader problem covered in our guide to separating personal and business finances.
  • Reconciling job costs only at tax time. By then, the crew, the vendor, and the client have all moved on, and there’s no way to correct a miscoded expense with confidence.

Job Costing and Work-in-Progress (WIP) Reports

Once job costing is in place, the next layer is the Work-in-Progress (WIP) schedule — a report that compares, for every active job, the percentage of work completed against the percentage of the contract billed. It answers the question that job costing alone can’t: are you ahead of billing or behind it on cash?

A job that’s 70% complete but only 40% billed is “underbilled” — the company is effectively financing that gap out of pocket, which is a common cause of cash flow crunches even in busy, profitable-looking construction companies. According to data cited by the Construction Financial Management Association (CFMA), underbilling and inaccurate WIP reporting are among the leading contributors to construction company cash shortfalls and, in severe cases, insolvency. A monthly WIP report, built directly from your job costing data, is what surfaces this before it becomes a crisis. This connects closely to broader cash flow management practices every small business owner should have in place.

Choosing the Right Software and Support

QuickBooks Online (Plus or Advanced) and Xero can both handle job costing well with the sub-customer/project structure described above, and both integrate with payroll providers that support certified payroll and job-based labor tracking. The software isn’t usually the limiting factor — consistent, accurate data entry is. A job costing system is only as good as the discipline behind tagging every bill, invoice, and timesheet the moment it happens.

This is where many construction companies bring in outside help. A bookkeeper who understands construction-specific needs — retainage, subcontractor 1099s, job costing, and WIP schedules — can set up the system correctly once and then maintain it monthly, which is usually far more cost-effective than an owner or office manager trying to learn it while also running jobs. Ask For CPA’s bookkeeping and accounting services include construction-specific setup for QuickBooks and Xero, and our payroll services can be configured to track labor costs by job automatically.

When to Bring In a Professional Bookkeeper

Not every construction company needs outside help on day one, but a few signs suggest it’s time:

  • You genuinely don’t know which of your current jobs are profitable and which are losing money.
  • Your bank balance and your sense of how business is going don’t match.
  • You’re spending hours each week on bookkeeping instead of estimating, managing crews, or bidding new work.
  • You’ve been notified of a 1099 or payroll tax issue with the IRS.
  • You’re bidding larger jobs or commercial contracts that require formal WIP reporting for bonding or lender purposes.

If any of these sound familiar, it’s worth a conversation about what proper job costing could look like for your business. You can review our pricing to see how a monthly bookkeeping engagement compares to the cost of the profit leaks job costing is designed to catch.

Frequently Asked Questions

Do I need special software to do job costing, or can I use regular QuickBooks?

Standard QuickBooks Online (Plus tier or higher) and Xero both support job costing through their project/sub-customer features. Dedicated construction software like Buildertrend or CoConstruct adds scheduling and estimating tools on top, but isn’t required to get accurate job-level profitability data.

How often should I review job costing reports?

Monthly, at minimum, for active jobs — and weekly for large or long-running projects. Reviewing job costs only at project completion removes any chance to correct a budget overrun while the job is still in progress.

What’s the difference between job costing and a Work-in-Progress (WIP) report?

Job costing tracks actual costs and revenue by project. A WIP report uses that job costing data to compare percentage-of-work-completed against percentage-billed, which reveals whether a job is over- or under-billed relative to its progress — a key indicator of cash flow health.

How do I allocate overhead costs to individual jobs?

The most common method is allocating overhead as a percentage of direct labor cost or total direct job cost — for example, if overhead typically runs 15% of direct costs company-wide, each job is charged 15% of its own direct costs as an overhead allocation. A bookkeeper can help calculate the right percentage based on your actual historical overhead.

This article is for general educational purposes and isn’t a substitute for advice from a licensed CPA familiar with your specific business, contracts, and state requirements.

If your construction company’s books can’t tell you which jobs are actually making money, that’s a fixable problem — not a reason to keep guessing. Contact Ask For CPA to talk through setting up job costing that gives you real numbers on every project.