
A job finishes and the margin is lower than the estimate. The CEO wants to know why. The project manager says the work went fine and there were no major issues. So where did the profit go?
More often than not, the answer isn't in the field. It's in the accounting. Costs that had nothing to do with that job ended up on it anyway, one miscoded entry at a time, or general costs like payroll/insurance are over-allocated to the job.
Job costing integrity is the foundation of everything in construction finance. Your WIP schedule is only as accurate as your job costs. Your margin analysis is only as useful as your cost allocation. When the job costs are wrong, everything downstream is wrong like the WIP, the bonding schedule, and the analysis of which jobs actually make money.
Here's what belongs in job costs, what doesn't, and where contractors consistently get it wrong.
The fundamental distinction: job cost vs overhead
A job cost is any cost directly attributable to a specific project. Labor on that job. Materials for that job. Subcontractors working on that job. Equipment used on that job. If you can draw a straight line from the cost to a specific contract, it's a job cost.
Overhead is what it costs to run the business regardless of which jobs are active. Office rent, admin salaries, insurance, utilities, legal fees, etc. These costs exist whether you have one active job or twenty. They belong in overhead and should be recovered through your gross profit, not by dumping them onto jobs.
The line between the two seems obvious in theory. In practice, it gets blurry fast, especially at smaller companies where the same people wear multiple hats and expenses get coded quickly without much thought.
Quick test: Would this cost exist if this specific job didn't exist? If yes, it might be overhead. If no, it's probably a job cost. When in doubt, ask whether you could justify the coding to a bonding agent or an auditor.
Labor - the biggest source of misallocation
Direct labor is straightforward: field employees working on a specific job are a job cost for that job. Where it gets complicated is everything else.
Project managers who split their time across multiple active jobs need to have their time allocated across those jobs, not dumped entirely on whichever job they happened to be on when payroll was processed. If a project manager spends 60% of his week on Job 1 and 40% on Job 2, the labor cost should reflect that. It requires a timesheet or time tracking software, which most smaller contractors resist. But without it, your job costs are wrong by default.
Office and administrative staff are overhead. Human resources, marketing, the receptionist: their salaries belong in overhead, not on jobs. Coding admin labor to a job to "absorb" some overhead cost is a common practice that distorts job profitability and makes it impossible to understand your true overhead rate.
The grey areas that trip up every contractor
Most job costing errors aren't intentional. They happen in situations where the right answer isn't obvious and people default to whatever is easiest. Here are the ones that come up most often:
Warranty and punch list work: Costs incurred to complete punch list items or fix warranty issues after job closeout should be tracked separately - either in a punch list cost code on the original job or in a separate warranty reserve. Mixing them into the original job cost distorts the final margin and makes it impossible to understand your true warranty exposure.
Mobilization costs: The costs of getting a job started, like site setup, temporary facilities, initial material deliveries, are legitimate job costs that often get miscoded or forgotten. If mobilization is significant, it deserves its own cost code.
Work started before the change order is signed: This is a cash flow and a job costing problem at the same time. When field crews start change order work before the paperwork is approved, the costs hit the job but the revenue hasn't been approved yet. Those costs need to be tracked in a separate cost code and flagged on the WIP until the change order is executed.
Travel and per diem: Field crew travel and per diem for work on a specific project is a job cost. General travel, like conferences, sales meetings, and office visits, is overhead. The distinction matters and it requires a clear policy that everyone follows.
Non-business expenses: This should be obvious, but non-business expenses don’t belong on the job. In fact, they don’t belong on the company’s books in general. Just because you think it’s a business expenses, doesn’t make it one. Remember that you’ll have to defend any expense as a business expense if audited. Don’t be like Michael Scott:

“They took my card away because I spent 80 bucks at a magic shop. What they don’t understand is that I bought the stuff to impress potential clients. So business related, right?” WRONG.
Why it matters
Every contractor knows bad job costing means inaccurate job profitability. But the downstream effects go further than most people realize.
Your WIP schedule is built on job costs. If the costs are wrong, the percent complete is wrong. If the percent complete is wrong, the earned revenue is wrong. If the earned revenue is wrong, the over/under billing is wrong. Everything flows from the accuracy of what goes on the job and a WIP schedule built on miscoded costs will not hold up under scrutiny from a bonding agent or a bank.
It’s important your financial presentation looks consistent and clean over time. If you consistently show 20% gross margin at the start on the WIP and then final gross margin comes in at 12%, the repeated cost overrun raises questions. Sometimes the answer is field execution but often it's job costs that were understated during the project and only caught at closeout.
If you're ever subject to a financial review by your CPA firm, your bonding agent, or the IRS, job cost integrity is one of the first things examined. Costs that don't belong on jobs, personal expenses mixed into project costs, or inconsistent allocation practices create findings that are expensive and time-consuming to resolve.
Building job costing discipline
The fix isn't complicated. It's consistent application of a clear framework:
Establish a written cost code structure that everyone uses. Every cost category (labor, materials, subcontractors, equipment, small tools, per diem) should have a defined cost code and a clear rule for what belongs there. Write it down. Train your PMs on it. Review it annually.
Implement time sheets (or a time tracking software) for employees. If your project managers split time across jobs, you need time sheets to allocate their cost correctly.
Review job cost detail monthly. As part of your month-end close process, pull the job cost detail for every active job and scan for anything that looks out of place. A $4,200 charge to a concrete job from a vendor that supplies office furniture stands out immediately if someone is looking.
The bottom line
Job costing isn't just an accounting function. It's the foundation of every financial decision a contractor makes. The WIP schedule, the margin analysis, the bonding presentation, the analysis of which work is actually profitable - all of it starts with whether the right costs are on the right jobs.