Job costing for tree service: how to know if a job actually made money

Job costing for a tree service means comparing what a job actually cost, crew hours, equipment time, fuel, disposal, and a fair share of overhead, against what it actually brought in, once the work is done. It’s the after-the-fact check on the estimate you made before the job started, and it’s the only way to know whether a job that looked busy was actually profitable.

What job costing means for a tree service, in plain terms

Revenue coming in isn’t the same question as a job being profitable. A crew can stay booked solid, invoices can go out on time, and the business can still be quietly losing money on a category of jobs nobody’s checked closely.

Job costing is the habit of checking, job by job, whether what came in actually covered what went out, using what the job actually took, not what you guessed when you bid it: the real hours, the real dump trips, the real equipment time. Bidding looks forward and estimates; job costing looks backward and verifies. The bidding guide covers the forward-looking half of this; this one covers the check that comes after.

There’s no accounting course required to do this. It’s arithmetic applied consistently, job after job, until patterns show up that a single invoice never would.

Tree service owner reviewing job costs after a completed job

Start from your all-in hourly crew cost

If you’ve read the guide on how to bid a tree job, you’ve already built the number this section depends on: your all-in hourly cost, labor, equipment, and overhead rolled into one figure per crew-hour. That number was built to price jobs going forward. Job costing uses the same figure in reverse.

Instead of multiplying your all-in hourly cost by an estimated hour count to arrive at a bid, you multiply it by the actual hours a job took, then compare that total against what the job actually brought in. Same rate, same logic, opposite direction. If you haven’t worked out that number yet, that guide is the place to start, since everything below assumes you already have it.

Direct costs vs. overhead in tree work

This is the distinction job costing runs on, and it’s easy to get wrong by lumping everything into one pile.

Direct costs

Direct costs are the ones that exist only because this specific job happened. If the job hadn’t been booked, these costs wouldn’t exist either.

  • Fuel burned on this job specifically
  • Dump and disposal fees for what this job generated
  • Disposable supplies used up on the job, such as chain oil, bar chain, or rigging line wear
  • Subcontracted equipment or crew brought in specifically for this job

Overhead

Overhead is the set of costs that keep running whether or not this particular job happens. They still belong in the true cost of a job, spread fairly across all the jobs that share them, but they aren’t tied to one specific job the way direct costs are.

  • Chipper and bucket truck depreciation, the gradual cost of equipment wearing out
  • Insurance premiums, covered in detail in the tree service insurance guide as its own category of business cost
  • Shop or yard rent
  • Admin time spent scheduling, invoicing, and answering the phone

A job that only counts direct costs and skips overhead will look more profitable than it actually is, every time. That gap is where a lot of “we’re staying busy” businesses quietly lose money without noticing.

Equipment depreciation on a chipper and bucket truck is a real cost that job costing has to account for

Estimated vs. actual: the comparison that tells you the truth

What you estimated vs. what actually happened

Every bid starts with an estimate: crew hours, dump trips, and equipment time, guessed from the tree, the access, and the hazard factors, using the method in the bidding guide. Job costing is what happens after the job is done, when you go back and write down what actually happened instead: how many hours the crew actually spent, how many dump trips it took, how long the equipment was actually tied up. The gap between the two numbers is the whole point.

A job that ran an hour over estimate isn’t automatically a loss, and a job that came in under estimate isn’t automatically extra-profitable once overhead gets allocated fairly. The only way to know which is to compare the two numbers directly, job by job, instead of assuming the bid was right because the invoice got paid.

Recording actuals doesn’t require new software

Writing down actual hours and costs per job doesn’t need a system. A line in a notebook, or a row in a spreadsheet, per job, is enough to start: date, estimated hours, actual hours, dump cost, a rough overhead number, and what the customer was actually invoiced. Nothing about starting this habit requires buying anything first.

A simple method to start with

This is the same “start on paper, upgrade when it stops working” approach covered for day-to-day operations in the guide on starting a tree service business, applied here to costing instead of scheduling.

Keep one row per job, whether it’s a physical notebook or a spreadsheet, with these columns:

  1. Estimated hours. What you bid the job at.
  2. Actual hours. What the crew actually logged.
  3. Dump and disposal cost. The real number from the receipt or scale ticket, not a guess.
  4. Overhead allocation. A rough per-job share of insurance, equipment depreciation, and yard costs. Dividing your monthly overhead by roughly how many jobs you run in a month gets you close enough to start.
  5. Amount invoiced. What the customer was actually billed and, ideally, what they actually paid.

Fill in the row right after the job wraps, while the numbers are still fresh, not at the end of the month from memory. After a few weeks of rows, patterns start to show up: certain tree sizes, access types, or crew combinations that consistently run over estimate, and others that consistently come in ahead. That pattern is more useful than any single job’s number on its own.

Actual costs are only half the picture. What the job was actually invoiced and collected is the other half, and that’s usually where a separate paper trail creates the most friction: chasing down what got billed and whether it was paid, on top of tracking costs by hand. Keeping estimates and invoices in one place removes that half of the friction, though the job-costing comparison itself still runs on the method above.

