Operations

Job Costing for Service Businesses: How to Know Your Profit Per Job

2026 job costing guide for service businesses: load labor, materials, drive time, card fees, and lead cost into every job to see what really makes money.

July 31, 202612 min readBy Jarvis Editorial Team
Job Costing for Service Businesses: How to Know Your Profit Per Job

The most expensive number in your business is revenue per job

Ask most service business owners what their best job type is and they'll name the one with the biggest ticket. Ask them to prove it and the room goes quiet.

That's not a knock on anybody. Revenue per job is the number that's easy to get — it falls out of any invoicing system with no effort at all. Profit per job requires assembling five or six inputs that live in different places: payroll, supplier invoices, a fuel card, a merchant statement, and an ad platform. Nobody assembles those by hand across sixty jobs a month, so nobody does it, so the decisions get made on the easy number.

As of July 2026, the practical situation is that most owner-operators are steering a business using a number that actively points them in the wrong direction. This guide walks through how to build a real per-job cost, what each input is worth, why the biggest tickets are so often the worst jobs on the board, and how call and attribution data closes the last and hardest gap — acquisition cost.

The five inputs of a real job cost

A job's true cost has more parts than most people carry in their head. Here they are, in roughly the order they get underestimated.

1. Loaded labor, not wage

The number to use is not what the tech's paycheck says. It's the fully loaded hourly cost: base wage plus payroll taxes, workers' comp, benefits if you offer them, uniforms, phone, and paid non-productive time. Whatever your actual burden works out to, the loaded rate is meaningfully higher than the wage, and using the wage understates every single job you cost. The Bureau of Labor Statistics publishes employer compensation cost data by industry if you want an outside reference point for your category.

Then multiply that loaded rate by the hours the job actually consumed, not the hours you quoted. Those two numbers diverge most on the job types you're worst at estimating, which is exactly where you need the truth.

2. Materials, at real cost including waste

Materials are the easiest input to get right and the one people most often approximate from memory. Use the actual supplier cost for what went into the job, including the portion of a partial unit you can't use elsewhere and the mid-job run to the supply house if the truck wasn't stocked. That supply run is labor and vehicle cost too — count it in the next two categories rather than pretending it was free.

3. Drive time — the cost that hides in plain sight

This is the big one, and it's two costs, not one.

The labor cost of driving. A tech in a van is being paid and is producing no revenue. Value that time at the same loaded hourly rate you use on site. If a tech drives 90 minutes across a job and your loaded rate is $28/hour, that's $42 of pure cost attached to the job — before a drop of fuel.

The vehicle cost. Fuel, maintenance, tires, insurance, depreciation. Reduce it to a per-mile number so it's trivial to apply. The IRS publishes an annual standard mileage rate you can use as a starting reference if you don't have your own fleet data, though your real cost may differ from it in either direction.

Drive time is where route density stops being a scheduling nicety and becomes a P&L item. The same job on the near side of your territory and the far side of it are two different jobs financially, and if you're not costing them differently, you're subsidizing the far one with the near one. Scale that across a year and it's the difference between a business that grows profitably and one that grows itself into a corner.

4. Payment processing

If a customer pays by card, the merchant fee comes out of the job. On a small ticket it rounds to nothing; on a large one it's real money. A typical processing structure of a percentage plus a fixed per-transaction charge means a $900 job gives back meaningfully more than a $200 job, and it happens silently on a monthly statement rather than visibly on the invoice.

Related and almost never costed: chargebacks. A single disputed transaction can wipe out the margin on several jobs at once, and the disputes that hurt most arrive on the largest tickets. Signed work authorizations, before-and-after documentation, and clean records are what win them, which is why proof-of-service documentation belongs in your job workflow rather than in a folder somebody assembles after the fact.

5. Customer acquisition cost

The input almost nobody assigns per job. If you spend money to generate leads — Google Ads, Local Services Ads, Meta, lead marketplaces — some portion of that spend belongs to each job it produced.

The lazy method is blended: total ad spend divided by total jobs. That's better than nothing and worse than it looks, because a referral job carries no acquisition cost at all while a paid-search job might carry a couple hundred dollars. Blending them makes your referral work look worse than it is and your paid work look better than it is, which leads directly to bad decisions about where next month's money goes.

The correct method requires knowing which specific jobs came from which specific source — an attribution problem covered further down. The groundwork on what a lead should cost you in the first place is in the cost-per-lead guide.

Why the biggest ticket is often the worst job

Here is the arithmetic that changes how people schedule. All figures below are clearly labeled assumptions — substitute your own and re-run it.

Assume a loaded labor rate of $28/hour, a vehicle cost of $0.70/mile, card processing at 2.9% plus $0.30, and an acquisition cost of $125 for jobs that came from paid advertising and $0 for jobs that came from referral or repeat business.

Now cost three jobs.

