Home
/
Blog
/
Cost per labour hour in cleaning: where the margin goes
Case Studies
Services

Cost per labour hour in cleaning: where the margin goes

Kateryna Gulchenko
Kateryna Gulchenko
Senior Customer Support Manager

"Thirty-four sites on a monthly fee, forty-seven people on the payroll, not a single idle day. Turnover — a million and a half a month. And the profit is such that for two years now I haven't managed to buy a second van for the crews" — that is how Maryna, owner of a cleaning company in a large city, opened the conversation.

Sound familiar? The sites are never idle, there are enough new clients, complaints are rare. And there is exactly enough money to cover the wages and the chemicals.

The reason is almost always the same. In cleaning the price is fixed once — the day the contract is signed. The cost, meanwhile, carries on rising every month, quietly and invisibly. And until a site becomes a line with labour hours of its own, that drift is not visible at all.

In this article we break cleaning down into two units: the site and the labour hour. And we show how the margin falls from thirty-two per cent to eleven without a single change in price.

The founder's road: from two cleaners to forty-seven

Maryna started with two people and one office of three hundred square metres. She drew up the schedule herself, drove the chemicals over herself, turned up herself to check the quality. Her maths was simple: the monthly fee minus wages minus chemicals, the rest is mine.

Four years in there were twelve sites; by year seven, thirty-four. Supervisors appeared, a store, managers, a part-time recruiter.

That is precisely when the clarity disappeared. There were seven times as many sites, turnover was up sevenfold. The profit was not.

"When I drove round the sites myself, I could physically see how much work was there. Now I only see the figure in the contract — and it has been the same for three years, though the site stopped being that site long ago."

Why "the number of sites" says nothing about money

A site in cleaning is not a one-off service, it is a subscription. You agree the price once and hold it for years. For that price the client gets "a clean office", not a specific number of hours.

And that is the whole trap. The office changes: they refurbish, they add a kitchen, they put in more meeting rooms, they seat more people. The volume of work grows; the figure in the contract does not.

As long as all thirty-four sites sit in a single list marked "on a monthly fee", you cannot answer the basic question: which of them still earn, and which no longer do.

Life before the site became a line

The state Maryna lived in for almost three years will be familiar to any cleaning company that has grown out of a handful of people.

  • Cost was worked out from wages and chemicals. Supervisors, transport, the store and recruitment sat in "general costs" and were tied to no site at all.
  • Nobody checked the labour hours on a site after signing. The estimate was drawn up once and never looked at again.
  • Extra client requests were never recorded. The supervisor agreed verbally, and the work simply appeared in the schedule.
  • Staff turnover was "the nature of the industry". What a single replacement costs, nobody counted.
  • A lost site was blamed on the client. "They found someone cheaper" — and that is where the analysis ended.
  • Seasonality was treated like the weather. Summer is worse — and that was the whole explanation.

Not one of these problems was operational. All six were accounting problems — and that is exactly why neither the supervisor nor the manager could see them.

The main unit: the labour hour

The first thing Maryna did was work out what one hour of a cleaner's work costs.

The direct and the fully loaded labour hour

The company runs up 1 464 000 ₴ of costs a month, and they split into two very different parts.

  • Direct — 940 000 ₴. Cleaners' wages 846 000 ₴ and chemicals with consumables 94 000 ₴. They grow in step with the hours worked on the sites.
  • Overheads — 524 000 ₴. Supervisors 168 000 ₴, office and accounting 142 000 ₴, transport 78 000 ₴, equipment and workwear 52 000 ₴, store rent 46 000 ₴, recruitment 38 000 ₴. They barely depend on how many hours were worked.

Forty-seven people deliver 7 320 billable hours on the sites in a month. Divide the direct costs by those hours and you get 128 ₴ per labour hour. Divide all the costs and you get 200 ₴.

The gap between those two numbers is exactly where a cleaning company's profit hides.

The site that quietly grew

Take a typical office of 1 200 square metres with daily cleaning. The monthly fee is 52 000 ₴, signed fourteen months ago.

What the manager sees

