CostCompassAn AlmanacBeta
DeepSeek cost tracking

Know where your DeepSeek balance is heading

DeepSeek bills from a prepaid balance. You top it up, and every call draws it down. The console shows the number right now, but never the slope. Here is how the billing works, and how to turn a draining balance into a running total and a forecast in the same view as everything else you run.

By Joubert BergerUpdated October 20, 2026

An antique almanac engraving: a tall copper-banded water clock, its measured level half-drained through a single spigot into a waiting cup, the falling line marked but no gauge showing how fast it pours.
You can read the level. The rate it's draining is the part the dial won't show.

DeepSeek doesn't send you a bill at the end of the month. It bills the other way around: you top up an account balance, and every call quietly draws it down. The console shows you that balance, one number, true as of the moment you look. It says nothing about how fast that number is falling, where it lands by month-end, or how it sits against the other providers drawing on the same budget.

What follows is how DeepSeek prices the API, why a balance is harder to stay ahead of than an itemized invoice, and how to turn that single draining number into a running total and a forecast before it runs low on you.

Where do you check your DeepSeek balance?

Sign in to the DeepSeek platform and the balance is there; the Top up page is where you add to it. From code, GET /user/balance returns the same figure, authenticated with the API key you already send requests with, and splits it into its parts:

FieldWhat it holds
total_balanceEverything you can spend right now, granted and topped up together
granted_balancePromotional or complimentary credit that hasn’t expired, spent first
topped_up_balanceThe credit you paid for
is_availableWhether the balance can still cover an API call

Each amount comes back as a string, with its currency (CNY or USD) alongside. None of it says which calls pulled it down. When it reaches zero, the API answers the next request with a 402 Insufficient Balance error.

How does DeepSeek bill for usage?

DeepSeek runs on a prepaid balance. You add credit to your account, and every API call deducts from it as you go — there’s no monthly invoice and no subscription tier to reason about, just a number that goes down. DeepSeek draws from two pools when you have them: a granted balance (promotional or complimentary credit) is spent first, and your own topped-up balance covers the rest. Both drain the same way, and the account view shows their sum.

What pulls that balance down is metered the way most token APIs are: by the input tokens you send — your prompt, system instructions, and any context — and the output tokens the model generates back. Output is the pricier side, so a long or chatty completion costs more than the size of the prompt suggests.

DeepSeek splits into two modes, and the difference matters for cost. There’s a plain non-thinking mode for general work, and a thinking mode that reasons through a problem before it answers. That reasoning isn’t free. The model produces a chain of thought first, and those tokens count toward the output length you’re billed for, even though they’re working notes and not the final reply. (DeepSeek changes its model lineup more often than most — deepseek-chat and deepseek-reasoner went in July 2026, and the old deepseek-v4-flash name now resolves to deepseek-flash. The current lineup keeps deepseek-flash and deepseek-v4-pro as separate API models, and on 17 October 2026 deepseek-flash quietly moved to a newer model, DeepSeek-V4.1-Flash-1017, under the same name and price. Legacy names still work: DeepSeek keeps accepting them and serves the current model at the current price. A name that never errors is a name you never notice has moved to a different rate. Treat any specific model name as a moving target and check the docs for the current set.)

One mechanism works in your favor. DeepSeek prices repeated prompt prefixes through context caching: when a later call reuses input the service has already seen, that portion bills at a much cheaper cache-hit rate instead of the full cache-miss rate. Keep your stable prefixes — long system prompts, reference material — consistent across calls and a real slice of your input cost moves to the cheaper tier.

So a single DeepSeek call can draw on three token prices at once, each quoted per 1M tokens:

Token typeHow DeepSeek prices it
Input — cache missThe full input rate, for prompt content it hasn’t seen
Input — cache hitA fraction of that rate, when a later call reuses a prefix
OutputThe expensive side: what the model generates back, thinking tokens included

Exact rates live on DeepSeek’s pricing page and have changed before, so treat any figure you’ve memorized as provisional.

Since August 2026, DeepSeek also prices by time of day. The same request, the same model, the same tokens, costs one amount during peak hours and half that outside them — the discount applies to all three token types above. Peak is a fixed window in UTC, published alongside the rates, and it runs on weekdays only. Everything outside it is off-peak, and that includes the entire weekend.

That turns a scheduling decision into a pricing decision. Two months of identical work can produce different bills purely because a batch job moved, a cron shifted with daylight saving, or a colleague in another timezone started running the overnight pass at their own convenient hour. If your workload is interactive it lands wherever your users are and there’s little to do about it. If it’s batch — evaluations, backfills, bulk summarization — when it runs is a lever, and one of the few DeepSeek levers that doesn’t cost you any quality.

It also means a month-over-month jump isn’t automatically a usage problem. Check the clock before you go looking for a runaway prompt.

