You can be fully booked, turning down work, and still barely clearing money at the end of the month. It happens constantly in lawn care because most operators track revenue — what a client pays — and never track cost per job. A $55 mow that eats 40 minutes of drive time and burns through a set of blades is a worse deal than a $45 mow two doors down from your last stop. Revenue tells you nothing until you subtract what the job actually took to produce.

Job costing is the discipline of assigning every real cost to a specific account so you can see profit per job, not just profit for the whole business. Do it once across your book and you will almost always find the same thing: 20% of your accounts are subsidizing the rest, and a handful are losing you money every single visit.

What Actually Goes Into the Cost of a Mow

Ask most operators the cost of a job and they say “gas and my time.” That undercounts by half. The real number has four buckets, and you need all four to get an honest figure.

  • Direct labor — your time or your crew’s time on-site, priced at what you actually pay (including your own target hourly wage, not $0).
  • Drive time & fuel — the minutes and gallons to get from the previous stop to this one, and back into your route. This is the cost operators forget, and it’s the one that kills scattered accounts.
  • Equipment cost per hour — depreciation, blades, belts, oil, and repairs spread across the hours you run the machine. A commercial mower plus trimmer and blower runs roughly $8–$15 per operating hour once you total the year’s wear and divide by hours used.
  • Overhead allocation — insurance, phone, software, truck payment, licensing. Total your yearly overhead, divide by billable hours, and add that rate to every job.

Add those four and you have the true cost. Subtract it from the price, and you have profit per job — the only number that tells you whether an account is worth keeping.

The account that looks best on your invoice list is rarely the account that makes the most money per hour. Distance and density decide that, not the sticker price.

The Numbers You Have to Capture in the Field

You can’t cost a job from memory at the end of the week. The two figures that matter most — on-site minutes and drive minutes — have to be captured at the job, or they turn into guesses. Guesses always round in your favor, which is exactly why unprofitable accounts survive for years.

Track these per visit:

  • Clock-in / clock-out on site — actual minutes with the machine running, not “about half an hour.”
  • Drive time from the previous stop — the isolated account 15 minutes off your route is costing you a half-hour round trip every visit.
  • Consumables that spike — a lawn that dulls blades every visit or needs double-bagging is a cost signal worth noting.
  • Re-work and callbacks — a client who calls you back to redo edges is buying two visits at the price of one.

This is where a field-first tool earns its keep. Punching a timer when you drop the gate and stopping it when you load up gives you the one number you can never reconstruct later. Apps like LawnBook let you log time and notes per property right on your phone, offline, so the data is captured the moment it happens instead of reconstructed from memory on Sunday night.

Running the Math: A Real Example

Take two accounts that both pay $50 a cut. On the invoice they look identical. Cost them out and they’re not close.

Account A — two houses down from your prior stop. Three minutes drive, 22 minutes on site. Labor at $30/hr = $12.50. Drive + fuel ≈ $1.50. Equipment at $12/hr ≈ $4.40. Overhead at $10/hr ≈ $4.20. Total cost ≈ $22.60. Profit: ~$27.40, and you were on the property 22 minutes.

Account B — 14 minutes off-route each way, 25 minutes on site. Labor $12.50. Round-trip drive labor + fuel ≈ $16. Equipment ≈ $5. Overhead ≈ $9. Total cost ≈ $42.50. Profit: ~$7.50 for nearly an hour of your day.

Same price. One earns you roughly $75/hour of profit; the other earns under $8. Do that math across 40 accounts and the picture of your business changes overnight. You’re not underpriced across the board — you’re bleeding on a specific, identifiable set of stops.

Ready to put this into practice? Download on the App Store — it’s free and works offline.

What to Do With a Money-Losing Account

Finding a loser doesn’t mean you fire it tomorrow. You have three moves, in order of preference.

  • Reprice it. The off-route account isn’t bad — it’s underpriced for its location. Raise it to what the drive actually costs. If Account B needs to be a $70 stop to hit your target, quote $70 at renewal.
  • Re-route it. Sometimes a stray account becomes profitable the moment you land a neighbor. Cluster your marketing around your worst-located accounts and the drive cost gets shared across two or three stops.
  • Release it. If the client won’t take a fair price and you can’t build density around them, hand them off. Firing a $7-profit account frees an hour you can sell to an account paying you $75.
Every hour spent on a low-margin account is an hour you can’t sell to a high-margin one. Dropping bad accounts isn’t losing revenue — it’s reclaiming capacity.

Costing Isn’t Just for Lawns

The framework travels to any service business where drive time and labor are the real product. If you run cleaning alongside mowing, or you’re thinking about a winter income stream, the same four buckets apply — a cleaning crew that spends 20 minutes driving between two houses has the same route-density problem a mowing route does. Operators running cleaning work track it the same way with ShineBook, and anyone piecing together mixed self-employed income across seasons can keep the whole picture in one place with Stintly for time tracking and finance. The lesson is identical everywhere: price the job, not the industry.

Build Costing Into Your Weekly Routine

Job costing fails when it’s a once-a-year spreadsheet marathon. It works when it’s a five-minute weekly habit. Here’s a rhythm that sticks:

  1. Capture in the field, every visit. Timer on, timer off, note anything unusual. No end-of-week reconstruction.
  2. Review one route a week. Don’t boil the ocean. Cost out a single route each week and you’ll have your whole book covered in a month or two.
  3. Flag anything under your target hourly profit. Pick a floor — say $50/hour of profit — and mark every account below it.
  4. Act at renewal. Bring your reprice-or-release decisions to the next contract cycle so the change feels routine, not personal.

Keeping the raw data in one place is what makes the weekly review fast. When your per-property time logs, notes, and pricing live together, running LawnBook’s job history for a route takes minutes instead of hours of digging through paper and memory.

The Metrics That Actually Matter

Once you’re costing jobs, stop watching revenue as your headline number. These three tell the real story:

  • Profit per hour, per account — the single most useful number in your business. Rank every account by it.
  • Route density — on-site minutes divided by total route minutes including drive. Under 60% means you’re paying yourself to drive, not to mow.
  • Cost creep — accounts whose on-site time has crept up over the season without a price change. Overgrown beds and new landscaping quietly turn a good account into a marginal one.

Watch those three and you’ll catch problems while they’re small — a lawn that’s slowly taking ten extra minutes, a route that’s drifted apart as clients came and went.

Start With Your Worst-Feeling Route

You already have a suspicion about which route drains you — the one you dread, the one with the long hauls between stops. Start there. Cost out every account on it this week, rank them by profit per hour, and you’ll have a concrete list of who to reprice and who to release. That one exercise usually pays for itself within a month, because the money was always there — you just couldn’t see it under the revenue.

Full schedules feel like success, but capacity is your real inventory, and you only have so many billable hours in a season. Job costing tells you which accounts deserve those hours. Track the true cost of every job, price by location and not by habit, and you stop being busy-broke and start being genuinely profitable — with the same truck, the same crew, and fewer bad accounts dragging on the whole operation.