Client profitability: how to see which accounts actually pay

Blog post image

Client profitability: Summary & Key Takeaways

  • Client profitability: Net contribution after fully loaded cost-to-serve, not invoice total or busy utilisation.

  • Cost-to-serve: Labour, expenses, write-offs, non-billable client time, and a fair slice of overhead rolled up by client.

  • Client Margin Triage Map: Sort each account by margin and delivery friction into Protect, Grow, Reset, or Exit.

  • Live review: Catch as-sold vs as-delivered gaps while the work is still open.

  • Useful action: Change scope, staffing, price, or terms, not ship a prettier spreadsheet.

What I keep seeing across services teams is adjacent tracking without a true client contribution view. You already watch utilisation, project budgets, or billable mix, yet a loud account can still look healthy while it taxes the firm. This guide shows how to measure client profitability, triage the book, and act while delivery is live.

What client profitability actually measures

I've seen teams agree with the definition in theory, then fight over what counts as full cost in practice — revenue can look healthy while a client still quietly erodes contribution. Here's the working definition: client profitability is the net contribution you keep after one client's revenue covers the full cost of serving them. One profitable project can hide three weak jobs under the same logo.

Nor is it the same as agency profitability at firm level — firm profit can look fine while a few clients quietly fund everyone else's chaos — and it isn't a single project's margin either. For engagement-level formulas, keep project profitability and the metrics agencies should track as reference; this article stays at portfolio height, covering every project, retainer period, and unscoped favour under one relationship.

Client profit=Client revenue(Direct costs+Allocated overhead+Write-offs+Non-billable client time) \text{Client profit} = \text{Client revenue} - (\text{Direct costs} + \text{Allocated overhead} + \text{Write-offs} + \text{Non-billable client time})

That equation only earns trust when the inputs stay consistent. If tags slip for two weeks, the triage map becomes a debate club again.

The cost-to-serve inputs most teams undercount

Direct costs are the easy layer: fully loaded labour on the client's work, plus contractors, media, travel, and tools bought for that account.

The undercount is cultural — status decks nobody invoices, account leads sitting in alignment calls that never touch a task, legal review and rework after missing stakeholders, repeatedly onboarding new client stakeholders who never hit an invoice. All of it adds silent hours. Park those hours in generic overhead and your revenue hero stays a hero; pull them onto the client and the ranking reshuffles fast.

Services work is especially exposed because people are the product. When a client wants more senior judgment, more meetings, or more versions, cost-to-serve rises even if SOW lines stay frozen.

Client roll-up vs single-project margin

Project profit answers: did this engagement pay? Client profit answers: does this relationship pay?

You need both. Renewals and account resourcing are relationship decisions. If finance only ships project packs, leaders keep staffing the logo that always has work without seeing the drag.

Roll every open and closed project for the client into one contribution view before you renew or upsell, so you see every client's numbers in one place. Client management is built for that roll-up across projects under one logo.

Leave the dictionary of realisation and rate cards on the metrics guide. Steal the habit of roll-up from here.

Input

What to include
Common miss
Revenue
Fees billed and collected for the client
Treating pipeline or unbilled WIP as cash
Direct labour
Fully loaded cost of time on that client's work
Using bill rate as if it were cost
Expenses
Travel, media, freelancers, client-specific tools
Vendor invoices left uncoded
Overhead share
Rent, leadership, internal ops on one written rule
High-touch admin dumped into G&A
Write-offs
Time or fees you will never recover
Waiting until year-end to admit it
Non-billable client time
Meetings, reporting, relationship care
Counting production hours only

A clean roll-up also changes the conversation with sales. Pipeline can still chase logos. Delivery and finance can now show which logos leave contribution after the work is done. That shared view is what makes Protect and Exit decisions defensible.

Why revenue-first client lists quietly drain margin

I've seen the loudest enterprise account soak up senior time while a smaller client quietly outperforms it on margin. The biggest logo on the wall is not always the strongest contributor on the P&L.

Large accounts often negotiate harder and consume more senior time; small, occasional clients can lose money the other way, when setup and admin costs never earn back. Revenue concentration alone misses that delivery friction — two clients can show identical contribution percentages while one quietly burns your leadership bench and the other runs calmly.