The manager uses the familiar formula: the monthly fee minus the crew's wages and the chemicals. The site takes 232 labour hours, direct costs are 29 696 ₴. The "margin" comes out at 22 304 ₴, that is 43%. A figure that is a pleasure to show at the weekly meeting.

What is actually left

And now the same site with the fully loaded labour hour.

IndicatorEstimate at signingActual today
Monthly fee52 000 ₴52 000 ₴
Labour hours per month176232
Fully loaded cost35 200 ₴46 400 ₴
Result16 800 ₴5 600 ₴
Margin32%11%

The site has grown by 56 labour hours — almost a third of the original volume. The price has not moved once in all that time.

Why the drift goes unnoticed

Because it does not happen in a single day. The client refurbished and added a kitchen — plus twenty minutes a day. They turned the open space into meeting rooms — plus fifteen. They asked for the window display to be washed daily instead of once a week — another twenty.

Each change on its own looks like a trifle you would be sorry to spend a negotiation on. Together, over fourteen months, they ate two thirds of the profit from the site.

"I used to think the worst thing in our business was a client leaving. It turned out the worst thing is when he stays, and the site is no longer the one we signed up for."

Staff turnover: the most expensive line that is not in the budget

In a year thirty-two of the forty-seven people leave — that is 68% of the staff. For cleaning the figure is ordinary, and that is exactly why nobody counts it in money.

What one replacement is made of

Recruitment and paperwork are visible in the budget: the advert and the manager's time — 2 400 ₴; the medical certificate, documents and workwear — 1 900 ₴. Together, 4 300 ₴.

And then comes everything the budget does not hold. The supervisor spends eight hours training the newcomer — 3 360 ₴. And for the first three weeks the newcomer does the same work roughly 35% slower: that is 21 extra labour hours, another 4 200 ₴.

The full cost of one replacement is 11 860 ₴, of which 7 560 ₴ is invisible. Across thirty-two replacements that is 20 160 ₴ every month, dissolved in the payroll.

"I always took turnover for a nuisance and nothing more: so someone left, we'll find another. When I worked out that every replacement costs almost twelve thousand, I understood this is not a nuisance, it is a cost line the size of the store rent."

The small requests nobody pays for

A separate line that lives entirely outside the books. "Girls, do the fridge as well while you're at it." "Wipe down the blinds, would you." "We had a meeting today, go over the big meeting room once more."

The supervisor agrees, because it really is ten minutes and nobody wants to spoil a relationship over a trifle. The trouble is that there are eighteen minutes' worth of such trifles a day on every single site.

Do the sum: 0.3 hours × 22 working days × 34 sites — that is 224 labour hours a month. At the fully loaded cost, 44 880 ₴ of free work every month.

"When I first saw that figure I did not believe it. Forty-five thousand a month we hand out simply because the supervisors find it awkward to say "that is not in the contract"."

Lost sites: the price of a newcomer on a difficult client

The third invisible line closes the circle. A newcomer goes out to a difficult site, the quality drops, the client writes a complaint, then a second one — and terminates the contract.

In a year Maryna lost five sites out of thirty-four. Each brought on average 19 980 ₴ of contribution above direct costs, and a new client to take its place took on average two and a half months to find.

Five sites × 19 980 ₴ × 2.5 months — that is 249 750 ₴ a year, in other words 20 812 ₴ every month.

What the company actually earned

Let's add the month up. Turnover from thirty-four sites — 1 615 000 ₴, costs — 1 464 000 ₴, profit — 151 000 ₴, that is 9.4%.

Hidden lineAmount per month
Training and ramp-up of newcomers20 160 ₴
Small requests outside the contract44 880 ₴
Idle time after losing a site20 812 ₴
Total85 852 ₴
For comparison: the company's profit151 000 ₴

Three lines, not one of which appears in any report, eat 57% of the profit. And all three come from one and the same thing: nobody counts the labour hours on a specific site.

Three types of site, and they are nothing alike

When Maryna sorted the sites by type, it turned out these were three different businesses under one roof.

Type of siteMonthly feeLabour hoursResultPer labour hour
Office, daily cleaning52 000 ₴2325 600 ₴24 ₴
Shopping centre, night shift148 000 ₴52044 000 ₴85 ₴
Residential block, stairwells23 000 ₴140−5 000 ₴−36 ₴

