Skip to main content
Pricing mistakes that erode profits: a reproducible costing method and margin-check formulas for cleaners

Pricing mistakes that erode profits: a reproducible costing method and margin-check formulas for cleaners

Build a spreadsheet cost stack and live margin checks to stop subsidizing bad jobs

Ask ten cleaning business owners how they set prices and you'll get some version of "I look at what the competition charges and knock a few dollars off," or "I've been doing this long enough I can eyeball a house." Both of those are guesses dressed up as strategy. And guessing works fine right up until it doesn't — usually around the time you add a second crew, take on a big recurring contract, or realize your busiest month somehow produced your thinnest bank balance.

Why most cleaning companies price by feel, and why that quietly kills margins

The core issue isn't that owners are bad at math. It's that a cleaning business pricing model built on gut feel has no way to tell you which jobs are making money and which ones are quietly subsidized by the good ones. A weekly recurring condo might be carrying a money-losing move-out clean, and you'd never know because it all blends into one deposit at the end of the month.

This article walks through a costing method you can rebuild in a spreadsheet, with the actual formulas, the margin checks that catch bad pricing before you quote it, and the difference in how you should price recurring work versus one-offs. It's less about "charge more" and more about knowing your numbers well enough that pricing becomes boring.

The hidden cost stack most quotes ignore

The pattern that shows up constantly: an owner calculates a price as labor + a little profit and calls it a day. The problem is that labor is maybe 40–55% of the true cost of delivering a job. Everything else lives in a blind spot.

  1. Direct labor — the fully loaded wage, not the hourly rate you think you pay
  2. Payroll burden — taxes, workers' comp, any benefits (usually 15–30% on top of wage)
  3. Supplies and chemicals — consumed per visit, easy to underestimate
  4. Travel — drive time is paid time plus fuel and vehicle wear
  5. Equipment amortization — vacuums and machines wear out and get replaced
  6. Overhead allocation — insurance, software, phone, admin, marketing
  7. Rework/QA reserve — a small buffer for redo visits and complaints

That "fully loaded wage" point trips people up the most. If you pay a cleaner $18/hour, your real cost is closer to $23–$26 once you factor in payroll burden, paid travel, and the unbillable minutes spent loading the van and restocking supplies. Quote against $18 and you've buried a loss in every job before you even start.

A quick worked example

Cost componentCalculationAmount
Direct labor2.5 hrs × $18$45.00
Payroll burden (22%)$45 × 0.22$9.90
Paid travel (0.4 hr loaded)0.4 × $22$8.80
Supplies per visitflat estimate$6.00
Equipment amortizationper-visit share$2.50
Overhead allocationsee method below$11.00
Rework reserve (3%)on subtotal$2.50
Total cost$85.70

If you were quoting this at $95 because "that feels about right," you're running roughly an 11% margin — thin enough that one redo visit or a slow-paying month wipes it out. Most owners assume that $95 job is far more profitable than it actually is.

Allocating overhead without an accounting degree

Overhead allocation is where people either overthink it or skip it entirely. You don't need cost-accounting software. You need one number: your overhead rate per billable labor hour.

The process:

  1. Add up your monthly fixed overhead — insurance, software subscriptions, admin pay, marketing, office/storage, phone. Call it your overhead pool.
  2. Estimate your total billable labor hours in a normal month (not scheduled hours — actual hours cleaners spend on paid jobs).
  3. Divide overhead pool by billable hours.

If your overhead runs about $6,500/month and your crews bill roughly 590 hours, your overhead rate is about $11 per billable hour. That's the $11 line in the table above. Every quote now automatically carries its fair share of the costs that don't show up on a job ticket.

A simple visual helps turn the three steps into a checklist.

Process diagram

The part most owners miss: as you grow, your billable-hour base grows faster than fixed overhead, so your per-hour overhead rate actually drops. That's the real economics of scale in cleaning.

When estimating billable hours, use actual tracked hours rather than scheduled hours to avoid understating your overhead rate.

If you only recalculate this rate once a year, you'll keep pricing off a stale number — either losing competitive bids you should be winning, or missing the fact that overhead crept up and eroded margins you thought were healthy.

Recurring vs one-off: two different pricing logics

Treating a weekly recurring client and a one-time deep clean the same way is one of the more expensive habits in this industry. They have opposite risk and cost profiles, and your pricing should reflect that.

Recurring work is predictable, lower-supply-intensity per visit (a maintained home gets easier over time), and it earns you scheduling density. It's the backbone of a stable route. Because you can count on the revenue and the home stays in decent condition, you can accept a slightly lower per-visit margin in exchange for volume and low acquisition cost.

One-off work — deep cleans, move-outs, post-construction — is unpredictable, supply-heavy, physically harder, and often a first interaction with a stranger's home. The variance is enormous. Price these with a fatter margin and a condition buffer, because the odds of the job running long are much higher.

FactorRecurringOne-off
Revenue predictabilityHighLow
Supply intensity per visitLower over timeHigh
Time-estimate riskLowHigh
Acquisition costAmortized over many visitsFull cost, single visit
Target marginLeaner is acceptableShould be higher
Deposit/prepayOptionalRecommended

A practical rule worth applying: set a target margin floor for each type. Something like — don't accept recurring work below roughly 20% margin, and don't quote one-offs below 35%. Those aren't universal numbers, they depend on your market, but the principle of two different floors is what protects you. A move-out clean priced at recurring margins is a job you'll regret by hour three.