When a spreadsheet stops being enough

A spreadsheet works fine as long as one person can keep up with entering actual hours and costs per job without it eating into billable time. That threshold differs for every business, but it shows up the same way: more jobs per week means more rows to fill in, and at some point re-entering the same numbers by hand turns into its own part-time task instead of a five-minute habit after each job.

There’s no fixed job count where that switch happens; it depends on how many people you’re tracking costs across and how much detail you’re capturing per row. The signal to watch for is time spent maintaining the sheet itself, not just time spent doing the work it describes.

Common mistakes that hide the real number

Most tree service operators track revenue closely and cost loosely, which is exactly how a job that isn’t actually profitable can look fine on paper for a long time. A few patterns show up often enough to check before trusting a number.

Ignoring equipment depreciation entirely

A chipper or bucket truck wears out and eventually needs replacing, but that cost doesn’t show up as a cash expense on the day of any specific job, so it’s easy to leave out of the math entirely. A job can look profitable purely because the wear on the equipment used to do it was never counted anywhere.

Treating break-even jobs as profitable

Once overhead gets allocated fairly across every job, not just the big commercial contracts, some jobs that looked comfortably profitable on the invoice turn out to be closer to break-even. That’s not a bad thing to find out; it’s the thing job costing exists to surface.

Losing margin to drive time and mobilization

On a day with several small jobs spread across a service area, drive time and setup between stops add up in ways that rarely get billed or tracked, quietly eating into the margin the invoiced amount seemed to promise. A day that looks fully booked can still come out thin once mobilization time gets counted honestly.

A worked example

The numbers below are illustrative only, meant to show how the comparison works, not a typical or expected outcome for any real job.

Say a mid-size removal was bid at 6 crew-hours for climbing, cutting, and cleanup, using an all-in hourly cost of $85, for an estimated direct cost of $510, plus $150 in estimated disposal, quoted at $825.

Here’s what the job actually looked like once it was recorded.

  • Actual hours: 7.5, not 6, because the tree had more deadwood in the canopy than expected.
  • Actual crew cost: 7.5 × $85 = $637.50.
  • Actual disposal: $180, one extra dump trip over the estimate.
  • Overhead allocation for this job: roughly $60, based on a rough per-job share of insurance, equipment depreciation, and yard costs.
  • Total actual cost: $637.50 + $180 + $60 = $877.50.
  • Amount invoiced: $825, the flat quote given to the customer.

On paper, at the moment the invoice went out, this job looked like a normal win. Once the actual hours, the extra dump trip, and a fair overhead share are added up, it cost more than it billed, $877.50 against $825. That’s not a reason to panic over one job. It’s a reason to check whether jobs with unexpected deadwood consistently run long, and whether the estimating side needs a wider cushion for that hazard factor going forward.

Comparing estimated versus actual job costs is the core of job costing

Job costing starts with a notebook or a spreadsheet, and that’s enough to begin with today. When quoting and invoicing are ready to move off paper too, that’s where ArboristDesk comes in. Check pricing when you’re ready to compare plans.

Frequently asked questions

What is job costing in a tree service business?

Job costing means comparing what a specific job actually cost, crew hours, equipment time, fuel, disposal, and a fair share of overhead, against what it actually brought in, after the job is done. It's different from estimating, which is the same comparison made in advance based on a guess rather than actual numbers.

How do I know if a tree job actually made money?

Add up the actual hours the crew spent, not the estimated hours, plus the actual disposal and fuel costs and a reasonable share of overhead like insurance and equipment depreciation, then compare that total to what the customer was invoiced. If the gap between the invoiced amount and the true cost is thinner than expected, or negative, the job didn't perform the way the estimate assumed.

What costs get missed most often in tree service job costing?

Equipment depreciation is the most commonly skipped cost, since a chipper or bucket truck's wear doesn't show up as a cash expense on the day of the job. Drive time and mobilization between jobs, along with a fair overhead allocation for insurance, admin time, and yard costs, are the other costs that quietly erode a job's real profitability when they aren't counted.

Should I track job costing by job or by crew?

Start by job, since that's what tells you whether a specific type of job, tree size, or access difficulty is actually worth taking at the price you're charging. Tracking by crew becomes a useful second layer once you have more than one crew, to see whether cost or speed differences between crews are affecting margin.

When should I switch from a spreadsheet to software for job costing?

A spreadsheet works fine as long as one person can keep up with entering actual hours and costs per job without it becoming its own part-time task. Once enough jobs are running each week that re-entering the same numbers by hand starts eating into billable time, that's usually the point worth looking at dedicated tools for.

How is job costing different from bidding or estimating?

Bidding and estimating happen before a job, based on your best estimate of what it will take. Job costing happens after, using the actual hours, costs, and outcome, and it's what tells you whether your bidding assumptions were right or need adjusting on the next similar job.