Job Costing for Field Service: How to Know If a Job Actually Made You Money

You finished the job. The customer paid. The invoice cleared. So it was a profitable job, right?

Maybe. Maybe not. And if you’re honest with yourself, you probably have no idea which answer is correct.

Most field service contractors can tell you their revenue last month. Very few can tell you their profit per job. That gap between what you charge and what a job actually costs you is where businesses quietly bleed out — one “good” job at a time.

This post is going to show you exactly how to calculate whether a job made you money, what hidden costs you’re probably ignoring, and how to fix your pricing so you stop guessing.

The Gut-Feel Pricing Trap

Here’s how pricing works at most small service companies: you charge what you’ve always charged, or you charge what the guy down the street charges, or you pick a number that “feels right” and hope for the best.

A plumber quotes $450 for a water heater install because that’s what he quoted last year. An HVAC tech charges $350 for a diagnostic and repair because that’s roughly what competitors charge. A landscaper bids $200 for a cleanup because anything higher might scare the customer off.

None of these numbers are based on what the job actually costs.

The problem isn’t that these prices are always wrong. Sometimes you’ll land on a profitable number by accident. The problem is that you don’t know. You can’t tell the difference between a job that netted you $180 in profit and one that cost you $30 to complete. They both look the same in your bank account — just another deposit.

When you price from gut feel, three things happen:

  1. You underprice complex jobs because you underestimate the time and materials involved.
  2. You overprice simple jobs and lose bids you should have won.
  3. You have no data to adjust, so you keep repeating the same mistakes quarter after quarter.

The fix isn’t complicated. But it does require you to know your actual numbers.

The Job Cost Formula, Broken Down

Every job you complete has a real cost attached to it. That cost follows a simple formula:

Total Job Cost = Direct Materials + Direct Labor + Drive Time + Overhead Allocation

That’s it. Four components. But each one is more nuanced than it looks.

Direct Materials

This is the straightforward one — the parts, supplies, and materials you used on the job. A water heater, copper fittings, solder, flux, a new gas connector. Whatever you pulled off the truck or picked up from the supply house.

The catch: most contractors track what they bought for the job but forget about the consumables. That roll of Teflon tape, the tube of pipe dope, the wire nuts — they add up. A good rule of thumb is to add 5-8% on top of your tracked material costs to cover consumables and small items you don’t individually price out.

If you quoted that water heater install at $450 and the heater cost you $180, your material cost isn’t $180. It’s closer to $195-200 once you account for all the fittings and supplies.

Direct Labor

This is where most contractors fool themselves. Your plumber bills at $85/hr. That does not mean you make $85/hr when he’s on a job.

Direct labor cost is what you actually pay that technician for the hours spent on this specific job — wages, not bill rate. If your tech earns $27/hr and the job takes 2 hours, your direct labor cost is $54. We’ll get to the “loaded” cost (with benefits, insurance, etc.) in a minute.

Important: direct labor includes all time the tech spent on the job, not just wrench time. If he spent 20 minutes writing up the invoice on site and 15 minutes on a follow-up call with the customer, that’s labor.

Drive Time

Drive time is labor you’re paying for but usually not billing for. Your tech spent 35 minutes driving to the job and 25 minutes driving to the next one. That’s an hour of paid time that doesn’t appear on any invoice.

You need to allocate a portion of that drive time to each job. The simplest method: take the average drive time per job across your team and apply it as a flat allocation. If your techs average 40 minutes of drive time per job (to and from), and your loaded labor rate is $40/hr, that’s roughly $27 of drive cost per job.

Better scheduling and dispatch can cut this number significantly by routing techs more efficiently. But you need to track it first before you can improve it.

Overhead Allocation

This is the one everybody skips, and it’s the one that makes the difference between thinking you’re profitable and actually being profitable.

Overhead includes: rent, utilities, insurance (general liability, workers’ comp, vehicle), office staff salaries, software subscriptions, marketing costs, vehicle payments and maintenance, tool replacement, uniforms, phone plans, and everything else that keeps the business running but doesn’t tie directly to a single job.