Job A: small, referralJob B: small, paid adJob C: large, paid ad
Invoice total$320$320$850
Materials$48$48$430
On-site labor1.5 hrs = $421.5 hrs = $425.0 hrs = $140
Drive time labor0.75 hrs = $210.75 hrs = $212.5 hrs = $70
Vehicle (miles × $0.70)22 mi = $15.4022 mi = $15.4096 mi = $67.20
Card processing$9.58$9.58$24.95
Acquisition cost$0$125$125
Total cost$135.98$260.98$857.15
Profit$184.02$59.02–$7.15

Read that bottom row again. Ranked by revenue, Job C is by far the best job of the week — more than two and a half times the ticket of the other two. Ranked by profit, it lost money, and Job A, the smallest ticket on the board, made more than three times what Job B made.

Nothing about Job C is exotic. It's a big job with heavy materials, a long day of labor, a drive to the far edge of the service area, a large card fee, and a paid lead. Every one of those is a normal Tuesday. Together they consume the entire ticket.

This is the whole argument for job costing in one table. If you schedule, market, and price based on revenue per job, you will chase Job C, decline Job A as "too small to bother with," and slowly grow your way into a less profitable business while your revenue chart points cheerfully upward.

What job costing actually changes

Once you have profit per job, four decisions get better immediately.

Pricing by distance. If Job C's problem is 96 miles of driving, the fix isn't refusing the work — it's a trip charge or a distance-tiered price that makes the far edge of your territory pay for itself. Most owners are afraid to charge it because they can't articulate why it's fair. A cost sheet articulates it in one line.

Which service lines to push. Cost every job type for a month and some lines separate clearly. High-materials work often looks impressive and performs poorly; quick, labor-efficient work often looks trivial and quietly carries the business. You cannot know which is which in your shop without running the numbers, because it varies by market, by pricing, and by how good your techs are at that specific work.

Where to spend on marketing. If paid jobs carry $125 of acquisition cost and average $59 of profit, that channel is barely funding itself, and any softening in close rate puts it underwater. That's a signal to work on close rate or channel mix before increasing spend. If one campaign produces jobs with lower acquisition cost and better margin, that's where the next dollar goes — and now you can say so with a number instead of a hunch.

Which technician assignments make money. Two techs completing the same job type in materially different hours produce materially different margins. That's a training or a routing conversation, not a personality one — but you can only have it once you can see it.

Closing the acquisition-cost loop with call data

Everything above is doable with a spreadsheet except one input: which job came from which source. That's where most job-costing efforts stall, because the connection between an ad click and an installed job runs through a phone call whose origin nobody recorded.

This is what call tracking and attribution solve, and the full setup is in the call tracking and attribution guide. CallFlux provides Dynamic Number Insertion — the phone number displayed on your website changes based on where the visitor came from — so the inbound call carries its campaign, keyword, and Google click ID with it. On Run with Jarvis that sits on Pro at $750/mo and above, alongside AI transcription, lead scoring, sentiment and intent analysis, call recording, and Google Ads conversion upload.

Three things fall out of it that feed job costing directly:

Per-job acquisition cost stops being a blend. You know this specific booked job came from this specific campaign, so the cost attached to it is real rather than averaged across work that cost nothing to win.

You can separate booked jobs from noise. Ad platforms report calls. Calls are not jobs. A large share of any campaign's call volume is price shoppers, wrong numbers, vendors, and existing customers checking on an appointment. Transcription and lead scoring let you count the calls that became work, which is the only denominator that means anything.

Conversion data goes back to the ad platform. Google Ads conversion upload means the platform optimizes toward calls that became jobs instead of toward calls in general — which changes what it buys on your behalf over the following weeks.

Once acquisition cost is real per job, the cost sheet above stops being an estimate and becomes a report you can act on.

Where the data has to live for this to be sustainable

A job-costing habit dies the moment it requires manual assembly. The inputs have to arrive attached to the job record automatically, or nobody keeps it up past the second month. That's not a discipline problem; it's a design problem.

The job record needs to carry:

  • The invoice and payment method, so the processing fee is derivable rather than guessed. That's the POS and invoicing layer in IntelliDrive, with three payment providers and bidirectional QuickBooks sync so the accounting side never drifts from the operational side. The sync mechanics are in the QuickBooks sync guide.
  • The materials consumed, from the same system that handles inventory and the sale, so partial units and supply runs are captured at the moment they happen.
  • The actual on-site time and the actual drive, from GPS tracking and dispatch. This is also what makes route optimization measurable rather than theoretical — you can prove the density gain instead of asserting it. See CRM and dispatch software for multi-tech service businesses.
  • The lead source, from call tracking, attached at the moment the call comes in rather than reconstructed later from memory.

When all four live in one platform, profit per job is a query. When they live in four systems, it's a monthly evening you will eventually stop spending. That's the practical case laid out in all-in-one vs. point solutions.

