Cleaning contract profitability calculator
A commercial cleaning contract is profitable when the monthly price covers labor with payroll burden, supplies, travel and a share of overhead, and still leaves a margin. Enter the numbers for one account below and the calculator shows what it earns per labor hour, where the money goes, and the price or minutes-per-visit change that would fix it.
This account is thin
It earns $33.08 per labor hour against an all-in cost of $27.85, which leaves $340 a month (16% net) after overhead.
Below $1,750/month it stops covering overhead. A 20% net margin needs $2,289/month, or fewer minutes on site.
| Per month | Amount |
|---|---|
| Revenue21.7 visits | $2,150 |
| Labor (with burden)65.0 h on site + 7.2 h travel = 72.2 h paid | −$1,294 |
| Supplies | −$85.00 |
| Vehicle | −$108 |
| Gross profit31% gross margin | $662 |
| Overhead allocation15% of revenue | −$323 |
| Net profitCost per labor hour, all-in: $27.85 | $340 |
What would fix it
- Raise the price by $139 to $2,289/month. That is the number that reaches a 20% net margin at today's hours and wages.
- Cut 7 minutes per visit per cleaner (to about 1.38 h) and the account reaches 20% at the same price. Time the visit for a week before you decide whether that is real.
- Offer 4 visits a week at the same price. Many clients accept a lighter schedule with a same-day response promise over a price increase.
- Travel costs $238/month on this account. Pair it with another building nearby, or start the shift on site, and most of that returns to margin.
- Bill consumables (paper, liners, soap) separately: $85.00/month moves off your side and net margin goes to 20%.
How the math works
Visits per month = visits per week × 52 ÷ 12. Five nights a week is 21.7 visits a month, not 20; pricing on 20 quietly gives away a visit a month.
Labor = (hours on site + travel minutes) × cleaners × wage × (1 + burden). Burden is what a wage really costs you: employer payroll taxes, workers' comp, paid time off. 12% is a common floor for a small janitorial company; check yours against a recent payroll run.
Gross profit = price − labor − supplies − vehicle. Overhead is then taken as a share of revenue (insurance, admin time, software, the van, the phone) and what is left is net profit. Break-even is the price at which net profit is zero: direct costs ÷ (1 − overhead %). The "fix" numbers target a 20% net margin, a rule of thumb for a small commercial account that has to absorb call-outs and the occasional re-clean.
Billed per labor hour is the price divided by hours on site. It is the fastest way to compare accounts of different sizes: two contracts at $2,000 a month can be $22 and $41 per labor hour, and only one of them is worth keeping when a cleaner quits.
The one input this page cannot know is the real hours on site. Bids are written from an estimate; margins are made or lost on the actual minutes, and those drift. If you want the actual number, the crew app records a GPS check-in and check-out per visit, so the hours in this calculator can come from last month instead of the bid sheet. See also how to price a five-night commercial cleaning contract for the full bid walk-through.
Track actual hours per visit with GPS check-ins — free for 2 buildings
Every visit gets a check-in and check-out time from the crew's phone. Paste last month's hours into this calculator and price the renewal on what the building really takes.
Start free, no cardFacilityCare IQ is free for 2 buildings and 5 people, no card. Crew app on iOS today; Android coming soon.