Guides / llm cost chargeback

Charging LLM spend back to the team that spent it

LLM cost chargeback means allocating shared model spend to the internal teams that caused it, using recorded per-call attribution rather than a headcount split. One key gives you one number, and a number resists being divided fairly. Culpa, a local-first LLM cost, margin, and forecast ledger, tags every call with its team and prices it individually.

Why this happens

Most companies start with one API key, because one key is easy, and the bill that comes back is one number. Finance still has to split it, so it gets split by the only thing anyone can measure, which is usually headcount and occasionally an argument. Both are guesses, and AI usage is the wrong shape for a guess: it concentrates. A six-person team running a document pipeline can outspend a twelve-person team using a chat assistant several times over, and a headcount split will move money in exactly the wrong direction while looking scrupulously fair. The damage isn't the accounting, it's the incentive. A team charged for someone else's usage has no reason to reduce its own, and the team actually driving the bill sees a discount on its own consumption. You can only charge back what you attributed, and the cleanest attribution is recorded at call time rather than reconstructed afterwards.

What this usually looks like

  • One API key serves every team and finance splits the bill by headcount.
  • A team disputes its allocation and nobody can produce evidence either way.
  • Nobody knows which internal team drove last month's increase.
  • The teams told to cut usage aren't the ones generating it.
  • Your allocation method hasn't changed since the first month you used it.

Free, no card, no account

Run the free Cost Leak Scan

It shows your most expensive conversation before you install anything.

Run the free Cost Leak ScanStart 14-day trial

Mistakes that cost the most

MistakeWhy it hurtsDo instead
Splitting shared AI spend by headcount.Usage concentrates and headcount doesn't, so the split moves money the wrong way.Attribute per call and charge the actual figure, even if it embarrasses somebody.
Issuing one key per team and stopping there.It splits the bill and tells you nothing about which feature or customer inside a team spent it.Keep the key split and record the team on the call as well, so you can go a level deeper.
Charging back a number nobody can audit.An allocation you can't show the working for gets argued rather than acted on.Publish the per-call detail behind each team's figure alongside the figure.
Waiting for a clean allocation model before charging anything back.Spend keeps concentrating while the model is designed, and the incentive stays broken.Start showback now, visible and uncharged, and let the numbers make the case.

Run this check tonight

  1. Ask how last month's AI spend was split, and what evidence backed the split.
  2. Name the team you believe spent the most, then check whether you can prove it.
  3. Find out whether one key serves several teams, and how many.
  4. Work out what each team would owe on measured usage and compare it to what it was charged.

Headcount against measured usage, on the same $24,000

Illustrative example

A modelled month at $24,000 of shared spend across four teams of 12, 8, 6 and 4 people, priced on Claude Haiku 4.5 at real rates of $1.00 and $5.00 per million from the price book effective 2026-07-02. Team C runs a document pipeline and the others run assistants. Token volumes, team sizes and the usage split are modelled.

the month: 19,000M input x $1.00/M + 1,000M output x $5.00/M = $19,000 + $5,000 = $24,000
headcount split over 30 people: $24,000 / 30 = $800 a head
so A pays $9,600, B $6,400, C $4,800, D $3,200
measured usage: A $2,400, B $1,800, C $16,200, D $3,600
team C: charged $4,800, used $16,200, undercharged by $11,400
team A: charged $9,600, used $2,400, overcharged by $7,200

Team C is a fifth of the company and two thirds of the bill, and the fair-looking split hands it a $11,400 monthly discount paid for mostly by team A. Nobody chose that. It fell out of the only method available when the only number available is the total.

Every number, with its confidence and source

FigureWhat it meansConfidenceSource
$11,400 per monthmodelled amount a headcount split undercharges the heaviest team on a $24,000 monthcalculated19,000M input and 1,000M output tokens on Claude Haiku 4.5 at real rates of $1.00 and $5.00 per million from the price book effective 2026-07-02 gives $19,000 + $5,000 = $24,000. Split across 30 people that's $800 a head, so a team of 6 is charged $4,800 against modelled measured usage of $16,200, a shortfall of $11,400. Token volumes, team sizes and the usage split are modelled.

What a generic answer can’t know

A provider knows which internal team owns a call only if you built your key or project structure around it, and that knowledge stops at whatever boundary you drew. Below it, your organisation chart lives in your company and the invoice knows about keys and models, so the join has to be made by you, on the call, at the time. Culpa records the team alongside the customer, the feature, the release and the run, prices each call from a versioned price book in exact decimal, and keeps the ledger on infrastructure you control, which matters more than usual here because an allocation that decides internal budgets is going to be challenged and the detail behind it has to survive the challenge. Showback becomes a query, chargeback becomes defensible, and the team that can reduce the bill is the one that gets the invoice.

Questions founders ask next

How should we split shared LLM costs between teams?

By measured per-call usage, not headcount. AI usage concentrates and headcount doesn't, so a per-head split systematically overcharges light users and discounts heavy ones. In the modelled example it undercharged one six-person team by $11,400 on a $24,000 month.

Is one API key per team enough?

It's a good start and it stops at the team boundary. A key tells you which team spent the money and nothing about which feature, customer or release inside that team did. Keep the key split and record the team on the call too, so you can go a level deeper when someone asks.

What is the difference between showback and chargeback?

Showback publishes what each team used without moving money. Chargeback moves it. Showback is the sensible first step because it needs no budget agreement and the numbers usually make their own argument once people can see them.

Can we work out last quarter's allocation retroactively?

Only as far as your keys already separate. Where several teams shared one key, nothing on the provider's side tells them apart, because the team was never recorded there. Your own request logs may still carry enough to reconstruct part of it. That's the part worth fixing before the next quarter rather than after it.

On your infrastructure

Culpa runs on your infrastructure. Your prompts and responses never leave it. Culpa counts calls to run your plan, and it fails open, so if it ever breaks your app keeps running.


How Culpa works

Find the culprit. Not just the total.

Your dashboard shows what you spent. It stops short of who spent it. Culpa shows the conversation, the user and the feature behind it.

Your prompts stay local.

Culpa runs on your own infrastructure. What you send to a model reaches us at no point.

Every dollar has a name.

Follow any charge to the conversation, the user, the feature and the customer behind it.

See the bill before it lands.

Cost your next feature before you ship it. You get the likely bill and the worst case, at best, median, p90 and p99.

Three steps to your first answer.

1

Change one base URL.

Or drop in the Python or TypeScript library.

2

Find your most expensive conversation.

In the first session, not the first week.

3

Cost your next feature before you ship it.

Base URLhttp://localhost:4545/v1Your traffic keeps flowing if Culpa ever stops.

Why the bill went up

Example dashboard

Calls traced

418,209

across 3 projects

Spend this week

$378.41

+ $182 vs last week

Failed calls

312

74% retried, and you paid for all of them

+ $182 this week traced to one culprit

Spend over 14 days

$0$20$40$60$8024262830020406
user_384report_generatorconv_91fprompt_v1894,220 tokens3 retries$6.81

Most expensive users

user_384$38.42
user_119$21.07
user_562$14.90
user_204$8.30
user_871$5.10

Next week forecast

Best$180
Median$240
p90$310
p99$395

Graded against reality. Accuracy shown as results land.

Keep reading


Sources: Anthropic pricing. Last reviewed 2026-08-05, rates effective 2026-07-02. Plain text version.