TLDR
Job costing tracks actual costs against your estimate on every open job. For a specialty trade subcontractor, that means breaking costs into labor, materials, equipment, and subs by phase or cost code, comparing them to what you bid, and flagging overruns before the job closes. Most subs who don't do this discover margin problems at closeout, when it's too late to fix them.
- Job Costing
- Tracking all costs (labor, materials, equipment, overhead) against a specific job to determine actual profitability per project, compared to the original estimate.
DEFINITION
- Cost Code
- A category used to classify costs by type and phase. Examples: 'Electrical Rough Labor', 'Direct Materials - Fixtures', 'Subcontracted Drywall'. Cost codes must match your estimate structure to enable actual vs. estimated comparison.
DEFINITION
- WIP (Work-in-Progress) Report
- A financial schedule showing the cost position on all open jobs: how much you've earned based on percent complete versus how much you've spent. Used for bonding, banking, and internal margin management.
DEFINITION
- Cost-to-Complete
- The projected remaining cost to finish a job, calculated from your estimate and actual costs to date. Adding cost-to-complete to actual costs gives your projected final cost and projected final margin.
DEFINITION
- Variance
- The difference between actual cost and estimated cost on a specific cost code or job phase. A positive variance means you came in under budget; a negative variance means you're running over.
DEFINITION
Why Most Subs Don’t Know Their Margin Until It’s Too Late
The typical specialty trade subcontractor knows they made or lost money on a job when the last invoice clears and the payroll settles out. If the number is positive, the job was good. If it’s smaller than expected, something went wrong but finding out what requires going back through months of records.
That’s accounting, not job costing.
Job costing is the practice of tracking costs in real time, against a baseline estimate, at the level of detail needed to see variances as they develop. Not at closeout. On Wednesday, while the job is still active and you can still do something about it.
The practical difference: a specialty trade sub who does job costing properly knows by the third week of a six-week job that their labor on the rough-in phase is 20% over estimate. That knowledge creates options: look at crew productivity, look at scope that was added without a change order, look at whether the estimate was wrong and needs to inform the next bid. Without job costing, that 20% overrun becomes a final margin surprise.
The Cost Code Problem
The most common setup failure in job costing is a mismatch between estimate structure and cost code structure. If you bid jobs with detailed phase estimates but track all labor as a single cost code, you can see total labor variance but not where the variance happened. That’s only marginally better than no job costing at all.
Your cost codes need to match your estimate structure exactly. If you estimate electrical rough-in labor and trim-out labor separately, you need separate cost codes for each. The goal is a system where each line in your estimate maps to a cost code, so actual and estimated are directly comparable at every level of detail.
Setting up that structure correctly before the first job goes through the system is the work that makes everything else valuable. It’s the step most subs either skip or do inconsistently, which is why their job costing reports end up being useful for finance but not for operations.
The Real-Time Data Entry Discipline
Job costing is only as good as the data that goes into it. Field time entries delayed to end of week, material invoices coded to the wrong job, subcontractor costs entered after closeout — all of these degrade the value of your job cost reports.
The behavioral practice that makes job costing work is daily cost entry discipline. Materials get coded on receipt. Labor hours get coded at end of shift. Subcontractor invoices get coded on receipt. When cost data is current, your weekly job cost review reflects what’s actually happening on the job. When it’s a week behind, you’re reviewing history rather than current position.
This discipline is harder to build than the software that supports it. The software can be configured correctly in a day. The habit of daily cost coding across your field and office team takes weeks to establish and needs reinforcement when it slips.
When to Bring in Software
If you’re running five or fewer simultaneous active jobs and your estimates are straightforward, a well-organized spreadsheet can handle job costing. The workflow is manual but manageable.
Once you’re running 8–10 simultaneous jobs, managing job costing in spreadsheets becomes the job, not a tool that helps you do the job. The time spent building and maintaining the spreadsheets exceeds what a purpose-built tool would cost, and the error rate in manual entry creates unreliable data.
That’s the transition point where dedicated job costing software starts paying for itself.
Like what you're reading?
Try MarginLock free for 30 days and take control of your job costs.
See plans & pricingQ&A
How do I set up job costing for my specialty trade subcontracting business?
Start with a cost code structure that mirrors your estimate breakdown. Enter your estimate into the system before the job starts. Code every expense and every labor hour to the right job and cost code as it occurs. Review actual versus estimated weekly. Calculate cost-to-complete on every open job to catch overruns before closeout.
Q&A
What is the most important job costing practice for owner-operators?
Weekly cost review on active jobs. Job costing data that you only look at after a job closes tells you what happened but doesn't give you the chance to fix it. The value of job costing is in catching overruns while there's still time to take action.
Want to learn more?
- Zero implementation fees
- Unlimited users
- Starts at $20/month
No credit card required.
Frequently asked