Skip to main content
Tilbake til bloggen
Sales and pricing

Pricing a cleaning contract: how to build a cleaning cost estimate

Jonas Forså
7 min
Kostnadsestimat i CleanFlow med scenarioer, årlig kostnad, timer per uke og årsverk

Pricing a cleaning contract comes down to three numbers: how long each room takes, how often it is cleaned, and what an hour actually costs you. Get one of them wrong and you lose either the tender or the margin.

This guide walks through the whole estimate step by step, with rates and a complete worked example you can check. It is the same model as the cost engine in CleanFlow, so you can calculate by hand today and automate tomorrow. If you would rather not calculate by hand, the whole model is ready in the "Kalkyle" sheet of our cleaning plan template in Excel.

The model: price per room, not per building

A professional cleaning estimate is calculated per room and summed up:

  • Time per visit = area × minutes per m² × floor factor + set-up time
  • Cost per visit = (time ÷ 60) × hourly cost + any per-m² costs
  • Annual cost per room = cost per visit × the room's visits per year
  • Annual price for the building = sum of all rooms + transport + fixed costs + margin

Why per room? Because frequency varies. The toilets are cleaned every day, the storage room once a week. Calculate the whole building at one frequency and the estimate is systematically wrong. More on that trap at the end.

Step 1: Find the true hourly cost

The base wage is only the starting point. This is how a realistic Norwegian hourly cost is built up. The rates are the same defaults CleanFlow uses in its cost templates, so adjust them to your own numbers.

Cost line

Rate

NOK/hour

Base wage, cleaner

220.00

Holiday pay

12%

26.40

Employer's contribution (zone 1)

14.1%

31.00

Pension (OTP)

5%

11.00

Insurance

8.00

Direct wage cost

296.40

Training (HSE and professional)

7.00

Uniform and laundry

5.50

IT (mobile, systems)

4.00

HSE work

4.50

Administration, HR and quality

17.00

True hourly cost

approx. 334

Three things people forget:

  • The employer's contribution depends on the zone. 14.1 percent in zone 1, down to 5.1 percent in zone 4 and 0 percent in zone 5. Price a contract in Tromsø at the Oslo rate and you price yourself out.
  • Consumables are counted per m², not per hour. Cleaning agents, mops, paper and bags typically add 7 to 10 NOK per m² per year.
  • Transport is counted per visit. A mileage allowance of, say, 45 NOK per visit becomes 11,700 NOK a year on a daily contract.

Step 2: Set the time per room

Time is calculated from the area and a productivity rate per room type. The rate is given either as m² per hour or minutes per m². One is 60 divided by the other. Typical ranges for ordinary maintenance cleaning:

Room type

m² per hour

min per m²

Open-plan office, open areas

200–400

0.15–0.30

Private office

100–200

0.30–0.60

Meeting room

150–250

0.24–0.40

Corridor and common areas

300–500

0.12–0.20

Toilets and sanitary rooms

60–120

0.50–1.00

Kitchen and break room

80–150

0.40–0.75

Stairs

100–150

0.40–0.60

The range is decided by furnishing, floor type and accessibility. In the CleanFlow model this is handled with multipliers on the base time: densely furnished room × 1.2, hard to reach × 1.3, and carpet has its own factor. On top comes set-up time per room or per visit, meaning trolley, keys and waste handling. Typically 3 to 15 minutes. That item is notoriously underestimated.

If you have your own figures from time measurements, they always beat table values. The point is that the number must sit per room type in the estimate, not as one gut feeling for the whole building. If the team uses CleanFlow, the experience figures collect themselves: every completed task is logged with actual time, and the app calculates actual min/m² per task type and shows it next to your estimate. If you underestimate, you see it in red, and "Update estimate" writes the actual average into the template with one click, so the next quote is priced with numbers from your own buildings.

Oppgavemaler i CleanFlow med estimert tid mot faktisk snitt per m², regnet fra utførte oppgaver på tvers av bygg

Step 3: Convert frequency to visits per year

The annual price needs the number of visits per year, per room:

Frequency

Visits per year

Every weekday (Mon–Fri)

260

3 times a week

156

2 times a week

104

Weekly

52

Every other week

26

Monthly

12

Quarterly

4

If parts of the building need seasonal adjustment, such as a wing closed in summer or extra entrance cleaning in winter, adjust the frequency for the months in question before you sum up. A cleaning plan with frequency per room is the basis for this step.

