Job Costing for Service Businesses: Where Did the Quoted Profit Go?
A full calendar does not guarantee profitable work. Compare quoted costs, actual delivery and the cost still to come before a busy project quietly uses up its margin.
The quote looked profitable. The team stayed busy. The customer received the work. Yet the month-end result is weaker than expected.
The missing profit may sit inside a few extra delivery days, an unrecorded subcontractor bill or revisions that nobody priced. A company-wide profit and loss report tells you the combined result. It does not necessarily tell you which jobs created it.
Job costing means assigning revenue and costs to individual jobs so you can compare what you expected to earn with what delivery actually costs. For a service business, the useful question is not only “What have we spent?” It is “What will this job earn after the remaining work is finished?”
This guide is for Australian consultancies, agencies and other project-based service businesses. The worked example is fictional, not a MagicHub customer result.
Start with three different numbers
Keep these measures separate rather than labelling all of them “profit”:
- Job contribution: revenue less the labour and other direct costs assigned to the job. It shows what the job contributes towards shared overhead and profit.
- Job result after allocated overhead: contribution less a consistent share of costs such as administration, rent and shared systems. The allocation is a management method, not a bank payment caused by that job.
- Cash collected: money received from the customer. A profitable job can still leave a cash gap if payment comes after payroll and supplier bills.
Define which costs belong in each measure and use that definition consistently. If an hourly labour rate already includes an overhead allowance, do not deduct the same overhead again. For the separate timing question, see why profit and cash flow differ.
Build a realistic labour cost, not just a charge-out rate
Your customer rate is the price you charge. Your labour cost is what it costs the business to provide the time. They are not interchangeable.
Australian Government pricing guidance identifies wages, superannuation, leave and other employment-related costs when working out hourly costs. Use payroll and accounting records to build an appropriate cost rate for your business, with your accountant's help where needed. Do not assume salary divided by every paid hour is the cost of an hour available for client delivery.
Decide how you treat training, internal meetings, leave and other non-delivery time. One approach is to spread the relevant annual employment cost over realistic delivery hours. Another is to allocate employee costs across job and non-job activities. Whichever method you use, reconcile it to total payroll so you do not lose costs or count them twice.
Record the owner's delivery time too. If you use a notional owner-time cost that is not an accounting expense, identify it as a management adjustment. Otherwise, a job can look attractive only because the owner's work appears free.
A worked example: the margin falls before the job finishes
A fictional Australian design consultancy agrees a fixed project fee of A$24,000. Its estimate includes 160 delivery hours at a fully loaded direct labour cost of A$75 per hour, plus A$2,000 of external costs. Shared overhead is excluded from this direct labour rate and allocated separately below.
All figures are illustrative AUD management amounts, excluding GST where recoverable. A business that cannot recover GST should include the relevant cost consistently. This example is not a tax calculation.
| Item | Original quote | Forecast at completion |
|---|---|---|
| Agreed revenue | A$24,000 | A$24,000 |
| Delivery hours | 160 | 200 |
| Direct labour at A$75 per hour | A$12,000 | A$15,000 |
| External direct costs | A$2,000 | A$3,000 |
| Job contribution | A$10,000 | A$6,000 |
| Contribution margin | 41.7% | 25.0% |
| Allocated shared overhead | A$4,000 | A$4,000 |
| Job result after allocated overhead | A$6,000 | A$2,000 |
Contribution equals revenue minus direct costs. Contribution margin equals contribution divided by revenue. The extra 40 hours cost A$3,000; extra external costs add A$1,000. Together they reduce the expected result by A$4,000. The unchanged overhead allocation is an assumption for this illustration, not a universal rule.
Now consider what the team sees partway through delivery: 120 hours have been used, A$2,000 of external costs have been incurred and another 80 hours plus A$1,000 of external costs are needed. Comparing only costs to date with the full contract fee would make the project look healthier than it is.
The forecast should instead combine A$11,000 of costs incurred with A$7,000 still to come. That gives A$18,000 of expected direct costs and A$6,000 of contribution. This is a forecast of the completed job, not a statement that the full fee has already been earned for accounting purposes.
Use a small job register that catches the remaining work
You do not need dozens of fields to start. For each active job, keep:
- One job ID, customer, accountable delivery owner and agreed scope.
- Original fee and cost estimate, preserved as the comparison baseline.
- Approved scope and price changes, recorded separately from the original quote.
- Hours and direct costs incurred, including costs incurred but not yet billed by suppliers.
- Remaining hours and external costs, with the date and owner of the estimate.
- Expected contribution at completion, the reason for changes and the next action.
Xero's job-costing guidance describes tracking project time and expenses and comparing actual costs with budgets. The management discipline matters whichever system you use: capture time promptly, use consistent job codes and check missing supplier costs before trusting the margin.
A purchase commitment, a supplier invoice and a payment can describe the same cost at different stages. Track the status without adding all three to the total. Equally, a forecast of remaining work should exclude costs already included in actuals.
Explain the variance before changing the price
“The job ran over” is not specific enough to improve the next quote. Break the difference into causes:
- Scope: the customer requested additional work. Confirm what was agreed and obtain approval for any proposed change before treating extra revenue as secured.
- Estimate: the original delivery hours were unrealistic. Update the estimating assumptions for comparable future work.
- Execution: rework, handovers or missing inputs used more time. Change the process rather than automatically blaming the price.
- Cost rate: a different staff mix or supplier price changed delivery cost. Separate this from the hours variance.
In the example, a proposed A$4,000 variation is not yet agreed revenue. Keep the current A$24,000 case visible until approval is obtained. If the variation also requires extra work, include that cost; do not assume every additional sales dollar becomes profit.
When capacity is tight, compare contribution against the scarce delivery resource as well as total contribution. A small job that occupies a specialist for weeks may prevent better work being delivered. This comparison informs a decision; it is not a reason to abandon contractual commitments.
Turn the review into a decision while there is still time
Review active jobs regularly enough to act before delivery is finished. Focus on changed estimates, unapproved variations, missing costs and jobs using capacity faster than planned. Ask the delivery owner what has changed, what remains and which decision is needed.
Set your own escalation thresholds in dollars, hours or margin points. There is no single suitable margin for every service business. Different scopes, risk, overhead structures and delivery models require different targets.
Bring the largest changes into your monthly business review. Reconcile job totals with the accounts, then update the wider plan for revenue, payroll, suppliers and collections without counting job costs twice.
For MagicHub's planning audience, that is the useful connection: job-level delivery assumptions should inform the business-wide forecast. Start with one recently completed job and one live job. Compare the original estimate, actual costs and remaining work. The aim is not a perfect allocation model on day one. It is to spot the next margin leak while you can still do something about it.
Sources checked 27 October 2026, Australian time. General business education only, not accounting, tax, legal or financial advice. All example figures and management assumptions are illustrative.
Good thinking deserves
a connected workspace.
Bring your plans, numbers and customer workflows together.
Start free with MagicHub