A 3-Step AI Cost Audit: Seats, Tokens, and the Hours Nobody Books
Two thirds of companies have an AI dashboard. Barely a quarter can actually see what AI costs them. Here is the 3-step audit I run on a tooling budget: what to list, which number to pull for each line, and the threshold that means kill it.
- #workflows
- #cost
- #finops
- #engineering-management
- #claude
A dashboard is not cost control. KPMG's Q2 2026 AI Pulse survey — 204 US C-suite and business leaders at companies with $1B+ in revenue, fielded 28 April to 25 May 2026 — found 66% had AI monitoring dashboards and 61% had approval processes, but only 26% said their AI operating costs were fully visible and actively monitored. Only 36% had implemented direct token or usage controls. So the common failure mode isn't that nobody is watching. It's that everybody is watching a chart nobody can act on.
I own a tooling budget as an EM at a US company, and this is the audit I run on it. It takes an afternoon. It gives you three things per line: who pays for it, what shape the bill is, and what one unit of finished work actually costs.
Step 1 — List every line, tagged by billing shape
One row per AI line item. Columns: line, billing shape (seat, token, or both), owner, cost last 30 days, active users last 30 days.
Billing shape is the only column that predicts a surprise. Seat lines drift upward slowly, one hire at a time. Token lines can double in a week with nobody approving anything.
Pull each number from the source, never from memory:
- Seats. The Claude Code Console dashboard shows a team insights table listing every member with Spend this month and Lines this month. A row with spend and no lines is a licence somebody forgot they had. (Anthropic labels those spend figures as estimates — fine for a reclaim decision, not for finance.)
- Tokens. Don't read the dashboard, query it. The Usage and Cost Admin API exposes
/v1/organizations/cost_report, which you cangroup_by[]=workspace_idandgroup_by[]=descriptionat daily granularity, plus/v1/organizations/usage_report/messageswithbucket_width=1dgrouped by model. It needs an Admin API key, not a normal one.
curl "https://api.anthropic.com/v1/organizations/cost_report?\
starting_at=2026-07-01T00:00:00Z&ending_at=2026-08-01T00:00:00Z&\
group_by[]=workspace_id&group_by[]=description" \
-H "anthropic-version: 2023-06-01" \
-H "x-api-key: $ANTHROPIC_ADMIN_KEY"
Kill threshold: a seat with spend and zero output for 30 days gets reclaimed next cycle, no meeting required. And token spend landing in a workspace with no named owner gets frozen until it has one. An unattributable line isn't a budget problem, it's a governance one.
Step 2 — Price one unit of finished work, verification included
The invoice total tells you nothing you can act on. What you need is the cost of one shipped thing.
Anthropic's own worked example prices a one-hour Claude Opus 5 coding session at $0.705 — 50k input tokens, 15k output tokens, plus session runtime. Turn on caching for 40k of those input tokens and the same session costs $0.525, because a cache hit bills at 0.1x the input rate.
Now put a senior engineer's hour beside that. Anything more than a few minutes of re-reading, re-running, or arguing with the output dwarfs the invoice line entirely. That is the cost nobody books, and it's the only one that scales with headcount instead of with usage. So price each line like this:
cost per verified unit = (30-day line cost + verification hours × loaded hourly rate) ÷ units shipped
Kill threshold: if the cost per verified unit is above what that output costs you without the tool, cancel it. And if verification hours are climbing while the invoice stays flat, you don't have a cost problem — you have a quality problem wearing a cost problem's clothes.
Step 3 — Cap what floats, and calendar the price changes
Per-token prices are not a constant, and three of these move without anyone on your team deciding anything:
- Cache reads bill at 0.1x base input. Same workload, tenfold spread, settled by whether somebody set
cache_control. - Batch is 50% off in both directions. Anything that doesn't need an answer this second belongs there.
- The premium tier isn't where you think. Claude Fable 5 outputs at $50/MTok; Claude Opus 5 outputs at $25/MTok, half as much. Haiku 4.5 sits at $1 in, $5 out.
- Claude Sonnet 5's introductory $2/$10 runs through 31 August 2026, then standard pricing takes over at $3/$15. A 50% input increase is already on the calendar — if your Q4 forecast uses today's rate, it's wrong today.
- Upgrading a model moves token counts, not just token prices. Claude 4.7 and later use a newer tokenizer that produces roughly 30% more tokens for the same text. A flat per-token price can still hand you a bigger bill.
Do this today
Pull one cost report grouped by workspace for last month and open the per-user seat table next to it. Circle every seat with spend and no output, and every workspace with no name attached to it. That's one hour, and it's the hour that pays for the rest of the audit.
Sources
Keep reading
More guides like this one.
ChatGPT Work vs Claude Cowork: the answer is in your admin console
Two workspace agents shipped 48 hours apart. The thing that actually decides which one your team runs isn't the model — it's a toggle an admin flipped before anyone got to try either. Here's the seam, and my routing rule.
Audit Your Own Job for AI (the Prompt I Run on My Role)
AI won't take your whole job — it takes tasks inside it. Here's the audit prompt I paste into Claude to score every weekly task for delegation, plus the EM rule I use to decide what stays human.
My No-Overwhelm System for Staying Current on AI
You cannot read every AI newsletter and still ship work. Here is the small, fixed stack I subscribe to — one pick per job, across newsletters, video, creators, communities, and podcasts — plus the 15-minute weekly habit I use to triage it.