Job costing
Job Costing for Contractors: Knowing Which Jobs Actually Made Money
A profit and loss statement tells you the company made money last quarter. It cannot tell you which jobs paid for the ones that did not.
10 min readUpdated
Plenty of contractors are profitable overall and have no idea which half of the work is carrying the other half. That is a survivable problem right up until you scale the wrong half of it. You win more of the work that loses money, revenue goes up, and the bank balance goes down.
Job costing is the fix, and it is much less work than most people assume. You need four things.
1. Cost codes that match how you actually work
A cost code is a bucket. The standard mistake is to copy a national code list with four hundred entries, which nobody uses, and the second mistake is to have three codes, which tells you nothing.
For a specialty sub, somewhere between eight and twenty-five codes is right. They should follow the way you already talk about the work: for an insulation contractor that might be attic, walls, crawl, rim joist, spray foam material, batt material, labour, equipment, and subcontracted work. If a code never gets used in six months, delete it. If you keep finding costs that do not fit any code, add one.
2. A budget on every job, even a rough one
You cannot have a variance without a plan. The budget does not have to be built by hand. Most of it can be derived from work you already did:
- The signed bid gives you material and subcontract expectations, line by line.
- The scheduled crew days times your burdened day rate gives you labour.
- Your own history (what this type of job has actually cost, as a ratio) beats any of it once you have a handful of completed jobs to read from.
Whatever the source, name it on the line. A budget line that says where it came from is one somebody trusts; a bare number is one they argue with.
3. Costs captured as they land
This is where job costing dies in most shops. The supplier invoice arrives, it goes in a pile, and it gets coded during month-end close, six weeks after the job it belongs to finished, which is far too late to act on.
The only version that works is the one where a cost hits the job within a day or two of being incurred. In practice that means somebody photographs the delivery ticket in the yard, the office reads the invoice as it arrives, and time gets filed daily rather than reconstructed on Friday.
Committed is not the same as spent
A purchase order you have issued and a subcontract you have signed are money that is gone even though no invoice has arrived. Track those separately as committed cost. A job that looks 40% spent against budget but is 95% committed is not a job with headroom. It is a job with no headroom that has not been billed yet, and the difference between those two readings is where overruns hide.
4. A correction path that is not an edit
Costs get miscoded. When they do, the fix must never be to quietly edit the original row: void it with a reason and post a corrected one. It sounds bureaucratic and it takes ten seconds, and it is the difference between a ledger you can defend and a set of numbers that changed at some point for reasons nobody can reconstruct.
The same discipline is what makes historical margin meaningful. If re-rating a crew this year silently re-prices last year's jobs, your trend line is fiction. Snapshot the rate at the moment the cost was posted.
The four numbers to read weekly
- Actual versus budget, by cost code, on every open job. Anything over 100% before the job is finished needs an explanation today.
- Committed plus actual against the contract value. This is your real remaining margin.
- Jobs that are complete and have no costs against them. There is nothing wrong with the job; there is something wrong with the paperwork, and it is about to become a wrong margin.
- Change orders with no cost recorded against them. Somebody built extra work and it cost nothing? Unlikely.
What good looks like
You should be able to answer, in under a minute and without opening a spreadsheet: which of my open jobs is over budget right now, by how much, and on what. If that takes an afternoon of assembly, the answer will only ever be produced after it stops being useful.
Written by the team at Opulence Built, who also run an insulation and concrete contracting business. We mention our own software where it is relevant and say so when we do.
Want the software side of this?
Twenty minutes, on your own jobs, with whoever on your team would actually use it.
Keep reading
- SolutionJob costingBudget versus actual on every open job, by cost code, with committed costs counted before the invoice arrives. Read your margin while you can still do something about it.Read
- GuideThe Construction Change Order Process (And Why Subs Lose Money On It)Most change-order money is not lost in a negotiation. It is lost because the work got built before anybody wrote it down.Read