That gap shows up in the data: Teamwork.com research on six strategic shifts for 2026 found that 66% of leaders say clients are now more demanding but less willing to pay for work. Expectations climb. Fees stall. Cost-to-serve becomes the commercial operating system. Industry pressure sits beside that pattern — Deloitte and IMA research on finance leaders has highlighted how many finance teams still lack clear cost and profitability reporting, or need more transparency in it. When cost-to-serve stays foggy, client rankings stay wrong.

For example, mid-five-figure monthly retainers often drift into low double-digit contribution once recurring non-billable load piles up — a quieter, smaller retainer can clear a healthier margin with half the theatre. The pattern is familiar if you have run accounts: the client asks for one more deck, leadership wants the logo protected, and production absorbs the hours because nobody wants the awkward conversation. The invoice stays flat. Contribution slides.

Revenue-first prioritisation keeps sending A-players to the loud room. Margin-first prioritisation asks a sharper question: who pays for the privilege of your attention? Client profitability analysis is what makes that question answerable in a leadership meeting — and the answer is usually hidden cost-to-serve, not any one team underperforming.

That shift changes more than one meeting. What leadership praises changes too, once profitability is measured accurately — heroics on prestige accounts stop crowding out calm, profitable delivery. I've also seen margin-first lists change hiring conversations: when contribution is visible, leaders stop treating every open seat as fuel for the loudest account, and start protecting capacity for the clients that already pay.

Overservicing is not only a scope problem. It is a visibility problem. Free favours feel free until you tag them. Once non-billable client time sits next to fee revenue, the "relationship investment" story has to earn its keep.

See margin while the work is still open

Track budgets, time, and client roll-ups in one place so profitability is a weekly decision, not a surprise after close.

Start free

The Client Margin Triage Map

I've found these two numbers settle more leadership arguments than any stack of account notes: contribution margin after fully loaded cost-to-serve, and delivery friction.

Friction is the drag you feel in the work: non-billable share, senior-hour share, change-request rate, feedback cycle time, and how often finance chases coding or approvals.

I keep seeing teams overcomplicate client triage with scorecards nobody maintains. Start simpler: plot margin on one axis and friction on the other — that's the Client Margin Triage Map. Every active client lands in a quadrant, and each quadrant has one default move.

Quadrant

Margin
Friction
Default move
First 30-day action
Protect
High
Low
Defend and deepen
Named owner, locked service levels, quarterly review
Grow
Mid or rising
Low to mid
Expand with discipline
Next offer from actuals, weekly margin watch
Reset
Weak vs revenue
High
Change the deal
Re-scope, re-rate, cut free channels, restaff
Exit
Low or negative
High
Shrink or leave
Cap work, free capacity for better-fit work

Self-audit:

  • Is your client book triage-ready?

  • Can you name contribution margin for your top 10 clients this month?

  • Do you score friction (non-billable share, senior time, change load) the same way every time?

  • Does every weak account have a Protect, Grow, Reset, or Exit owner?

If you answered no to 2+, start the map before the next renewal cycle.

Score friction on a simple 1-5 rubric, weighting non-billable share, senior-hour share, open change requests, late timesheets, and client-caused rework. You can refine the weights later — you cannot manage what you refuse to score. Keep the rubric visible to delivery leads, not locked away in finance: when the people who feel the drag help score it, the map matches the week they are actually living.

The map is not a personality test. It is an operating control. Clients move quadrants when scope, staffing, or demand changes.

That is expected. What is not expected is leaving a client unlabelled for a full year while the same seniors keep absorbing the escalations.

Protect: high margin, low friction

Treat high-margin, low-friction accounts like infrastructure, not filler work.

Do not "optimise" them with junior-only staffing that wrecks quality, and do not bury them under your noisiest logos because they are easy — easy is a gift, protect it. Give each Protect client a named owner, a written service menu, and a renewal built on outcomes, and when they ask for more, price the more.

Protect clients still need attention. They just need the right kind: stable service design, clear owners, fewer heroics, and more predictable delivery that keeps contribution intact.

Grow: mid margin, room to expand

