---
title: "How to calculate customer profitability | attendo"
description: "The full formula for the profitability of a service customer, with the costs almost nobody includes, a worked example and what to do if it is negative."
url: "https://attendo.me/en/blog/customer-profitability-service-business"
lang: "en"
---

# How to calculate the profitability of a service customer

Almost every company knows how much it bills each customer. Far fewer know how much it costs to serve them. And the business lives in the gap between those two numbers.

- By the attendo team
- Published September 27, 2026
- 3 min read

**In this article**

1. Why almost nobody calculates it
2. The formula
3. An example with numbers
4. What usually shows up the first time
5. What to do with the result, and what not to do
6. The prerequisite

## Why almost nobody calculates it

Because the two figures live apart. Billing is in the ERP. The cost of serving the customer is in technician hours, parts and travel. And that is usually in another system, on a paper work order or not recorded at all.

Without bringing them together, profitability by customer is a hunch. And hunches fail here: the customer who uses the most is often also the one who treats you best.

## The formula

```
Margin = Billed
       − Hours × cost per hour
       − Parts
       − Travel
       − Admin hours you cannot bill
       − Cost of reopened jobs and repeat visits
```

The last three lines are the ones almost nobody includes, and the ones that decide the result. The cost per hour has to be the real one, with overhead included: [here is how to calculate it](https://attendo.me/en/blog/true-cost-of-a-technician-hour).

## An example with numbers

Example

A customer with an $80,000-a-year maintenance contract that includes 600 hours. Last 12 months:

| Item | Amount |
| --- | --- |
| Billed (contract and extra work) | $99,000 |
| Hours logged: 780 h × $86 | −$67,080 |
| Parts | −$12,000 |
| Travel: 210 trips × $30 | −$6,300 |
| Admin and coordination (estimated at 6% of billing) | −$5,940 |
| Repeat visits not charged: 34 × $140 | −$4,760 |
| **Margin** | **$2,920 (3%)** |

A customer who looked excellent on revenue leaves a 3% margin. The 34 repeat visits are the clue: that is a specific problem you can fix.

## What usually shows up the first time

That one of your big customers is losing you money, and has been for a while. The usual reasons are three:

- **Usage well above what was contracted**, tolerated for years because of a good relationship.
- **A scope that kept growing** without the price changing: “while you are here, could you look at this?”
- **A contract signed years ago** that was never reviewed while costs went up.

## What to do with the result, and what not to do

**What not to do:** call the customer the next day to raise the price. It is the fastest way to lose them, and on bad terms.

**What works:**

1. **Understand why.** A low margin caused by repeat visits is fixed on your side, without touching the price.
2. **Quantify the gap.** “You have used 780 hours against 600 contracted” is a fact anyone can check, not an opinion.
3. **Take it to the renewal, with data and in good time.** The conversation six months ahead is very different from the one with the contract about to expire.
4. **Offer options:** a bigger [hour bank](https://attendo.me/en/glossary/hour-bank), an adjusted scope or a higher price. Three options turn an ultimatum into a negotiation.

## The prerequisite

All of this requires hours and parts to be recorded where the work is done. If work orders arrive on Friday, filled in from memory, the math will be wrong and you will decide on false data. That is worse than not deciding.

Run the numbers for your whole customer base, not only for the customers you have doubts about. The surprises are where nobody looks, and often among your top accounts by revenue.

Last updated: September 27, 2026

## How attendo handles it

attendo CRM calculates profitability by customer and by contract: it compares the hours, parts and travel logged on each record with what you billed in the sales documents that go to your ERP. Prepaid hour banks are drawn down as time is logged, so you know which contract uses more than agreed before you renew it.

- [attendo CRM](https://attendo.me/en/crm)
- [Contracts and SLA](https://attendo.me/en/modules/contracts-and-sla)
- [CRM software](https://attendo.me/en/l/crm-software)

## More on customers and sales

Field service

### What a technician hour really costs

Many service companies set their hourly rate by looking at the competition, and few have done the math. Those who do usually find the same thing: they charge less than it costs them.

3 min read

### How to build a sales forecast you can defend

Everyone has a pipeline. Few have a forecast they trust. The difference is not the tool: it is how the stages are defined.

3 min read

Projects

### Project baseline: spot the drift while you can still fix it

Almost every project drifts. The problem is finding out at the wrap-up meeting, when there is nothing left to fix. A baseline lets you see it in week two, not in the final week.

4 min read

[All blog articles](https://attendo.me/en/blog)

## Shall we look at it with your operation?

Tell us how you work today and we will show you attendo with your own data. If it is not a fit, we will say so.

- With your operation, not a generic demo
- A real person from our team replies
- No cold calls afterwards

Would you rather talk first?

- Phone [+34 910 053 530](tel:+34910053530)
- Email [sales@attendo.me](mailto:sales@attendo.me)
- Monday to Thursday 9:30 AM to 6:30 PM and Friday 9:30 AM to 2:30 PM (Spain time)