Not everything on the bill is a token. DeepSeek also sells Search and Fetch as standalone APIs: one runs a web search, the other pulls a page. Each is priced per request, a flat fee per 1,000 successful calls, at any hour, and taken from the same balance as everything else (granted credit first). You may be using them without calling them yourself: point Claude Code or Codex at DeepSeek and their server-side search and fetch tool calls run through these APIs, so an agent that looks things up on the web as it works adds a per-request charge on top of its tokens.

Why is DeepSeek spend hard to keep ahead of?

The hard part is what DeepSeek does and doesn’t show you:

  • The account balance is the only signal to poll. DeepSeek’s account API hands back your current balance and nothing else: no account-level usage history, no per-model report to break down or replay.
  • Prepaid hides the slope. A balance tells you the level. It says nothing about the rate it’s falling at. By the time the number looks low enough to notice, the spend that pulled it down is already behind you, and a countdown gives no early warning.
  • Thinking tokens are invisible. From the account balance, a reasoning-heavy request shows up only after the fact.
  • DeepSeek is rarely your only provider. If you also call Anthropic for Claude, build on OpenAI, run Google, or route through OpenRouter — plus whatever you spend on inference hosts and serving — the DeepSeek balance is one slice of a bill you otherwise stitch together by hand from a stack of dashboards.

How can you reduce your DeepSeek bill?

Tracking shows you where the balance goes. A few levers slow the drain:

  • Match the mode to the task. Thinking mode is worth it on hard problems, but it bills the reasoning tokens as output. Route the straightforward, high-volume calls to the non-thinking mode and save the reasoning model for work that needs it. That one routing choice tends to move the bill more than any other tweak.
  • Lean on context caching. Keep large, stable prefixes consistent so they land on the cheaper cache-hit rate instead of paying full input on every call. Long system prompts and reference documents are where this pays off.
  • Keep outputs tight. Trim verbose responses, and cap max_tokens on tasks that don’t need deep thought.
  • Watch the trend. A running total with a slope on it shows a creeping spike within a few days, well before the account runs dry.

How do you forecast next month’s DeepSeek bill?

Forecasting a prepaid balance doesn’t need anything exotic, just a burn rate: take your spend over the last several days, turn it into a daily average, and project that across a full month.

CostCompass does exactly this. It scales your trailing seven-day burn rate to the number of days in next month and adds any fixed subscriptions you’ve entered. The result is one forward number for what next month costs if the current pace holds. Seven days is a deliberate window: long enough that one heavy day doesn’t throw the average, short enough to pick up a recent change like a shift to thinking mode. For DeepSeek the projection builds on a balance-derived total, so read it as a directional estimate that sharpens as more clean windows land.

How does CostCompass track your DeepSeek costs?

CostCompass tracks DeepSeek by watching the one thing DeepSeek will tell it: your account balance. Each time you refresh, it reads the current balance and compares it against the previous reading, and the drop between the two becomes the spend for that window. There’s no account-level usage report behind this for CostCompass to read, so the figure is what you spent from your paid balance across DeepSeek (tokens, Search and Fetch together). Charges DeepSeek covers from promotional credit don’t appear in it. It’s marked approximate with a small asterisk. Tracking begins with your first refresh after connecting, which captures a baseline and shows no spend yet; from the next refresh on, every dip in the balance rolls into your running total.

That approach has two edges. Spend from before your first refresh isn’t recoverable, since there’s no history to read back, so the total starts from that first reading instead of the first of the month. And a top-up in the middle of a window can mask the spend it overlaps. If you add credit and burn some in the same stretch, the balance may end higher than it started, so that window under-counts. A later window starts clean from the new balance, so the masked spend stays missing.

The CostCompass dashboard showing month-to-date spend across providers with a forecast and burn rate.
Month-to-date spend across every connected provider, with a forecast and burn rate, rolled up for you in a single view.

Two things make that practical for a solo developer. First, your key is encrypted in your browser before anything is stored. CostCompass keeps only ciphertext it can’t open, and the relay that forwards each balance read to DeepSeek is built not to log the key.

Second, DeepSeek doesn’t sit alone. The same dashboard rolls its running total up with every other AI and compute provider you’ve connected — Claude, OpenAI, Google, your hosting — into one figure with a forecast.

Getting started takes three steps:

  1. In DeepSeek, create an API key — the ordinary kind, no special permission needed.
  2. Paste it into CostCompass.
  3. CostCompass captures a baseline balance on your first Refresh, and from the next Refresh on it shows your running total and forecast — DeepSeek included in the whole-stack number.

Frequently asked questions

