Cost Optimization & FinOps

Building a Chargeback Model for Claude Usage

Chargeback means each team's Claude spend hits that team's budget. Getting there requires an attribution dimension the platform actually enforces, token data you trust, and rate math finance can audit.

Claude 3P 101 · Updated July 2026 · Unofficial guide

Chargeback — internally invoicing each team or product for the AI spend it caused — is where Claude cost management stops being a dashboard and starts being an accounting system. The methodology is the same on every platform: pick an attribution boundary, collect usage against it, convert usage to dollars at documented rates, and reconcile against the real invoice. The tooling differs sharply by platform, so start by knowing what your door gives you.

Step 1: Choose an enforced attribution boundary

Attribution that depends on developers remembering to pass a metadata field will decay. Prefer boundaries the platform enforces:

PlatformStrong boundaryNative usage data
Claude API (1P)Workspaces (API keys are scoped to one workspace; up to 100 per org)Usage & Cost Admin API
Claude Platform on AWSWorkspaces + AWS accounts and IAMConsole Usage/Cost pages (no Usage/Cost API)
Amazon BedrockAWS accounts; tags/inference profiles within an accountAWS billing tools + invocation logging
Vertex AIGCP projectsBilling export; no Anthropic Usage API
Microsoft FoundrySubscriptions / resource groups / Foundry resourcesAzure Cost Management (CCU) + Monitoring tab

The rule that generalizes: one team = one workspace/project/account, and every API credential belongs to exactly one of them. On the first-party Claude API this is literal — API keys are workspace-scoped, so a request's cost is attributable by construction.

Step 2: Collect usage you can defend

On the Claude API, the Admin Usage and Cost API does most of the work. GET /v1/organizations/usage_report/messages returns token consumption with breakdowns by model, workspace, and service tier, filterable and groupable by API key, model, and more, in 1-minute to 1-day buckets. GET /v1/organizations/cost_report returns daily costs in USD (decimal strings in cents), groupable by workspace_id and description. Data typically appears within about 5 minutes of request completion. Two footnotes for your pipeline: Priority Tier costs use a different billing model and are excluded from the cost endpoint (track them via the usage endpoint's service_tier field), and Default Workspace usage appears with workspace_id: null.

On Bedrock, Vertex, and Foundry, that API does not exist — build the equivalent from cloud-native data plus your own logs. Every platform returns the standard usage object on each response (input_tokens, output_tokens, and the cache fields cache_creation_input_tokens and cache_read_input_tokens); capture it at your API gateway or SDK wrapper with team and feature metadata attached. On Bedrock, model invocation logging adds a server-side record including token counts and caller identity. See logging token counts for internal FinOps and tagging Claude requests for the plumbing.

Step 3: Convert tokens to dollars — carefully

Rate each token category separately at the official published prices: input, output, cache writes (1.25x base input for 5-minute TTL, 2x for 1-hour), and cache reads (0.1x). Apply modifiers your workload actually uses: 50% batch discounts, the 10% regional-endpoint premium on Bedrock and Google Cloud, the 1.1x US-only inference multiplier where applicable, and time-bounded promotions (Claude Sonnet 5 is $2/$10 per million tokens through August 31, 2026, then $3/$15). A chargeback model that rates all input tokens at one number will drift from the invoice the moment caching adoption differs between teams — which is precisely when teams start disputing their bills.

Decide explicitly how to handle negotiated discounts: charge teams list price and keep the discount centrally (simple, creates margin), or distribute the discount pro rata (fair, more math). Either is defensible; ambiguity is not.

Step 4: Reconcile and invoice

Monthly, sum your attributed costs and compare against the actual bill — the Anthropic invoice, or the AWS/GCP/Azure Marketplace line. Small gaps are normal (unattributed console experimentation, refused requests, rounding); persistent large gaps mean a leak in attribution, most often credentials shared across teams. Publish each team's line with the drill-down that produced it. Rounding and gap-explanation methodology is covered in reconciling cloud invoices, and the finance-facing format in finance-ready Claude cost reporting.

Start with showback. Run the whole pipeline read-only for a quarter before money moves between budgets — see showback before chargeback. Chargeback disputes are much cheaper to resolve when no journal entries depend on the answer.

Where to go next

Platform-specific mechanics live in Bedrock, Vertex, and Foundry billing guides; the rollout checklist covers the governance around them.

Sources