
October 7, 2026 · Mitt Patel · 6 min read
It's March, the snow finally stopped, and you're staring at your bank balance trying to figure out if this winter was worth it. You billed 40 driveways at a flat seasonal rate back in October. You have no idea if the three blizzards in January ate up all that money in salt and overtime, or if you came out ahead.
Why this happens
Snow work doesn't behave like the rest of your business. You bill flat-season contracts in the fall, sometimes before a single flake falls. Then the costs show up whenever the storms do, which might be November or might be nothing until February. Salt gets bought in bulk, sometimes enough for the whole season in one purchase. Overtime piles up during back-to-back storm weeks. Equipment breaks in the middle of a push, not on a convenient Tuesday.
If all of that lands in the same general "expenses" bucket as your mowing and mulch costs, you lose the ability to see snow as its own line of business. You can't tell whether a flat-fee contract made money or lost it, because the income landed in October and the costs are scattered across four other months, mixed in with everything else.
The real cost of this is decision-making blind. Without separating snow, you might keep renewing a flat-fee contract that actually costs you more in salt and labor than it brings in, especially on a property with a long driveway or a lot of walkways. Or you might undercharge next season because you're pricing off a gut feeling instead of what last winter actually cost per account.
A worked example
Say you have a flat-fee snow contract with a customer for $2,400 for the season, covering unlimited pushes above two inches. You service that property eight times over the winter. Each push costs you about $80 in labor and fuel, so eight pushes comes to $640 total. You also lay salt four times at that property, at roughly $45 per application, adding $180. Total direct cost to service that contract: $820.
That leaves $1,580 to cover overhead, equipment wear, and profit. That sounds fine, until you compare it to a second customer on the same flat-fee rate whose long driveway and shared parking lot needed fourteen pushes and six salt applications. That customer cost you $1,120 in labor plus $270 in salt, or $1,390 total in direct costs. Now you've only got $1,010 left over from the same $2,400 fee.
Without tracking pushes and salt by customer, both contracts look identical on paper: $2,400 in, nothing broken out. But one of them earns $570 less than the other for the same fee, and if you sign that customer again next year at the same flat rate, you're betting on a lighter winter to make it work.
How to set it up
- Create separate income accounts for snow. In QuickBooks Online, set up "Snow removal income" as its own account, and if it helps, split it further into "Seasonal contracts" and "Per-push billing" so you can see which pricing model performs better.
- Create separate expense accounts for snow costs. Track "Salt and de-icing materials," "Snow labor and overtime," and "Snow equipment repairs" separately from your regular landscaping cost accounts. This keeps a bad plow truck repair bill from quietly landing in your general equipment line.
- Log pushes and salt applications per customer. This doesn't have to be complicated. A simple spreadsheet or job note with the date, customer, and whether salt was applied gives you the data you need later. Some routing or scheduling apps can export this if you're already using one for dispatch.
- Spread flat-fee income across the season. A fee billed in October pays for work from November through March. Record it to an unearned revenue account when you bill it and move an equal share into snow income each month of the season. Keep the log of every actual push and salt job too, so you can compare each contract against what it cost.
- Run a snow-only profit and loss at the end of the season. Once the snow stops, pull a report filtered to just the snow income and expense accounts. This tells you, in one place, whether the season as a whole made money.
- Break it down by contract type or by customer. If you have the service log from step three, compare your highest-push customers against your flat fee. This is where you find out which accounts are quietly losing money.
What undoes this
- Mixing salt purchases with general supplies. If you buy salt at the same time as mulch or topsoil and it all lands in "materials," you lose the ability to see your true salt cost for the season.
- Not tracking pushes per customer. Without a log, you're stuck comparing total income to total cost with no way to tell which contracts are the problem.
- Letting overtime blend into regular payroll. If snow overtime isn't tagged separately, your labor cost per push is a guess, not a number.
- Forgetting equipment wear. A plow truck that needs a transmission in March because of a hard winter is a snow cost, even though the repair bill shows up well after the season's last storm.
- Waiting until spring to look at any of it. By the time you close out the season, you've lost the chance to catch a money-losing contract early enough to adjust mid-winter, like adding a per-push cap or renegotiating for next year.
Monthly checklist
- Record all salt and de-icing purchases under their own expense account.
- Log every push and salt application by customer, even briefly.
- Tag snow-related overtime separately from regular payroll.
- Record equipment repairs during storm season as snow expenses, not general maintenance.
- Check that flat-fee income is landing in a snow-specific income account, not mixed with landscaping revenue.
Common questions
Should I bill flat-fee or per-push for snow contracts?
That depends on your risk tolerance and the property. Flat-fee gives customers predictable pricing and gives you upfront cash, but you carry the risk of a heavy winter. Per-push shifts that risk to the customer but means your income depends entirely on storm frequency. Tracking cost per push by customer, as described above, is what tells you which model makes sense for a given account.
How do I know if a flat-fee contract is priced right?
Compare the total direct cost, pushes plus salt plus any equipment repairs tied to that job, against what you billed. If the leftover margin is thin or negative once you account for overhead, that's a sign the flat rate needs to go up next season, or that property needs a push cap built into the contract.
Should salt be its own expense account or grouped with materials?
Its own account. Salt costs can swing a lot from winter to winter, and if it's mixed with mulch, fertilizer, and other materials, you'll never see that swing clearly. A dedicated account makes it easy to spot at a glance.
What if I don't have time to log every push during a storm?
Even a rough log, dates and customer names jotted down at the end of each storm, is far better than nothing. You can clean it up later. The goal is just to have enough detail by spring to compare contracts against what they actually cost.
North Hudson Bookkeeping sets up snow income and expense tracking like this for landscaping clients and keeps it current through the season, so by spring you have a clear picture of which contracts made money. The first call is free.
