← All articles PreventivOk Blog

How to calculate labour costs without losing your margin

From business costs to billable hours and quoted prices: formulas, worked examples and checks to avoid underestimating labour.

If you pay someone €15 an hour and quote €20, you cannot assume the remaining €5 is profit. Business costs, non-billable hours and operating expenses sit between pay and price. First distinguish the cost of the person from the price offered to the client.

Even when you work alone, time has a cost: you must pay for your work and support the business. The figures below are teaching examples, not recommended rates, contractual amounts or estimates of statutory contributions. Build staff costs from your own records, checked with your payroll and accounting advisers.

Calculate annual cost and realistically available hours

For an employee, go beyond take-home pay. Reconstruct the total cost incurred by the business over the period, including the components that apply. Divide it by hours realistically available for client work. Not all theoretical hours are billable: leave, training, organisation, waiting and internal tasks also take time.

Suppose total annual cost is €36,000 and productive time is 1,500 hours. Cost per productive hour is 36,000 ÷ 1,500 = €24. If hours fall to 1,200, the same cost becomes €30 an hour. The denominator affects a sustainable rate as much as the numerator.

For an independent professional, start with compensation for their work, business expenses and saleable capacity. Do not automatically treat an employee's wage as the equivalent of your consulting hour. Responsibilities, organisation and sales time can differ.

Add indirect costs once

Account consistently for tools, vehicles, operating insurance, software, premises and administration. Allocate them across billable hours or estimate them per job. Choose a method and document it: if a vehicle allowance is already in the hourly rate, do not charge its full cost again in that same item.

In our example, add €6 of overheads per productive hour to the €24 direct cost. Full cost becomes €30 an hour. For 12 hours, estimated cost is €360. This is still a cost, not a selling price.

From full cost to price: markup and margin

With a 25% markup on cost, the hourly price is 30 × 1.25 = €37.50. The gain before other uncounted components is €7.50 per hour, or 20% of the price. A 25% markup does not produce a 25% margin on revenue.

For a 25% margin on price with a full cost of €30, calculate 30 ÷ (1 − 0.25) = €40 an hour. Twelve hours become €480. Choose the method suited to your business, but know the base used for the percentage. These calculations use comparable amounts before applicable taxes.

How many hours does this job really require?

A correct rate multiplied by too few hours still produces the wrong price. Break the job into preparation, execution, configuration, testing and completion. Count work away from the client's premises when it is necessary for delivery.

An installer spending six hours on site may also spend two preparing components and one testing. A consultant delivering a two-hour meeting may spend three on analysis. Two people working four hours consume eight person-hours, not four.

  • Describe the activity and expected result.
  • Estimate person-hours, team size and required skills.
  • Separate travel and expenses when not already included.
  • State conditions that may lengthen the work.
  • Compare planned and actual hours after completion.

How to present labour in the quote

You can offer hours at an hourly price, a complete service or an item including materials and installation. Choose what the client needs to assess. You do not need to reveal all internal accounts, but avoid hiding important activities behind an indistinct description.

For equipment setup, write “Install, configure and function-test five devices: 12 planned hours at €40, total €480”. If you sell a lump-sum service, describe the same scope and assumptions without presenting internal hours as quantities automatically reconciled to actual time.

Three checks that protect the price

Before discounting, calculate full cost rather than materials alone. Check that travel and equipment have neither been forgotten nor counted twice. Then ask what happens if the job needs two extra hours: an estimate is not a guarantee of profit.

Keep actual records from comparable jobs and improve future assumptions. Margin improves when planned hours become more reliable, not when you add an arbitrary percentage at the end.

If you work alone, count non-billable time too

You may devote forty hours a week to the business but sell only some of them. Preparation, administration, purchases and client contact do not disappear because they are absent from invoice lines. Estimate productive capacity realistically rather than spreading all costs across every calendar hour.

For example, if your internal target to cover is €30,000 and expected billable time is 1,000 hours, the base is €30 an hour before components not included. Using 1,500 hours merely to obtain a lower rate changes the capacity assumption; it does not reduce cost. Check that the volume is plausible for your jobs and organisation.

For a team, check its composition. A task may require different skills and different hours from each person. If you simplify with an average rate, retain the supporting calculation. Do not use the average to conceal a more expensive specialist hour or a stage that only some people can perform.

At completion, compare planned and actual time by activity, not just in total. If preparation consistently takes longer, improving the standard item or initial information may help more than raising every rate. If differences come from particular clients or access conditions, make those conditions visible in future offers.

In PreventivOk you can enter quantities and prices in quote items. Calculate business costs and sustainable rates first using your own figures. Create your next quote with PreventivOk.

Further reading

Create your next quotation with PreventivOk

Professional quotations, ready to send as PDF.

Try PreventivOk