Job Costing for Service Businesses: Fully Loaded Labor, Overhead, and Real Margin

A service business can report a healthy month while losing money on the jobs that kept everyone busy.
The P&L shows payroll, contractors, software, travel, and revenue for the company. It does not show which project consumed the senior team, which crew returned for rework, or which client required three times the management estimated in the quote.
Job costing answers a narrower question: What did this specific job cost to deliver, and what margin remained?
The calculation is simple. The definitions are where businesses get hurt.
The two job-margin views
Start with direct job economics:
Job gross profit = job revenue − directly attributable delivery cost
Job gross margin = job gross profit ÷ job revenue
Then build a second management view:
Fully loaded job contribution = job gross profit − allocated shared delivery overhead
Keep the two views separate.
Direct gross margin helps management compare price, scope, labor, materials, subcontractors, and rework. The fully loaded view tests whether the portfolio can support shared delivery management, facilities, general software, and other operating infrastructure.
If overhead is mixed into every direct cost line, nobody can tell whether a weak job came from delivery execution or the company's broader cost structure.
Build the fully loaded labor rate first
An employee's wage is not the cost of one productive hour.
For each delivery role or team, calculate:
Loaded employment cost = wages or salary + employer payroll taxes + benefits + other employment cost
Then:
Loaded cost per productive hour = annual loaded employment cost ÷ practical productive hours
Practical productive hours exclude vacation, holidays, training, internal meetings, administration, bench time, and other hours that cannot be assigned to client delivery.
Consider a hypothetical employee with:
- Salary: $78,000
- Employer taxes, benefits, and other employment cost: $22,000
- Total loaded employment cost: $100,000
- Practical client-delivery capacity: 1,450 hours
The correct loaded rate is:
$100,000 ÷ 1,450 = $68.97 per productive hour
Dividing by 2,080 paid hours produces only $48.08 per hour. That rate is $20.89 too low and understates the true productive-hour cost by 30.3%.
Do not hide low utilization inside a constantly changing job rate. Set a defensible practical-capacity assumption, calculate the rate, and then report utilization separately. Otherwise weak scheduling makes every job appear expensive without showing the operational cause.
What belongs in direct job cost
Use a stable cost code structure across jobs:
Direct labor
Record actual delivery hours at the loaded cost rate. Include review, project management, field supervision, and quality work when those activities are specifically required by the job.
Contractors and subcontractors
Assign invoices to the job that caused them. Include minimum charges, rush premiums, and pass-through work even when the client is billed separately.
Materials and supplies
Include physical materials, parts, printing, testing, shipping, and other items consumed by the job.
Direct software and data
Assign licenses, data purchases, cloud resources, platforms, or usage fees incurred only because the job exists. General company software belongs in shared overhead.
Travel and outside expense
Include airfare, mileage, lodging, permits, filing fees, and other job-specific costs. Reimbursable does not mean cost-free; show the client reimbursement as revenue or a separate offset consistently.
Rework
Code the labor and expense, then identify the cause. Client-added scope, an ambiguous agreement, internal error, and normal estimate variance are different management problems even when they produce the same cost.
AccountEdge and Xero both describe service-job costing around labor, time, direct expense, and allocated overhead. The software can collect the records. Management still has to decide which costs are direct and which allocations support a real decision.
Want to test this against your own numbers? Book a free 20-minute Profit & Tax Leak Check to pinpoint the first profit, tax, cash-flow, or financial-structure issue worth fixing.
A worked job-cost example
Consider a hypothetical fixed-fee implementation:
| Item | Estimate | Actual |
|---|---|---|
| Job revenue | $48,000 | $48,000 |
| Delivery hours | 280 | 340 |
| Loaded labor rate | $52 | $52 |
| Loaded labor cost | $14,560 | $17,680 |
| Materials | $4,200 | $4,200 |
| Subcontractors | $3,600 | $3,600 |
| Travel | $1,100 | $1,100 |
| Direct software | $800 | $800 |
| Total direct delivery cost | $24,260 | $27,380 |
The original estimate produced:
$48,000 − $24,260 = $23,740 planned gross profit
$23,740 ÷ $48,000 = 49.5% planned gross margin
The actual result is:
$48,000 − $27,380 = $20,620 actual gross profit
$20,620 ÷ $48,000 = 43.0% actual gross margin
The extra sixty hours cost $3,120 and reduced margin by 6.5 percentage points. Revenue did not move, so the labor variance came directly out of gross profit.
Add overhead without corrupting the direct view
Suppose shared delivery management, general delivery software, and facilities are assigned at $18 per actual delivery hour.
340 hours × $18 = $6,120 allocated shared delivery overhead
The fully loaded management result becomes:
$20,620 − $6,120 = $14,500 fully loaded contribution
$14,500 ÷ $48,000 = 30.2% fully loaded contribution margin
That is useful for pricing and portfolio decisions. It is not the same as direct job gross margin, and it may not match the presentation in external financial statements.
Choose the allocation driver based on the cost:
- Direct labor hours for delivery management driven by team time.
- Headcount or users for shared software.
- Square footage or equipment use for facilities where relevant.
- Transactions for centralized processing.
- A separate central pool when no causal driver is defensible.
Never allocate overhead only to make every job appear to carry the same percentage. A simple rule that reflects resource use is better than a precise-looking rule nobody can explain.
The price implied by actual cost
If the business wants a 50% direct gross margin on the actual delivery model:
Required price = direct delivery cost ÷ (1 − target margin)
$27,380 ÷ 50% = $54,760
At a 60% direct gross-margin target:
$27,380 ÷ 40% = $68,450
This does not mean every Bennett client or every service job should carry 60% gross margin. Bennett's 60% framework is a company-level diagnostic for many established service businesses, not a universal law for each contract. Jobs can differ because of mix, strategic value, recurring follow-on work, risk, and capacity.
The calculation tells management what price the current cost structure requires. The market and commercial strategy decide whether that price is achievable—and whether the cost or delivery model must change instead.
Separate estimate failure from execution failure
At closeout, bridge estimated cost to actual cost by cause:
- Hours estimated incorrectly.
- Work performed outside scope.
- Wrong role or seniority mix.
- Lower productivity or avoidable rework.
- Material or subcontractor price variance.
- Rush, travel, or scheduling premium.
- Client delay or missing input.
- Internal time not recorded to the job.
“Over budget” is not a diagnosis. If every project of one type overruns in discovery, change the estimating model. If one team creates rework, fix the process. If clients routinely request a second approval cycle, update the scope and price.
The scope-creep margin model owns the decision about a requested change during a live project. Job costing provides the cost base and actual-versus-estimate record that makes that decision possible.
The weekly job-cost report
For active material jobs, review:
- Approved revenue and approved change orders.
- Estimated hours and cost by phase.
- Actual hours and cost to date.
- Hours and cost forecast to complete.
- Other direct expenses committed and incurred.
- Forecast gross profit and direct margin.
- Allocated overhead in a separate view.
- Variance cause and named action owner.
Do not wait until invoicing or month-end. Forecast-to-complete reveals the loss while management can still change staffing, scope, price, or schedule.
For company-level context, Bennett's service-business gross-margin guide explains the broader measure. The markup-versus-margin guide prevents a common pricing conversion error.
Sources
- AccountEdge: Job Costing for Service and Project-Based Businesses
- Xero: Advanced Job-Costing Strategies for Professional Services Businesses
- Xero: Overhead Costs — What They Are and How to Calculate Them
If the company cannot connect quotes to actual labor, project cost, capacity, and cash, fractional CFO support should build the decision system around reliable accounting data. The Profit & Tax Leak Check can identify whether job cost, price, labor efficiency, overhead, or another financial layer is creating the larger leak.
Frequently asked questions
What costs should a service business include in job costing?
Include actual delivery hours at a fully loaded labor rate plus job-specific contractors, materials, software, data, travel, permits, and rework. Show shared delivery overhead in a separate allocated view so direct execution and company infrastructure remain distinguishable.
How do you calculate fully loaded labor cost per hour?
Add wages or salary, employer payroll taxes, benefits, and other employment cost, then divide by practical productive hours rather than total paid hours. Track utilization separately so unused capacity does not disappear inside a constantly changing job rate.
Should every service job target a 60% gross margin?
No. The 60% benchmark is a company-level diagnostic for many established service businesses, not a universal contract rule. Set job targets based on work type, capacity, risk, strategic value, and the portfolio margin the company needs.
What are the two job-margin views?
Job gross profit = job revenue − directly attributable delivery cost Job gross margin = job gross profit ÷ job revenue
How do you build the fully loaded labor rate first?
An employee's wage is not the cost of one productive hour. Loaded employment cost = wages or salary + employer payroll taxes + benefits + other employment cost
Why does what belong in direct job cost?
Record actual delivery hours at the loaded cost rate. Include review, project management, field supervision, and quality work when those activities are specifically required by the job.
What does the worked job-cost example show?
$48,000 − $24,260 = $23,740 planned gross profit $23,740 ÷ $48,000 = 49.5% planned gross margin
How do you add overhead without corrupting the direct view?
Suppose shared delivery management, general delivery software, and facilities are assigned at $18 per actual delivery hour . 340 hours × $18 = $6,120 allocated shared delivery overhead