Why a shopping centre pays better than an office

Not because it is dearer. Because it is more uniform: a large floor area, one type of surface, a single night shift with nobody underfoot. The crew settles into a rhythm and does not keep switching between tasks.

An office is the opposite — dozens of small zones, each with its own requirements, and people around the whole time. The same floor area swallows noticeably more hours.

And the residential block runs at a loss, which is the most important discovery in the table: stairwells look like simple work, but they are scattered over floors, they demand constant moving about, and they give the worst return per labour hour in the entire portfolio.

Seasonality: the spring peak and the summer dip

Cleaning is seasonal. Spring is the peak: deep cleans, windows washed after winter, the grounds around the buildings cleared. Summer is the dip: offices half empty, some clients put the monthly fee on hold or cut the frequency.

Why the summer dip hits harder than it looks

Because the overheads do not shrink. Supervisors, the store, the office and transport cost the same all year round. When the load falls from 7 320 hours to 5 900, the fully loaded labour hour rises from 200 ₴ to 248 ₴.

The same office for the same 52 000 ₴ costs the company 232 × 248 = 57 536 ₴ in summer — in other words it runs at a loss. And that is without a single change in the work itself.

Why raising the price is hard, but re-measuring the site is not

The conversation "we need to put your price up" almost always goes badly: the client hears an attempt to earn more for exactly the same thing.

What a revised estimate looks like

The conversation "over the year your site has grown by 56 hours a month, here is the list of changes" goes entirely differently. It is not about the company's money, it is about the client getting more than he ordered.

Of Maryna's fourteen sites where drift was found, eleven agreed either to pay more or to go back to the original volume. Not one walked away.

"It turned out clients do not mind paying for what is actually being done. They mind when the price simply goes up and nobody explains why."

What changed when the site became a line

Maryna did three things. Every site got a line with planned and actual labour hours, reconciled once a quarter. Extra requests started being logged by the supervisor in an app — not in order to refuse them, but in order to see the volume. And the cost of replacing a worker was calculated once and shown to the supervisors.

Over two quarters this is what became visible:

  • Eleven sites came back to their margin. Some through extra payment, some by returning to the original volume. That is roughly 90 000 ₴ a month that simply stopped leaking away.
  • The small requests became visible. Half were kept as service, half were written into the contracts as a separate line. Free work fell from 224 hours to 112 a month.
  • The supervisors started counting turnover. When a person sees that her newcomer costs the company almost twelve thousand, she treats the induction differently. Over two quarters turnover fell from 68% to 54%.

None of these decisions called for new clients or a price rise across the portfolio. They called for seeing the site as a line — and seeing how many hours it actually takes.

The takeaway for owners. In a subscription model the price is fixed once, while the cost carries on living a life of its own. So the main hygiene of a business like this is not raising prices, it is regular re-measurement: how much resource the site consumes today against how much it consumed at signing. The gap between those two numbers is your leaking margin.

A few closing thoughts

  • Work out the direct and the fully loaded labour hour separately. The direct one is for decisions about extra work, the fully loaded one is for pricing and for judging a site.
  • Reconcile planned and actual hours on every site once a quarter. Drift builds up quietly and never comes to light on its own.
  • Record extra requests even when you do them for free. First you have to see the volume, and only then decide what to do with it.
  • Work out the cost of one worker replacement and show it to the supervisors. Most of that sum is invisible and sits in their area of responsibility.
  • Count the result per labour hour, not the margin in per cent. When the limited resource is people, that is the figure that tells you which type of site to take.
  • Check the portfolio for loss-making types. Stairwells and small sites often run at a loss and survive only because "it is small money anyway".
  • Count the labour hour by season. In summer it is a quarter dearer — and a site that earns in winter can run at a loss in summer.

The money does not vanish — you just cannot see it

Cleaning looks like a business where everything is decided by quality and the discipline of the staff. In reality quality is the ticket in, and the money is decided by two other things: how many hours each site actually takes, and what an hour of your person's time costs with all the overheads on top.

None of these costs disappears by itself. But the moment a site becomes a line with planned and actual hours, you can see which of them still earns, where the margin is leaking — and what can be done about it as early as next week.

