Journal For agencies
How agencies can pass AI coding costs through to clients
A practical playbook for agencies and software houses: measure AI coding spend per client, choose a billing model, word the contract clause, and send a report clients actually accept.
8 min read
If you run an agency or a software house, AI coding agents have quietly changed your cost structure. Your developers ship faster — which your clients enjoy — and a growing tool bill lands on your P&L, not theirs.
For a small team that’s a rounding error. For a 30-person shop running a dozen client projects, it can be the price of a junior developer every month. And it’s not evenly spread: one client’s legacy monolith might be consuming four times the AI budget of everyone else combined.
This post is a playbook for fixing that: measuring it per client, choosing how to bill it, and presenting it in a way that doesn’t start an argument.
First, measure per client — not per developer
You can’t bill what you can’t attribute. A per-developer usage export doesn’t help: your developers work across multiple clients in the same week, sometimes in the same afternoon.
The reliable unit is the repository. Client work lives in client repositories, and modern coding agents can report which repository each unit of usage came from. Build a simple mapping:
client → project → repositories
Kestrel → checkout-api → github.com/acme/kestrel-checkout
→ driver-app → github.com/acme/kestrel-driver-ios
github.com/acme/kestrel-driver-android
Ostara Health → patient-app → github.com/acme/ostara-app
Internal → design-system → github.com/acme/design-system
Do this once and it stays correct as people move between projects. Usage outside any client repository — internal tools, experiments, sessions run outside a repo — goes into an Internal or Unattributed bucket that you absorb as overhead.
Run it for a full month before talking to any client. You want to know the real numbers, the spread between clients, and how stable they are month to month.
Choose a billing model
There are four common approaches. None is universally right; pick the one that matches how you already bill.
| Model | How it works | Fits best |
|---|---|---|
| Absorb it | Treat AI as overhead, priced into your day rate | Fixed-price projects, small AI spend |
| Pass-through at cost | Bill actual monthly AI spend per client, no margin | Time-and-materials, transparency-minded clients |
| Pass-through + handling fee | Actual cost plus 10–20% to cover tooling and admin | Most T&M agencies; mirrors how hosting is billed |
| Fixed AI tooling fee | Flat monthly fee per project, reviewed quarterly | Retainers; clients who hate variable invoices |
Our experience: pass-through with a modest handling fee is the easiest to defend, because it’s exactly how agencies already bill cloud hosting and third-party licences. Clients understand it. A flat fee is a good second choice for retainers — use three months of measured data to set it, and review it quarterly.
Whatever you choose, don’t quietly raise day rates to cover AI. Clients notice, and you lose the chance to tell a much better story: “we use AI tooling to deliver faster, and here’s exactly what it costs you”.
Put it in the contract
For new engagements, add a clause rather than relying on goodwill. Something like:
AI-assisted development tools used on the Client’s projects are billed monthly at cost plus a 15% handling fee, based on measured usage attributed to the Client’s repositories. A monthly usage report is provided with each invoice. No Client source code or prompts are shared with the reporting provider.
For existing clients, introduce it at the next renewal or scope change, with one or two months of reports before the first charge. Showing the number before billing it builds trust; springing it on them does not.
Send a report, not just a line item
“AI tooling — $4,771.14” on an invoice invites questions. A one-page report answers them before they’re asked. It should include:
- Period and projects covered.
- Cost per project, with a short description of the work and the ticket range — e.g. “checkout-api: rate limiting, carrier webhooks, KST-470 – KST-498”.
- Subtotal, handling fee, total.
- A privacy line: what was measured, and that no source code or prompts were collected.
- No developer names. Clients don’t need to know which engineer used how much, and including it creates awkward conversations for your team.
Ticket ranges are what make the report credible. They let the client’s product owner connect spend to work they asked for.
Handle the awkward cases
A runaway session. Occasionally an agent will burn through an unusual amount on a single task. Set a per-client budget with an alert at 80%, and agree internally on a rule: anything that looks like a tooling mistake rather than client work gets moved to internal overhead. Credit it on the report if needed. That’s cheaper than the argument.
Fixed-price projects. Don’t pass anything through, but do measure. Next time you quote a similar project, you’ll know what AI actually cost, and you can price it in.
Seat-based subscriptions. If you pay a flat price per seat rather than per token, the metric cost is an API-equivalent value. You can still allocate the seat cost proportionally across clients by usage, which is a fair and explainable method.
The client asks to see the data. Good — that’s the point. Give them the per-project figures and the privacy statement. Never the raw sessions.
The numbers, roughly
For a typical 20-developer agency where AI spend is around $9,000 a month and roughly 70% of it is attributable to client repositories, a pass-through with a 15% fee recovers about $7,200 a month — over $85,000 a year that was previously eaten as overhead. Your numbers will differ, but the order of magnitude is why this is worth a morning’s setup.
Getting started
- Map client repositories to projects and clients.
- Measure for one full month. Don’t bill yet.
- Pick a billing model and write the clause.
- Share the first report with each client before the first charge.
- Bill from month three onwards.
SpendByTeam’s Agency plan was built for exactly this flow: client mapping, per-client budgets, handling fees and a monthly client PDF, with no code or prompts ever collected. See pricing.