Expand only where actual delivery data supports the next SOW, and price the phase from comparable delivery, not the last discount that won the logo. Forecast profitability before work starts so the new scope has a spine — AI-assisted forecasting on live delivery data helps you spot drift early, and see the gap before the next phase locks.

If friction rises as volume rises, you are not growing — you're sliding the client into Reset while calling it a win. Growth offers need a margin floor: if the expansion needs more senior time than the original work, model that before you smile in the kickoff. A bigger SOW with worse contribution is not a win. It's a louder problem.

Reset: high revenue, high friction

Reset high-revenue, high-friction clients by changing the commercial model around the account. The client looks strategic. The margin is thin because the operating system is broken.

Tighten the SOW, move ad-hoc requests into a paid pool, and change staffing so partners are not the default first responder. Kill reporting nobody reads too, and bring the client into a shared workspace so feedback stops living across twelve threads.

Live margin control matters most here — you need the bleed visible mid-sprint, because a chart that only shows last quarter's loss arrives too late. When The Brand Leader started tracking cost per person per project in Teamwork.com, leadership could see a short engagement tip unprofitable in time to stop treating the extra hours as free. That's Reset in practice: numbers early enough to change behaviour.

Reset also means teaching the client what free used to cost you: most buyers optimise for what you allow, and if every favour is free, favours become the product.

A good Reset conversation is specific: name the free channels, the senior-hour share, and the change-request rate, then offer a cleaner package, a paid pool, or a restaffed model. Vague "we need to be tighter" speeches do not change behaviour.

Exit: low margin, high effort

Treat exit decisions as capacity management, not only relationship management.

Every hour on a draining account is an hour you cannot sell to a Protect or Grow client. Cap scope, stop custom work, move them to a standard package, then decline the next phase — and document the fully loaded math so the conversation stays about contribution.

Do not exit unless you will free people and overhead, or replace the work with better-fit revenue. Cutting a logo while keeping the same cost base only rearranges the loss.

Hard truth: If your top-revenue client needs a weekly apology and a partner on every call, you have an account whose costs outweigh its strategic value.

Exit can be gradual. Many teams start with a hard cap on custom work, then decline the next phase, then stop renewing. The point is capacity recovered, not drama performed.

How to calculate client profitability without waiting for month-end

I've watched too many teams make renewal decisions before the real margin picture shows up. Month-end is a lagging review, so you need a pulse check while the work is still moving.

The failure mode is common: time lands late, expenses sit uncoded, and overhead stays a quarterly mystery.

Leadership renews on reputation while finance is still reconciling — by the time the true number arrives, the commercial decision is already made. That's why I fix the rhythm first. The arithmetic is secondary.

Step 1: Lock revenue to the client, not the invoice pile

Every fee, credit, and write-off needs a client ID — if revenue only lives at project or department level, you invent allocations later and argue forever. That ID also has to survive three different stories: separate as-sold from as-billed and as-collected, because they diverge more than people admit, and client profitability cares about economic reality.

Step 2: Capture fully loaded labour and expenses

Cost rate is compensation plus employer burden, not the rate on the invoice, and expenses need the same client tag as time. That data is only as good as the time entry behind it, so make coding part of done and review missing time the same week — reliable time entry is a prerequisite for accurate client profitability analysis, not a nice-to-have.

Billable and non-billable both matter, because non-billable client time is still client cost. Calling it relationship investment without a budget keeps Reset clients invisible.

Step 3: Allocate overhead with one rule you can defend

Use a consistent, defensible overhead allocation rule every period — pick hours, headcount, or revenue share, write it down, and run it the same way.

Perfect allocation does not exist. Defensible allocation does. High-maintenance accounts love hiding inside unallocated overhead, so push support and leadership time toward the clients that create the work.

Revisit the rule annually. Do not reopen it every time a loud account dislikes the result.

Step 4: Compare as-sold vs as-delivered

As-sold margin is the story you sold. As-delivered margin is the story the timesheets tell.

The gap is scope, staffing mix, rate leakage, or all three, so review it weekly on major accounts — that is the same discipline behind live margin control for professional services.

Set margin guardrails before work drifts. Budgeting and profitability supports fixed fee, time and materials, and retainers with targets you define, plus alerts when spend crosses a line.

