Skip to content

KnowledgePricing

Cost per hour: how to work out what an hour of work really costs you

From gross hourly wage to rate for services where you mainly deploy people. With a worked example from cleaning in the Netherlands, and a way to check after the award whether you priced correctly. Premiums, collective agreement figures and absence figures come from public Dutch sources; the site, the staffing and the business costs are made up. Your price remains your own responsibility: use your own figures.

Atvalio · November 2026 · 14 min read

Download this article as a PDF

Written by Atvalio, with help from AI, and checked against practice and sources. About us

Why the gross wage is not your cost price

Take a cleaning site of 20,000 hours a year starting in January 2027, under the Dutch cleaning sector collective agreement. The people on site earn € 16.91 an hour on average. Count everything and aim for 3% profit, and you end up at a base rate of € 37.19 an hour. Allowances for evenings, weekends and public holidays come on top, separately.

There is no big surprise between those two amounts, just many small items: premiums, holidays, public holidays, sickness, team meetings, travel time, recruitment, induction, a site manager. Together they bring the direct costs to € 34.05 an hour.

The risk is in what you leave out. Drop sickness and waiting time from this example and you come out 8.4% lower. With a 3% profit mark-up, you then win a contract you lose money on for years.

It helps to split the costs into three groups. Some move with the number of hours: wages, allowances, premiums, pension. Some move with the number of people: recruitment, induction, training, workwear. And some belong to the contract itself, such as the site manager, the start-up and what happens when the contract ends.

Write your assumptions down

A costing for a services contract is mostly assumptions. How many hours does someone work on average? Which pay step are people on? How much sickness do you expect, how long are the shifts? Be a few percent out on one of those and your cost price moves with it.

So write those assumptions down before you calculate, per site. After the award, compare them with what actually happens. If you priced at € 17 an hour and the site turns out to cost € 18, you want to know in the first quarter. How to set that up is at the end of this article.

Step 1. What you deploy

These are the assumptions in the example:

AssumptionExample
Hours per year the client buys20,000
Pay grades and steps90% pay grade 1, spread evenly over steps 1 to 4; 10% pay grade 3, step 2
Rotaweekdays, daytime; allowance hours get their own rate (step 8)
Contract hours per employee20 per week on average
Shift length4 hours on average
Turnover25% per year
Permanent contracts with fixed hours90%
Site open on public holidaysno

Fictional example.

If staff transfer to you when a contract changes hands, they bring their years of service. That sets their pay step, how much you pay during sickness and how high any severance pay will be later. Take those details from the staff list in the tender documents. If it is missing or out of date, ask for it in the clarification round.

Step 2. What a paid hour costs

The base hourly wage is € 16.91. Holiday pay and a year-end bonus come on top, and you pay premiums and pension over the total. Leave allowances for evenings, nights, weekends and public holidays out here: they get their own rate on top of the base rate (step 8).

ItemRateSource
Holiday pay8%cleaning agreement art. 26
Year-end bonus5%cleaning agreement art. 20
Unemployment premium (AWf)2.74% for fixed hours, 7.74% for flexible contractsstatutory
Disability fund (Aof), large employer, with childcare surcharge8.03% + 0.50%provisional 2027
Return-to-work fund (WGA and ZW)1.67% on averageUWV 2027, your own rate applies
Health insurance levy (Zvw)6.27%estimate 2027
Pension, employer share10.7% of the hourly wage above € 7.72cleaning sector pension fund 2026
Sector funds (RAS)1.31%, in 2027 up to 0.2% extracleaning agreement art. 61

The 2027 rates are not final yet. Have your payroll check them before you bid.

Per paid hour that comes to € 24.38 in 2027: € 16.91 wages, € 2.20 holiday pay and year-end bonus, € 3.77 premiums, € 1.22 pension and € 0.29 for the sector funds.

Travel costs arise per shift. From 2027, cleaning employers in the Netherlands reimburse all commuting kilometres, up to € 0.25 per kilometre (agreement art. 36A). Someone travelling 16 kilometres there and back then costs € 4 per shift. For a 4-hour shift that is € 1 an hour, for 2 hours € 2. A 45-minute shift is also paid as a full hour (agreement art. 14(5)).

Average shiftBase rateDifference
6 hours€ 36.83−1.0%
4 hours€ 37.19
2 hours€ 38.28+2.9%
1.5 hours€ 39.01+4.9%
45 minutes€ 53.13+42.9%

Fictional example.

Step 3. From paid hour to hour worked

Your people are paid for their contract hours. The client only pays for the hours in which work is done. In most costings that difference is the biggest item.

Paid, not workedShare of contract hoursSource
Holidays10%agreement art. 28
Public holidays, site closed1.9% (5 public holidays on a weekday in 2027)agreement art. 22
Day off on your birthday0.4%agreement art. 31
Sickness absence7.1%CBS, cleaning companies 2025
Team meetings and annual review0.5%agreement art. 50 and 51, duration estimated
Short and emergency leave0.5%estimated
Travel between sites, waiting time1.0%agreement art. 37, percentage estimated

