TL;DR
- Construction job costing math breaks down into cost codes, labor burden, committed costs, equipment, and retainage.
- Burden is the biggest lever. If your books track base wages while your estimator bids at burdened rates, every job reads better than it is.
- Committed costs and retainage hide two more gaps. Open commitments look like savings until the invoice lands, and retainage sits in receivables rather than profit.
- Fix them in order, burden first, and the same job can show a very different number by the time you reach the last adjustment.
For full-time private industry workers, benefits make up 31.5% of what employers actually pay for labor, according to the latest BLS data. Legally required benefits like payroll taxes and workers’ compensation are a narrower slice of that same total, about 7% of total compensation.
If your construction job costing still runs on base wages, every labor line in your reports is quietly wrong before the first hour gets billed.
The individual pieces of construction job costing, cost codes, burden, committed costs, equipment, and retainage are well covered elsewhere. That includes our own breakdown of job order costing for construction. If you need the general definition of job costing first, start there instead of here.
What almost nobody does is put all five on the same job at once and watch the number move. That is what this piece does.
Cost Codes: The Structure Decision Everything Else Depends On
Every construction job costing setup starts with the same decision, and most contractors get talked past it instead of through it. How granular should your cost codes be, and who is responsible for keeping them that way?
More codes sound like more control. In practice, a code set that your field team will not use accurately produces worse data than a coarser one that they will actually fill in correctly. A superintendent choosing between six framing codes on a Friday afternoon will guess. A guessed code is worse than no code, because it looks like real data.
As a company grows, more people start buying and making decisions, and they do not always share the same commitment to meeting costs. Without a good expense reporting process or a solid job costing system, it gets unwieldy fast.
Whatever structure you land on has to roll up cleanly into your major cost categories. It also needs an owner who reviews it at least once a year. Get the structure wrong, and every downstream financial reporting decision inherits the error.
Changing it mid-year breaks the year-over-year comparison for every job in flight. That’s why a job costing system can look unreliable, even when the underlying work is sound.
Labor Burden: The Error With the Largest Margin Effect
Labor burden moves the reported margin further than any other single adjustment on this list.
The fully burdened labor rate is the base wage plus all costs associated with employing that person. That means payroll taxes, workers’ compensation, benefits, paid time off, and any union contributions where they apply. If any of these expenses are left out, the labor expense on your job cost report will fail to reflect the true cost of that hour to the business.
Set burden rates by employee classification, not as one company-wide multiplier. A laborer and a crew lead do not carry the same payroll tax exposure, workers’ comp classification, or benefits load.
Blending them into a single rate flatters some jobs and penalizes others, depending on which crew mix actually showed up. Refresh the rate at least once a year against actual payroll. A rate set two years ago at last year’s insurance renewal is no longer a rate. It is a guess with decimal points.
Your estimator bids the job at burdened rates, because that is the only way a bid holds up. Your books often track labor at base wage, because that is what payroll paid out. Put those two next to each other, and every job reads as under budget on labor. That holds no matter what happened in the field. That mismatch is what quietly wrecks reporting.
The same blind spot shows up on the customer-facing side of the invoice, too. I see contractors bill by job or by direct labor cost, and they frequently skip breaking out materials, jobsite travel, and reimbursements as separate line items.
When you upcharge a fixed margin on labor alone, that margin has to absorb the incidentals that never made it onto their own line. It ends up covering more than the profit you intended.
My practical recommendation is billing by deliverable rather than a flat hourly rate. That only works if the team tracks time against those deliverables closely enough to still know what the job actually costs to build.
Committed Costs: Why Under Budget Usually Is Not
A job cost report showing a subcontract line running well under budget looks like good news. Most of the time, it is a timing gap.
Committed costs are the open purchase orders, executed subcontracts, and payroll earned but not yet posted. That money is already spoken for. The sub has a signed contract for the full scope. They just have not invoiced you for all of it yet.
This is the kind of gap that shows up late instead of in real time. An article published by the Construction Financial Management Association on job costing and inflation makes timeliness the first requirement for job cost data to be useful at all.
If your cost-to-complete only counts costs that have been posted, your financial reporting is running behind. Committed costs have to sit alongside actual costs for cost-to-complete to mean anything. Leave them out, and “under budget” is not a finding. It is a bill that has not arrived yet.
Equipment: Building an Internal Rate for Owned Machinery
Rented equipment is easy. The invoice tells you which job to code it to.
Owned equipment is where most contractors quietly stop. Depreciation, maintenance, fuel, insurance, and financing all fall under overhead, where no job bears its share.
The fix is an internal rate, a day rate, or an hour rate charged to each job for using equipment you already own. The U.S. Army Corps of Engineers publishes a full equipment rate methodology for building these rates from ownership and operating costs. The same logic scales down to a five- to twenty-million-dollar contractor-owned fleet.
The exact rate matters less than you would think. What matters is applying the same rate to every job that uses that machine. Inconsistent rates, not imperfect ones, are what make jobs incomparable.
How you depreciate that equipment is a separate decision with its own planning window, and it is worth making on purpose rather than by default. That is as much a tax-planning conversation as a job-costing one.
Retainage Sits in Receivables, Not in Profit
Retainage is the thinnest-covered topic in most construction job-costing content. It is also where “profitable” and “flush” stop meaning the same thing.
When an owner withholds retainage on your progress billing, often 10% or so, that money does not disappear from your books. It moves into receivables, or into a contract asset if your right to collect it still depends on conditions you have not yet met.
Your job cost report can show a real profit even while the cash the job earned is still unbilled. It’s waiting on a release date nobody has confirmed. Either way, current GAAP retainage guidance treats it the same way. Retainage is never revenue you have already earned in cash terms.
Run the same logic in the other direction. You are probably withholding retainage from your own subs, too. That sits on your books as a payable you have not paid, not a cost you have avoided. Net the two in your head instead of tracking them separately, and you will misjudge your real cash position in both directions.
None of this tells you when the cash actually lands. That is a cash flow forecast question, not a job costing one. But it explains why a job that looks genuinely healthy on the cost report can still leave you short at the bank.
One Job, Carried All the Way Through
The five adjustments above no longer appear as separate lessons; they become a single number when you run them against a single job. The figures below are illustrative only, rounded for clarity, and not a benchmark for what your own jobs should look like.
Say you bid a job at $2,000,000 with a projected gross margin of 18%, or $360,000. That is the number the estimate shows, and the number most job cost reports would echo on day one.
Restate labor at fully burdened rates instead of base wages, and the margin drops. If this job’s crew mix runs heavier on burden-intensive trades than your blended rate assumed, that alone might take the margin down to something closer to $310,000. Nothing changed in the field. The number just got honest.
Add committed costs, the signed subcontracts and open purchase orders not yet invoiced. The “savings” you thought you saw on a couple of line items disappear, because that money was always spoken for. Layer in equipment at your internal rate instead of leaving owned machinery uncosted, and the margin tightens again.
By the time you separate retainage into receivables, the picture shifts again. The job can look strong on the cost report, while a good part of that $310,000 has not actually cleared the bank. That gap is what enhanced financial visibility into a job actually means, not a prettier report but an honest one.
Every competitor covering these five pieces teaches them one at a time. None of them puts a single job through all five and shows you where the number actually lands.
How Nimbl Builds Job Costing for Contractors
Every adjustment above is knowable on its own. Assembling them into a system you can trust every month, and keeping it current as jobs change, is the actual work.
At Nimbl, that starts with who owns the cost code structure. One person, not a committee, reviews it annually and approves any midyear changes before they happen. Burden rates get set by classification and refreshed against real payroll.
Committed costs enter the system as soon as a PO or subcontract is signed, not when the invoice shows up. A defined close cadence keeps job cost reports current enough to act on.
Integrated construction financial operations do not mean a bigger stack of reports. It means one integrated accounting system where job costs, burden, and billing stay connected instead of drifting apart between the field and the office. That is what outsourced financial management looks like when it is built for a contractor instead of a generic back office.
Fix Burden First
Job costing breaks in the same five places on almost every contractor’s books: cost codes, labor burden, committed costs, equipment, and retainage. Burden is the one to fix first, because it distorts every job at once, not just the one you happen to be looking at.
On the $2,000,000 job walked through above, correcting the burden alone was the difference between an 18% margin on paper and something closer to $310,000 once the numbers got honest. Work through the other four in the same order, and the picture keeps tightening, until the job cost report finally matches what is actually happening in the field and at the bank.
None of these five fixes requires new software or a bigger team. They require someone who owns the structure and keeps it honest every month. Get that right, and you stop finding out your real numbers after the job is finished. You see them while there is still time to act.
If you want a second set of eyes on where your own construction job costing is quietly wrong, start with a construction accounting assessment built around these five adjustments.
Dylan Dean, CMA, is Nimbl’s Construction Accounting Lead and works with construction business owners across the U.S.
Connect with Dylan on LinkedIn
FAQs
How Do You Calculate a Fully Burdened Labor Rate, and How Often Should It Be Refreshed?
A fully burdened labor rate is the base wage plus payroll taxes, workers’ compensation, benefits, paid time off, and any union contributions. Calculate it by employee classification rather than as one company-wide number. Refresh it at least once a year against actual payroll, since insurance renewals and wage changes make last year’s rate inaccurate.
What Level of Cost Code Granularity Is Right for a Contractor Running 20 to 40 Jobs a Year?
The right granularity is whatever level your field team will apply consistently without a cheat sheet, usually fewer codes than your accountant wants and more than your crews would choose on their own. At 20 to 40 jobs a year, a structure your PMs actually use beats a more detailed one they guess at.
Why Does a Job Cost Report Show a Subcontract Under Budget When the Work Is Not Finished?
That gap is usually a committed cost problem, not real savings. A signed subcontract or open purchase order is money already spoken for, even before the sub has invoiced you for it all. If your report only counts costs actually posted, an unfinished job reads as under budget until the final invoice lands.
Should Retainage Receivable Be Treated as Revenue in Job Costing?
No. Retainage withheld on your progress billings moves into receivables, or a contract asset if the right to collect it is still conditional.
Either way, it is not revenue already earned in cash terms. A job can show real profit on the cost report while that retainage sits uncollected. That is why healthy-looking jobs still create cash pressure until the bank clears.
How Do You Set an Internal Equipment Rate for Machinery You Own Rather Than Rent?
Add up the annual ownership and operating costs for that equipment (depreciation, maintenance, fuel, insurance, and financing), then divide by expected annual usage hours to get an hourly or daily rate. The exact number matters less than applying that same rate to every job that uses the machine.