The margin-check formula that stops bad quotes

The single most useful thing you can add to a quoting spreadsheet is a live margin check that flags when a quote falls below your floor. It's simple:

Margin % = (Quoted Price − Total Cost) ÷ Quoted Price

  1. Total loaded cost (from the stack above)
  2. Margin %
  3. A flag

    green if above floor, yellow if within 3 points, red if below

That yellow zone matters. A quote sitting at 21% when your floor is 20% technically passes, but it has no room for one bad visit. Treating "barely passing" as a warning rather than a win changes how you negotiate.

Tying in time estimates

Every cost line above depends on one input being right: how long the job actually takes. Bad time estimates are the root cause of most pricing losses, not bad math. If you assume 2.5 hours and it consistently runs 3.2, your real margin is negative while your spreadsheet still shows green.

Owners who track real time-on-site and compare it against quoted time tend to find their estimates were off by 15–25% on certain job types — almost always the harder ones. The fix isn't a better guess; it's a feedback loop. Some scheduling and field-tracking platforms capture real start/stop times automatically and let you compare quoted vs actual by job type, which turns your pricing from a one-time guess into something that self-corrects. That's the quiet advantage of running estimates through software instead of memory: the system flags that your "3-bed deep clean" template is running 40 minutes long across every crew before it quietly eats a whole quarter of margin.

When to reprice, and the rules that make it painless

Prices don't stay right. Wages rise, supply costs drift, homes change. But repricing feels risky because owners fear churn. The trick is having rules that trigger repricing automatically, so it's not an emotional decision every time.

  1. Recalculate your overhead rate every quarter. Overhead creeps; catch it early.
  2. Re-baseline fully loaded wage whenever pay changes — including raises, not just minimum-wage shifts.
  3. Flag any recurring client whose actual time exceeds quoted time by 15%+ for a review; the home may have changed.
  4. Apply annual escalators to recurring contracts — a modest 3–5% built into the agreement is far easier than a surprise 12% jump after three years of eating cost increases.
  5. Never grandfather a client into a loss. Below-floor recurring accounts get repriced or sunset, politely.

The most common failure here is emotional loyalty to a long-time client who's been paying the same rate for four years while your costs rose 20%. That client isn't loyal to you — they're loyal to a price that's slowly draining your business. A small annual escalator, disclosed upfront, prevents that entire painful conversation.

A real scenario

A two-crew residential cleaner running around 130 recurring visits a month came in convinced their pricing was fine — revenue was steady, roughly $19k–$21k monthly. When we rebuilt their cost stack with a proper fully loaded wage and a real overhead rate, three recurring accounts and nearly all of their move-out one-offs were coming in under 10% margin. Two accounts were slightly negative.

Nothing dramatic changed overnight. They applied a 4% escalator to the underpriced recurring clients (two accepted immediately, one negotiated, none left), raised their move-out base rate and started requiring a deposit, and added a condition modifier for homes that hadn't been professionally cleaned in six months.

Over the following few months, monthly revenue barely moved — but the profit on that same revenue improved by a noticeable margin, somewhere in the low thousands per month, because they'd stopped subsidizing bad jobs with good ones. The volume was almost identical. The difference was entirely in knowing which jobs were which.

When this level of costing is overkill

If you're a solo operator doing 8–10 jobs a week, you don't need overhead allocation to three decimal places. A simple loaded hourly cost and a target hourly rate will serve you fine, and time you'd spend perfecting a spreadsheet is better spent selling. The full method earns its keep once you have employees, a mix of recurring and one-off work, and enough volume that you can't hold every job's profitability in your head.

It's also the wrong move if you're chasing pure market-rate pricing in a hyper-competitive area where you compete only on price — though honestly, that's a strategy worth escaping, not optimizing around. Costing tells you your floor; it doesn't force you to price at it. Knowing your floor is what lets you walk away from work that isn't worth doing.

Putting it together

A durable cleaning business pricing model isn't a magic number or a competitor-matching exercise. It's a system: a complete cost stack, an overhead rate you recalculate regularly, separate margin floors for recurring and one-off work, a live margin check that catches thin quotes before they go out, and a repricing ruleset that runs on triggers instead of nerves. Layer in real time-tracking so your estimates correct themselves, and pricing stops being the thing that keeps you up at night.

The owners who sleep well aren't the ones charging the most. They're the ones who can look at any job on their schedule and tell you, without guessing, exactly how much of it is profit.

A durable cleaning business pricing model isn't a magic number or a competitor-matching exercise. It's a system: a complete cost stack, an overhead rate you recalculate regularly, separate margin floors for recurring and one-off work, a live margin check that catches thin quotes before they go out, and a repricing ruleset that runs on triggers instead of nerves. Layer in real time-tracking so your estimates correct themselves, and pricing stops being the thing that keeps you up at night.

The owners who sleep well aren't the ones charging the most. They're the ones who can look at any job on their schedule and tell you, without guessing, exactly how much of it is profit.

Built for Cleaning Services Tailored features for home cleaning operations and team workflows
Save Time Simplify bookings, staff assignments, and daily task management
Delight Clients Quick booking experiences with timely service notifications
Grow Revenue Boost repeat bookings and optimize team utilization