A commercial cleaning bid is a promise to do a defined amount of work, at a defined frequency, for a fixed monthly number, usually for a year. Get the hours wrong and you don't lose money once. You lose it every night the contract runs.
I run a cleaning company in the Vail Valley, and I already wrote up how I build a cleaning price from real costs. This article is the commercial half of that: how to walk the building, how to turn what you saw into labor hours, how to turn hours into a monthly contract, and what to put in the proposal so the number holds up.
Step 1: The walkthrough
Never bid a commercial account off a phone call or a floor plan alone. The walkthrough is where you find the hours, and the hours are the bid.
Questions to ask the client
Bring these and write down the answers:
- How often, and when? Which nights, and is there a window you have to finish inside, like after 6 p.m. and before 7 a.m.?
- How many people use the building? Headcount drives trash volume, restroom use, and break room mess more than square footage does.
- What's not getting done now? If they're replacing a cleaner, the complaint list is your scope priority list.
- Who supplies consumables? Toilet paper, paper towels, hand soap, trash liners. You or them.
- What's in the current contract? Ask to see the scope. You want to know what they think they're paying for.
- Access and security. Keys, alarm codes, badge access, and who to call when the alarm goes off at 9 p.m.
- Periodic work. Do they expect carpet extraction, floor stripping and refinishing, or window washing inside the contract, or quoted separately?
- Start date. And who signs.
What to measure and count
Don't take the square footage from the lease or the listing. That number can include space you'll never touch, and leave out common areas the client expects cleaned. Measure what you'll actually clean, and split it by area type, because a square foot of restroom and a square foot of open office are not the same job.
Write down, per area:
- Square footage and floor type. Carpet, hard floor, or both.
- Fixture counts in every restroom. Toilets, urinals, sinks, mirrors, dispensers.
- Trash cans and desks. Each one is a stop.
- Break rooms and kitchens. Sink, counters, appliances you're expected to wipe.
- Glass. Entry doors, sidelights, interior partitions.
- Obstacles. Clutter, stairs, a supply closet at the far end.
Photos help. So does noting where the water is.
Step 2: Production rates, and why to treat them as a starting point
A production rate is how much of a task one cleaner gets through in an hour. The industry reference is ISSA's 612 Cleaning Times, a paid book that lists times for hundreds of individual tasks. Some suppliers publish excerpts from ISSA's cleaning time tables, and they're worth looking at because they show how much the rate depends on the tool, not just the room.
Here are a few rows from a supplier-published sheet of ISSA cleaning times (dated 2000):
| Task | Minutes per 1,000 sq ft | Sq ft per hour |
|---|---|---|
| Vacuum with 12" upright | 26.8 | 2,239 |
| Vacuum with 14" backpack | 8.1 | 7,407 |
| Dust mop, 36" head | 4.8 | 12,500 |
| Damp mop, 24 oz head, single bucket | 12.0 | 5,000 |
| Auto scrubber, 24" | 6.0 | 10,000 |
The same sheet gives per-fixture restroom times: about 3.8 minutes per toilet, 3 minutes per urinal, 3 minutes per sink with its soap dispenser, and under a minute per mirror. A WAXIE sample sheet quoting ISSA's 540 Cleaning Times (2009) shows the same pattern for vacuums: a canister with a 12" tool at 2,500 sq ft per hour, a backpack with a 12" tool at 7,273.
Two things stand out. These are per task, not per building: "office space" isn't a rate, it's vacuuming, trash, dusting, and glass added together. And the sources are old and don't agree exactly.
For a building-level sanity check, the U.S. Department of Education's Planning Guide for Maintaining School Facilities (NCES, 2003) estimates how much area one custodian covers in an 8-hour shift at different cleanliness levels: about 10,000 to 11,000 sq ft at its top "spotless" level, 18,000 to 20,000 at Level 2, and 28,000 to 31,000 at Level 3, the norm for most schools. Divided by eight, that's roughly 1,250 to 3,900 sq ft per hour depending on the standard. Those figures are for schools, and the guide itself says they're estimates that depend on flooring, wall coverings, and windows.
ISSA's own article on cleaning times describes its published times as a benchmark to compare against, and notes that individual studies of a facility have produced better results. Use published rates to check your estimate. Use your own timed numbers to set it.
Step 3: Build the hours, area by area
Here's an example office, cleaned three nights a week. The building and the minutes are illustrative, built from the ISSA rows above where they apply, to show the method. They are not benchmarks.
| Area | Size and counts | Tasks each visit | Minutes per visit (illustrative) |
|---|---|---|---|
| Offices and open area | 4,000 sq ft carpet, 25 desks, 25 trash cans | Empty trash, dust desks, vacuum (backpack) | 65 |
| Restrooms (2) | 4 toilets, 1 urinal, 4 sinks, 2 mirrors | Clean and disinfect fixtures, restock, trash, mop | 50 |
| Break room | 300 sq ft | Counters, sink, appliance fronts, trash, mop | 20 |
| Lobby and entry | 400 sq ft | Entry glass, vacuum mats, mop | 15 |
| Corridors | 1,000 sq ft hard floor | Dust mop, damp mop | 20 |
| Total | 6,000 sq ft | 170 |
The offices row is 25 trash cans at half a minute, 25 desks at under a minute, and 4,000 sq ft of backpack vacuuming at 8.1 minutes per thousand. The restroom fixtures alone come to about 32 minutes on the ISSA times, before floors, trash, and restocking. Add setup, walking between areas, and locking up, and call it 3 labor hours per visit.
Check it against the school benchmarks: 6,000 sq ft in 3 hours is 2,000 sq ft per hour, between the NCES Level 1 and Level 2 ranges. For an office with two restrooms cleaned every visit, that's believable. If my estimate had come out at 6,000 sq ft per hour, I'd go back and look for what I missed.
Periodic work
Some tasks don't happen every visit: high dusting, baseboards, interior glass, vents. List them separately with their own frequency. In this example, say those add 4 labor hours once a month.
Step 4: Turn hours into a monthly price
The formula is the one from the pricing guide: labor hours times loaded hourly cost, plus supplies, plus overhead share, then divide by one minus your target margin. I won't re-explain it. Here it is run monthly, using the same illustrative inputs from that guide ($23 loaded hourly cost, $6 supplies and $15 overhead per commercial visit, 20% margin).
Three visits a week is 13 visits a month on average (3 × 52 ÷ 12).
- Labor: (13 visits × 3 hours) + 4 periodic hours = 43 hours × $23 = $989
- Supplies: 13 × $6 = $78
- Overhead share: 13 × $15 = $195
- Total monthly cost: $1,262
- Price at 20% margin: $1,262 ÷ 0.80 = $1,577.50, round to $1,580 a month
That's about $121.50 a visit and about $0.26 per square foot per month, if the client wants to compare bids that way. Consumables aren't in it, because in this example the client supplies them. If you supply them, price them as their own line.
Per visit or monthly?
Monthly is what most commercial clients expect. Three nights a week means 12 to 14 visits depending on the month, and a monthly price averages that out: same invoice for them, predictable revenue for you.
Per visit fits work without a fixed schedule: on-call cleanings, a space cleaned only before events, a one-time post-construction job, or a trial month before the client signs a term.
If you go monthly, settle two things in writing. Are holidays when the building is closed credited back, or already priced into the average? And what happens to the price if they add a night?
Step 5: Write the proposal
Here's the commercial cleaning bid template I'd use. Every section is there because its absence causes an argument later.
The scope table
The heart of the proposal. One row per area, one column for tasks, one for frequency:
| Area | Tasks | Frequency |
|---|---|---|
| Restrooms | Clean and disinfect toilets, urinals, sinks, mirrors; refill dispensers; empty trash; mop | Every visit |
| Offices and open area | Empty trash, dust desks, vacuum | Every visit |
| Break room | Counters, sink, appliance fronts, trash, mop | Every visit |
| Lobby and entry | Entry glass, mats, mop | Every visit |
| All areas | High dusting, baseboards, interior glass, vents | Monthly |
A scope that just says "office cleaning, 3x per week" turns into an argument about the microwave.
Exclusions
Say what's not included: carpet extraction, floor stripping and refinishing, exterior windows, anything above a reachable height, biohazard cleanup. Offer to quote them separately.
Consumables
Who buys the paper goods, soap, and liners, and if it's you, how they're billed.
Term and exit
State the start date and the term, often a year. Then add an exit clause: either side can end the agreement with written notice, 30 days is a common choice. It protects the client, which makes the contract easier to sign, and it protects you if the account turns out to be twice the work you bid.
Price adjustments
Your wages and insurance go up every year. Put the mechanism in now: the price may be reviewed once a year on the contract anniversary, with 30 days' written notice. And add a line saying added square footage, added frequency, or a change in how the space is used gets repriced.
The rest
Service days and hours, access and key handling, who the client contacts with problems, how quickly you respond, and proof of insurance.
Common mistakes when bidding commercial cleaning
Underbidding the square footage. Taking the client's number instead of measuring. Or measuring correctly, then pricing the whole building as if it were open office.
Ignoring restrooms. Restrooms are bid by fixtures, not floor area. Two small restrooms can take as long as thousands of square feet of carpet, and they're also where complaints come from.
No exit clause. If the building is dirtier than the walkthrough showed, or the client keeps adding work, you need a clean way out. Without one, you're stuck with a losing account for the rest of the term.
Using someone else's production rates as gospel. Published rates were built on someone else's tools and buildings. Time your crew for the first few weeks of a new account and adjust.
Bidding commercial cleaning in ValLedger
Here's what ValLedger does for this kind of bid, and where it stops.
A Flat Rate estimate for the monthly contract. You list what's included, one line per area and frequency, and the client sees one price with no per-line prices. The price can be one-time or per week, month, quarter, or year, so it reads as $1,580 a month with the scope under it. Exclusions, term, exit clause, and price adjustment language go in the Terms & Notes section the client sees.
Your costs stay internal. Every estimate has an Internal Costs section the client never sees. Enter labor, supplies, and overhead, and it shows your estimated profit and profit margin before you send.
Measured pricing tied to floor area. A price book item can price off a measurement such as floor area, with an amount per unit measured. That can be a rate per square foot, or hours per square foot on an hourly item. At 2,000 sq ft per hour, that's 0.0005 hours per square foot. On an itemized estimate on the web, you enter the floor area and the item fills in its quantity. One honest limit: it uses one floor-area number per estimate, so it suits a building-wide rate better than the area-by-area build above, and it works on itemized estimates, not Flat Rate.
Signature and deposit. The client opens the estimate in their client portal and signs on screen. If you require a deposit, as a percentage or a fixed amount, they pay it by card when you've connected online payments through Stripe, and the estimate is marked approved once it's paid.
Approved estimate to job. An approved estimate converts into a scheduled job with a date and location. Jobs can repeat weekly, every two weeks, or monthly, so a Monday, Wednesday, Friday contract is three weekly jobs.
Pay per visit by location. If you pay crew a flat amount per building, you can set pay per visit on the client's location. Each worker who clocks in there earns that amount for the day, whatever the hours. Only owners and admins can set it.
There's more on what ValLedger does for cleaning companies.
The short version
Walk every building. Measure what you'll clean, split by area type, and count restroom fixtures. Use published production rates to check your hours, then replace them with your own timed numbers. Run the hours through your cost formula and quote a monthly price. Put scope, frequency, exclusions, term, an exit clause, and a price adjustment clause in writing.
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 bid a real account with it before you decide.