How do I calculate client profitability in my agency?
Client profitability is not the number on the invoice. It is what is left after you subtract the hours at internal cost, the subcontractors and the licences you pay on that client's behalf. The formula has three lines and can be run every month.
Short answer
- Add up everything you billed that client in the period, retainer included.
- Subtract consumed hours multiplied by the internal cost per role, not by the billed rate.
- Subtract direct costs: subcontractors, licences, hosting and ad spend paid on their behalf.
- What is left is the margin; divided by revenue it gives you profitability as a percentage.
- Repeat monthly and rank clients against each other — the order matters more than the absolute figure.
What the law says (in brief)
- Billed hours need a supporting document: a timesheet or activity report attached to the invoice (Law 82/1991).
- Services carry VAT if the agency is VAT-registered; below the registration threshold the invoice goes out without VAT (Law 227/2015).
- Invoices to Romanian companies travel through RO e-Factura (GEO 120/2021, extended by Law 296/2023).
- Rights in the deliverables transfer as the contract states (Law 8/1996) — an unpaid client does not become the owner by default.
Practical examples
- A 4,000 RON monthly retainer for 20 hours: at 26 hours consumed, the real rate drops from 200 RON/hour to 154 RON/hour.
- The biggest client by revenue ranks third by margin: A brings in 12,000 RON, but 96 consumed hours and 2,400 RON of direct costs leave 960 RON — 8%, against 42% on B and 39% on C.
The same agency, three clients, one month
| Client | Billed | Hours × internal cost | Direct costs | Margin |
|---|---|---|---|---|
| A — fixed-fee project that overran | 12,000 RON | 96 h × 90 RON = 8,640 RON | 2,400 RON (licences and ad spend paid for the client) | 960 RON — 8% |
| B — monthly retainer | 4,000 RON | 26 h × 90 RON = 2,340 RON | 0 RON | 1,660 RON — 42% |
| C — with subcontracting | 8,000 RON | 30 h × 90 RON = 2,700 RON | 2,200 RON | 3,100 RON — 39% |
Common mistakes
- Using the billed rate as the cost of an hour — then every client looks profitable.
- Not logging non-billable hours: calls, meetings, small revisions, „just one more tweak”.
- Ranking clients by revenue instead of margin, and keeping the biggest time sink.
How 4webagency helps
- Every logged hour carries a role and an internal cost, so margin comes from data, not from memory.
- The client file shows revenue, consumed hours and direct costs on one page.
- Retainers show included versus consumed hours, with the overrun visible before you invoice.
- Profitability is comparable across clients, so you know which contract to renegotiate at renewal.