Docs / Billing & Credits

How to Read Your Credit Ledger

Every credit in and out is recorded and traceable line by line. This page teaches you how to read it.

Every credit in and out is recorded and traceable line by line. This page teaches you how to read it.

Entry point: the Billing / Usage page.


First, Look at the Balance: Two Buckets

Your credit balance is actually the sum of two independent buckets:

BucketWhere it comes fromValidity
Granted creditsAuto-issued monthly by your subscriptionValid for the current period, cleared when the next cycle refreshes
Top-up creditsBought by you1 year

Deduction Order: Grants First, Then Top-Ups

This order is in your favor — granted credits expire with the subscription cycle, while top-up credits last a year. Spending the expiring ones first means the ones you bought are less likely to go to waste.

So in the ledger, the same reading can appear as two deduction records: the granted bucket is depleted to its last credit, and the remainder comes out of the top-up bucket. This is normal, not a double charge.


Six Ledger Record Types

TypeMeaningAmount
Subscription grantAuto-issued monthly when a subscription starts/renewsPositive
Top-upCredits you purchasedPositive
ConsumptionReading deductionNegative
RefundUpstream synthesis failed; already-deducted credits returnedPositive
Expiry write-offGranted credits cleared when the subscription cycle endsNegative
CompensationManual reissue (e.g. outage compensation)Positive

What "Refund" Is About

If upstream synthesis fails, the already-deducted credits are automatically returned.

Soniva deducts "before synthesizing" (otherwise it couldn't prevent abuse), so when an upstream error or timeout occurs, the system marks that transaction as refunded and returns the credits to your balance.

You never pay for failed requests. If you notice a failed reading whose credits weren't returned, email soniva.cde@gmail.com to report it.

Note: a case where three-level failover kicked in and the text was successfully read with a fallback voice is NOT a failure — that time is charged normally (an upstream call did happen).


What Each Consumption Record Shows

  • Time
  • Brand and model — e.g. "Alibaba Cloud Bailian / cosyvoice-v3-flash"
  • Voice
  • Character count
  • Credits deducted

These let you reconcile against the rate table:

Credits deducted ≈ character count ÷ 1000 × that tier's credits / 1,000 chars

Three Common Reasons It Doesn't Match

  1. MiniMax counts a CJK character as 2 billable characters — 1,000 CJK characters count as 2,000. This is the upstream's official rule; it's the only brand that does this across the whole site.
  2. Baidu and Doubao's small model bill per call — not a linear per-character charge; short content converts to a higher unit price (each call costs at least 1 credit).
  3. Long text is auto-segmented — a single 2,000-char reading becomes four 500-char records. The total is the same, only the number of records increases. See long-text reading.

Translation Isn't in This Ledger

Translation doesn't consume credits, so you won't see translation records in the credit ledger.

Translation runs on a separate daily/monthly char-count quota, with its own quota display in the translation workbench.


Free Features Aren't in the Ledger Either

These use cases produce no credit ledger records at all:

  • System built-in voice reading
  • Free previews
  • Reading with your own API key (BYOK)

Searching by Time Range

The ledger supports filtering by date range and pagination. Want to know how much you spent last month, or exactly what you read on a given day — just filter it out.


Was this article helpful?

Anonymous feedback is enabled when you allow analytics and the service is available. You can also report an issue by email.

Report an issue by email

The email includes this article. You can also copy the details and send them to soniva.cde@gmail.com