How to track software costs per client (for agencies and MSPs)
Most software tracking advice assumes one company buying tools for itself. Agencies, managed service providers and consultancies have a harder shape of the same problem: they buy software on behalf of other people. The subscriptions sit on one company card and one set of contracts, but the cost belongs to a dozen different clients, and some of it belongs to nobody but you.
That gap is where margin quietly disappears. Not usually in one dramatic overspend, but in a seat still billing for a client who left in March, a tool bought for one project that three others now depend on, and a price rise absorbed silently because nobody could say which client should have carried it.
This guide is a method for closing that gap. It assumes you already have a list of your software. If you do not, start with how to track software renewals and come back.
Why the shared spreadsheet stops working
A spreadsheet holds up fine for one client at one moment in time. It stops holding up across twenty clients over several years, and it fails in a specific way: the columns stay accurate while the attribution rots.
The tool names and the costs are easy to keep current, because a wrong number is visible. Who the cost belongs to is not visible. When a client offboards, someone updates the client list and the invoicing system, and nobody goes back through the software sheet to find the four subscriptions bought for that client. The sheet is still correct about what you pay. It has become wrong about why.
So the thing worth building is not a better cost list. It is a durable link between each tool and the client it exists for, maintained at the moment the tool is bought rather than reconstructed at year end.
Decide what "belongs to a client" actually means
Before tagging anything, settle the definition, because three different things get called client software and they behave differently:
- Client-specific. Bought for one client and useless without them: a seat on their CRM, a licence in their tenant, a monitoring agent on their estate. If the client leaves, this should be cancelled. Attribution is unambiguous.
- Shared delivery tooling. Used to serve many clients but not any one of them: the design suite, the project tracker, the RMM platform. Attribution is an allocation choice, not a fact. Splitting it per client is optional and often not worth the effort.
- Internal overhead. Payroll, accounting, your own email. Never client cost, however tempting the maths.
The high-value work is almost entirely in the first category. Client-specific tools are the ones that keep billing after a client goes, the ones that should have been recharged, and the ones nobody remembers to cancel. Get those attributed properly and you have captured most of the benefit. Allocating the shared tooling across clients by headcount is a refinement you can add later, if the numbers turn out to matter.
Tag at the point of purchase, not at year end
Attribution is nearly free at the moment of buying, when the reason is obvious, and expensive six months later, when it has to be excavated from a card statement and someone's memory. The whole method rests on moving that one step earlier.
In practice that means adding one question to whatever approval you already have before a subscription starts: which client is this for, or is it shared? A purchase that cannot answer is worth a second look on its own merits. Then record the answer in the same place as the renewal date and the notice period, not in a separate finance sheet, because a second system is a system that will disagree with the first.
The related discipline is naming an owner. A client-specific tool with no named internal owner is the one that survives the client, because cancelling it is nobody's job. If a lot of your estate looks like this, finding the software nobody owns is the prerequisite step.
Recharge, absorb, or split
Once tools are attributed, the commercial decision becomes tractable. There are only three answers per tool, and the useful test is whether the client can see it:
- Recharge. The client sees or directly benefits from the tool. Pass it through, ideally as a visibly separate line from your fee.
- Absorb. The tool is invisible to the client and part of how you work. Price it into the fee rather than itemising it.
- Split. Usage varies enough that a flat share is unfair. Band it, so light users pay less than heavy users.
There is one durable argument for showing recharged software as its own line rather than burying it in a blended fee: when the vendor raises its price, a separate line makes that increase attributable to the vendor. Buried in your fee, the same increase reads as you putting your prices up, and you either absorb it or spend goodwill explaining it.
This is also where per-client attribution pays for itself outside of tooling. Client profitability is revenue minus delivery time minus the software you buy to serve them, and the third term is the one most firms estimate rather than measure. A client whose tooling costs have crept up over three years can be entirely unprofitable while still looking busy and healthy.
Renewals are harder when the contract is on someone else's behalf
A client-specific subscription has two clocks, and they are rarely aligned: the vendor's contract term, and your engagement with the client. The engagement can end at thirty days' notice while the licence bought to serve it has eleven months left and an auto-renew clause.
The date that matters is not the renewal date. It is the cancellation deadline, which sits one notice period earlier and is the last day you can still act. On a ninety-day notice period, a renewal in June was decided in March. Notice periods explained covers the mechanics.
Two habits make this manageable. First, record the notice period for every client-specific tool when you buy it, so the deadline is derivable rather than researched under time pressure. Second, when a client contract comes up for renewal or looks shaky, review the tools tagged to that client at the same time. The two decisions are connected and are almost always made separately.
When a client leaves
Offboarding is where attribution proves its worth, because the question becomes answerable in seconds instead of being a small research project nobody schedules.
- Filter the estate to that client and list every tool tagged to them.
- For each one, check whether the cancellation deadline has already passed. Anything already past it will bill for another term, so plan for the cost rather than discovering it.
- Cancel or serve notice on the rest, in writing, and record the date you did it.
- Reassign anything that turned out to be shared rather than client-specific, so it does not get cancelled out from under another client.
- Deal with the data and the access separately from the billing. Cancelling a subscription is not the same as removing a departing client's data or revoking accounts.
The last point is the one that fails audits rather than budgets. The software offboarding checklist covers the access and data side in full.
A minimum setup that works
You do not need a procurement function for this. The smallest version that survives contact with a growing client list is:
- One list of every subscription, not one per department or per client.
- A client tag on each entry, with "shared" and "internal" as valid answers rather than blanks.
- A named internal owner per tool, including the shared ones.
- Renewal date and notice period recorded at purchase, so the cancellation deadline is always known.
- A recharge decision per tool: recharge, absorb, or split.
- A standing step in client offboarding that filters the list by that client before the account is closed.
That is six fields and one habit. It is considerably less work than the annual reconstruction it replaces, and unlike the reconstruction it is accurate on the day you need it rather than three weeks later.
StackTrackr covers most of this directly. You configure your customer list in settings, tag each tool with the customer it was bought for, and filter or search the register by customer to see everything attributed to one client at once. Each tool also carries its renewal date, notice period, derived cancellation deadline and named owner, and the owner is emailed before the window closes rather than after.
The expenditure report adds the money view: annualised spend broken down by customer, alongside vendor, owner, category and business unit. It reports each currency separately rather than converting them into a single total, and one-off purchases sit outside the annualised figure. That report is part of the paid plans and of the 14-day trial every new account starts on, and the free Starter plan covers up to ten tracked tools, which is worth knowing before you load an estate that spans a dozen clients. See what each plan includes, or create a free account and start by tagging the tools you bought for your largest client.