A developer in Shenzhen runs the same batch job at 10:00 and again at 22:00. Same prompts, same model, same output. The night run costs half as much.
Nothing about the large model (大模型) changed between the two runs. What changed is the clock, and whether the model had already read those tokens earlier in the day. Chinese model vendors have quietly turned API pricing into something closer to an electricity tariff than a flat rate card, and most teams still budget for it as if it were 2024.
Key takeaways
- DeepSeek bills peak and off-peak rates: off-peak is exactly half of peak, and peak hours are weekday working hours in Beijing time.
- A cache hit is priced differently from a cache miss — on the flagship model the gap is about thirtyfold, which makes prompt construction an engineering task, not a prompting trick.
- Batch, offline and evaluation workloads can be moved to off-peak windows for a flat 50% saving with no code changes beyond scheduling.
- Agent workloads pay twice: long tool-using loops burn output tokens, and the search tools they call are now billed per request.
- Prices move in both directions; cheaper-per-token has not meant cheaper-per-month for everyone.
What the price list actually says
DeepSeek's official pricing page is unusually explicit. For deepseek-v4-pro (model version DeepSeek-V4-Pro-0813), per one million tokens:
- Input, cache hit: 0.15 yuan off-peak, 0.30 yuan at peak (≈ US$0.022 and ≈ US$0.044, or about HK$0.17 and HK$0.34)
- Input, cache miss: 4.5 yuan off-peak, 9 yuan at peak (≈ US$0.66 / HK$5.1 and ≈ US$1.32 / HK$10.3)
- Output: 13.5 yuan off-peak, 27 yuan at peak (≈ US$1.98 / HK$15.4 and ≈ US$3.96 / HK$30.9)
The cheaper deepseek-flash line (DeepSeek-V4.1-Flash-1017) runs 1 yuan input / 4 yuan output per million tokens off-peak, and 2 yuan / 8 yuan at peak. Both models carry a 1M-token context window and a 384K maximum output.
The definition of peak is the detail that matters: 09:00–12:00 and 14:00–18:00 Beijing time, Monday to Friday, excluding Chinese public holidays. Everything else — nights, weekends, holidays — is off-peak, billed at half. For a team whose users are in Europe or North America, that is close to a free discount: Beijing night covers European afternoon and American morning. For a team serving domestic users during office hours, it is a surcharge on exactly the traffic you cannot move.
Why a cache hit is a different product
The spread between 0.15 yuan and 4.5 yuan for the same input token is the most underused lever in Chinese inference economics (推理成本). A cache hit means some prefix of your request — system prompt, tool schemas, retrieved documents, conversation history — was already seen recently and does not need to be recomputed.
Practical consequences:
- Put the stable part first. System prompt, tool definitions and long reference documents belong at the top of the request; anything that varies belongs at the end. Caches match prefixes, not suffixes.
- Keep the first bytes stable. A timestamp, a request ID or a random example injected at the top of a prompt will break the cache for every call.
- Reuse a stable prefix across a batch. Ten thousand evaluations that share the same rubric text should hit cache on the shared part nine thousand nine hundred and ninety-nine times.
- Do not chase hits at the cost of correctness. A cache hit on the wrong prefix is still the wrong answer, just cheaper.
The same logic applies to long-context work, where the entire document set is re-sent on every turn of a conversation.
What this means if you run agents
Agent workloads are where the new pricing bites hardest, for two reasons.
First, tool-using loops are output-heavy. A coding agent that thinks, calls a tool, reads the result and tries again spends most of its tokens on output, and output is the most expensive line on the card — 27 yuan per million tokens at peak on the flagship, versus 9 yuan for input.
Second, the tools themselves now cost money. DeepSeek's Search and Fetch APIs are billed at 5 yuan per 1,000 successful requests (≈ US$0.75 / HK$5.9), and the documentation states that tool calls made through DeepSeek Harness, Claude Code or Codex — previously free — moved to per-request billing from 00:00 Beijing time on 1 November 2026. An agent that browses twenty pages per task is no longer paying tokens alone.
This is the point where a scheduling decision becomes an architecture decision: run interactive traffic on the fast line during the day, and push bulk evaluation, synthetic data generation, re-ranking and nightly retraining into off-peak windows.
According to Li An, chief scientist at BrainNet (脑机网), peak-and-valley pricing is the clearest signal yet that inference — not training — has become the binding constraint on Chinese model economics.
Honest limitations
This piece reads one vendor's published rate card closely and generalises cautiously; it is not a market survey. Prices are quoted from DeepSeek's official pricing pages in Chinese and English as published, and yuan figures are converted using the US-dollar prices on the same pages, so small differences against a live FX rate are expected. I have not measured actual cache hit rates in a production system — those depend on prompt layout, traffic shape and the provider's eviction policy, and the 30× gap quoted here is the published price ratio, not a typical realised saving. The peak/off-peak schedule applies to one provider; other Chinese vendors use tiered, per-model or bundled pricing that works differently. Enterprise contracts, batch discounts, free tiers and long-context surcharges are not reflected. The direction of travel is also not uniform: DeepSeek cut API prices by more than half with DeepSeek-V3.2-Exp in September 2025 and raised peak-hour rates in 2026, so "prices only fall" is a bad assumption.
What readers can do now
- Audit one week of API logs for three numbers: share of traffic in peak hours, cache hit rate, and output-to-input token ratio. Those three determine almost all of the bill.
- Move anything non-interactive — evaluation suites, dataset labelling, nightly summaries — to off-peak hours with a simple queue delay. It is a 50% cut with no model change.
- Rewrite your two highest-volume prompts so the stable prefix is byte-identical across calls, then re-measure the hit rate after a day.