For example, a fixed-fee phase sold at a healthy target margin can slip into the mid-teens once senior hours overrun. That is a Reset conversation this week: cut scope, reprice the remainder, or change who does the work.

If you only compare as-sold to as-delivered at close, you are looking backward on purpose.

Step 5: Score friction and place the client on the map

Add the friction score, plot margin against friction, and assign Protect, Grow, Reset, or Exit — then put owners and dates on the moves.

Cadence
When to use it
Protect
Quarterly unless something spikes
Grow
Monthly while expansion is live
Reset
Weekly until the deal shape changes
Exit
Weekly until capacity is free

Step

Output
Owner
1. Tag revenue
Client-level fee truth
Finance + account lead
2. Cost labour and expenses
Direct cost file
Delivery + finance
3. Allocate overhead
One written rule
Finance
4. As-sold vs as-delivered
Margin gap list
PM / ops
5. Triage map
Protect / Grow / Reset / Exit
Leadership

If you are assembling the first pass by hand, start with a project profitability tracking template. Move the live version into the system your team already delivers in, then publish the map — a private finance model that never reaches delivery leads will not change staffing. Client profitability is behaviour change, not a better binder.

I tell ops leads to put the map in the same meeting where they already talk utilisation. If it needs a special forum, it dies. If it rides an existing rhythm, it sticks.

Pro tip: Read live profit without rebuilding spreadsheets. Use Teamwork.com's profitability reporting so leadership trusts actuals pulled from the same workflow delivery already uses.

One more practical note: do not wait for perfect historical clean-up. Start with current open work and the last closed quarter, then backfill later. Momentum beats museum-quality data.

Price the next phase from actuals

Build the next SOW from real delivery data, not last quarter's discount.

Start free

Common mistakes that make the numbers look fine while profit disappears

I've seen these mistakes make healthy-looking books hide weak client economics. The numbers look fine. The contribution does not.

Averaging utilisation across the account team

I've seen a blended 75% hide two people at 95% and two at 50%, and client profitability inherits the same lie when you only watch account averages.

Look at who the client actually consumes, because friction is often a staffing pattern, not a client personality. If the same two seniors absorb every escalation, your map keeps sending you back to Reset.

Parking client admin in overhead

If three accounts generate half your internal meetings, that is client-specific cost-to-serve, not true G&A.

Leave it in overhead and the triage map will Protect the wrong logos. Pull it onto the client and leadership understands why the easy revenue feels exhausting.

Treating retainers as guaranteed margin

Retainers are a cash rhythm, not a margin guarantee — scope still expands, staffing still skews senior, and reporting still balloons.

For model-level targets, use retainer vs project profitability. Then still run the Client Margin Triage Map on the account.

Carry retainer overages and underspend forward without losing margin. Retainer management keeps recurring budgets honest across periods so next month is not silently erased.

Running the analysis once a year

Annual CPA is a strategy offsite artefact — clients change mid-quarter, scope moves mid-sprint, budgets move mid-project. Teamwork.com's six strategic shifts research flags mid-project budget movement as a top frustration for more than a quarter of leaders, which is exactly the gap an annual cadence can't close.

If the map is annual, your decisions are late by design. Build a lighter monthly pass for top revenue and top friction accounts even if the full portfolio only gets a deep dive each quarter.

Pro tip: When you need a firm-wide diagnostic beside the client list, run a short Agency Profitability Audit pass, then drop the findings onto the triage map so every issue has an owner.

A fifth mistake: optimising price without touching delivery. Raising rates on a high-friction client without changing service design just funds more chaos at a higher sticker. Reset is a system change. Price is only one lever.

I've watched teams celebrate a rate increase, then wonder why contribution barely moved. The client still consumed the same senior hours and the same free favours. Price without process change is theatre.

How Teamwork.com keeps client profitability visible while you deliver

I've seen teams manage tasks just fine while still missing whether the client relationship is actually profitable. Generic project tools track tasks, but they don't tell you whether the client still pays for the chaos around those tasks. Traditional PSAs can show financials, but only if the team lives in the system — when delivery happens elsewhere, the financial layer becomes a reconstruction project, and a reconstruction built on poor source data ends in unreliable financial reporting.