On Elite at $1,200/mo, the Jarvis AI Brain sits on top of that data as a natural-language operations assistant with over 100 tools, so questions like "which job types lost money last month" get asked in plain English instead of exported and pivoted.

A monthly job-costing routine that actually gets done

Keep it to one sitting a month.

  1. Pull the month's completed jobs with invoice totals and payment methods.
  2. Attach materials cost per job from the same record.
  3. Attach labor hours and drive, both valued at your loaded rate, with vehicle cost applied per mile.
  4. Apply processing fees from the actual rate structure, not an estimate.
  5. Apply acquisition cost per job from attribution data, with $0 on referral and repeat work.
  6. Sort by profit, not revenue. Then look at the bottom tenth and ask what those jobs have in common — a service line, a zip code, a lead source, a tech, a price point, a day of the week.
  7. Change exactly one thing for the next month and re-run it.

That last step matters more than the precision of any single input. Job costing is a steering tool, not an accounting exercise. Directional accuracy applied every month beats perfect accuracy applied once and abandoned.

What tends to show up the first time you do this

Owners running this for the first time usually find some version of the following. None of these are claims about your business — they're the recurring shapes worth checking for.

  • The far edge of the service area is unprofitable at current pricing, and nobody knew because those jobs had healthy-looking tickets.
  • One heavily-advertised service line has an acquisition cost that eats most of its margin, and it's usually the line the owner is proudest of.
  • Referral and repeat work is dramatically more profitable than any paid channel, which argues for spending on review generation, follow-up, and answering the phone rather than on more ads.
  • Small jobs that felt like a nuisance were quietly carrying the month.
  • Missed and unanswered calls represent more lost margin than any pricing change currently under discussion — which is a different problem with a different fix.

Trade-specific versions of this math show up everywhere. In the junk removal stack, drive time and disposal fees dominate the cost sheet and a full truck on a long haul can lose to a half truck across town. In trades with heavy materials, the supplier invoice is the swing variable. For general small-business financial guidance, the SBA publishes owner-facing material worth a look.

Start with the data, not the spreadsheet

The reason job costing doesn't stick isn't that owners don't understand it. It's that the inputs are scattered across five systems that don't talk. Consolidate the inputs first — invoicing, materials, GPS and dispatch, and lead attribution on one platform — and the analysis turns into a monthly habit instead of a heroic effort nobody repeats.

Core at $500/mo covers invoicing, POS, QuickBooks sync, GPS tracking, dispatch, and the CRM. Pro at $750/mo adds the call tracking and attribution that make per-job acquisition cost real, which is the input most people are missing entirely. Elite at $1,200/mo adds campaign tooling and the operations assistant. Full detail at /pricing, and the broader cost picture including minute overage is in what AI operations actually cost.

Want help mapping this to your job types? Get in touch.

Frequently Asked Questions

What is job costing for a service business?
Job costing is the practice of assigning every direct cost a specific job consumed — technician labor, materials, drive time, vehicle cost, payment processing fees, and the acquisition cost of the lead — so you can see profit per job rather than revenue per job. It is the only reliable way to tell profitable work from busy work. See /blog/cost-per-lead-service-business-guide.
Why does revenue per job hide losing work?
Revenue per job rewards the largest tickets, but large tickets usually carry the heaviest materials, the longest labor hours, the furthest drives, and the biggest card fees, so a high-revenue job can finish underwater while a small quick job finishes with better margin. Ranking by revenue systematically points you at the wrong work. See /blog/what-ai-operations-actually-cost-2026.
How do I include drive time in job costing?
Treat drive time as billable-hour capacity you spent and did not sell, valued at the same loaded hourly labor rate you use on site, then add vehicle cost separately at a per-mile rate. Most service businesses discover that drive time is their second-largest hidden cost after labor itself. See /blog/crm-dispatch-software-multi-tech-service-business.
How does call tracking data improve job costing?
Call tracking attributes each booked job back to the campaign, keyword, or channel that produced the call, which turns customer acquisition cost from a blended monthly average into a real per-job number. Without it, you are spreading ad spend evenly across jobs that cost wildly different amounts to win. See /blog/call-tracking-attribution-service-business-guide.
How much does the software behind this cost in 2026?
Run with Jarvis is $500/mo for Core with 500 AI call minutes included and $0.45/min overage, $750/mo for Pro with 1,000 minutes and $0.40/min overage, or $1,200/mo for Elite with 2,500 minutes and $0.35/min overage. Call tracking and attribution start on Pro. Month-to-month, zero setup fees, unlimited users. See /pricing.
How often should a service business run job costing?
Run it monthly at minimum, and review it by job type, by technician, and by lead source rather than only in aggregate, because the aggregate number hides the specific service line or the specific channel that is quietly consuming your margin. A monthly cadence catches drift before a whole season is gone. See /blog/quickbooks-sync-service-business-guide.

Keep reading

Stop losing calls. Start booking jobs.

Jarvis answers every call, books the job, and follows up — 24/7, in English and Spanish.