Provider pricing pages describe prompt caching per model: a price for cache writes and a price for cache reads. Finance teams naturally compute one blended saving for the account and apply it everywhere. That number is correct for the provider invoice and wrong for almost every individual customer.
The same call, three prices
Consider a support assistant on Claude Sonnet 4.5 with a 40k-token shared prefix (system prompt, tool schemas, the customer knowledge base excerpt), 8k tokens of fresh conversation, and 600 output tokens. Without caching, a call costs $0.1530.
With caching, the first call in a cache window writes the prefix at $3.75 per 1M, which is 1.25x the $3.00 input price. That call costs $0.1830, more than the uncached call. Every later call inside the window reads the prefix at $0.30 per 1M, 0.1x the input price, and costs $0.0450.
Where tenants diverge
Anthropic's default cache lives for five minutes and is refreshed each time it is read. A tenant whose users send a message every minute keeps the cache warm all day: one write in the morning and reads for the rest of the session. A tenant whose users ask one question an hour pays a write on nearly every call, which costs more than not caching at all.
Both tenants sit on the same model, the same code path and the same prompt. Their effective input price differs by a factor of several. An account-level cache saving averages the two and assigns both the same margin, which overstates the margin of the bursty tenant and understates the margin of the chatty one.
| Tenant pattern | Writes per 100 calls | Cost per 100 calls | vs no cache |
|---|---|---|---|
| Chatty, cache stays warm | 2 | $4.78 | -68.8% |
| Mixed | 35 | $9.33 | -39.0% |
| Bursty, cache expires | 95 | $17.61 | +15.1% |
OpenAI and Gemini behave differently
OpenAI applies caching automatically to long, repeated prompt prefixes and charges no write premium. The discount depends on the model: in the price index GPT-4o cached input is $1.25 against $2.50 uncached, while GPT-5 mini is $0.025 against $0.25. Because there is no write premium, a bursty tenant on OpenAI loses the discount but never pays more than uncached.
Gemini offers implicit caching on recent models and explicit context caches that also bill for storage time. Explicit caches make tenant attribution harder still, because the storage cost is incurred whether or not the tenant sends another request.
What to meter per tenant
- Cache write tokens and cache read tokens as separate counters, not folded into input.
- The price of each, taken from the model that served the request at the time it was served.
- Effective input price per tenant per day: total input-side cost divided by total input-side tokens.
- Hit rate per tenant per prompt version, so a prompt change that breaks the shared prefix shows up the same day.
Pricing implications
If you charge overages, bill on your real per-tenant cost, not on a list price with an assumed cache discount. The chatty tenant subsidizes nothing and the bursty tenant pays for the writes they cause. If you sell flat plans, use per-tenant effective input price when you decide who needs a cap.
PALM SOUQ records cache reads and writes per request from the provider usage block and prices them per tenant, so the cache column in your margin report is a measurement rather than an estimate. The prompt cache tracker also flags prompt versions whose hit rate dropped after a deploy.
Ananya Iyer
Head of FinOps Research, PALM SOUQ
Chartered accountant and former SaaS finance lead at a Chennai-based CRM company. Maintains the LLM Price Index and the margin models behind the runaway cost calculator.