Does CostCompass store my DeepSeek API key?
Not in any form we can read. Your API key is encrypted in your browser with your vault password before it ever leaves your device, and CostCompass keeps only the resulting ciphertext — a blob it has no way to open, because your vault password stays in your browser. When it's time to read your DeepSeek balance, the key is unsealed in your browser and forwarded to DeepSeek through a relay that holds it just for that one call and is built not to log it. So the key does pass through our infrastructure for that request. The plaintext is never written to our database or our logs. What sits there at rest is locked ciphertext that nobody can use against your account.
Do my DeepSeek credits expire, and can I get unused balance refunded?
It depends which balance you mean, and DeepSeek treats the two differently. A topped-up balance you paid for doesn't expire, but a granted balance — promotional or complimentary credit — does, with its expiry date shown on the Billing page, and DeepSeek spends the granted balance first when you hold both. Anything left over is refundable; you can do it yourself from Billing → Refunds. CostCompass reads spend from your topped-up balance only, so a grant that expires never shows up as spend. The flip side is that calls DeepSeek pays for out of granted credit don't show up either; your total is what left the credit you paid for.
Why did I get an "Insufficient Balance" error when I thought I still had credit?
That's an HTTP 402 — DeepSeek's way of saying the balance it's billing is empty — and two things commonly make it look like you still had credit. A granted balance can expire, so the number you remember may have lapsed rather than been spent down. And if you reach DeepSeek through a third-party gateway or coding tool, that service often bills its own pooled balance, separate from your direct platform.deepseek.com account — so the account that ran dry isn't the one you topped up. CostCompass reads your direct-account balance, the same one the 402 is about.
DeepSeek's console has a usage export — why doesn't CostCompass show a per-model breakdown?
DeepSeek's console does have a usage view — you pick a month, hit export, and one file in the downloaded package breaks consumption down by API key. But that's a report you export by hand, and no tool can call it. DeepSeek's API offers the account balance and little else, so an automated tracker can only watch that balance fall. That's why CostCompass reports a single balance-derived total, marked approximate, with no model-by-model chart.
Why does the same question cost so much more in thinking mode?
Two things stack. The first is volume — when the model thinks through a problem it emits a chain of thought before the final answer, and DeepSeek counts those reasoning tokens as output and inside your max_tokens budget, which the docs define as covering the CoT part (default 32K, up to 64K). So a two-line answer can still carry thousands of billed output tokens you never see in the reply, and output is the pricier side of the bill to begin with. The second is the rate. DeepSeek's models are priced differently, so reaching for the stronger model to get better reasoning also moves every token onto a higher per-token rate. Capping max_tokens, and routing the easy calls to the cheaper model in non-thinking mode, are the two levers that pull it back.
Is DeepSeek's context caching automatic, and why am I not getting the cheaper cache-hit price?
Caching is on by default and needs no code change — DeepSeek enables context caching for every account. The reason you still pay full price on repeats is that it's prefix-based and best-effort, so a later call only earns the cheaper cache-hit rate where its leading tokens fully match a prefix DeepSeek has already stored, and the docs are explicit that a 100% hit rate isn't guaranteed. Change anything early in the prompt — a timestamp, a reordered system message, a per-user preamble — and you break the shared prefix and pay the full cache-miss rate again. The response's prompt_cache_hit_tokens and prompt_cache_miss_tokens fields show what actually landed, so keep your large, stable prefixes stable and watch those numbers rather than assuming repeats are cheap.
DeepSeek charges less off-peak. Can CostCompass show me my peak vs off-peak split?
No. It's the same reason CostCompass shows DeepSeek as one figure with no per-model chart. DeepSeek has no usage API, only the account balance. CostCompass reads that balance, and spend is the difference between two readings, so what arrives is a single number covering everything in between. There's no hour attached to it, so a drop can't be split into peak and off-peak. What the total does capture is the money itself. It's a real balance delta, so any peak premium you paid is already in the figure. For the split itself, DeepSeek's own console has a monthly usage export you run by hand.
Can I set a spending cap so a runaway loop doesn't drain my balance?
Not a hard one — DeepSeek has no spend ceiling that cuts you off at a set amount. Its documented limit is concurrency, not budget — exceed the allowed parallel requests and you get an HTTP 429, but no spend figure stops the billing. The real backstops are the prepaid model itself, since you can only spend down what you've topped up, and a sane max_tokens on every call so one runaway reasoning loop can't burn the balance in a single request. CostCompass's part is the early warning — a running total and a per-day slope that make a spike visible while there's still balance left to protect.
Why use CostCompass instead of the DeepSeek platform?
The DeepSeek console shows your balance right now and your recent calls, for DeepSeek alone. CostCompass turns each balance change into a running total and a forecast, and rolls DeepSeek up with Claude, OpenAI, Google, and your hosting spend into a single view, current the moment you click Refresh.

About the author

Joubert Berger builds CostCompass, a spend-intelligence dashboard that pulls usage from AI and compute providers into one month-to-date total, a forecast, and a per-provider breakdown. This guide reflects how CostCompass reads each provider's own usage API — see the security model for how your keys are handled.

Stop watching the DeepSeek balance drop

Connect DeepSeek once and turn your prepaid balance into a running total and a next-month forecast — rolled up with every other provider, in one click.