Cleaning contract profitability

Why a Commercial Cleaning Contract Can Lose Money Even When Revenue Looks Good

Your customer can pay every invoice on time, your crews can stay busy, and the account can still be getting weaker every month. Revenue tells you what came in. It does not tell you what the contract kept.

By ProfitWatch Team · Published September 10, 2026

Revenue can stay flat while margin disappears

Recurring janitorial contracts are often billed at a fixed monthly amount. That makes revenue easy to see and easy to trust. The costs underneath that revenue are less stable. Labor, wage rates, supplies, overtime and supervision can change while the customer's monthly invoice stays exactly the same.

Account contribution = monthly revenue − recurring account costs

If recurring costs rise and price does not, contribution falls even though top-line revenue looks healthy.

1. Labor hours creep above the original plan

This is one of the easiest ways for a cleaning account to lose margin. Ten or fifteen extra minutes per shift can feel insignificant, but across multiple employees and dozens of service days the monthly cost compounds.

Compare actual hours with the labor plan used to price the contract. If hours are consistently high, investigate staffing, production rates, building conditions and whether the current scope still matches the original assumptions.

2. Wage pressure changes the economics

An account can run exactly on its planned hours and still underperform because the average wage is higher than expected. That is why it is useful to separate an hours problem from a wage problem.

Use loaded labor cost, not wage alone, so the account view includes the direct payroll burden carried by those hours.

3. Scope grows without a matching price change

Small customer requests have a way of becoming recurring expectations. Extra trash areas, added restrooms, more frequent touchpoints, day-porter tasks or repeated special requests may each seem manageable. Together they can materially change the labor required by the account.

A useful question: If you were bidding this exact scope today, using today's wage and today's required hours, would you submit the same price?

4. Overtime becomes normal instead of exceptional

Occasional overtime may be a temporary staffing event. Repeated overtime is different. If an account regularly requires premium labor to maintain service, that cost belongs in the profitability conversation even if the underlying schedule still looks reasonable.

5. Supplies and account-specific costs rise

Labor gets most of the attention because it is usually the largest cost, but supplies, equipment, subcontracted work and account-specific management can also erode contribution. Review recurring costs separately from unusual one-time expenses so a temporary event does not distort a permanent pricing decision.

6. Owner labor is missing from the numbers

For owner-operated cleaning companies, filling a staffing gap personally can protect service and the customer relationship. But if those hours are never counted, the account appears more profitable than it truly is. Value owner cleaning time at a reasonable replacement labor cost.

7. The price has simply gone stale

A contract may have been priced correctly when it started. That does not mean the same price remains correct years later. Wage markets, service expectations and direct costs change. When operations are reasonably controlled but the account still misses its target, pricing may be the remaining problem.

See How to Price a Janitorial Contract Without Guessing for a practical pricing framework.

Diagnose the driver before choosing the fix

A weak account does not automatically need a price increase. If hours are excessive, an operating correction may recover the margin. If hours are on plan and wage cost has risen, pricing may be more appropriate. If both changed, the best answer may be a combination.

The goal is to understand the recurring dollar gap and the reason behind it. That is the core of account-level commercial cleaning profit margin.

Check one account before the problem gets bigger

ProfitWatch is designed for the period after a contract is won, when actual operating performance begins replacing bid assumptions. Use the free Account Profitability Check to estimate whether one recurring cleaning account is still supporting its target economics.