Everyone knows which client is difficult. Nobody knows which is unprofitable.
Ask anyone in an agency which account is the most demanding and you will get an instant, confident and usually correct answer. Ask which account makes the least money and the room goes quiet.
Those are not the same question, and the gap between them is the reason this matters. Difficulty is felt daily by the people doing the work. Profitability is a number nobody sees unless somebody assembles it, and assembling it means putting external costs onto clients — which is exactly the work that never gets scheduled.
What follows is how to do that assembly at the volume a real agency operates at: what goes missing, where the awkward cases are, and what a month-end routine looks like once it is working rather than once it is aspirational.
The shape of the problem
Agency finance is asymmetric in a way that most other businesses are not, and naming the asymmetry makes the fix obvious.
| Revenue side | Cost side | |
|---|---|---|
| Documents per month | One per client | Dozens, from unrelated suppliers |
| Names the client? | Always | Almost never |
| Timing | Your schedule | Their schedule |
| Who records it | Someone whose job it is | Nobody in particular |
| Effort to get right | Low | The whole problem |
Every row says the same thing from a different angle: revenue arrives pre-attributed and cost does not. An agency that does nothing therefore ends up with perfect revenue by client and no cost by client — which produces a profitability figure for the business and none for any account inside it.
That is the state most agencies are actually in, and it is not a failure of discipline. It is what happens by default when one side of the equation carries its own labels and the other does not.
Five costs that go missing
In roughly the order they distort the picture.
1 · Media and ad spend
The largest, and often the most loosely coded because it is recharged. When spend and recharge are coded to general categories, the client with the biggest budget looks like the biggest contributor while telling you nothing about what the agency actually earned on it.
2 · Freelance and contract work
One invoice, several accounts, arriving monthly. The single most common multi-project document in an agency and the one most likely to be coded whole to whichever client comes to mind.
3 · Production and print
Lumpy, occasionally very large, and frequently invoiced weeks after the campaign it belongs to. By the time it arrives, the project it relates to has been closed in everyone’s mind.
4 · Software bought for one client
A licence, a stock subscription, a tool for one campaign. Individually small, collectively significant, and almost universally left in general overhead because coding it feels disproportionate.
5 · Travel and expenses
Arrives as photographs of receipts rather than invoices, which is why it is the category most likely to skip the process entirely.
Notice what these have in common: none of them names a client on the document. That is not a coincidence, and it is why the fix is a labelling discipline rather than a reporting change.
Pass-through costs, and why they distort everything
A pass-through cost is one you buy on a client’s behalf and recharge — media, print, a licence, a photographer. Two sides, and both have to be coded to the same place or the margin on that account becomes fiction.
The failure mode is specific and common. The cost is coded to a general category because it is “not really ours”, while the recharge sits on the client as revenue. The account then shows enormous margin, and the agency concludes it is the best client it has.
The reverse happens too: the cost lands on the client and the recharge is invoiced as part of a general fee, so the account looks like it is losing money on work that was actually fine. Both errors are invisible at company level because the two sides net out.
Three rules keep this straight, and they are worth writing down somewhere the whole team can see.
Code both sides to the same client and project, always — a recharge with no matching cost, or a cost with no matching recharge, is a flag rather than a rounding difference.
Report pass-through separately from agency fee, because a client with €200k of media and €30k of fee is a different business proposition from one with €30k of fee alone.
Never let a pass-through cost sit in overhead. It is the largest number in the agency that is genuinely attributable, and leaving it unattributed wastes the clearest signal available.
Once pass-through is separated, a second and more useful number appears: fee margin. That is the one that tells you whether the agency is being paid properly for its own work, and it is invisible while media spend is mixed into the same total.
Retainers, which are rarely what they seem
A retainer is a fixed monthly fee against variable monthly effort. Everyone knows this. What is less widely appreciated is that it makes any single month meaningless as a measure of the account.
A quiet month shows excellent margin. A launch month shows a loss. Neither is the truth about the relationship, and looking at either in isolation produces the wrong decision — usually the decision to celebrate an account in January and question it in March.
Retainers are assessable over a quarter at minimum, and that is only possible if costs were allocated consistently across all three months. One month where the freelancer invoice was coded loosely ruins the quarter it sits in.
Two patterns are worth watching for specifically. Scope drift shows as costs rising quarter over quarter against a flat fee — the account is not failing, it is being renegotiated by accident, one small favour at a time. Seasonality shows as a repeating shape across years, and it is not a problem at all provided nobody panics at the trough. Telling those apart is the whole value of comparing periods, which is covered in period comparison.
The freelancer invoice
One document, one supplier, four clients, arriving on the last day of the month. It deserves its own section because it is the single most common allocation decision in an agency and the one most often defaulted.
The cheapest fix by a wide margin is to ask. A line reference — the client name or project code against each block of work — costs the freelancer nothing, and most will add it without discussion because it also reduces the questions they get from you at month end.
Ask when you brief the work rather than in a general policy email. “Put the client name on the invoice line for this” attached to a specific piece of work is acted on; an announcement to a supplier list generally is not.
Where the reference does not arrive, split on a basis you record once and keep — hours, or an agreed proportion. What matters more than which basis you choose is that it stays put, because a split that changes every month makes the affected clients incomparable to each other.
The mechanics of both routes — reading the line, applying a rule, splitting one line into several rows — are on supplier invoices by project.
The month-end routine
An hour, once the rules exist. The first month or two take longer, and that is the investment rather than the running cost.
1 · Upload the month
Every supplier invoice and receipt, up to 100 files at once. Photographs go through OCR first, so card spend does not get skipped.
2 · Lines extracted
Description, quantity and amount per line, with the sum checked against the invoice total so no allocation is built on a misread figure.
3 · Rules applied
Suppliers that always belong to one client are tagged without anyone looking, which is most of the volume.
4 · The residue decided
The handful that genuinely need a person — usually the freelancers and anything new. Ten to twenty minutes.
5 · Export by client
Excel or CSV with client, project, basis and source document on every row, ready to pivot or import.
6 · Compare to last month
The step that turns a table into a finding — the same clients, the same categories, side by side.
The sixth step is the one most likely to be dropped and the one that produces all the value. A single month’s allocated costs is a table. Three months of them is a trend, and a trend is what people act on.
Reading the result without over-reading it
The first month of allocated costs usually produces one genuine surprise and several apparent ones. Telling them apart takes discipline.
A real finding persists. The same client shows disproportionate external cost in month two and month three, and the reason survives being asked about.
A timing artefact disappears. A large production invoice landed in one month and the campaign spanned three; the account looks terrible once and fine thereafter.
An allocation error looks like a finding and is not. Before acting on any surprising number, open the invoices behind it — which is why the source document travels on every row.
The practical rule: do not act on a first month. Do note what it suggests, and see whether the second month agrees. Most agencies that abandon this exercise do so because they acted on month one, found it was a timing artefact, and concluded the numbers were untrustworthy.
| What you see | Likely cause | What to do |
|---|---|---|
| One client dominates external cost | Pass-through media | Separate fee from pass-through before judging |
| A retainer loses money once | Launch month | Look at the quarter |
| A retainer loses money every month | Scope drift | Renegotiate, with the numbers |
| Overhead is very large | Unallocated costs | Check the rules, not the clients |
| A project cost spikes after closing | Late supplier invoice | Normal — hold the project open longer |
The last row is worth internalising. Late supplier invoices are the ordinary condition of agency work, not a process failure, and they are the subject of why projects look profitable until they close.
The part this does not cover
In most agencies, salaries are the largest cost by a wide margin. Nothing on this page touches them, and pretending otherwise would be the most misleading thing it could do.
Internal time comes from a time-tracking system, and if you have one, the allocated external costs join it as a second column rather than replacing it. If you do not, external cost by client is still a real finding — it tells you which accounts consume the most bought-in resource, which is information nobody in the agency currently has.
What matters is knowing which number you are looking at. “External cost by client” is honest and useful. “Profitability by client” without time in it is neither, and calling it that is how these exercises lose credibility with the people who have to act on them.
Label the report for what it contains. It costs nothing and it is the difference between a number people trust and one they argue with.
Three agency sizes, three versions of this
Under ten people
Everyone knows every project, so the value is not discovery — it is evidence. The founder already suspects which client is expensive; a month of allocated costs turns a suspicion into something you can put in front of that client. Twenty minutes a month is realistic here.
Ten to fifty
The size where this stops being optional. Nobody holds the whole picture any more, account leads optimise their own accounts, and the costs that nobody owns accumulate quietly. An hour a month, one person, and it should be the same person each time so the rules stay consistent.
Fifty and up
Usually there is a finance function and a system with dimension fields already. The gap is rarely the report and almost always the input — the supplier invoices arriving as PDFs that someone keys in. This is the part that automates, and the output goes into the system you already have rather than replacing it.
Across all three the constraint is the same: the routine has to be small enough to survive a busy month. An exercise that takes a day is done once, and once is the same as never.
What it changes about winning work
The reporting value of this is obvious. The commercial value is less obvious and probably larger, because it changes what you know when you are pricing the next thing.
Agency pricing is mostly built from precedent — what a similar project cost last time, adjusted upwards a little. When the cost of that previous project was understated because half its external spend never reached it, the adjustment starts from the wrong base and the error propagates into every subsequent quote for that type of work.
That is the mechanism behind the most common agency pattern there is: a particular kind of project that everyone quietly dislikes doing, always takes longer than expected, and keeps being sold at roughly the same price. Nobody chose that. It is what happens when the true cost of the last one was never assembled.
Allocated cost history also changes what you can say in a room. “Projects of this shape have run at this external cost for us” is a different conversation from “this feels like a bigger job than the last one”, both internally when deciding whether to pitch and externally when a client pushes on price.
It applies to scope conversations mid-project too. A request that arrives as a favour looks free until it has a number attached; once external costs are allocated, the favour has a size and the conversation about who pays for it can actually happen — which is the same problem described from the client side in why projects look profitable until they close.
None of this requires perfect data. It requires two or three quarters of consistently allocated costs, which is roughly the point at which patterns become visible and precedent becomes something you can quote rather than something you remember.
Four objections worth answering
“Our clients are too intertwined to separate.”
Some costs genuinely are. Most are not, and the honest answer is to allocate what is attributable and leave the rest in overhead rather than abandoning the exercise because it cannot be perfect.
“We already know which clients are good.”
Often true for the extremes and rarely true in the middle, which is where most of the revenue is. The surprise in a first month is almost never the client anyone predicted.
“It will start arguments.”
It will, and they are arguments worth having with numbers attached rather than without. What it should not do is arrive as a verdict on someone's account with no context.
“We don't have time at month end.”
Which is the real constraint, and why the routine has to be an hour rather than a day. If it is taking longer after three months, the supplier rules are not being written down.
Where to start
Not with a system. With last month.
Take one month of supplier invoices, extract the lines, allocate what is obviously attributable, and leave the rest in overhead. Then sort clients by external cost and look at the order.
If the order matches what everyone expected, you have confirmed something useful cheaply. If it does not — and it usually does not — you have found the thing this whole exercise exists to find, in about an hour.
Then do it again next month. The second month is where it becomes a habit, and the third is where it becomes a trend.
