Billing in DEEIX Chat combines a billing mode, a per-model price, stacked multipliers, and separate tool pricing. This page shows how those pieces combine, which fields to set, and what each usage log records.

Where to find it#

Admin console > Billing. The page is one scroll with sections in this order:

  1. Billing mode and Payment settings
  2. Redemption codes
  3. Plans
  4. Model pricing
  5. Tool pricing (native tools)
  6. MCP tool pricing

Usage logs are read in the Logs, not on this page.

How a charge is calculated#

The final rate is the base price multiplied by every applicable multiplier:

base × service multiplier × permission group rate × time-of-day rate

The order matters:

  1. Pick the base price from the model's pricingMode: token, call, duration, or tiered.
  2. Apply the provider service multiplier (Anthropic fast mode, OpenAI flex or priority).
  3. Multiply by the permission group Rate multiplier when the user's effective group matches the model. The lowest matching group rate wins.
  4. Multiply by the time-of-day rate if a period matches the server's local clock.
  5. For token and tiered pricing, resolve the cache write rate from the cache basis and cache timeout.
  6. Add per-call native tool and MCP tool items.
  7. Free models zero out the model charge. Self-use mode records usage without deducting.

Billing modes#

ModeWhat it doesUser side
Self-useRecords usage only. No purchase, top-up, or plan deduction.Usage records only.
Subscription billingPlans grant period credit; calls consume it.Subscription and remaining credit.
Usage billingCalls deduct from the account balance.Balance and top-up.

Per-request reservation (billing.prepaid_amount_usd) is a risk budget reserved before each paid call in subscription and usage modes. The final bill still uses actual usage. Set it to 0 to distribute the available budget across up to 5 concurrent paid calls. After the request shape is known, the platform raises the reservation to the estimated cost so an underfunded request is rejected before any upstream charge.

Display currency (billing.display_currency) controls the currency users see. Accounting, deductions, and API fields stay in USD / nanousd. USD -> CNY rate (billing.usd_to_cny_rate) is used for CNY display and CNY payment amounts.

Model pricing modes#

ModeBasisUse for
Usage billing (token)Input, output, cache read, cache write per 1M tokens.Text and multimodal models.
Per call (call)Fixed price per call.Fixed-cost operations.
Per second (duration)Price per generated second.Video generation models only.
Tiered (tiered)A different token price per input-size range.Long-context or provider tiered prices.

A model can also be marked Free. Free models are not charged, and native tool billing is skipped for them. Setting duration on a model that does not support video generation is rejected.

Token and cache pricing#

Token pricing has four independent fields: input, output, cache read, and cache write. Cache pricing matches providers that charge differently for cached tokens.

Cache write price basis decides how the configured cache write rate is interpreted:

BasisBehavior
directThe configured rate is used as-is on every provider.
anthropic_5mThe configured rate already includes the 5-minute premium. A 1-hour write costs 8/5 of it.

When the basis is unset, Anthropic cache writes cost 5/4 of the configured rate for 5-minute writes and 2× for 1-hour writes. Non-Anthropic providers always use the configured rate. The usage snapshot records cache_timeout, cache_write_5m_multiplier, and cache_write_1h_multiplier so a bill can be explained later.

Service multipliers#

SourceMultiplier
Anthropic fast mode (speed: fast)6×
OpenAI service_tier: flex0.5×
OpenAI service_tier: priority2×
OpenAI service_tier: priority on GPT-5.5 series2.5×
Permission group Rate multiplierPercentage 1–10000, where 100 is base

The permission group multiplier is set in Permission Groups. When model access control is on, the platform takes the lowest rate among the user's effective groups that intersect the model's groups. 0 means unset and is treated as 100.

Time-of-day multipliers#

Time-of-day multipliers apply a percentage on top of the base price by the server's local time. They work with every pricing mode.

  • A period has a Name (max 32 characters), one or more Weekdays, a Start and End time, and a Rate.
  • 100 is the base price; 120 is 120%. The rate must be an integer from 1 to 10000.
  • An end time that is not after the start wraps past midnight. The weekday is judged by the start time's calendar day.
  • Periods for the same model must not overlap, so at most one applies at any moment. Up to 32 periods are allowed.
  • The result is stored in the billing snapshot as schedule_period_name and schedule_rate_percent, and shown in usage logs.

Tiered pricing#

Tiered pricing charges a different token price per input-size range. Each tier has an upToTokens limit and input, output, cache read, and cache write prices. Enter the full token count; 0 on the last tier means unlimited. Up to 100 tiers are allowed, and each limit must be larger than the previous one.

Tier matching uses the input-side total: input tokens plus cache read tokens plus cache write tokens. The snapshot records tiered_from_tokens and tiered_up_to_tokens.

Native tool billing#

Open Tool pricing. Native tool billing (billing.native_tool_billing_enabled) is on by default.

  • Prices are per call. Set a price of 0 to keep the tool recorded but not charged.
  • Only successful calls are billed; failed calls are not.
  • Self-use mode records usage only.
  • Free models are exempt from native tool billing, but MCP tool pricing still applies.
  • Model tokens around the tool still follow model pricing.
  • If the upstream reports no call count, no tool charge is created.