Worked example: a 1,000 m² office building

Five-day operation, three zones with different frequency and productivity:

Zone

m²

m²/h

Time per visit

Visits/year

Hours/year

Offices and open plan

700

250

2.8 h

156 (3 × per week)

437

Corridors and common areas

180

400

0.45 h

260 (daily)

117

Sanitary and kitchen

120

80

1.5 h

260 (daily)

390

Set-up (15 min per visit)

0.25 h

260

65

Total

1,000

approx. 1,009

Then the costs:

Item

Calculation

NOK/year

Labour

1,009 h × 334 NOK

337,006

Consumables and equipment

1,000 m² × 10 NOK

10,000

Transport

260 visits × 45 NOK

11,700

Cost price

358,706

Profit margin

15%

53,806

Annual price (excl. VAT)

approx. 412,500

Per month

÷ 12

approx. 34,400

Per m² per year

÷ 1,000

approx. 413

Staffing comes with it. 1,009 hours divided by a realistic annual capacity (46 working weeks × 37.5 hours × utilisation, minus sick leave) gives roughly 0.7 full-time equivalents. That is useful both for rota planning and for checking that the price actually covers an employment.

Remember: quotes are given excluding VAT. Value added tax of 25 percent is added on the invoice.

What is the "right" price per square metre?

For ordinary office cleaning in Norway, estimates like this typically land in the range of 300 to 600 NOK per m² per year, depending on frequency, room mix and quality requirements. The example above lands in the middle. But the price per m² is a result of the estimate, not a starting point. Two 1,000 m² buildings can differ by 40 percent because one has twice as many sanitary rooms. Whoever prices with a flat m² rate subsidises wet-room-heavy buildings with the dry ones.

The five most common estimate mistakes

  1. Every room is priced at the building's highest frequency. The classic: the building "is daily", so everything is counted × 260, including the storage room cleaned weekly. Then you invoice weekly rooms five times too often, and the estimate does not survive a tender review. Every room goes on its own frequency.
  2. Set-up and travel between rooms are forgotten. 15 minutes per visit sounds innocent. On a daily contract it is 65 hours a year, over 20,000 NOK straight out of the margin.
  3. Margin is calculated on wages instead of cost price. 15 percent on the wage cost alone lets consumables, transport and administration eat into the profit.
  4. Wrong employer's contribution zone. Up to 9 percentage points difference in hourly cost between zone 1 and zone 4.
  5. The quality requirement is not read. A tender with INSTA 800 requirements at level 4 or 5 in selected zones needs more inspection time and closer follow-up than one without. Read up on the quality levels before you price.

From spreadsheet to cost engine

Everything above can be calculated in Excel, and our template does it for you: one room per row, and the "Kalkyle" sheet gives annual price, monthly price and full-time equivalents. The problem is maintenance over time. A new room, a changed frequency, a new wage rate, and the whole sheet has to be checked again. And when the customer asks to see the basis per room, the work starts over.

In CleanFlow the estimate lives as cost templates with your rates per room type. Upload the floor plan, and rooms and square metres are picked up automatically, every room is priced at its own frequency, and the quote with margin, staffing need and monthly price is generated from there. Change a rate and the whole estimate updates.

Kostnadsestimat i CleanFlow med scenarioer, årlig kostnad, timer per uke og årsverk

Frequently asked questions

What does cleaning cost per square metre? For ordinary office cleaning in Norway, 300 to 600 NOK per m² per year is a common range. Frequency, share of sanitary rooms and quality requirements decide where in the range you land. Always calculate bottom-up, per room.

How many square metres are cleaned per hour? From 60 to 120 m² per hour in sanitary rooms to 300 to 500 m² per hour in open corridors. Office space is typically 200 to 400 m² per hour. Use your own time measurements where you have them.

What should the hourly price to the customer be? True hourly cost (wages, social costs and overheads, typically 320 to 350 NOK) plus margin. Below 400 NOK invoiced per hour, someone is usually paying the bill somewhere else in the estimate.

Are the prices with or without VAT? Cleaning quotes are given excluding VAT. Value added tax of 25 percent is added on the invoice.


Want to see the estimate done automatically from the floor plan? See how CleanFlow prices a building, or try it free for 14 days.

Cleaning cost estimate: how to price a cleaning contract (with example) | CleanFlow Blog