Job Costing for Home Service Businesses: Finding Your True Margin
Job costing is tracking the fully loaded cost of a single job, materials, direct labor with taxes and benefits, and allocated overhead, so you know the real profit. It is how home service businesses find their true margin. A job can show 45 percent gross margin yet still lose money once overhead is loaded in.
Job costing is tracking the fully loaded cost of a single job, materials, direct labor including taxes and benefits, and allocated overhead, so you know the real profit on that work. It is how home service businesses find their true margin. A job can show a healthy 45 percent gross margin and still lose money once overhead and owner time are loaded in.
Here is the uncomfortable pattern behind most struggling home service businesses: they are busy. The schedule is full, the phone rings, and the bank balance never grows. The reason is almost always the same. Nobody has ever loaded the real cost of labor and overhead into a single job to see whether it actually made money. Job costing is the discipline that surfaces the truth, and for most trades owners it is the difference between mistaking activity for profit and actually running a profitable company.
Revenue Is Not Profit
The most dangerous number in a home service business is revenue, because it feels like success while hiding margin problems. A company can run full schedules on jobs that barely break even once true costs are accounted for, and the owner will conclude the answer is more volume, which only multiplies the problem. Profit, not revenue, is what funds payroll, equipment, and the owner's living, and profit is invisible until you measure cost at the job level.
This is why two companies with identical revenue can have completely different bank balances. The one that knows its true cost per job prices with margin and steers toward profitable work. The one that prices off a rough markup and never looks back accumulates a schedule full of jobs that individually feel fine and collectively starve the business.
The True Cost of Labor
Labor is where job costing most often goes wrong. Owners price off the technician's hourly wage and forget everything stacked on top of it. The fully loaded cost of a technician includes payroll taxes, workers compensation, benefits, and, critically, non-billable time: drive time, training, callbacks, and the hours between jobs.
A technician paid $25 an hour commonly costs $38 to $45 an hour once taxes, insurance, and benefits are loaded in. And if only 60 percent of their paid hours are actually billable, the effective cost per billable hour climbs higher still, because you are paying for the non-billable 40 percent out of the billable jobs. Pricing a job off the bare $25 wage instead of the fully loaded billable rate is the single most common reason trades work quietly loses money, and it compounds on every labor-heavy job.
Loading In Overhead
Gross margin (revenue minus materials and direct labor) is where most owners stop, and it is where the illusion lives. A job can post a healthy 45 percent gross margin and still lose money once overhead is allocated: vehicles, fuel, office and software, insurance, advertising, and the owner's own time. Net margin, what remains after all of that, is the number that actually matters.
Allocating overhead does not require accounting software to start. Take your total monthly overhead and divide it by the number of jobs you complete in a month to get a rough per-job overhead load, then subtract it from each job's gross profit. The result is sobering for most owners the first time they run it, and it is exactly the figure that lets you decide whether financing fees are affordable on a job, the kind of margin-aware decision that offering financing depends on.
There is a benchmark worth measuring against. According to ServiceTitan, top-performing plumbing companies hold gross margins of 60 to 62 percent on service work, which means everything else, direct labor, materials, and the loaded burden on that labor, comes to roughly 40 percent of the service-job dollar. That burden is not small: payroll taxes, workers compensation, benefits, and vehicle costs typically add 40 to 50 percent on top of the base wage, with workers compensation alone running about 5 to 9 percent of payroll for plumbers and 8 to 12 percent for HVAC technicians. The chart below shows how a top performer's service-job dollar splits between direct job cost and gross margin.
| Category | Value |
|---|---|
| Direct labor, materials, burden | ~40% |
| Gross margin | 60-62% |
Source: ServiceTitan job-costing benchmarks, 2025Top-performing plumbing firms hold gross margins of 60 to 62%; the rest is direct job cost including loaded labor.
Materials: Markup Is Not Margin
Labor gets most of the attention, but materials hide their own quiet leak, and it usually traces to confusing markup with margin. Marking a $100 part up by 30 percent gives a $130 price, but that is a 23 percent gross margin, not 30, because margin is calculated on the selling price, not the cost. Owners who think they are earning a 40 percent margin on parts because they apply a 40 percent markup are routinely several points short of where they believe they are, and on a materials-heavy job that gap compounds.
The other materials trap is everything that never makes it onto the invoice: waste, breakage, returns, shrinkage, and the small consumables (fittings, sealant, fasteners) that get used and never billed. A realistic job cost adds a few percent for waste and a consumables allowance rather than pricing only the line items that show up on the supplier receipt. Pricing parts at cost plus a true target margin, and accounting for the material that disappears into every job, recovers profit that an undisciplined markup quietly gives away.
Building the Billable Hourly Rate
Job costing answers a question every shop must get right: what does an hour of labor actually need to sell for? Build it up from cost rather than copying a competitor. Start with the fully loaded cost of a technician hour, say $42. Divide by the share of paid hours that are billable, because the non-billable hours have to be carried by the billable ones; at 60 percent utilization that $42 cost becomes roughly $70 per billable hour just to cover labor.
Then layer overhead and profit on top. Allocate the per-hour share of overhead (rent, vehicles, insurance, office, software, advertising), add the net profit margin you are targeting, and the result is the rate you must charge to hit your goal. If that build-up lands at $150 an hour and you have been charging $110 because that is the local norm, the costing has just explained why a full schedule never produces a growing bank balance. The honest billable rate falls out of the cost stack; it is not a number to guess at or borrow from a competitor whose cost structure you cannot see. This is also why crew utilization is inseparable from costing: the utilization rate is the divisor that turns a labor cost into a labor price.
Why Two Job Types Have Different Margins
A blended company margin hides the truth that individual job types perform very differently, and job costing exists to surface that spread. Compare two jobs at the same $1,000 ticket. A diagnostic-and-repair call might run two hours on site, an hour of drive time, $150 in parts, and a callback risk, while a planned maintenance visit on the same ticket runs ninety minutes, almost no parts, and clusters with other route stops. After loaded labor and overhead, the two can differ by twenty points of net margin even though they bill the same amount.
This is why the answer to a profit problem is rarely an across-the-board price increase. Cost a real example of each major job type and the picture usually resolves into a few clear losers and a few quiet winners. Maybe emergency service is strong but small repairs barely break even after the drive time, or installs carry the company while flat-rate diagnostics lose money once callbacks are counted. The strategic move is to reprice or redesign the losers and steer marketing and scheduling toward the winners, a far more precise and less customer-alienating lever than raising every price at once.
Estimate Versus Actual: Closing the Loop
Costing a job once at quote time is half the discipline; comparing the estimate to what actually happened is the other half, and it is where estimating accuracy improves. Most jobs that lose money were not mispriced in theory; they ran long, used more material, or triggered a callback that the estimate never anticipated. Recording actual hours and actual materials against the estimate on completed jobs turns each one into a lesson, and patterns emerge fast: a particular job type that consistently runs 30 percent over the labor estimate is an estimating problem, not bad luck.
Change orders are the related leak. Scope grows mid-job, the technician does the extra work to keep the customer happy, and nobody bills for it because writing it up feels awkward. Over a year, unbilled scope creep can erase the margin on an otherwise healthy job. The fix is a simple rule that any change to the agreed scope gets documented and priced before the work proceeds, which protects both the margin and the customer relationship by keeping surprises off the final invoice.
Costing Project Work Versus Recurring Work
Job costing looks different depending on which economy a trade lives in. Project trades (roofing, remodeling, large installs) cost each job as a discrete unit, where the risks are material price swings between bid and build, labor hours running over on a multi-day job, and the cost of rework on a fixed-price contract. For these, the estimate-versus-actual loop is the core safeguard, because a single underbid project can consume the profit of several good ones.
Recurring trades (cleaning, lawn care, pest control, maintenance) cost the route and the visit rather than the one-off project, where the risks are different: a recurring price set once and never revisited as labor and material costs rise, or a long-tenured account whose scope crept upward over years without a corresponding price adjustment. The owner's job there is to cost the visit periodically and reprice standing accounts to current cost, because a recurring job that was profitable three years ago can quietly slip underwater as wages climb. Knowing which costing model your trade needs is the first step to applying it correctly.
Benchmarking the Numbers: Markup Versus Margin
It is worth grounding the illustrative numbers in this guide against a real benchmark, because the gap between markup and margin is where most contractors quietly lose money. Remember the distinction: gross margin is revenue minus the direct cost of the job, the loaded labor, the materials, and the equipment that go into delivering it, while net margin subtracts overhead on top of that. The benchmark to clear is the gross figure, and according to ServiceTitan, top-performing plumbing firms hold a 60 to 62 percent gross margin on service work.
Now run a field hour through that benchmark. A base field wage near $28 an hour, carrying the 40 to 50 percent burden discussed earlier, lands at a loaded cost near $42 an hour, the figure this guide has used throughout. To hit a 60 to 62 percent gross margin on that hour, the math is simple: if direct labor cost should be only about 38 to 40 percent of the billed rate, then $42 divided by 0.40 is about $105, so that loaded hour has to bill somewhere near $105 to $110. At a $105 bill, the gross margin is ($105 minus $42) divided by $105, which is 60 percent, squarely on the benchmark.
Here is the trap that catches busy contractors. A 50 percent markup feels generous, but markup is applied to cost while margin is measured against the selling price. A 50 percent markup on the $42 loaded hour bills only $42 times 1.5, or $63. The gross profit on that hour is $63 minus $42, which is $21, and $21 divided by $63 is a 33 percent gross margin, barely half the 60 to 62 percent benchmark. The contractor who marks up labor by 50 percent and feels well-padded is actually running at roughly a 33 percent gross margin, then watching overhead erase what little is left.
That single gap, billing $63 when the benchmark rate is closer to $108, is how a company stays fully booked and perpetually broke. It is not a volume problem, and more jobs at $63 only deepen it. The fix is to set the billed rate from the loaded cost and the target margin, not from a comfortable-sounding markup, which is the entire purpose of costing the job before quoting it.
Targets and the First Step
A well-run residential service business typically targets a net profit margin of 10 to 20 percent after the owner has been paid a market wage for their own work. Many trades operate below 8 percent without realizing it, precisely because they never load overhead into job costs. The path to the higher end is usually not a blanket price increase; it is identifying which job types and service lines carry margin and steering the business toward them.
The simplest way to start needs no software. Pick your five most common job types and cost one real example of each: materials from the invoice, labor at the fully loaded hourly rate times hours on site plus drive time, and an overhead allocation. Compare the true cost to what you charged. That one exercise almost always reveals a job type or two that is quietly unprofitable and needs a price correction. Build the corrected numbers into how you quote, capture the job details with a pricing tool, and protect the margin you just found by turning one-off jobs into recurring revenue through membership plans and a clear view of customer lifetime value.
Related: offering financing on home service jobs.
Related: home service membership plans.
Related: home service customer lifetime value.
Related: lead generation for home service businesses.
Summary
Key takeaways
- Job costing tracks the fully loaded cost of a single job (materials, loaded labor, allocated overhead) so you know real profit, not a guess
- A job can show 45 percent gross margin and still lose money once overhead and owner time are loaded in; net margin is the number that matters
- A technician paid $25 an hour commonly costs $38 to $45 fully loaded; pricing off the bare wage is why trades jobs quietly lose money
- Well-run residential service businesses target 10 to 20 percent net margin after the owner is paid a market wage
Part of the Home Services and Trades cluster.
Try the Cleaning Cost Calculator
Price jobs from real cost data, not guesswork. Embed a pricing tool that captures the job details your team needs to quote at a margin that actually holds up.
Adam
Founder, CalcStack
Adam built CalcStack to help businesses turn website visitors into qualified leads using interactive content. The platform now serves hundreds of tools across every major industry.
Follow on X