MCP tool pricing is configured separately under MCP tool pricing. It is not exempt for free models because the MCP call is an external upstream cost.

Plans#

A plan has a Name, Description, Price, Interval (month, year, or lifetime), Period credit, and a Permission group. Users subscribed to the plan automatically gain that group's model access. Plans are identified by a stable code; the built-in free plan cannot be used as a redemption reward.

Renewals, upgrades, and switches create subscription entitlement segments. New entitlements may take effect immediately or queue behind an existing segment depending on its end time.

Redemption codes#

A redemption code grants balance (usage) or a plan entitlement (period). Create codes in Redemption codes.

FieldNotes
Code3–64 letters, numbers, hyphens, or underscores. Leave blank to generate a UUID. A manual code can only be created once.
Quantity1–100 codes per batch.
Billing modeusage or period. It must match the current platform mode.
Redemption amountFor usage, must be greater than 0.
PlanFor period, must be an active non-Free plan.
Duration daysFor period, must be greater than 0, up to 3660.
Total limitPositive integer, or empty for unlimited.
Per-user limit1–100, and never greater than the total limit.
Expires atMust be later than the current time.
DescriptionFree text.

A code cannot be redeemed while the platform is in self-use mode, and a code only works in its own mode. Redemption history is kept even after a code is deleted.

Billing snapshots and usage logs#

Price changes affect future calls. Each call writes a snapshot with the prices and multipliers that were actually applied, so historical bills stay explainable. The Logs shows these fields in the usage detail:

GroupFields
Identityplatform_model_name, model_vendor, provider_protocol, upstream_name, upstream_model_name, routed_binding_code
Modebilling_mode, pricing_mode, service_only, is_free_model, currency
Multipliersrate_multiplier, billing_service_tier, fast_mode, schedule_period_name, schedule_rate_percent
Cachecache_timeout, cache_write_5m_multiplier, cache_write_1h_multiplier
Ratesinput_nanousd_per_m_tokens, cache_read_nanousd_per_m_tokens, cache_write_nanousd_per_m_tokens, output_nanousd_per_m_tokens, call_nanousd_per_call, duration_nanousd_per_second
Tieredtiered_pricing_json, tiered_from_tokens, tiered_up_to_tokens
Chargedinput_billed_nanousd, cache_read_billed_nanousd, cache_write_billed_nanousd, output_billed_nanousd, call_billed_nanousd, duration_billed_nanousd
Toolsserver_side_tool_usage, native_tool_billing_enabled, native_tool_billed_nanousd, mcp_tool_usage, mcp_tool_billed_nanousd, service_items

To explain a bill, open the usage detail and read the snapshot instead of comparing the current price table.

Import and export model pricing#

Import and Export move model prices as JSON. The root is an object keyed by platform model name:

json

Rules:

  • pricingMode must be token, call, duration, or tiered.
  • duration is accepted only for video generation models.
  • Tiered pricing accepts a tieredPricing object or a tieredPricingJSON string.
  • Time-of-day multipliers accept a schedulePricing object or a schedulePricingJSON string, with no overlapping periods.
  • cacheWritePriceBasis is direct or anthropic_5m.
  • Unknown platform model names reject the import.

Troubleshooting#

SymptomCauseFix
A paid call is rejected before it startsThe reservation is higher than the remaining balance or period credit.Lower billing.prepaid_amount_usd or top up the account.
A model shows no chargeIt is marked Free, the billing mode is self-use, or no price is configured.Check the free status, the billing mode, and the model price.
Cost is higher than the price tableA service tier, permission group rate, or time-of-day period multiplied the base.Read rate_multiplier, schedule_rate_percent, and billing_service_tier in the snapshot.
Similar token counts cost differentlyCache read, cache write, or cache timeout differ.Compare cache_* fields and cache_write_*_multiplier in the snapshot.
A tool call is not billedBilling is off, the price is 0, the model is free, or no count was returned.Check Tool pricing and the snapshot's server_side_tool_usage.
A redemption code cannot be redeemedThe mode does not match, the code is inactive, expired, or exhausted.Check the code mode and status against the current billing mode.

Reference#

ItemKey or field
Billing modebilling.mode (self, period, usage)
Per-request reservationbilling.prepaid_amount_usd
Display currencybilling.display_currency (USD, CNY)
USD -> CNY ratebilling.usd_to_cny_rate
Native tool billingbilling.native_tool_billing_enabled, billing.native_tool_pricing_json
Payment providersbilling.payment_providers, billing.stripe_publishable_key, billing.stripe_secret_key, billing.stripe_webhook_secret, billing.epay_gateway_url, billing.epay_types, billing.epay_pid, billing.epay_key
Model pricing APIplatformModelName, currency, isFree, pricingMode, inputUSDPerMTokens, cacheReadUSDPerMTokens, cacheWriteUSDPerMTokens, cacheWritePriceBasis, outputUSDPerMTokens, callUSDPerCall, durationUSDPerSecond, tieredPricingJSON, schedulePricingJSON