Most service businesses can name their biggest client and their biggest job. Far fewer can name their most profitable one, and the two lists overlap less than anybody expects. Job costing closes that gap: it records what each piece of work actually consumed, so you can compare it against what you charged. This guide covers what belongs on a job, how to handle overheads without pretending to a precision you do not have, and how to capture costs without inventing a new admin task nobody will do.
Revenue tells you the wrong thing
Ranking work by invoice value is the default because it is the only ranking most businesses can produce. It is also close to useless for deciding what to do more of. The largest job of the year is frequently the one that ran three weeks long, absorbed your best two people, needed a subcontractor at short notice, and finished slightly ahead of break-even.
Meanwhile the unglamorous repeat work that nobody talks about in the van has consistent margin, predictable hours and no surprises. Without costing at the job level, that comparison is invisible, and you end up chasing the kind of work that feels significant rather than the kind that funds the business. It is the same blindness described in why a service business is busy but not profitable, looked at one job at a time.
What belongs on a job
Direct costs are anything that would not have been spent if the job had not happened. That is the whole test, and it is worth applying strictly rather than by category habit.
- Labour hours, at a cost rate rather than a charge rate.
- Materials, at what you paid, with the supplier document attached.
- Subcontractor invoices for that job.
- Plant or equipment hired specifically for it.
- Travel, parking, permits and disposal charges the job caused.
Two of those are routinely missed. Travel gets treated as a general cost of doing business when a two-hour round trip is plainly attributable to one job. And labour is often recorded at the rate you charge rather than what the hour costs you, which flatters every job by exactly the margin you are trying to measure.
The overhead problem
Rent, insurance, software, the van that goes everywhere, the time spent quoting work you did not win. These are real and they are not attributable to any one job, which is why most small businesses simply leave them out of job costing entirely.
That produces a comforting and wrong picture where every job looks profitable. The fix does not need to be sophisticated. Take your annual overhead, divide it by the hours you genuinely expect to bill in a year rather than the hours you are open, and you have a rate per productive hour to apply to every job. It will not be exact. It will be applied consistently, which is what makes jobs comparable, and comparability is the entire point.

Capturing costs without a new admin job
Job costing fails for the same reason time and materials billing fails: the data is reconstructed at month end instead of captured as it happens. By then the receipts are in a glovebox, the hours are a guess, and the resulting figure is too soft to act on.
The discipline is that everything gets a job reference at the moment it occurs. Hours logged on the day by the person who worked them, supplier invoices attached to the job when they arrive, subcontractor charges recorded against the work rather than the month. None of that is extra work if the job already exists as a record; it is just choosing where something lands rather than filing it later. The same argument, from the billing side, is in time and materials invoicing.
Reading the result honestly
Look at margin percentage rather than margin in pounds, because pounds smuggle job size back in and you have just done all this work to remove it. Then look at the spread rather than the average: an average margin of 22% built from jobs ranging between 4% and 40% is telling you something completely different from a steady 22% across the board.
Group by type of work, by client and by who ran the job. Patterns show up quickly and they are usually uncomfortable. One client is consistently below the rest. One category of work never hits target no matter who does it. A quoting habit is systematically underestimating one particular task by half a day.
Only compare finished jobs. A job with costs recorded and half its value still uninvoiced looks catastrophic, and one invoiced up front looks extraordinary; neither is true yet. Keep unfinished work out of the comparison entirely rather than trying to adjust for it.
Acting on what it tells you
The instinct on finding a low-margin category is to raise the price, and sometimes that is right. Often the more useful response is upstream: quote that work differently, exclude the part that always overruns, change who does it, or stop offering it and put the capacity into the work that already performs.
Feed it back into quoting specifically. A quote built from a real cost history is a different document from one built on a feeling about how long something takes, and the gap between the two is where most systematic underpricing lives. What belongs on that quote is covered in quote vs invoice, and staging the money on longer work is covered in deposits and stage payments.
Starting without boiling the ocean
Do not begin by costing everything. Take ten completed jobs that represent the range of what you do, cost them properly and slowly, and look at the answer. That sample almost always contains the finding, and it takes an afternoon rather than a quarter.
If the ten tell you something worth knowing, build the habit of capturing costs going forward and let the picture fill in. If they tell you your margins are even across the board, you have bought certainty cheaply and can go back to the collection side, where the aged debtors report is usually the next place money is sitting.