Add up your total monthly overhead. Divide by the number of jobs you complete per month. That’s your overhead allocation per job.

Example: if your overhead runs $14,000/month and you complete 120 jobs/month, your overhead allocation is about $117 per job. That $117 comes off the top of every single job before you see a dollar of profit.

The Hidden Costs That Eat Your Margins

Beyond the four components of the formula, there are margin killers that most contractors don’t track at all.

Callbacks and Warranty Work

Every callback is a job you do for free — or worse, a job you pay to do. If your callback rate is 8%, that means roughly 1 in 12 jobs generates a second trip that earns you nothing. The labor, drive time, and sometimes materials for that return visit come straight out of the original job’s profit.

For HVAC contractors, callbacks on refrigerant jobs and electrical controls are particularly expensive. For plumbers, it’s usually leak callbacks within the first 48 hours. Track your callback rate by job type, not just overall.

Unbilled Diagnostic Time

Your tech arrives, spends 30 minutes diagnosing the problem, then calls the customer with the estimate. The customer says no. You just spent 30 minutes of labor plus drive time and earned nothing.

Some companies charge a diagnostic fee. Some waive it if the customer approves the repair. Either way, the time your techs spend diagnosing jobs that don’t convert is a real cost. If 20% of your estimates get declined, you’re eating diagnostic time on one out of every five calls.

Truck Stock That Walks Off

Inventory shrinkage on service trucks is a real problem. Parts get used and not recorded. Fittings end up in a tech’s garage. That $400/month in “missing” truck stock is coming right out of your margins.

Admin Time for Invoicing and Scheduling

Somebody — maybe you, maybe an office manager — spends time creating invoices, chasing payments, scheduling jobs, and handling customer calls. That time has a cost. If your office manager earns $45K/year and spends 30% of her time on invoicing and scheduling, that’s $13,500/year in admin cost supporting field operations.

Automating invoicing and payments can cut this cost dramatically, but the point here is that it exists and it needs to be accounted for somewhere in your job cost.

How to Calculate Your Real Cost Per Technician Hour

This is the number that changes everything. Once you know your true, fully loaded cost per technician hour, you can evaluate any job instantly.

Here’s the calculation:

Annual Tech Cost = Salary + Benefits + Payroll Taxes + Workers’ Comp + Vehicle Costs + Tools & Equipment + Phone/Tablet + Uniforms + Training

Take a tech earning $55,000/year:

Cost Component Annual Cost
Base salary $55,000
Payroll taxes (7.65% FICA) $4,208
Health insurance (employer portion) $6,200
Workers’ comp insurance $3,300
Vehicle costs (payment, insurance, fuel, maintenance) $12,500
Tools and equipment replacement $2,400
Phone/tablet/software $1,800
Uniforms and safety gear $600
Training and certifications $1,200
Total loaded cost $87,208

Now divide by billable hours. Here’s where reality hits.

Your tech works 2,080 hours per year (40 hrs/week x 52 weeks). Subtract:

  • Vacation and holidays: 160 hours
  • Sick days and personal time: 40 hours
  • Training days: 24 hours
  • Non-billable time (paperwork, meetings, truck loading, lunch): roughly 25% of remaining time

That leaves you with approximately 1,392 billable hours per year. In practice, most field service companies see their techs billing 5.5 to 6 hours out of an 8-hour day. The math checks out.

$87,208 / 1,392 billable hours = $62.65 per billable hour

Your tech earning $55K actually costs you nearly $63 for every hour he’s on a job. If you’re billing at $85/hr, your gross margin on labor is only about $22/hr — not $85.

You can use a labor cost calculator to run these numbers for each tech on your team.

Job Costing in Practice: A Real Example

Let’s walk through a residential HVAC repair to see how this works.

The call: Homeowner’s AC isn’t cooling. You dispatch a tech.

