How to attribute AI and LLM costs by team

Turn one opaque provider invoice into per-team accountability.

By Quordo · Published · Updated · 6 min read

Key takeaways

  • You attribute AI costs by team by giving each team its own provider key or project, then mapping every usage event on that connection to the owning team at ingestion.
  • Provider invoices report cost by model and time bucket, not by team, so attribution requires a mapping layer between provider usage and your org structure.
  • Storing denormalized provider/model/team/cost on each usage event keeps historical attribution stable even when keys are rotated or prices change.

Why the provider invoice isn't enough

A single OpenAI or Anthropic invoice tells you what the organization spent — not who spent it. For finance, that's the difference between a number to pay and a number to manage.

Most AI usage APIs report cost by model and time bucket, not by the team, product, or cost center that incurred it. Without a mapping layer, per-team accountability is impossible and showback and chargeback stall.

Pick an attribution model that matches reality

The most reliable coarse-grained model is per-connection: give each team its own provider key (or project), then attribute all usage on that key to the team. It's honest, auditable, and requires no per-request tagging.

Finer-grained models (per-request metadata, per-agent tags) are powerful but require discipline at call time and a provider that preserves the dimension. Start coarse, then refine where the spend justifies it.

Operationalize it

Stamp every usage event with its team at ingestion, store the denormalized provider/model/team/cost on the event, and roll it up by day and month. That keeps historical attribution intact even when a key is rotated or a connection is removed. Attribution is also the foundation everything else in AI cost governance builds on — budgets and alerts only change behavior when they're scoped to a team, and a spend forecast is only as good as the per-team run-rates underneath it.

In Quordo you assign a connection to a team once; usage is then attributed automatically and the dashboard slices cost by team, model, and provider — ready for chargeback.

Frequently asked questions

How do I attribute AI costs by team?
Give each team its own provider API key or project, then map all usage on that connection to the team at ingestion time. This per-connection model is auditable and needs no per-request tagging. Finer-grained models (per-request metadata or per-agent tags) work too, but require discipline at call time and a provider that preserves the dimension.
Why doesn't the OpenAI or Anthropic invoice show cost per team?
Provider usage APIs report cost by model and time bucket, organized around the provider's own boundaries — accounts, keys, and deployments — not around your org chart. Without a mapping layer that translates provider usage into your team structure, per-team accountability and chargeback are impossible.
What data should I store for AI cost attribution?
Stamp every usage event with its team at ingestion and store the denormalized provider, model, team, and dollar-cost on the event itself, then roll it up by day and month. That keeps historical attribution intact even when a key is rotated, a connection is removed, or a provider changes its prices.

Related reading