Integrations

Claude Code spend per developer and team

In short: Claude Code can export its usage with OpenTelemetry. Set five environment variables and every model call arrives in FiscaLLM with the developer, the model, the tokens and the cost. You get spend per developer and per team, a budget alert when someone passes an amount, and a warning when a session runs away. Nothing is installed on top of Claude Code and no traffic is proxied.

It suits a small team on the Team plan, or on Pro and Max seats, that wants one page and an alert without running a collector and Grafana. Some teams already have this from Anthropic; see what Anthropic already gives you before you sign up.

1. Turn on the export

Create an app for your team's Claude Code usage and copy its key. Its Setup page shows the settings below with the key filled in. Use a separate app, not the one for a product. Then set these wherever Claude Code runs:

export CLAUDE_CODE_ENABLE_TELEMETRY=1
export OTEL_LOGS_EXPORTER=otlp
export OTEL_EXPORTER_OTLP_LOGS_PROTOCOL=http/json
export OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=https://fiscallm.com/api/v1/otel/v1/logs
export OTEL_EXPORTER_OTLP_LOGS_HEADERS="Authorization=Bearer <FISCALLM_KEY>"

For a whole team, put the same values in Claude Code's settings file instead (the managed settings your admin distributes, or each developer's ~/.claude/settings.json):

{
  "env": {
    "CLAUDE_CODE_ENABLE_TELEMETRY": "1",
    "OTEL_LOGS_EXPORTER": "otlp",
    "OTEL_EXPORTER_OTLP_LOGS_PROTOCOL": "http/json",
    "OTEL_EXPORTER_OTLP_LOGS_ENDPOINT": "https://fiscallm.com/api/v1/otel/v1/logs",
    "OTEL_EXPORTER_OTLP_LOGS_HEADERS": "Authorization=Bearer <FISCALLM_KEY>"
  }
}

http/protobuf works too. These variables are Claude Code's own; see its monitoring documentation for the full list.

2. Who and which team

A developer who is signed in to Claude Code is recorded under their email. Without a sign-in (an API key only), the account ID or Claude Code's anonymous install ID is used. To name people yourself, or to group by team, add resource attributes:

export OTEL_RESOURCE_ATTRIBUTES="team.id=platform,fiscallm.user_id=alice"
ValueRead from, in this order
Developerfiscallm.user_id, user.email, user.account_uuid, user.account_id, user.id
Teamfiscallm.feature, team.id, team.name, team, department, cost_center. With none set, the team is claude-code
Model and tokensmodel, input_tokens, output_tokens, cache_read_tokens, cache_creation_tokens
Costcost_usd (Claude Code's own figure, which knows about fast mode and cache lifetimes). If it is missing, the call is priced from the price table

Only the claude_code.api_request event is read. Each call is stored once, by its request ID, even if Claude Code sends it again.

3. What you see

What Anthropic already gives you

You may not need FiscaLLM. It depends on how your team pays for Claude Code.

You useWithout FiscaLLMOur advice
API keys, in the Claude ConsoleThe Console has a Claude Code page with estimated spend per userStart there. FiscaLLM adds alerts per developer and your own team grouping
Enterprise planAn admin dashboard with usage and cost by group and by user, with spend limitsYou probably don't need FiscaLLM
Team planThe analytics dashboard shows usage and contribution, not cost per developer. Cost comes from the OpenTelemetry export or a CSV spend reportThis is where FiscaLLM helps: a place to send that export, with no collector or Grafana to run
Pro or Max seats, one per developerEach seat is its own account, so there is no shared viewFiscaLLM puts the team on one page
Only youThe /cost command, or a local tool such as ccusageUse those. They are free and need no account
Amazon Bedrock or Google Vertex AIThe same OpenTelemetry exportNot tested with FiscaLLM yet. If you try it, tell us what you see

As of November 2026. Plans change, so check Anthropic's analytics documentation. FiscaLLM is not affiliated with Anthropic.

Sending to two places

Claude Code has one logs endpoint. To keep your current backend, put an OpenTelemetry Collector in between:

exporters:
  otlphttp/fiscallm:
    endpoint: https://fiscallm.com/api/v1/otel
    headers:
      Authorization: Bearer ${env:FISCALLM_KEY}

service:
  pipelines:
    logs:
      receivers: [otlp]
      exporters: [otlphttp/fiscallm, your-existing-exporter]

What it does not do

Check that it works

Run one prompt in Claude Code. Events are sent every few seconds, and the app's Setup page shows the first one when it arrives. To test the endpoint by hand, a 200 with an empty body means every model call was stored, a 200 with partialSuccess says what was skipped and why, and a 401 means the key is missing or wrong.

Questions

Doesn't Anthropic already show Claude Code spend per developer?

Partly. The Claude Console shows estimated spend per user for teams on API keys, and the Enterprise plan has cost by user and group. On the Team plan, and with Pro or Max seats, cost per developer comes from Claude Code's OpenTelemetry export, which needs somewhere to go. FiscaLLM is that place, with budget alerts.

Does FiscaLLM see our prompts or code?

No. It reads one kind of event, the model call (api_request): the model, the token counts, Claude Code's cost figure and who made the call. Every other event Claude Code sends is discarded on arrival. Claude Code also redacts prompt text in its telemetry unless you turn that on yourself.

We pay per seat (Pro, Max or Team). What does the cost mean?

It is Claude Code's own estimate of what each call costs at API prices. On a subscription you pay per seat, so read it as what the usage would have cost on the API: good for comparing developers and teams and for deciding who needs a bigger plan, not a copy of your invoice. With API keys it is close to the bill, but the provider's invoice is still the record.

Does it work with Cursor, Codex or GitHub Copilot?

Not yet. Only Claude Code is read today. If you need another agent, open an issue on GitHub and say which.

Can we keep sending Claude Code telemetry to our current backend?

Yes. Send Claude Code to an OpenTelemetry Collector and give the logs pipeline two exporters, your backend and FiscaLLM. The Collector config is on this page.

How many developers does the free hosted service cover?

It accepts 100,000 events per app per month, and one model call is one event. An agent makes many model calls per task, so the hosted service suits a small team or a trial. A larger team should self-host, which is free and has no limit.