The quote: $350 flat rate for diagnostic and repair (capacitor replacement).

Now let’s calculate the actual cost:

Materials

Item Cost
Run capacitor (45/5 MFD) $12
Consumables (wire nuts, zip ties, etc.) $3
Total materials $15

Not bad. Capacitors are cheap parts with good markup.

Direct Labor

Tech time on site: 1.5 hours (includes diagnosis, repair, testing, and paperwork).

Loaded tech cost: $62.65/hr (from our calculation above).

Direct labor cost: $62.65 x 1.5 = $93.98

Drive Time

Drive to the job: 25 minutes. Drive to the next job: 15 minutes. Total: 40 minutes.

Drive time cost: $62.65 x 0.67 hours = $41.98

Overhead Allocation

Using our earlier example of $117 per job.

Overhead: $117.00

The Bottom Line

Component Cost
Materials $15.00
Direct labor $93.98
Drive time $41.98
Overhead allocation $117.00
Total job cost $267.96
Invoice amount $350.00
Job profit $82.04
Job margin 23.4%

The job made money. Barely. A 23% margin on a $350 job means $82 in profit. If anything had gone sideways — a longer diagnosis, a wrong part on the truck requiring a supply house run, a callback next week — this job flips to a loss.

And here’s the thing: most contractors would look at this job and think, “I charged $350 and the part cost $12. That’s a great job.” They’d be looking at $338 in imaginary profit instead of $82 in real profit.

Use a job cost calculator to run this math on your own recent jobs. The results will probably surprise you.

Still guessing which jobs are actually profitable?

See Your Real Profit Per Job — Not the Number in Your Head

Plumbing and HVAC teams use RevoField to track labor, materials, and drive time per job — so you price from data, not gut feel.

  Try RevoField Free for 30 Days

No credit card • Set up in 30 minutes • Works offline on every job site

  ▶ Watch 2-min demo

Per-Technician Profitability

Not all technicians generate the same profit. This isn’t about finding someone to blame — it’s about identifying where to invest in training, where to adjust routing, and which techs are ready for more complex (higher-margin) work.

Track these metrics per tech:

Revenue Per Technician

Total invoiced revenue divided by total billable hours. If Tech A generates $95/billable hour and Tech B generates $78/billable hour, you want to understand why. Is Tech A faster? Better at upselling maintenance agreements? Working on higher-value job types?

Callback Rate Per Technician

If one tech has a 12% callback rate and another has 3%, that’s a training issue. Every callback wipes out the profit from the original job and then some. A tech with a high callback rate can appear productive (lots of completed jobs) while actually costing you money on a net basis.

Average Job Completion Time

Two techs on the same type of job should take roughly the same amount of time. If one consistently takes 30-40% longer, it could be a skills gap, a truck organization issue, or a diagnostic approach problem. All fixable.

First-Time Fix Rate

Related to callbacks but slightly different. What percentage of jobs does each tech complete in a single visit? For electrical contractors, this metric is particularly important because electrical diagnostics can be tricky and second trips kill your margins.

An executive dashboard that pulls these metrics automatically saves you from digging through spreadsheets every week. You need to see these numbers regularly — not once a quarter when you finally get around to it.

Using Job Cost Data to Fix Your Pricing

Once you know your real numbers, you can stop guessing and start pricing for a target margin.

Setting Your Target Margin

Most healthy field service companies operate at 15-25% net margin on residential work and 10-18% on commercial work. If you’re below 10% on a job type, you’re either underpriced or inefficient. Both are fixable.

Work backward from your target. If you want a 25% margin and your total job cost (materials + labor + drive time + overhead) is $268 on that HVAC repair, your price should be:

$268 / (1 – 0.25) = $357

Rounding up to $360 or $375 gives you a buffer for the unexpected. A profit margin calculator makes this math quick for any job type.

Flat Rate vs. Time and Materials

This is an ongoing debate in field service, and job cost data actually settles it for most companies.

