Skip to main content
How-To

How to Calculate Profit Per Job, With Examples

Four numbers, one subtraction, and a water heater repair worked from start to finish. The math is easy. Getting honest numbers for each part is where most job costing goes wrong.

Published September 26, 2026 6 min read

To calculate profit per job, take what you billed for the job (before tax, less any refunds) and subtract what the job cost you directly: labor at your real hourly cost, parts at what you paid, and the cost of driving there. What's left is the job's gross margin. Divide it by the revenue to get a percentage. It won't include overhead like rent and insurance, but it tells you which jobs are pulling their weight.

Here's how to do it for a real service call, and the mistakes that make the answer look better than it is.

The formula

Job margin = Revenue − (Labor cost + Parts cost + Drive cost)

Margin % = Job margin ÷ Revenue

Four numbers. The hard part isn't the math. It's getting an honest figure for each one.

Working out each number

Step 1: Revenue, the right way

Use what you billed for the job, before sales tax. Tax isn't your money; you're collecting it for the state. Take off any refund or credit you gave on the job.

Don't use the quote. Use the invoice. If the job grew on site, the invoice has the real number.

Step 2: Labor, at what it really costs you

This is the number most owners get wrong, and it's usually the biggest one.

Labor cost isn't the tech's wage times the hours. A technician costs you more than their wage: payroll taxes, workers' comp, health insurance, paid time off. Across private industry, wages and salaries made up 70.0% of employer compensation costs in June 2026, and benefits the other 30.0%, according to the Bureau of Labor Statistics. That's an all-industry national average, not a trade benchmark, but it shows the size of the gap.

As a rough first pass, divide the hourly wage by 0.70. A $34-an-hour wage becomes a loaded cost of about $48.57 an hour. Your own number will be different, and labor cost per job: your real hourly cost walks through working it out properly.

Then multiply by the hours on the job, from when work started to when it was done. Don't include time the job sat on hold waiting for a part. That's a scheduling problem, not job labor.

Step 3: Parts at your cost

Add what you paid for every part and material used on the job: capacitor, fittings, refrigerant. Use your cost, not the price you charged.

This is the number most often missing. The parts came off the truck, but nobody recorded them against the job.

Step 4: Drive cost

Every job has a drive. Count the miles to the job, and multiply by what a mile costs you to run: fuel, maintenance, tires and depreciation. Use your own per-mile cost if you know it.

If you charge a trip fee, it's already in the revenue. The drive cost still belongs here. There's more on pricing the drive in how to charge for travel time.

A worked example

A water heater repair. The numbers are illustrative:

  • Revenue: $485 billed, before tax
  • Labor: 2.5 hours × $48.57 = $121.43
  • Parts: thermostat and element, $96 at cost
  • Drive: 22 miles × $0.70 per mile = $15.40

Total direct cost: $121.43 + $96 + $15.40 = $232.83. Job margin: $485 − $232.83 = $252.17. Margin %: $252.17 ÷ $485 = 52.0%.

Now use the wage instead of the loaded rate. Labor drops to $85, and the margin looks like 59.5%. Use the wage and leave out the parts because nobody recorded them, and it looks like 79.3%. Same job, three different answers, and only one of them is true.

Same job, three different margins: 52.0% at your real labor cost, 59.5% at the wage, 79.3% with the parts left out.

Gross margin, not profit

This is gross margin, before overhead. Rent, insurance, trucks sitting in the yard, office staff, software and your own salary all come out of it. A job with a 52% gross margin isn't a 52% profit.

That's fine. Gross margin per job is the right tool for comparing jobs and job types. Overhead is the right tool for deciding what your prices need to be overall. Mixing the two is how owners end up spreading rent across every service call and learning nothing about which calls are worth taking.

Compare job types, then act

One job tells you about one job. The useful view is by job type: tune-ups against repairs against installs against drain cleanings. Twenty jobs of each will show you which types hold their margin, which ones swing, and which ones you're quietly losing money on. Say your diagnostic calls average 30% while installs average 45%. That's a different conversation about what to advertise.

Once you have a few weeks of margins by type, look for three things:

  • Low margin and high volume. These are usually priced from habit. A small price change here moves the whole month.
  • A wide spread. If one water heater repair makes 60% and the next makes 15%, the problem is scoping or diagnosis, not price. Look at what the low ones have in common.
  • The drive eating the margin. Small jobs far from your base can lose money even at a fair price. A trip fee or a service-area rule may be the answer.

Then change one thing, and check the same numbers a month later. A price moved on a hunch can't be judged. A price moved on job margins can.

The mistakes that inflate job profit

  • Using wages instead of loaded labor cost. In the example above, that alone moved the margin from 52.0% to 59.5%.
  • Leaving out missing costs. A job with no parts recorded looks like pure profit.
  • Treating on-hold time inconsistently. Pick a rule for it and apply it to every job.
  • Using quote totals instead of invoice totals.
  • Forgetting the drive. On a small job it's a real share of the cost.

The second one is the worst, because it's invisible. We go deeper in why your job costing report might be lying.

Doing this without a spreadsheet

Working out one job by hand is useful once. Doing it for every job, every week, is where spreadsheets fall apart, because the numbers live in four different places.

FSM Navigator is one app from first booking to renewals: the customer books, the job is dispatched to the right tech, the work is done in the mobile app and the invoice goes out from the same record. So job profitability can do this for every completed job on the Pro and Enterprise plans:

  • Revenue is the invoice total before tax, less the before-tax share of refunds.
  • Labor is the time from when work started to when the job was completed, minus time on hold, at a private cost rate you set for each technician, separate from what you bill.
  • Parts come from inventory on Enterprise; mileage comes from business trips logged to the job.
  • Results group by technician, customer, job type or skill.
  • When a cost is missing, the margin shows Unknown with the reason, and a coverage figure tells you how many jobs are fully costed, instead of an inflated number.

FAQ

How do you calculate profit on a service call?

Take the revenue you billed before tax, less any refund, and subtract labor at your loaded hourly cost, parts at what you paid for them, and the cost of the drive. What is left is the job's gross margin. Divide it by the revenue for a percentage.

What's a good margin per job?

It depends on your trade, your market and your overhead. Compare your own job types against each other first. That tells you more than an industry average, because it is measured on your own costs.

Should overhead be included in job profit?

Not in per-job gross margin. Keep overhead such as rent, insurance and office staff separate, and use it to set your overall pricing. Gross margin per job is the right tool for comparing one job type with another.

Start a 14-day Pro trial

See the margin on every completed job, with missing costs flagged instead of hidden. Job profitability is on the Pro and Enterprise plans. A payment method is required at signup, and nothing is charged until the trial ends.