Of every 100 paid hours, the example invoices 79. An hour worked therefore costs € 31.79 instead of € 24.38, including travel costs.

Public holidays are often forgotten. If the site is closed, you keep paying wages and nobody has to take a day off (agreement art. 22). If it is open, you pay a 150% allowance and charge those hours at the public holiday rate (step 8). Without public holidays, this example comes out 2.3% too low.

For sickness, use your own figure if you have one. Statistics Netherlands (CBS) measured 7.1% for cleaning companies over 2025, and 8.4% in the first quarter of 2026 (provisional). Count sickness once, as hours you lose. That cleaning employers pay 85, 90 or 100% during sickness depending on years of service (agreement art. 33) makes the costs slightly lower. It is not a separate item.

Step 4. Costs per employee

With 20 contract hours a week, someone works 1,040 hours a year, of which 79% productive. For 20,000 hours you then need 24 to 25 people. With 25% turnover, six new people join every year.

A new employee costs money before they deliver anything. The example counts € 300 for recruitment, 8 hours of induction alongside a colleague, and the mandatory basic training (agreement art. 42) with 24 paid course hours and € 250 in costs after the sector fund subsidy. On top of that, each employee costs € 150 a year in workwear and € 250 in payroll and occupational health. Those amounts are estimates; enter your own.

Converted, that is € 0.90 an hour. It looks small, but it grows with every part-timer. With 12 contract hours a week instead of 20, you need two thirds more people and the rate rises 2.2%.

Turnover costs money in recruitment and induction, but also saves some: new people start on step 1. If you only count the costs, you overstate it.

Step 5. Costs of the contract

The site manager belongs to the site. In the example they work 0.25 FTE in pay grade 6, step 4. We also count € 10,000 for the start-up and € 12,000 for the end of the contract, spread over three years. Together that is € 1.36 an hour.

That last item is often skipped. If you lose the site at the next tender, most cleaning staff transfer to the new contractor, but not everyone. Site managers, people who have worked on the site for less than eighteen months, and people who have been sick for more than 26 weeks stay with you (agreement art. 44). If you have no other work for them, you pay statutory severance of one third of a monthly salary per year of service. Years with earlier employers count if someone transferred before (agreement art. 12).

Step 6. The contract term

Every contract year has its own cost price. Three things push it up.

Collective wages in cleaning rise 3.1% on 1 January 2027 and 3% on 1 January 2028. For the years after that there is no agreement yet, and you have to make your own assumption.

The Dutch minimum wage rises twice a year, on 1 January and 1 July. From July 2026 it is € 14.99 an hour. The lowest step in cleaning is € 16.00 from 2027, and the parties to the agreement have agreed to keep that distance. If the minimum wage rises sharply, cleaning wages may rise in between.

And then the steps. Anyone not yet on step 4 moves up one each year (agreement art. 16). So your average hourly wage rises even without an agreed increase: in the example from € 16.91 in 2027 to € 17.53 in 2028 and € 18.11 in 2029.

YearBase rateWithout step progression
2027€ 37.19€ 37.19
2028€ 38.52€ 38.28
2029, assuming +3%€ 39.74€ 39.39

Fictional example.

In this example the steps cost an extra 0.6 to 0.9% a year. If your price is indexed with the collective wage index, you are not compensated for that: the index follows the pay tables, not the steps of your people. How to build that gap into your starting price, read in price indexation. Work it out with the indexation calculator.

Step 7. Gross margin: what you want to earn on the contract

The direct costs are € 31.79 per hour worked, € 0.90 for the employees and € 1.36 for the contract: € 34.05 together. The difference between your rate and those direct costs is your gross margin. It pays for three things: your overheads, your risk and your profit.

  • OverheadsWhat your organisation costs outside the contractsOffice, management and staff, planning, sales and bids, IT, insurance, accountant. Take the percentage from your annual accounts: last year’s overheads divided by your direct costs. Leave out what steps 4 and 5 already count per employee or per contract, such as recruitment, payroll, occupational health and the site manager. Otherwise you count it twice.
  • RiskFor what turns out differentlyMore sickness than expected, a contract penalty, work you are not paid for, a wage rise the indexation does not follow. The less certain the contract, the higher. If you can name and price a risk, add it as its own item instead.
  • ProfitWhat you want to keepFor investment, repayments and return. A choice, not a cost. This is where you decide how sharp your bid is.
Gross margin in the examplePer hourOf revenue
Overheads, 5% of direct costs€ 1.704.6%
Risk, 1% of cost price€ 0.361.0%
Profit, 3% of cost price plus risk€ 1.082.9%
Gross margin€ 3.148.4%

Fictional example. Base rate € 37.19, cost price € 35.75.

Mind the difference between mark-up and margin. A mark-up is calculated on your costs, a margin on your revenue. A 3% profit mark-up is 2.9% of revenue here. How to derive the percentages from your own figures is also in pricing a proposal.