How to see this in your own company

Everything described above rests on a single table: every site is a line showing the monthly fee, the planned labour hours and the actual ones. Most owners keep this in a spreadsheet and update it once a year, when it is already too late. When the same data is collected automatically, the drift shows up in the quarter it happens rather than a year later — which is exactly why small and medium business owners use Finmap: to see the financial picture instead of reconstructing it after the fact.

Read also

Table of Contents
Check the Status of Your Business's Financial System
Order Financial Diagnostics
Kateryna Gulchenko
Kateryna Gulchenko
Senior Customer Support Manager
  • 5+ years of experience in customer support.
  • Conducting individual consultations and group Q&A sessions.
  • Creating educational video materials and instructions.
  • Generating onboarding materials.
  • Custom setup of company structures in Finmap.

Recommended for Entrepreneurs

Frequently asked questions

How do I work out the cost of a labour hour in cleaning?

Add up everything the company spends in a month and divide it by the hours you actually bill on the sites — not by the calendar fund, but by the hours genuinely worked. In the example in this article that is 1 464 000 ₴ over 7 320 hours, so 200 ₴ a labour hour. Travel time, training and downtime do not go into the denominator: they already sit in the numerator, as cost.

The direct one covers only what grows along with the hours: cleaners' wages and chemicals. In the example that is 940 000 ₴ over 7 320 hours — 128 ₴. The fully loaded one adds the overheads: supervisors, the office, transport, the warehouse, recruitment — 200 ₴ in total. You need the direct figure to decide on extra work at a site you already run, and the fully loaded one for pricing and for judging whether a site is worth having at all.

Because the site itself is changing. The client refurbished and added a kitchen, turned the open space into meeting rooms, asked for the shop window daily instead of once a week. In the example in the article an office grew from 176 to 232 labour hours over fourteen months — almost by a third. Fully loaded cost went from 35 200 ₴ to 46 400 ₴, and the margin fell from 32% to 11% on the same 52 000 ₴ monthly fee.

Once a quarter. Scope drift builds up gradually and never surfaces on its own: every single change looks like a trifle not worth opening a negotiation for. Keep two numbers side by side for every site — the hours written into the estimate and the hours that actually go in. The gap between them is your margin leaking away.

In the example 11 860 ₴, of which only 4 300 ₴ is visible in the budget — the job ad, the manager's time, the medical certificate and the uniform. The rest is invisible: eight hours of a supervisor's time on training is 3 360 ₴, and for the first three weeks a new person does the same job roughly 35% slower, which adds another 21 labour hours, so 4 200 ₴. At 68% staff turnover a year that is 20 160 ₴ a month, dissolved in the payroll.

Start by writing them down — not in order to refuse, but in order to see the volume. In the example 18 minutes a day (that is 0.3 of an hour) across 22 working days on each of the 34 sites gives 224 labour hours a month, so 44 880 ₴ of free work. One "wipe the blinds down as well" on its own is nothing. Once the volume is visible the decision makes itself: part of it stays as service, part of it goes into the contract as a separate line.

Count the result per labour hour, not the margin in percent. In the example a shopping centre returns 85 ₴ per labour hour, an office 24 ₴, and the stairwells of a residential block minus 36 ₴. The reason is not the price but how uniform the work is: a large area with one type of flooring and a single night shift lets the crew find a rhythm, while stairwells scattered across the floors eat the hours up in moving between them.

Because the overheads do not shrink along with the workload. Supervisors, the warehouse, the office and transport cost the same all year, while the billable hours drop from 7 320 to 5 900. The fully loaded labour hour rises from 200 ₴ to 248 ₴. An office on 232 hours that brought in 5 600 ₴ in winter costs the company 57 536 ₴ in summer against a 52 000 ₴ monthly fee — so it runs at a loss without a single change in the work itself.

Any questions left?
We are ready to answer them.
WhatsApp
Telegram
Finmap
Finmap support

Money Doesn't Disappear. You Just Don't See It.

Get a personal financial diagnosis or a Finmap demo — and see your business from a new perspective.

Ask Your Question to a Finmap Expert