Most cleaning businesses start with simple pricing. $35/hour for residential. Maybe $45 for commercial. Add 20% and call it a margin. Works fine when you're running three vans and booking twenty jobs a week.
Then growth happens. You land a medical office contract worth $8,000 monthly. Pick up a construction cleanup for $3,500. Still running residential routes Tuesday and Thursday. Now your pricing spreadsheet has fourteen tabs, nobody remembers why commercial margins differ between accounts, and you're quoting jobs based on gut feel because calculating actual costs takes forty minutes. The breaking point usually hits somewhere around $60k monthly revenue. That's when you realize your highest-revenue commercial account actually generates less profit than Mrs. Johnson's biweekly house cleaning. Meanwhile, you're turning down move-out cleanings because "they're not worth it" — except you never actually ran the numbers.
Why mixed portfolios destroy simple pricing models
A cleaning business running mixed contracts faces completely different cost structures across service types. Your residential route hits twelve homes in eight hours with minimal supply costs. Your commercial SLA requires specific insurance, dedicated equipment, and penalty clauses for missing service windows. That construction cleanup needs specialized disposal fees and safety gear your regular crews don't carry.
Traditional hourly pricing collapses under this complexity. You can't just multiply hours by rate when:
-
Residential stops cluster geographically but commercial sites scatter across the metro
-
One-off jobs require 90 minutes of quote preparation versus 5 minutes for repeat residential
-
Commercial contracts include escalation clauses that trigger cost reviews every six months
-
Some services bundle supplies while others bill separately
The math gets messier at scale. Route density affects profitability more than most owners realize. A $200 commercial cleaning might generate better margins than a $250 one-off simply because it sits between two existing stops. Without systematic cost allocation, these patterns stay completely invisible.
The hidden cost multipliers nobody tracks
Every cleaning business has cost leaks they can't see. The big ones hide in plain sight.
Stop losing bookings in operational chaos.
Wipyly helps you manage, confirm, and optimize every cleaning appointment efficiently.
- Centralized booking management
- Automated client notifications
- Staff scheduling & route optimization
No credit card required
Labor costs vary wildly by service type. Residential cleanings average around $28–32 per labor hour including burden. Commercial runs higher — usually $34–38 — because you need experienced crews who won't trigger complaints. One-off deep cleans spike to $40–45 per hour since you're often paying overtime or pulling in specialists.
Vehicle costs follow different patterns. Residential routes pack tight — maybe 8–12 miles total for a full day. Commercial contracts spread out. One medical facility contract required 47 miles of daily driving across three locations. The fuel and maintenance costs alone ate 11% of contract value.
Then there's the opportunity cost problem. Every one-off job blocks a time slot. Accept too many and your route efficiency tanks — crews spend more time driving than cleaning. But reject them all and you miss easy revenue during slow periods.
Customer acquisition costs hit differently across segments too. Residential customers cost roughly $35–55 to acquire through typical channels. Commercial accounts run $300–800 in sales time and proposals. One-off jobs practically acquire themselves through search traffic, costing maybe $8–15 in marketing.
These variations compound. A residential customer paying $180 biweekly for six months generates $2,340 revenue on a $45 acquisition cost. A commercial account at $2,000 monthly needs four months just to cover the $800 sales investment — and that's before any trial periods or startup discounts.
Building the actual pricing engine
The solution isn't more complex spreadsheets. You need modular pricing components that adapt to each service type while maintaining consistent margin logic.
Start with cost pools. Break expenses into categories that directly map to service delivery:
| Cost Category | Allocation Method | Typical Range |
|---|---|---|
| Direct labor | Hours worked × burden rate | $22–45/hour |
| Vehicle operations | Miles driven × per-mile rate | $0.65–0.95/mile |
| Supplies/chemicals | Job type × consumption rate | $3–18/job |
| Equipment depreciation | Service hours × equipment rate | $1.50–4/hour |
| Insurance allocation | Revenue percentage by type | 2–5% of revenue |
| Admin overhead | Fixed per-job charge | $8–15/job |
Next, establish margin bands by service type and volume. Small residential jobs need 35–45% gross margins to cover their high transaction costs. Large commercial contracts can run profitably at 25–30% margins thanks to predictable volume. One-offs should target 45–55% margins to offset their unpredictability.
Once you've defined the bands, every quote follows the same logic regardless of who's running the numbers. That consistency matters more than most owners expect — especially once you have multiple people quoting work.
Route-based cost allocation that actually works
Geographic clustering changes everything about cleaning profitability. Two identical $200 jobs can generate completely different margins depending on location.
Consider this route scenario:
-
Job A
2-hour commercial cleaning, 3 miles from base
-
Job B
2-hour commercial cleaning, 14 miles from base
-
Job C
2-hour commercial cleaning, 2 miles from Job A
Price these identically and you're losing money on some and leaving it on the table with others. Job B costs an extra $19 in vehicle time and fuel. Job C actually costs less than Job A because you eliminate the return-to-base leg.
Standalone Job B:
-
Labor
2 hours × $35 = $70
-
Travel
28 miles × $0.80 = $22.40
-
Supplies
$12
-
Total cost
$104.40
-
At $200 price
48% margin
Clustered Job C (following Job A):
-
Labor
2 hours × $35 = $70
-
Travel
4 miles × $0.80 = $3.20
-
Supplies
$12
-
Total cost
$85.20
-
At $200 price
57% margin
Smart operators build route premiums into pricing. Isolated commercial sites get quoted 15–20% higher. Residential jobs outside core zones add $15–25. One-offs in dead zones might add $40–60 to cover the round trip.
Variable add-ons and the psychology of upselling
Base pricing gets you in the door. Add-ons generate the profit. Most cleaning businesses handle add-ons randomly though — different prices for different customers, no systematic costing, pure guesswork on margins.
A better approach uses standardized modules with preset pricing and known costs. Window cleaning adds $3–5 in labor cost per room, bills at $8–12. Refrigerator deep-clean takes 15 minutes and $2 in supplies, bills at $35. Garage floor cleaning needs 20 minutes and specialized degreaser costing $8, bills at $65.
The trick is presentation. Instead of asking "want your windows done?" during quotes, build packages. Basic residential includes floors, surfaces, and bathrooms. Premium adds windows and appliances. Deep-clean adds baseboards and inside cabinets. Each tier has calculated margins baked in.
Commercial add-ons work differently — they're usually compliance-driven or seasonal. Stripping and waxing floors. Quarterly carpet extraction. Post-construction cleanup. These aren't upsells, they're separate service lines with distinct cost structures and their own margin targets.
One-off jobs flip the model entirely. Everything is essentially an add-on to a base cleaning. Move-out cleaning starts at $200 for empty units, adds $50 per furnished room, $75 for garage cleaning, $100 for major appliance cleaning. Build the price modularly so customers understand exactly what they're paying for.
Escalation rules that protect margins without losing accounts
Commercial contracts need price adjustment mechanisms. Material costs shift. Minimum wage increases. Insurance premiums spike. Without escalation clauses, a profitable contract becomes a money loser within eighteen months.
The standard approach — annual CPI adjustments — barely works. Cleaning businesses face cost pressures that don't track inflation. Labor costs might jump 8% while CPI shows 3%. Insurance could spike 15% after one claim.
Better contracts use triggered adjustments. If minimum wage increases over 5%, prices adjust proportionally. If fuel crosses $4.50/gallon, a temporary surcharge kicks in. If insurance premiums increase over 10%, that specific cost passes through.
"Service prices shall adjust annually based on the greater of: (a) 3% or (b) actual labor cost increases as documented by payroll records. Additionally, if fuel prices exceed $4.50/gallon for 30 consecutive days, a 2% fuel surcharge applies until prices fall below $4.00/gallon."
For residential customers, escalation works differently. Annual increases of 4–6% rarely trigger cancellations if service quality stays consistent. Timing matters — increase prices in March when people expect annual adjustments, not in November when budgets are already tight.
Decision gates for walking away from bad business
Not every job deserves a quote. Not every customer deserves service. The hardest skill in cleaning pricing is saying no to revenue that loses money.
Build explicit decision gates into your pricing process.
Gate 1: Geographic viability Is the location within 10 miles of existing routes? If not, does the job value exceed $500? If the answer to both is no, decline or quote a prohibitive price.
Gate 2: Service complexity Can standard crews handle this? If not, are specialists available? If not, decline or partner with a specialist contractor.
Gate 3: Customer profile Has the customer churned from two or more previous cleaners? Are they demanding same-day quotes or asking for prices before scope is defined? Those are red flags — quote high or pass entirely.
Gate 4: Margin threshold Does the calculated margin exceed the minimum for this service type? If not, can you adjust scope to hit it? If not, decline or consciously mark it as a strategic loss leader.
One cleaning operation tracked a 22% increase in declined quotes after implementing these gates and saw profit grow 31% over the following six months. The jobs they'd been accepting to "stay busy" were quietly costing money once you factored in travel, complaints, and collection headaches.
Real pricing scenarios with worked examples
Here are actual pricing calculations for common scenarios.
Scenario 1: Suburban residential recurring biweekly
-
3-bed, 2-bath home, 1,800 sq ft
-
Base cleaning time
2.5 hours
-
Supply cost
$8
-
Drive time
15 minutes each way (from route)
-
Labor cost
2.5 × $30 = $75
-
Travel cost
6 miles × $0.75 = $4.50
-
Total cost
$87.50
-
Target margin
40%
-
Quoted price
$145
Scenario 2: Medical office monthly deep-clean
-
4,000 sq ft across 12 rooms
-
Cleaning time
4 hours with 2-person crew
-
Specialized supplies
$35
-
Compliance documentation
30 minutes
-
Labor cost
8.5 hours × $36 = $306
-
Travel cost
18 miles × $0.75 = $13.50
-
Total cost
$354.50
-
Target margin
30%
-
Quoted price
$505
Scenario 3: Post-construction cleanup one-off
-
2,500 sq ft new build
-
Cleaning time
6 hours with 3-person crew
-
Heavy-duty supplies
$65
-
Debris disposal
$85
-
Labor cost
18 hours × $42 = $756
-
Travel cost
34 miles × $0.75 = $25.50
-
Total cost
$931.50
-
Target margin
50%
-
Quoted price
$1,865
Notice how margins adjust based on service predictability and risk. The residential customer will likely stay for years. The medical office provides steady monthly revenue. The construction cleanup might never repeat and could trigger callbacks.
Margin band optimization by business maturity
Your margin targets should evolve as your business grows. Early-stage operations need higher margins to cover inefficiencies. Mature businesses can accept lower margins on volume work.
Phase 1 (under $30k monthly): Target 45–55% gross margins on everything. You're too small for efficiency. Every job needs to cover overhead and mistakes.
Phase 2 ($30k–80k monthly): Segment margins by type. Residential at 40–45%, commercial at 30–35%, one-offs at 50–60%. You're building route density and can afford more strategic pricing.
Phase 3 ($80k–150k monthly): Tighten bands further. Volume residential might run 35% margins if route density is solid. Premium commercial could hit 40% with value-adds. One-offs stay high at 50%+ to avoid disrupting operations.
Phase 4 ($150k+ monthly): Margin becomes portfolio math. Some routes run 25% margins but generate $20k monthly in predictable revenue. Others run 55% margins on $5k monthly. The mix matters more than individual job margins.
The danger zone hits when businesses grow without adjusting margin expectations. They keep chasing 50% margins on everything, lose competitive bids, then panic and accept 20% margin work to fill schedules. Planning your margin compression intentionally is a lot less painful than reacting to it.
Common pricing engine failures
Even well-built pricing systems break under real operational pressure. The failure points are pretty predictable.
Failure 1: Quote preparation bottleneck Complex pricing calculations slow quotes. Customer requests an estimate Monday, you deliver it Thursday, they've already hired someone else. The fix is pre-calculating standard scenarios — have instant pricing for 80% of requests and only custom-calculate the outliers.
Failure 2: Sales team override chaos Give salespeople pricing flexibility and they'll use it. Every quote becomes a negotiation and margins erode. Locked pricing tiers with defined override authority work better — 5% discretion at rep level, 10% at manager level, anything beyond that needs owner approval.
Failure 3: Scope creep absorption Customer adds "just one more room" or "can you grab the garage too?" Crews comply to avoid confrontation. That 40% margin job becomes 25%. Explicit scope documentation with photographic evidence, cards on file for add-ons, and training crews to quote add-on prices on-site all help here.
Failure 4: Seasonal adjustment lag Summer brings more one-offs. Winter means more deep-cleans. Pricing doesn't adjust. You're either leaving money on the table or losing bids. Quarterly pricing reviews with demand-based adjustments fix this — raise one-off prices 20% during moving season, discount commercial contracts 10% for December starts.
Building your own pricing calculator
Stop tweaking spreadsheets. Build a proper pricing tool your team can actually use consistently. The basic architecture looks like this:
Input layer:
-
Service type dropdown
-
Square footage slider
-
Condition selector (light/standard/heavy)
-
Distance from base
-
Add-on checkboxes
Calculation engine:
-
Pull base labor hours from your task-level timing tables
-
Apply location multipliers
-
Add supply costs by type
-
Calculate travel costs from routing data
-
Sum base costs
Margin layer:
-
Apply service-type margin band
-
Adjust for customer profile
-
Factor in seasonal demand
-
Add risk premiums
Output layer:
-
Recommended price
-
Minimum acceptable price
-
Quick-close price (15% discount)
-
Payment term options
Here's a quick visual of the calculator workflow.
The whole calculation should take under 30 seconds. If it takes longer, the model is too complex for field use. Most cleaning businesses can run profitably with 8–10 service templates covering 90% of requests. Don't build a pricing engine that handles every conceivable scenario. Build one that handles bread-and-butter work instantly and accurately, then handle edge cases manually.
Technology integration without the complexity
Modern cleaning operations need pricing that connects to other systems. Quotes flow into scheduling. Accepted prices populate invoices. Actual costs feed back into future pricing decisions.
This is where AI-powered operational software makes a real difference. Instead of manually copying prices between systems, the pricing engine connects directly to route planning, adjusts for staffing patterns, and tracks actual versus estimated costs automatically. The automation handles the tedious parts — calculating drive times, pulling customer history, applying the right margin bands — so your team can focus on relationships and service quality instead of wrestling with spreadsheets.
That said, you don't need to automate everything at once. Start with the biggest pain points. Maybe that's automatic quote generation for standard residential jobs, or commercial contract renewal pricing. Build incrementally as you verify the underlying pricing logic actually works in the field.
Testing and refining your pricing model
Launch your pricing engine on new customers first. Existing customers have price expectations. New ones don't. Track these metrics for the first three months:
-
Quote-to-close rate by service type
-
Actual versus target margins
-
Customer acquisition cost relative to lifetime value
-
Route density impact on profitability
-
Callback rates by price point
You'll spot patterns quickly. Maybe commercial quotes above $600 never close. Perhaps residential under $120 triggers quality complaints. One-offs priced under $200 might lose money once you factor in quote time.
Adjust the model based on data, not gut feel. That commercial contract you think is hugely profitable might be breaking even once you factor in compliance costs and dedicated equipment. The residential route you consider mediocre might generate the best margins in the entire business thanks to tight clustering and low supply costs. Review pricing quarterly at minimum. Markets shift, costs change, and competitor strategies evolve. The pricing model that worked six months ago might be meaningfully wrong today.
From reactive to systematic pricing
Most cleaning businesses price work based on what they charged last time, what competitors might charge, or what feels right in the moment. This works until it doesn't — usually right when you're trying to scale beyond owner-operator mode.
A proper pricing engine removes the guesswork. Every quote follows consistent logic. Margins stay protected even as you add service types. Your team can price confidently without constantly pulling you in for approval.
The businesses that build systematic pricing early avoid the painful reconstruction later. They don't have to explain to customers why prices suddenly jumped 30%. They don't lose money for months before realizing certain services aren't profitable. They make informed decisions about which opportunities to pursue and which ones to walk away from.
Start simple. Pick your highest-volume service type and build a basic calculator. Test it for a month. Refine the inputs. Add the next service type. Within six months, you'll have coverage for 95% of your quotes and real data to optimize the rest.
The alternative is staying in spreadsheet chaos, quoting by gut feel, and wondering why revenue grows but profit doesn't. In a business with margins as tight as cleaning, the difference between systematic and random pricing is the difference between building something real and just staying busy.
Ready to simplify your cleaning operations?
Join 1,000+ cleaning businesses using Wipyly to save time, reduce scheduling conflicts, and enhance client satisfaction.