Guide
How much is your team spending on AI coding tools?
Add three numbers: subscription seats at list rate, metered API spend from each provider's bill, and the tool-reported cost of the work itself. The first two come from finance. The third comes from telemetry, and it is the only one that breaks down by team, repository and model. They are not the same number.
The three numbers, and why they disagree
Almost every argument about AI tool spend is two people quoting different numbers at each other. Finance has invoices. Engineering has telemetry. Neither is wrong and they will never match, because they measure different things.
| Number | Where it comes from | What it breaks down by |
|---|---|---|
| Subscription seats | Vendor invoices, at list rate | Person, if somebody keeps the seat list current |
| Metered API spend | Provider billing, or Cursor's /teams/spend endpoint | Whatever the provider bills on, usually a key or a workspace |
| Tool-reported cost | The coding tools' own telemetry | Person, team, model, repository, branch, day |
The third row is the one worth understanding, because it is both the most useful and the most easily oversold. It is an API-equivalent estimate that each tool calculates for itself. It is not your bill. It cannot be reconciled to your bill, it will not agree with your bill, and a vendor who implies otherwise is hoping you do not check.
What it is good for is proportion. Which team, which repository, which model, which week. Invoices cannot answer any of those, and no amount of accounting will make them.
What each tool actually reports
Coverage is uneven, and the unevenness matters more than the averages.
- Claude Code reports claude_code.cost.usage, a counter in USD that Anthropic documents as the cost of the Claude Code session. That is a real per-session number you can group by user, and it is a tool-side calculation rather than a billed amount.
- Cursor's Admin API has /teams/spend, which returns per-user spend for the billing cycle. That is actual money. It is the best Cursor cost source that exists, and endpoint telemetry cannot match it, because Cursor's hook payloads carry no cost figure at all.
- Codex CLI usage rolls up into aggregated Codex usage and activity metrics for a ChatGPT workspace, for the sessions that authenticated into that workspace and no others.
Say the uncomfortable half out loud: an endpoint agent that reports a dollar figure for Cursor is either calling Cursor's Admin API behind the scenes or inventing the number. Synopt does neither, so every Cursor event it stores contributes $0. Get Cursor spend from Cursor.
How do you calculate cost per developer?
The numerator is the easy part. The argument is always the denominator, and picking it is a decision about what question you are answering.
| Denominator | The question it answers | When it misleads |
|---|---|---|
| Every engineer on the team | What is this costing us per head? | Buries adoption: two heavy users and eighteen non-users average out to a comfortable, meaningless number |
| Engineers with any activity in the window | What does it cost to run for someone who uses it? | Moves whenever adoption moves, so a rising number can mean either heavier use or fewer users |
| Seats you are paying for | What are we getting for the invoice? | Only honest if the seat list is current, which it usually is not |
Compute at least the first two and put them next to each other. Where they diverge is your adoption story, told in the only units a CFO reads without being asked twice.
Where the money usually is
Four places, roughly in order of how much they pay back for the effort of finding them.
- Seats nobody used. Subscription seats with zero events in the window. This needs no cleverness, only a seat list joined to an activity list, and it is reliably the highest-yield number in the category.
- Model mix. The same task on a frontier model and on a cheaper one differ by an order of magnitude. Grouping tool-reported cost by model tells you whether anyone is choosing, or whether everyone is on whatever the default is.
- Concentration. A handful of people usually account for most of the spend. That is often correct and worth knowing anyway, because it turns a budget conversation into a specific one.
- Repository. Cost grouped by repo tells you which codebase is expensive to work in, which is a code-health signal wearing a finance costume.
What Synopt shows for this
A cost view with estimated total cost, total tokens, estimated cost per active user and active users, sliced by team, model, tool and day. Plus a Monthly AI Spend & ROI report built for finance, which adds estimated total spend, subscription seats at monthly list rate, estimated metered spend, idle seats, estimated cost per active user, and tokens per dollar.
Idle seats is the one to look at first. It is defined as subscription seats with zero events in the window, and it is the only number on that page that turns directly into a cancelled invoice line.
Printed on the report itself, not buried in a footnote: cost figures are estimated API-equivalent rates reported by each tool, not billed amounts.
Can you calculate ROI from this?
No, and it is worth being blunt about it. Nothing here measures output quality, delivery speed or business value. Tokens per dollar is an activity-per-dollar proxy and it is labelled as one. There is no code-output metric and no outcome metric in this data, so any ROI figure derived from it is an assumption with a decimal point stuck on the end.
What you can defend in a budget meeting: total spend, the trend, who is using it, which seats are idle, and the cost of the work per team. That is a stronger position than a fabricated multiplier, and it survives being questioned.
Questions people actually ask
- How do I find out how much my team spends on AI coding tools?
- Start with invoices for the seat and metered numbers, because those are the amounts you actually pay. Then add tool-reported cost from telemetry for the breakdown by team, model and repository. Expect the two to disagree: one is billing, the other is the tools' own estimate of what the work would cost at API rates.
- Is Claude Code's reported cost the same as my Anthropic bill?
- No. claude_code.cost.usage is a counter in USD that Claude Code calculates itself, documented as the cost of the Claude Code session. Treat it as a proportional signal that splits cleanly by user, team and model, and treat the invoice as the money.
- Why does my usage tool show $0 for Cursor?
- Because Cursor's hook payloads carry no cost figure, so there is nothing to read on the endpoint. Synopt reports $0 rather than estimating one. Real per-user Cursor spend comes from Cursor's own Admin API, at /teams/spend, and that is where you should get it.
- What is a reasonable AI coding tool cost per developer?
- We will not give you a number, because we do not have one worth quoting. Anyone publishing an industry average is averaging across model choices, task types and adoption levels that have nothing to do with your team. Measure your own two numbers, cost per engineer and cost per active engineer, and watch the gap between them.
- Can I attribute AI spend to a team or a repository?
- From telemetry, yes: tool-reported cost carries the repository, branch and project alongside the tokens, so it groups by team and by repo. From invoices, usually not, because providers bill on keys and workspaces rather than on your org chart.
The demo's cost tab shows estimated cost by team and by day, token totals and estimated cost per active user, on sample data with no signup. Open the live demo
Sources
- "Cost of the Claude Code session" Anthropic, Claude Code docs: Monitoring usage (description of claude_code.cost.usage, unit USD). https://code.claude.com/docs/en/monitoring-usage Read 2026-09-08.
- "Date range cannot exceed 30 days. Make multiple requests for longer periods." Cursor docs: Admin API. https://cursor.com/docs/account/teams/admin-api Read 2026-09-08.
- "aggregated Codex usage and activity metrics for a ChatGPT workspace" OpenAI, Codex enterprise docs. https://learn.chatgpt.com/docs/enterprise/analytics-api Read 2026-09-08.
Read next
Published 2026-09-08. Last updated 2026-09-08.