Translate the gross margin back to the whole contract: 20,000 hours times € 3.14 is about € 63,000 a year. Does that match what this contract asks of your office and management? If not, the percentage is too low or the contract too small for your organisation.

Materials do not belong in this hourly rate. Cleaning products, consumables, machines and their maintenance, work at height and transport differ per site. Price them separately so they do not disappear unnoticed into a mark-up.

Step 8. Allowance hours separately, on top of the base rate

Hours outside normal times do not go into the base rate. They get their own rate on top. Then the client pays for the hours they buy, and your price still holds if the rota changes later.

HourAllowance on wagesOn top of the base rate
Monday to Thursday after 21:30, Tuesday to Friday between 0:00 and 6:0030%+ € 10.43 (28.1%)
Weekend, Friday after 21:30, Monday between 0:00 and 6:0050%+ € 17.39 (46.8%)
Public holiday150%+ € 52.16 (140.3%)

Allowances: Dutch cleaning sector agreement art. 22. Fictional example, first contract year.

Why is a 30% allowance on wages not 30% on the rate? This is how it builds up. The allowance is € 5.07 in wages per paid hour (30% of € 16.91). With holiday pay, year-end bonus, premiums, pension and sector funds it becomes € 7.56. Someone who regularly works evenings also gets the allowance during holidays and sickness, so per hour worked it is € 9.55. Add the same mark-ups as on the base rate, so your gross margin stays the same: € 10.43.

That is 28.1% of the base rate, because about a tenth of the base rate consists of costs that do not rise in the evening: travel costs, workwear, recruitment, the site manager and the start-up. A uniform does not cost more at night.

The assumptions: the allowance is also paid during holiday and sickness hours (the agreement calculates sick pay over earnings including allowances), the mark-ups for overheads, risk and profit stay the same, and pension applies to all the extra wages.

What makes the difference

What is differentBase rateDifference
The example€ 37.19
Sickness and waiting time forgotten€ 34.07−8.4%
All hours on flexible contracts (high unemployment premium)€ 38.42+3.3%
Shifts of 2 hours instead of 4€ 38.28+2.9%
Public holidays forgotten€ 36.34−2.3%
12 contract hours a week instead of 20€ 37.99+2.2%
Sickness 8.4% instead of 7.1%€ 37.75+1.5%
Turnover 40% instead of 25%€ 37.46+0.7%
Term of 5 years instead of 3€ 37.03−0.4%

Fictional example.

Whether you add 3 or 5% profit makes less difference than forgetting public holidays. Work out your own situation with the cost per hour calculator.

Forget sickness and waiting time, and you lose almost three times your profit mark-up.

After the award

  1. Record per site what you priced withHours, pay grades and steps, contract hours, shift length, rota and allowance hours, public holidays, sickness, turnover, waiting time and your gross margin.
  2. Make sure you can see it againGive each site its own cost centre and record hours by type: worked, holiday, public holiday, sick, meetings, training, travel. Take labour costs per site from payroll, not from an allocation key.
  3. Check at the start who you take overIn Dutch cleaning, the previous employer has to give you the list of who transfers within 5 working days, with 18 months of payslips (agreement art. 44). Put that next to your costing straight away. Look especially at steps, years of service, allowances, long-term sickness and arrangements that differ from the agreement. For sites of € 500,000 a year or more, you can request anonymised data during the tender (agreement art. 45).
  4. Look at five numbers every monthThe average hourly wage with allowances, the share of paid hours that was worked, sickness, the average shift length and the cost per invoiced hour.
  5. Know where a deviation comes fromA higher hourly wage is usually in the grading or the rota. Fewer productive hours come from sickness, waiting time or planning. Short shifts are a planning question, or something to discuss with the client.
  6. Settle in advance what the contract allowsIndexation that fits your costs, rates for allowance hours and for extra and reduced work, and agreed opening hours and public holidays. If something does not fit, ask about it in the clarification round. The answer applies to every bidder.

A recorded costing also helps if the buyer finds your price low. In the Netherlands they may ask you to justify it (article 2.116 of the Public Procurement Act 2012). See abnormally low tenders.

Other sectors

The steps are the same in every sector. The collective agreement, allowances, pension fund and sickness figure differ. In security you deal per employee with the statutory screening and the mandatory diploma. In grounds maintenance the season and bad weather play a part. Use the agreement and the CBS figures for your own sector. The cost per hour calculator asks what to enter at each step.

HOW ATVALIO HELPS

Atvalio reads the tender documents and lists what affects your costing, with the page it comes from: the staff list when staff transfer, the price rules, the indexation, the term and the option years. If something is missing, Atvalio suggests a clarification question. You work out the price yourself. You decide and you submit.

Atvalio Tenders launches in January 2027. On the waiting list, you can be the first to start a 14-day trial on a real tender.

Want to do this with Atvalio?

You will first get an email to confirm your address. Unsubscribing takes one click. More in our privacy statement.

Sources