Flat rate pricing works when:

  • You have enough historical data to know what jobs actually cost.
  • Your techs are skilled enough that completion times are predictable.
  • You want to remove price uncertainty for the customer.

Time and materials works when:

  • Job scope is genuinely unpredictable (older buildings, unusual systems).
  • You’re still building your cost data and don’t want to lock in wrong prices.
  • The customer is commercial and expects T&M billing.

The key insight: flat rate is more profitable once you have good cost data, because you can price the job at what it should cost a competent tech, not what it actually takes a slow tech. But flat rate without cost data is just guessing with extra confidence.

With solid quoting and estimating practices built on real cost data, your flat-rate prices will be accurate and profitable instead of hopeful.

Repricing by Job Type

Run your job cost analysis across 30-50 recent jobs and sort by job type. You’ll almost certainly find:

  • Job types that are more profitable than you thought. Raise the price a little and keep winning them, or keep the price and enjoy the margin.
  • Job types that are barely breaking even. Raise the price to your target margin. Yes, you might lose some of these jobs. That’s fine — you were working for free anyway.
  • Job types that are losing money. Either reprice aggressively, find ways to cut the cost (faster diagnosis, pre-staged materials, shorter drive times), or stop offering them entirely.

This analysis often reveals that a contractor’s busiest job type is also their least profitable one. Volume hides a lot of sins.

How to Start Tracking Without Drowning in Spreadsheets

You don’t need an accounting degree or a complex ERP system. You need four data points per job:

  1. Materials used (parts list with costs)
  2. Time on site (clock in when you arrive, clock out when you leave)
  3. Drive time (time from previous location to this job)
  4. Invoice amount (what the customer actually paid)

That’s your minimum viable job cost. It won’t be perfect — you’ll still need to allocate overhead — but it’ll get you 80% of the way there.

The Simplest Way to Start

For the first two weeks, just have your techs record start time, end time, and a photo of any parts they used. Don’t overthink it. Don’t build a spreadsheet with 40 columns. Just capture those basics.

After two weeks, you’ll have enough data to calculate average job cost by type and identify your most and least profitable work.

Level Up: Capturing Data in the Field

The fastest way to get accurate job cost data is to capture it where the work happens — on the truck, at the job site. When your techs log their time, materials, and job notes through a mobile app as they work, the data is accurate because it’s recorded in real time, not reconstructed from memory at the end of the day.

A tech who fills out a timesheet at 4:30 PM for six jobs he ran that day is guessing. A tech who taps “arrived” and “completed” on his phone at each stop is recording reality.

What to Do With the Data

Once you have two to four weeks of job cost data, run these three reports:

1. Average margin by job type. Which types of work are making you money, and which ones aren’t?

2. Average margin by technician. Which techs are generating profit, and which ones need coaching or better routing?

3. Worst-performing jobs. Pull up the bottom 10% by margin. What went wrong? Long drive times? Callbacks? Underpriced quotes? Each one is a specific problem you can fix.

Review these numbers weekly. Not monthly, not quarterly — weekly. The businesses that track job profitability consistently are the ones that actually improve it.

Your Margins Won’t Fix Themselves

Here’s the uncomfortable truth: every week you spend not tracking job costs is a week you might be losing money on jobs that look profitable. The contractor who charges $350 for that HVAC repair and thinks he made $338 is making decisions based on fantasy numbers. The contractor who knows he made $82 is making decisions based on reality.

Reality is less exciting. But reality is what keeps you in business.

Start small. Track materials, time, drive time, and invoice amounts on your next 20 jobs. Run the math. You’ll know more about your business in two weeks than most contractors learn in two years.

If you want to stop guessing whether jobs are profitable — RevoField tracks labor, materials, and job costs so you can see your real margins per job, per tech, per month on an executive dashboard without building a single spreadsheet. It’s $49/user/month and you can start a free trial to see how it works with your actual numbers.

The math isn’t complicated. The hard part is deciding you actually want to know.

Leave a Comment