Multi-provider, multi-team LLM FinOps
Updated 20 June 2026 · first published 20 June 2026
Once LLM spend lives in more than one place - OpenAI for one product, Anthropic for another, Bedrock for the regulated workload - and more than one team is spending it, no single bill is the problem. The problem is the umbrella: getting one comparable number across providers and one clean rollup across teams. This page is about the umbrella layer that sits above any individual provider's FinOps.
Why "add up the invoices" doesn't work
Each provider counts and discounts differently. Token accounting varies, cache-read discounts differ sharply (OpenAI's cached input runs about 50% off; Anthropic's prompt-cache reads about 90% off; Bedrock depends on the model and region), and reasoning-token billing is not uniform. Summing three invoices gives you a total, but not a number you can compare, attribute, or forecast. The umbrella has to normalize before it aggregates.
Normalize the unit before you compare providers
Pick one unit that is provider-agnostic and report everything in it: cost per successful task. Spend per token is not comparable across providers because the work done per token differs; spend per completed unit of work is. Underneath that headline, keep input, output, and cache-read tokens as separate measures per provider so the discounts stay visible - collapsing them hides exactly the lever that differs most between vendors.
One attribution schema across teams and providers
Every cost record, whichever provider it came from, should carry the same dimensions: team, product surface, environment, provider, and model. Adding provider as a first-class dimension is what makes the umbrella work - it lets you answer "what does this team cost" independent of which vendor served the request, and "what would moving this workload cost" when you evaluate provider arbitrage. The attribution discipline itself is covered in LLM cost attribution.
Reconcile per provider, report as one number
Gateway logs give a fast, approximate, normalized view across all providers; each provider's invoice is the source of truth for that provider. So reconciliation is per-provider - match derived spend to each bill within a documented tolerance - but the report that goes to finance is the single normalized rollup. Keep both: the per-provider reconciliation is what keeps the umbrella honest, and the rollup is what the business actually budgets against. The mechanics of matching logs to each bill are in invoice reconciliation for AI bills.
The multi-team trap: showback before chargeback
The instinct with multiple teams is to start charging spend back immediately. Resist it until attribution coverage is high and the numbers have survived a couple of monthly reconciliations. Start with showback - every team sees its own normalized cost - and move to chargeback only once the data is trusted. Charging back numbers that later turn out to be 20% off destroys the function's credibility faster than no chargeback at all. Budgets and guardrails per team come from LLM budget governance.
Related
- FinOps for LLM: a practical framework - the operating model in full.
- What is LLM FinOps? - the foundational definition and scope.
- LLM cost attribution - the attribution dimensions in depth.
- Provider arbitrage - same model, different price across vendors.
- LLM budget governance - budgets, alerts, and guardrails.
Want this applied to your own LLM spend? FinOps LLM runs a free audit of your AI costs and shows where the savings are. Book free audit →
FAQ
Why doesn't "add up the invoices" work?
Each provider counts and discounts differently. Token accounting varies, cache-read discounts differ sharply (OpenAI's cached input runs about 50% off; Anthropic's prompt-cache reads about 90% off; Bedrock depends on the model and region), and reasoning-token billing is not uniform.
How do you normalize the unit across providers?
Pick one unit that is provider-agnostic and report everything in it: cost per successful task. Spend per token is not comparable across providers because the work done per token differs; spend per completed unit of work is.
Why use one attribution schema across teams and providers?
Every cost record, whichever provider it came from, should carry the same dimensions: team, product surface, environment, provider, and model.
Should you reconcile per provider or report one number?
Gateway logs give a fast, approximate, normalized view across all providers; each provider's invoice is the source of truth for that provider.
What is the multi-team trap with showback and chargeback?
The instinct with multiple teams is to start charging spend back immediately. Resist it until attribution coverage is high and the numbers have survived a couple of monthly reconciliations.