Skip to main content
Operations

Why Your Job Costing Report Might Be Lying

The most common job costing mistake isn't bad math. It's the costs that never made it onto the job, and a report that shows you a margin anyway.

Published September 26, 2026 6 min read

When a parts cost, a technician's time or a mileage log hasn't been recorded against a job, most job costing reports leave it out and show the margin anyway. The job looks more profitable than it was. Averaged across a month, your margins look healthy, you price the next quarter on them, and the bank balance tells a different story.

Here's how the partial-cost trap works, how to spot it, and what a report should do instead.

The partial-cost trap, in numbers

Say you ran ten jobs of the same type last week. The numbers are illustrative. Each job billed $500 and really cost $150 in labor and $100 in parts. The true picture is $5,000 revenue, $2,500 cost and a 50% margin.

But parts were only recorded on six of the ten jobs. The other four came off the truck and nobody logged them. The report sees:

  • Revenue: $5,000
  • Labor: $1,500
  • Parts: $600, not $1,000
  • Cost: $2,100
  • Margin: 58%

Eight points of margin that don't exist. Nothing on the report tells you four jobs are missing parts. It looks like a good week.

A missing cost never makes a job look worse. That's why the error is so dangerous: it always points the same way.

Where missing costs come from

  • Parts pulled from the truck and not logged. The most common one.
  • Supplier invoices that arrive after the job closes. The special-order part billed two weeks later.
  • Time that was never recorded, like a tech who forgot to start the job in the app until they were halfway through.
  • Mileage not logged, or the tracker off for the day.
  • Subcontracted work paid outside the system.
  • A technician with no cost rate set, so their labor counts as zero.

How the trap changes decisions

Inflated margins don't sit harmlessly in a report. They drive decisions:

  • Pricing. "Our installs run at 55%, so we can afford to sharpen the price." You can't.
  • Marketing. You push the job type that looks most profitable, which may be the one with the most missing costs.
  • Technician reviews. The tech who logs parts carefully looks less profitable than the one who doesn't.
  • Trust. When the numbers change after the late invoices come in, owners stop believing the report at all.

That last one is the real cost. A report nobody trusts gets ignored, and you're back to gut feel.

How to spot it in your own report

  1. Look for jobs with zero parts in a job type that always uses parts. A drain cleaning might use none. A water heater swap never does.
  2. Compare job costing to your books. Job margins are before overhead, so they should run above your P&L's bottom line, but if they're well above your gross margin for the month, costs are missing somewhere.
  3. Check for techs with no cost rate. Their labor shows as free.
  4. Watch for margins that drop weeks later as invoices catch up.
  5. Sort by margin, highest first. The top of the list is where missing costs hide.

Other mistakes worth checking

  • Using wages instead of loaded labor cost. Across private industry, wages were 70.0% of employer compensation costs in June 2026, according to the Bureau of Labor Statistics, so the wage alone leaves out a big share. Here's how to work out a real cost rate.
  • Using quote totals instead of invoice totals.
  • Including sales tax in revenue.
  • Counting time on hold as labor.
  • Mixing multi-stage projects with single service calls in the same average.

What a report should do instead

A job costing report should tell you when it doesn't know. That means three things:

  • Flag the job, don't guess. If a cost the job needs is missing, show the margin as unknown, not as the number you'd get by leaving it out.
  • Show coverage. Tell you what share of the jobs are fully costed, so you know how far to trust the total.
  • Keep the known jobs clean. Jobs with full costs show real margins, and jobs without them don't pollute the average.

"Unknown" feels less satisfying than a number. It's far more useful. It tells you exactly which jobs need a missing cost filled in, and it stops a false number from making your next decision for you.

Fixing the inputs

Better reports help, but the real fix is fewer missing costs:

  • Make logging parts part of closing the job, not an office task later. Parts tracking records each part at its cost when it's used.
  • Set a cost rate for every technician, including new hires on day one.
  • Take time from the job, when work starts and finishes, not from end-of-week memory.
  • Keep mileage tracking on for every vehicle.
  • Review coverage weekly. Treat a drop as a process problem, not a report problem.

A weekly five-minute check

You don't need an accountant to keep job costs honest. Once a week, someone (the office manager, or the operations manager in a bigger shop) looks at four things:

  1. Coverage for the week. If it dropped, find out which kind of cost is missing.
  2. Jobs showing Unknown. Fill in the missing parts or time while people still remember the job.
  3. New techs without a cost rate. Set it before their first week of jobs.
  4. The top five margins. Do they make sense? Unusually high margins deserve the same attention as low ones.

The first few weeks it will feel like chasing paperwork. The list gets shorter once everyone knows a missing cost will be noticed.

How FSM Navigator handles it

FSM Navigator is one app from first booking to renewals, so the job's booking, dispatch, time, parts, mileage and invoice already sit on one record. Job profitability, on the Pro and Enterprise plans, is built around one rule: never show a margin built on partial costs.

For every completed job it takes revenue before tax, less refunds, and subtracts labor, parts and mileage. When something is missing, such as no issued invoice, no cost rate for the technician or a part with no recorded cost, the margin shows as Unknown with the reason. A cost coverage figure shows how many jobs in the period are fully costed, and margin totals include only those jobs. Cost rates are private and dated, and time on hold isn't counted as labor. For the math behind it, see how to calculate profit per job.

FAQ

What is the most common job costing mistake?

Missing costs: parts, time or mileage that were never recorded against the job. The report leaves them out and shows a margin anyway, so jobs look more profitable than they were.

Why don't my job costs match my P&L?

Usually because your books hold costs that were never tied to a job, or because job revenue includes sales tax or leaves out refunds. Job margins are also before overhead, so they should always run above your bottom line.

What does coverage mean in a job costing report?

How much of the cost picture the report actually has, for example how many jobs in the period are fully costed. Low coverage means the margins cannot be trusted yet.

Should I exclude jobs with missing costs from my averages?

Yes. Average only the jobs whose costs are complete, and fix the rest. Mixing them in pulls your average margin up.

How often should I review job costs?

Weekly works for many shops. The point is to catch missing costs while people still remember the job.

Start a 14-day Pro trial

See real margins where the costs are known, and a clear Unknown where they aren't. Job profitability is on the Pro and Enterprise plans. A payment method is required at signup, and nothing is charged until the trial ends.