Supported CSV formats and how we calculate
The free checkup reads usage and cost exports from Claude and OpenAI, plus any CSV with similar columns. This page lists the columns it understands, what each check needs, and how every number is calculated.
Tested so far on synthetic files only. The shapes below follow the official Anthropic Usage and Cost API and the OpenAI Usage and Costs API. Neither provider publishes a column list for the CSV you download from the dashboard, and we have not yet checked a real anonymized dashboard export. If your file is not read correctly, write to hello@aispenddoctor.com with the header row only, never the data.
What the file needs
| To see | The file needs |
|---|---|
| Total spend | A valid cost column, or complete input and output token counts plus a model name and supported tier |
| Spend per model and price scenarios | A model column (or a line item or description that contains the model name) |
| Daily spikes | A date column with at least 7 different days |
| Cache share | Input and cache-read token counts, or both input and cache cost lines for the same model, day and tier |
| Batch share | A batch or service tier column |
Export the previous full month. A shorter period works, but spikes need at least a week of days.
Shapes we recognize
Claude usage (tokens)
starting_at, model, service_tier, uncached_input_tokens, cache_read_input_tokens, cache_creation.ephemeral_5m_input_tokens, cache_creation.ephemeral_1h_input_tokens, output_tokens
Cost is estimated from tokens and the price list below. Input excludes cache reads and cache writes. If only cache_creation_input_tokens is present, writes are priced at the 5-minute rate and the result says so. If both the total and the 5m/1h split are present, the split is used and the total is not added again.
Claude cost report
starting_at, description, cost_type, model, token_type, service_tier, amount, currency
The Anthropic Cost API returns amount in cents. When a file has exactly this shape we read amount as cents and show a switch in case your file uses dollars.
OpenAI usage (tokens)
start_time, model, batch, service_tier, input_tokens, input_cached_tokens, input_uncached_tokens, output_tokens
In OpenAI data input_tokens includes cached and cache-write tokens, so uncached input is input_tokens minus input_cached_tokens and cache writes, or input_uncached_tokens when present. start_time in Unix seconds is read as a UTC date.
OpenAI costs
start_time, line_item, amount.value, amount.currency
amount.value is in US dollars. The model and token type come from line_item, for example gpt-6-sol, cached input.
Any other CSV
Columns such as date, model and cost_usd work. A column named only amount or cost is read as US dollars and the result says it was assumed, with a switch to cents. Comma, semicolon and tab separators, quoted values, a byte order mark and Windows line endings are handled.
Rows we do not count
- Amounts in another currency. This version reads US dollars only.
- Negative amounts (credits and refunds). They are shown separately.
- Rows named Total or Subtotal, so nothing is counted twice.
- Token rows for models not in our price list, when the row has no cost. We never guess a price.
- Token rows with an unsupported tier (including priority, fast and scale) or incomplete input/output counts.
- Invalid numeric costs, negative or fractional token counts, inconsistent cache totals, and rows with a different number of columns. A valid reported cost is retained if only token data is invalid, but token-derived checks ignore that data.
The result always shows how many rows were read, used and left out, and why.
How we calculate
- Reported cost is the sum of the amounts in your file. Estimated cost is calculated from token counts and the list prices below, only for rows without an amount. A file with both shows both. Nonempty invalid cost values are excluded rather than replaced by token estimates. Estimates use short-context list prices; missing cache-read counts assume no cache discount, not a measured zero cache share.
- Batch and flex rows are estimated at half price, but only when the file marks them. Rows without a tier are estimated at standard prices and the result says so.
- Daily spikes: a day is flagged when its spend is more than 3 times the median day in the file and at least $5 above it. Days with no rows are not treated as zero. A spike is an observation; retries, traffic growth, backfills or a runaway agent are possible explanations, not a diagnosis.
- Cache share is cache read tokens divided by all input tokens (uncached, cache reads and cache writes). From a cost export, inference requires both input and cached-input lines for the same model, day and tier. Those amounts are converted using the model's own rates and labelled as an estimate; discounts can change it. An input-only line does not establish zero caching. It is flagged below 50% when at least half of spend could be checked.
- Batch share is the share of spend at batch or flex prices among rows with a known tier.
- Model price scenarios compare what you spent on an older Claude model with the same work at the current model's list prices, applied to input, output and cache separately, and with 30% more tokens when the newer model uses the newer tokenizer. A scenario is shown only when it is at least 5% lower. It is an estimate, not money already lost: output length, cache use and quality on your tasks can change it. OpenAI models are not paired, because their tiers do not map one to one.
- Every check is marked Checked, Partly checked (with the share of spend it covers) or Not available. A missing column never becomes 0%.
Price list
USD per million tokens, standard tier, short context, global routing, checked 27 September 2026. Sources: Anthropic pricing, OpenAI pricing. US-only inference on Claude 4.6 and later is priced 1.1× when the file has an inference_geo column set to us.
Claude
| Model | Input | Cache read | Cache write | Output | Tokenizer |
|---|---|---|---|---|---|
| Claude Fable 5.1 | $10 | $0.25 | $12.5 / $20 | $50 | newer |
| Claude Fable 5 | $10 | $1 | $12.5 / $20 | $50 | newer |
| Claude Opus 5.5 | $4 | $0.2 | $5 / $8 | $20 | newer |
| Claude Opus 5 | $5 | $0.5 | $6.25 / $10 | $25 | newer |
| Claude Opus 4.8 | $5 | $0.5 | $6.25 / $10 | $25 | newer |
| Claude Opus 4.7 | $5 | $0.5 | $6.25 / $10 | $25 | newer |
| Claude Opus 4.6 | $5 | $0.5 | $6.25 / $10 | $25 | previous |
| Claude Opus 4.5 | $5 | $0.5 | $6.25 / $10 | $25 | previous |
| Claude Opus 4.1 | $15 | $1.5 | $18.75 / $30 | $75 | previous |
| Claude Opus 4 | $15 | $1.5 | $18.75 / $30 | $75 | previous |
| Claude Sonnet 5 | $2 | $0.2 | $2.5 / $4 | $10 | newer |
| Claude Sonnet 4.6 | $3 | $0.3 | $3.75 / $6 | $15 | previous |
| Claude Sonnet 4.5 | $3 | $0.3 | $3.75 / $6 | $15 | previous |
| Claude Sonnet 4 | $3 | $0.3 | $3.75 / $6 | $15 | previous |
| Claude Haiku 4.5 | $1 | $0.1 | $1.25 / $2 | $5 | previous |
| Claude Haiku 3.5 | $0.8 | $0.08 | $1 / $1.6 | $4 | previous |
Tokenizer: Anthropic says Claude 4.7 and later models use a newer tokenizer that produces about 30% more tokens for the same text.
OpenAI
| Model | Input | Cache read | Cache write | Output | Tokenizer |
|---|---|---|---|---|---|
| GPT-6 Astra | $10 | $1 | $12.5 | $50 | |
| GPT-6 Sol | $2 | $0.2 | $2.5 | $10 | |
| GPT-6 Luna | $0.1 | $0.01 | $0.125 | $0.5 | |
| GPT-5.6 Sol | $4 | $0.4 | $5 | $20 | |
| GPT-5.6 Terra | $2 | $0.2 | same as input | $12 | |
| GPT-5.6 Luna | $0.2 | $0.02 | same as input | $1.2 | |
| GPT-5.5 | $5 | $0.5 | same as input | $30 | |
| GPT-5.4 mini | $0.75 | $0.075 | same as input | $4.5 | |
| GPT-5.4 nano | $0.2 | $0.02 | same as input | $1.25 | |
| GPT-5.4 | $2.5 | $0.25 | same as input | $15 | |
| GPT-5.2 | $1.75 | $0.175 | same as input | $14 | |
| GPT-5.1 | $1.25 | $0.125 | same as input | $10 | |
| GPT-5 mini | $0.25 | $0.025 | same as input | $2 | |
| GPT-5 nano | $0.05 | $0.005 | same as input | $0.4 | |
| GPT-5 | $1.25 | $0.125 | same as input | $10 | |
| GPT-4.1 mini | $0.4 | $0.1 | same as input | $1.6 | |
| GPT-4.1 | $2 | $0.5 | same as input | $8 | |
| GPT-4o mini | $0.15 | $0.075 | same as input | $0.6 | |
| GPT-4o | $2.5 | $1.25 | same as input | $10 | |
| o4-mini | $1.1 | $0.275 | same as input | $4.4 | |
| o3 | $2 | $0.5 | same as input | $8 |
GPT-5.5 and GPT-5.4 prices are for requests under 272K input tokens; longer requests cost more and are not modelled.
Check your CSV for free Try the demo
List prices checked 27 September 2026 on the official Anthropic and OpenAI price pages. Prices change; check the source before making decisions. Not affiliated with Anthropic or OpenAI. © 2026 Valeriy Danilov. AI Spend Doctor by AgentBridge Labs.