Most advice on how much to charge for house cleaning starts with a national average. Somebody surveyed some prices, and now there's a number, and you're supposed to land near it.
The trouble is that a national average knows nothing about your wages, your drive times, your insurance bill, or how long your crew takes in a three-bedroom house. Price off it and you're either leaving money on the table or losing it on every clean, and you won't know which until year-end.
I run a cleaning company in the Vail Valley, where labor and housing costs look nothing like the national figures. So here's the method I'd hand a friend: build the price from your own costs, then check it against the market.
The formula
Every cleaning price, residential or commercial, comes from the same five pieces:
Price = (labor hours × loaded hourly cost) + supplies + overhead share, then add your margin.
Each piece deserves a sentence.
Labor hours are total person-hours, not clock hours. Two cleaners for two hours is four labor hours. Include paid drive time between jobs if you pay it, because you do pay it.
Loaded hourly cost is what an hour of a cleaner really costs you, not their wage. Start with the wage, then add the employer's share of payroll taxes (Social Security and Medicare come to 7.65% of wages in the US), state unemployment insurance, workers' comp, and any paid time off you give. Your insurer and payroll provider can tell you your actual rates. If you pay subcontractors, their rate is your labor cost, but you still carry the overhead below.
Supplies are chemicals, cloths, vacuum bags, and equipment wear. Track a month of purchases and divide by the number of cleans.
Overhead share is everything that keeps the business open whether or not anyone is cleaning: insurance, vehicles, phone, software, marketing, and your own time quoting and scheduling. Add up a typical month and divide by that month's job count.
Margin is profit, and it's not optional. It pays for the slow month and the equipment that breaks.
Margin vs. markup: the mistake that costs the most
If your cost on a job is $100 and you add 20%, you charge $120. That's a 20% markup. But your profit, $20, is only 16.7% of the $120 price. Your margin is 16.7%, not 20%.
If you've decided you want 20% of every dollar you bill to be profit, the math is:
Price = total cost ÷ (1 − target margin)
So $100 ÷ 0.80 = $125. The gap looks small on one job. Across a few hundred cleans a year, it's real money you meant to earn and didn't.
A worked example: a standard clean
Here's the formula run on an ordinary residential job. The numbers below are illustrative, chosen to make the arithmetic easy to follow. They are not benchmark wages or costs, and you should swap in your own before quoting anyone.
The job: a three-bedroom, two-bathroom house, standard clean, two cleaners.
- Labor: you expect two cleaners for two hours on site (4 labor hours), plus 30 minutes of paid drive time each (1 labor hour). Total: 5 labor hours.
- Loaded hourly cost: $20 wage + $1.53 employer payroll taxes (7.65%) + an assumed $1.50 for unemployment insurance and workers' comp = about $23 per hour.
- Labor cost: 5 × $23 = $115.
- Supplies: $8.
- Overhead share: say your fixed costs run $3,000 a month and you do 120 cleans a month. That's $25 per clean.
- Total cost: $115 + $8 + $25 = $148.
- Price at a 20% margin: $148 ÷ 0.80 = $185.
Now sanity-check it. $185 over 4 hours on site works out to about $46 per cleaner-hour. Published 2026 pricing guides commonly put cleaning company rates somewhere around $25 to $50 per cleaner-hour, with higher numbers in expensive markets, so this lands inside the usual band. If your number comes out far above your market, look at your hours and overhead. If it comes out far below, you're underpriced and the formula just told you so.
Residential pricing by job type
Once you have a per-hour cost and an overhead number, every residential job type is the same formula with different hours. Using the same illustrative inputs as above, here's how a three-bedroom, two-bathroom house might shake out:
| Job type | On-site labor hours (example) | Supplies | Price at 20% margin |
|---|---|---|---|
| Standard clean, one-time | 4 | $8 | $185 |
| Deep clean | 7 | $15 | $280 |
| Move-in / move-out, empty house | 9 | $15 | $340 |
| Recurring, every other week | 3.5 | $8 | $170 |
| Recurring, weekly | 3 | $8 | $155 |
Each row adds one hour of paid drive time and the same $25 overhead share, divides by 0.80, and rounds to the nearest $5. Again: these are examples of the method, not prices to copy. Your hours will be different, and in a lot of markets your costs will be too.
Standard clean
Kitchens, bathrooms, dusting, floors, surfaces. Once you've cleaned a house twice you know its hours, so it's the easiest job to flat-price.
Deep clean
Baseboards, door frames, cabinet fronts, light fixtures, behind and under things. The honest way to price it is by hours, because the hours are what changes. A house that hasn't been professionally cleaned in a year can take nearly twice as long as the same house on a maintenance schedule, and your price should say so.
Move-in and move-out
Usually the longest job per square foot because it includes insides: cabinets, drawers, appliances, closets. Price it separately from deep cleans, and say clearly in the estimate whether fridge and oven interiors are in or out.
Recurring cleans and how the discount should work
Here's the part most pricing advice gets backwards. A recurring discount shouldn't be a gift. It should be the time savings, passed through.
A house cleaned every week is easier to clean than a house cleaned once in a while. Less buildup means fewer hours. In the table, the weekly clean takes 3 hours instead of 4, and the formula gives you $155 instead of $185, about 16% less. You didn't pick that discount out of the air. The math produced it.
Published pricing guides commonly show recurring discounts somewhere in the 10 to 20% range, roughly what falls out of the hours anyway. What I'd avoid is promising a percentage before you know how the house behaves. Quote the first clean as a deep or standard one-time clean, note the hours on the second and third visits, then set the recurring price from what you observed.
Two rules for recurring pricing:
- Put the condition in writing. The recurring rate depends on the schedule. If a weekly client goes to monthly, or skips a month, the price moves back toward one-time. Say that in your terms when they sign up, not when it happens.
- Recurring revenue is worth something beyond the hours. You don't have to market for that slot or fill it again next week. That's a fair reason to keep a recurring client on a rate you'd otherwise call a little thin.
Commercial pricing: per square foot, per visit, per month
Commercial cleaning runs on the same formula, but clients expect it presented differently.
Per square foot
Commercial clients often ask for a per-square-foot rate because it's how they compare bids. Be careful with the figures you'll find online: some are per visit and some are per month, and the articles don't always say which. Check before you anchor on one.
My advice is to use square footage to describe your price, not to calculate it. Walk the space, time how long your crew needs per visit, and run the formula. Then divide by square footage at the end if the client wants that number.
Per visit
Here's a worked example with the same illustrative cost inputs. An 8,000 sq ft office, cleaned three evenings a week. On your walkthrough you estimate 3 labor hours per visit.
- Labor: 3 × $23 = $69
- Supplies: $6
- Overhead share per visit: $15
- Total cost: $90
- Price at 20% margin: $90 ÷ 0.80 = $112.50 per visit
Monthly contracts
Most commercial clients want one number a month. Three visits a week is about 13 visits a month (3 × 52 ÷ 12), so 13 × $112.50 = $1,462.50, which you'd round to $1,465 a month. Divided by 8,000 square feet, that's about $0.18 per square foot per month, if the client asks.
A few things belong in every commercial contract:
- Scope by area and frequency. Restrooms nightly, kitchen nightly, offices vacuumed twice a week, and so on. A scope that just says "office cleaning" turns into an argument over what was included.
- What's not included. Carpet extraction, window washing, floor stripping and waxing are typically separate, quoted jobs.
- Consumables. Say whether you supply paper towels, toilet paper, and trash liners, or the client does. If you supply them, they're a separate line or a clearly stated part of the monthly price.
How to quote add-ons
Add-ons are where cleaning businesses give away time. Inside the fridge, inside the oven, interior windows, laundry, inside cabinets. Each sounds small. Together they turn a four-hour job into five.
The fix is to price every add-on by the minutes it takes. From the standard clean example, $185 for 4 on-site labor hours is about $0.77 per labor minute. An oven interior that takes 30 minutes is about $23 at that rate, so call it $25. A fridge that takes 20 minutes is about $15. Your numbers will differ, but the habit is what matters: time it once, price it from the time, and keep a list so you're not inventing a price on the doorstep.
Then list add-ons as separate lines on the estimate. A client who sees "Inside oven: $25" can say yes or no to it. A client who sees one bigger total just thinks you're expensive.
Flat rate or hourly?
Both have a place. The question is who carries the uncertainty.
Flat rate works when you know the job. Recurring cleans, houses you've seen, commercial contracts with a defined scope. The client likes knowing the number, and if your crew gets faster, you keep the benefit.
Hourly works when you don't. First-time deep cleans of a house you haven't seen inside, heavy buildup, post-construction dust, a home that's been empty for a year. Quote a range of hours at a stated rate, for example 6 to 8 hours at your rate per cleaner-hour, and bill the actual hours. That way a surprise is shared instead of eaten.
A common hybrid: hourly for the first clean, flat rate for every recurring clean after it, set from what you learned on that first visit.
How to raise your prices
Your costs go up every year whether you raise prices or not. A price you set three years ago and never touched is a pay cut you gave yourself.
What tends to work:
- Review once a year, on a schedule. Rerun the formula with this year's wages, insurance, and overhead. If the price it gives you is higher than what you charge, that's your increase.
- New clients first. Quote new clients at the new rate immediately. That costs you nothing and tells you whether the market accepts it.
- Give existing clients notice in writing. Thirty days is common and fair. One short message: the new rate, the date it starts, and a sentence on why. Don't over-apologize.
- Move a little every year, not a lot every few years. A modest annual increase is easier to accept than a big jump.
- Accept that a few clients will leave. They're often the ones you were losing money on.
Turning your pricing into estimates fast
The formula only helps if the numbers make it onto the estimate quickly. Here's how that works in ValLedger, described narrowly.
A price book. You save your services and add-ons once, each with a price and a pricing type (flat, hourly, or per unit), and a category if you want one. When you build an estimate, on the web or in the phone app, you pull items from the price book instead of retyping prices. That's where your timed add-on prices belong, so the oven interior is always $25 and nobody's guessing.
Three estimate types, matched to the jobs above:
- Service is one service with a flat price or an hourly rate. In hourly mode you can enter a minimum and maximum number of hours, and the estimate shows the client that hour range with an estimated total at the midpoint. Say in your terms that you bill the actual hours. That's the hourly first-clean quote from earlier. Add-ons go underneath as their own lines.
- Itemized is a list of line items, each with a quantity and rate. That's the one for a move-out with separately priced insides or a deep clean with add-ons spelled out.
- Flat Rate lists everything that's included and shows the client one price with no per-line prices. You can set it as one-time or per week, month, quarter, or year, so a commercial contract reads as a monthly price with the scope listed under it.
Measured pricing. A price book item can be tied to a measurement such as floor area, bedrooms, or bathrooms. On an itemized estimate on the web, you enter the measurement and those items fill in their quantity from it. If you price commercial work per square foot or residential work per bathroom, the arithmetic happens for you.
Your costs stay private. Every estimate has an internal costs section the client never sees. Enter your labor, supplies, and other costs and it shows your estimated profit and margin before you send. That's the margin vs. markup check from earlier, on every quote.
Approval and deposits. The client opens the estimate in their client portal, approves it, and signs on screen. You can require a deposit on approval, as a percentage or a fixed amount, which the client pays by card when you've connected online payments through Stripe.
If you're quoting from a truck between jobs, I wrote up how quoting and invoicing from your phone should work, and there's a broader page on what ValLedger does for cleaning companies.
The short version
Don't start from someone else's average. Work out your loaded hourly cost, supplies, and overhead per job. Estimate hours honestly. Divide by one minus your target margin. Price add-ons by the minute. Let recurring discounts come from the hours they save. Quote hourly when you can't see the job yet, flat when you can. Rerun the numbers every year.
If you're still building the client list that all this pricing applies to, I wrote a separate playbook for getting cleaning clients.
When you want your price book, estimates, deposits, and approvals in one place, you can try ValLedger free for 14 days, no credit card required, and price a real week of jobs with it before you decide.