There are two kinds of money on this platform and blurring them is the fastest way to misread a bill. Provider spend is what OpenAI, Deepgram, ElevenLabs, Anam and the rest charge for the models your agent runs. It goes to your accounts, on your provider keys, at whatever rates you have negotiated. Talqing reports it on every call so you can see where the money went, and collects none of it. Debiting it here would charge you a second time for what your provider already billed you. The platform fee is what Talqing charges. It is a flat per-minute rate, it is the only thing debited from your credit balance, and there is nothing else.

The platform fee

Text carries no platform fee of any kind. A text conversation costs your workspace exactly what its own language-model key was charged and nothing more, so a text agent draws on your credit balance only if you count zero as drawing on it. Minutes are the call’s own duration, billed to the second and priced per minute. There is no per-call minimum, no connection fee and no monthly charge.

The fee is waived on a failed call

A call that never worked does not earn us a margin. When a call ends for one of these reasons the platform fee is not charged — your provider spend on it still stands, because those providers were paid regardless: error, stale, job_shutdown, job crashed, orphaned, unknown, avatar_start_failed, invalid_dispatch_metadata, missing_dispatch_metadata, unknown_tenant, missing_published_definition, rejected, insufficient_credits, and any reason ending in _failed.
A call that connected and went badly is not a failed call. A caller who hangs up after two seconds, an agent that answered a voicemail, a conversation that achieved nothing — all of those completed, and all of them are charged. Only the reasons listed above waive the fee. See close reasons.
A call with no close reason at all is treated as a normal completion and charged. That is deliberate: the failure list is explicit, with no substring guessing.

Credits

Credits are a prepaid balance in USD that the platform fee is drawn against. There is one balance per region. It is a regional record, like everything else a workspace owns, so you can hold 50inIndiaand50 in India and 0 in the United States — and in that state, calls in the United States are refused while calls in India run. Nothing transfers between regions. Every balance, ledger and banner in the dashboard is labelled with the region it belongs to; see regions.

Reading the balance

Any member can read it. GET /v1/billing/credits returns this region’s balance, what it buys at today’s rates, the warning threshold and the packs on sale.
voice_minutes_remaining and video_minutes_remaining are the balance divided by that channel’s platform fee. They say how much fee you can still pay, not what a call will cost you all in — your provider spend is on top and is not counted here.

The signup credit

The workspace created for you at your first sign-in is granted $10 in every region. That is enough platform fee for roughly 2,800 minutes of voice, so the fee side of your first calls costs you nothing. Your provider bills are still your own. It is granted once. A second workspace you create yourself starts at $0 in every region — the grant belongs to the account you signed up with, not to each workspace you go on to make.

Buying more

Credit is sold in fixed packs. The pack id is the amount. There is no arbitrary amount and no subscription. Only an ADMIN can buy — spending the workspace’s money is an admin act, the same as storing a provider key. Starting a purchase returns a hosted checkout URL to open in a browser; the card details never touch Talqing. In the dashboard this is Settings → Billing.
The credit lands in the region whose API you called. Nothing in the request names a region — buy from https://api.in.talqing.com and the money is in India. There is no transfer between regions, so a pack bought in the wrong one has to be spent there.
The pack credits exactly what it says. Currency conversion, tax and processor fees all move what we receive and none of them touch what you are credited. After paying, the payment processor returns you to the billing page. If the credit has not appeared yet, reading the balance again is what applies it — topup_status on that response tells you whether the processor has confirmed the payment (pending, paid, failed, cancelled, refunded) so you can tell “still waiting on the card” from “paid, landing now”.

The low-balance warning

Below $2 the dashboard shows a low-credit banner. It warns and never blocks. Calls keep running and new ones keep starting until the balance actually reaches zero. The threshold is served with the balance rather than hard-coded in the browser, so low_balance_threshold is always the real one.

Running out

The whole check is balance > 0. There is no reservation, no forecast of what a call might cost and no floor — only whether there is anything left at all. Starting a new call is refused. It is checked when you mint a web call token, when you place an outbound call, when a batch dials, and when an inbound phone call arrives. The 402 body is the standard error envelope:
A refused call reads back with close_reason: "insufficient_credits" and is itself never charged — it is on the waived list, so being out of credit cannot push you further into debt. A call already running is never interrupted. Nobody is cut off mid-sentence because a balance crossed zero. The consequence is that the balance can end up slightly negative — by that one call’s own fee — and the ledger is signed, so the next top-up pays the debt off first. A batch pauses rather than fails. When a running call batch finds no credit, that dialling pass does nothing and the batch stays running with its reason shown on the batch page. Add credit and it resumes on its own, with no button to press. The check is per pass, never per recipient, so nobody burns a retry attempt on a call that was never dialled.

The ledger

Every movement of the balance is a row, newest first, each carrying the balance it produced and a pointer to what caused it. GET /v1/billing/credits/ledger.
A usage row is written only when there is a fee to take: a text session and a failed call move the balance by nothing, and a ledger a customer reads should not be full of rows saying we took nothing. Re-pricing a call — an analysis backfill, say — cannot debit it twice.

Estimating what an agent costs per minute

The platform fee is fixed and known. Provider spend is not, and it is almost always the larger number, so estimate it before you run anything at volume. In the dashboard, the agent editor’s right rail shows a live per-minute estimate for the current draft, broken into STT, LLM, TTS (or Realtime), Avatar and Platform. It moves as you change models, so it is the fastest way to compare two stacks. Over the API, GET /v1/catalog serves both halves of the arithmetic: each entry’s real provider rates, and a cost_estimate_usage_per_minute block giving the quantities a spoken minute is assumed to use — 800 input and 250 output tokens of language model, 900 characters of speech, 60 seconds of streaming speech-to-text (20 for a batch model, since it only ever sees the caller’s own utterances). Worked through for a common English stack — Deepgram nova-3-general, OpenAI gpt-5.4-mini, Deepgram aura-2: So roughly four cents a minute, of which about a third of a cent is ours. Swap the voice for ElevenLabs eleven_flash_v2_5 at 0.00005percharacterandthetotalgoestoabout0.00005 per character and the total goes to about 0.056 — the platform fee does not move. These are estimates from assumed quantities, not a quote. What you are actually billed comes from the tokens, characters and seconds each provider metered on the real call, and you can read all of it per call. See costs.

Next

Provider keys

The other half of the bill, and the one we never touch.

Costs

What one call actually cost, line by line.

Regions

Why the balance is per region and what that means in practice.