Why AI spend is unattributable by default

The invoice grows and nobody can say which team caused it. That is the default, and it is structural.

How it happens

  • One shared API key per provider.
  • Keys copied between teams.
  • No team or app on the request.
  • A separate invoice per provider.
  • Self-hosted models metered by nobody.

Why spreadsheets fail

Asking teams to log their usage decays within weeks. New apps inherit old keys.

The fix

  • All model traffic through one gateway.
  • Team, app and user on every request.
  • Budgets enforced at the gateway.
  • Telemetry in the monitoring you already run.

The result

Finance gets chargeback it can defend. Teams get budgets they control. The question becomes whether the spend was worth it.

All insights