What I saw at Teamwork.com was a different pattern: capture resourcing, time, budgets, and margin in the same workflow people already use to deliver, then roll it up to the client. I've seen teams adopt this faster when those pieces live together.

See every client's profitability in one view. Client management rolls up profitability, billable mix, and health across every project under one logo. In my experience, this is where account reviews stop turning into spreadsheet scavenger hunts.

Blog post image

Set margin guardrails before work drifts. Once profitability is visible per client, the next step is enforcing it — Budgeting and profitability supports fixed fee, time and materials, and retainers with margin targets you define. I've found margin targets only stick when teams set them before kickoff.

Blog post image

Make billable and non-billable honest. Guardrails only hold if the time behind them is accurate — time is the raw material of cost-to-serve. When both land on the right client, the argument shifts from we feel busy to this account's non-billable share and senior-time mix.

Blog post image

Read live profit without rebuilding spreadsheets. That accurate time rolls straight into the profitability report, which turns live actuals into something leadership can trust. I've seen finance trust the number faster when the report pulls from the same workflow delivery already uses.

Blog post image

Carry retainer overages and underspend forward without losing margin. Those live numbers need to survive the handoff between periods, too — Retainer management carries underspend and overspend across periods. In my experience, retainers get slippery fast unless that movement stays visible.

Blog post image

Spot profitability drift early. The same data that tracks retainers period to period can also look forward: AI-assisted profitability forecasting uses delivery data you already have. I've seen early drift flags matter most on accounts that look healthy until senior time spikes. Humans still own the Reset conversation.

Blog post image

That's the walkthrough end to end — from tagging revenue to forecasting drift. For the broader stack, start from cost and profitability management, and if you want a utilisation sanity check while you score friction, the billable utilisation rate calculator is a fast second opinion on whether the team average is lying.

None of this replaces judgment. It removes the fog judgment has been working in — so start with five clients, not fifty, score friction, roll up cost-to-serve, and place them on the Client Margin Triage Map.

Make one Protect decision, one Reset decision, and one capacity decision you can defend, then widen the map. You don't need perfect data on day one — you need comparable data and a decision. Perfect can wait. Action cannot.

The teams that win will know which relationships pay for the privilege of their best people, and stop subsidising the rest by accident.

At Teamwork.com, the point of connecting delivery and financials is not another report pack. It is earlier commercial choices while the work is still open. That is the same discipline the triage map asks of every ops lead.

Put client margin next to the work, not in a month-end folder.
Start free

Frequently asked questions

What is client profitability?

The fast way to think about it: this is what the client leaves you after all the hidden work is counted. Client profitability is the net financial contribution of one client after you subtract the full cost of serving them from the revenue they generate. It includes direct costs, allocated overhead, write-offs, and non-billable time tied to that relationship.

How do you calculate client profitability?

The math is simple. The discipline is tagging every hidden cost to the client before month-end. Subtract fully loaded cost-to-serve from client revenue: direct labour and expenses, a consistent overhead allocation, write-offs, and non-billable client time. Roll every project for that client into one view, then compare as-sold margin to as-delivered margin before you triage.

What is a good client profit margin for agencies?

Margins often look acceptable until senior time and non-billable load are counted. Targets vary by model and market, but thin single-digit contribution after fully loaded cost is a warning light for most professional services teams. Set a floor that matches your cost base, apply it consistently, and judge clients against that floor, not against revenue rank.

Should you fire unprofitable clients?

Most unprofitable clients need a reset before they need an exit. Change scope, price, staffing, and service levels first. Exit when friction stays high, margin stays weak, and you can redeploy the capacity. Cutting a client without cutting cost or replacing the work only rearranges the loss.

How often should you review client profitability?

The review cadence should tighten as friction rises and margin gets less predictable. Review Protect accounts at least quarterly. Review Reset and hot fixed-fee or retainer accounts monthly or weekly. Annual-only analysis is too slow for modern cost-to-serve pressure.

What is the difference between client and project profitability?

A project can look healthy while the client behind it still drains the relationship. Project profitability measures one engagement. Client profitability rolls up every engagement, retainer period, and unscoped effort under that logo.

Related Articles
View all