Chapter 3512 min read
Provider groups and your final price
Learn how a request's cost is calculated from the model's base price and billing multipliers, estimate unit prices in Models & Pricing, check the charge for each request in Call Records, and understand the billing unit your balance uses.
Every request you send with an LLM key is handled by one provider group. A request’s cost depends on two things: the model’s base price, and the billing multipliers of that group, your organization, and your team. This page explains how costs are calculated and where to see unit prices and actual charges. Admins set the multipliers. For how, see Provider cost multipliers vs. user billing multipliers.
How costs are calculated#
Cost = base cost × provider-group multiplier × organization multiplier × team multiplier
The base cost is calculated at model prices. A model prices each billable item separately, such as input, output, cache read, and cache write. Most items are priced per million tokens, and some are priced per call, such as web search. Some models have several pricing tiers. When a request meets a tier’s condition (for example, input longer than a certain length), it is priced at that tier.
The cost of each billable item is rounded down to the billing unit separately, the results are added up, and the sum is multiplied by the effective multiplier.
The three multipliers are:
- Provider-group multiplier: Determined by the provider group that handles the request. It is mainly the group’s own multiplier, and the lower it is, the cheaper the request. Admins can also mark up this group for your organization or team, or set a separate billing multiplier for individual provider keys in the group, and all of these count toward this item.
- Organization multiplier: Determined by your organization. If your organization has a parent organization, the parent organization’s multiplier is multiplied in too.
- Team multiplier: Determined by your team. If your team has a parent team, the parent team’s multiplier is multiplied in too. If you don’t belong to any team, it is
1.00.
The product of the three multipliers is called the Effective multiplier. All multipliers default to 1.00. Organization and team multipliers are never below 1.00. A group’s multiplier can be below 1.00, and when it is 0, requests that go through that group are free. The Top-up ratio and Cost multiplier that admins set on providers and provider keys are used only for routing and cost tracking, and they don’t count toward your cost.
Items priced by size, duration, or session#
- Generated images: Google image models are priced by the size tier of the output image (0.5K, 1K, 2K, 4K, by the long edge). The size reported by the upstream is used when there is one; otherwise the requested size; and 1K when neither is known. When the request doesn’t fix a size, the hold uses the model’s largest size tier. Images in the Batch and Flex tiers are priced at half the standard price.
- Audio in chat requests: Audio inlined in Chat Completions, Responses, and Gemini requests is billed by duration in addition to tokens. The duration reported by the upstream is used when there is one; otherwise the duration the gateway measured.
- Code execution containers: Containers created through the gateway, or that appear in OpenAI Responses output, are priced by memory tier (1, 4, 16, or 64 GB). The cost is held in 20-minute segments, and after the container is deleted or expires, it is settled by the active minutes (rounded up, with a 5-minute minimum). When the balance can’t cover the hold for the next segment, the gateway deletes the container at the end of the current segment.
Which model’s price is charged#
By default, requests are priced by the model you requested. When you set a model redirect on your own account or LLM key, the rewritten model name also counts as the model you requested. Redirects that admins set globally or on organizations, teams, catalog models, provider groups, providers, provider keys, and endpoints, and the models that requests fall back to, don’t change the model used for pricing.
Platform super admins can choose another method in Pricing source under System Management → Routing → Routing Billing, and can also set it separately for scopes such as an organization:
- Price by requested model: the default.
- Price by redirected model: priced by the model sent to routing after all redirects.
- Price by actual response model: settled at the price of the model name in the upstream’s response, with the hold based on the fallback source’s model. When the response model has no price or the response has no model name, Use a fallback source when the response model has no price (on by default) prices it by the Fallback source (Redirected model by default, or Requested model); when it is off, the request is recorded as pending pricing and is priced automatically once the response model has a price.
In the request logs and request details, you see the model you requested and the amount charged.
Which group handles your request#
The Routing strategy of your LLM key decides which group a request goes through:
- Price intent: Tries the groups within the multiplier range you set, in order of billing multiplier from lowest to highest.
- Pinned groups: Tries the groups in the order you arranged, and uses the next group only after the previous one fails.
The cost is based on the group that actually handles the request. If the first group fails and the next group handles the request, you are billed at the later group’s multiplier. To create a key and choose a routing strategy, see Create an LLM key.
Estimate unit prices in Models & Pricing#
In the sidebar, click Models & Pricing. The top of the page shows your Organization and Team and their multipliers. Click a model card, and on the Pricing tiers tab of the details, select a Group. The effective unit price shown = model base price × group multiplier × team multiplier × organization multiplier. For how to find models and switch groups, see View available models.
The effective unit price doesn’t include the markup an admin set on the group for your organization or team, or the billing multipliers of individual provider keys. When either of these is not 1.00, your actual cost differs from the amount calculated from the effective unit price. Go by the amount in Call Records.
Check costs in Call Records#
In the sidebar, click Call Records (in a platform super admin’s sidebar, it shows as Usage Records) to open the Request Logs page. The Cost column shows the final amount charged for each request:
- When a request is priced at a non-default pricing tier, the tier appears below the amount, for example Long-context tier.
- When a request hits the response cache, the column shows Not charged.
- Hover over the amount to see the request’s Effective multiplier and Total cost. When the Effective multiplier is
1.00, it isn’t shown.
Click a request to open its details. In Cost breakdown on the Billing tab, you can see the token counts of each type, each layer’s multiplier when it isn’t 1.00, the Effective multiplier, and the Total cost.
Organization admins also see the Provider column, and the request details they open are more complete:
- When you hover over the multiplier badge in the Provider column (for example,
×1.65), it lists the multiplier of each layer. - Cost breakdown on the Overview tab of the request details lists the base cost of each billable item (for example, Input, Output, Cache read, and Cache write), each layer’s multiplier that is not
1.00, the Effective multiplier, and the Total cost. - In Settlement in the Cost breakdown, From balance is the amount deducted from the wallet, and Covered by packages is the amount covered by active packages.
- Filter by Provider key in Filter to show only, or exclude, the requests of certain provider keys.
- A CSV export has four extra columns at the end,
provider_key_id,adjusted_cost_units,supplier_cost_units, andplatform_cost_units, and the existing columns keep their positions. Divide amount units by 10¹⁰ to get US dollars; supplier cost is filled in only for organization admins.
For where each layer’s multiplier is set, see Provider cost multipliers vs. user billing multipliers.
Example#
alice@example.com is a member of the organization Example Inc and belongs to the team dev:
- The organization
Example Inchas a multiplier of1.00, and the teamdevhas a multiplier of1.10. - Her key goes through a provider group with a group multiplier of
1.50, and the admin hasn’t set any other multipliers for this group.
A model’s base price is $2 per million tokens for input and $10 per million tokens for output. In Models & Pricing, the effective unit prices for this group are:
- Input: 2 × 1.50 × 1.10 × 1.00 = $3.30 per million tokens
- Output: 10 × 1.50 × 1.10 × 1.00 = $16.50 per million tokens
She sends one request with 100,000 input tokens and 20,000 output tokens:
- Base cost: input 0.1 million tokens × $2 = $0.20, output 0.02 million tokens × $10 = $0.20, for a total of $0.40.
- Effective multiplier: 1.50 × 1.00 × 1.10 = 1.65.
- Cost: 0.40 × 1.65 = $0.66. Calculating with the effective unit prices gives the same result: 0.1 × 3.30 + 0.02 × 16.50 = $0.66.
In Request Logs, alice hovers over the amount of this request and sees Effective multiplier × 1.65 and Total cost $0.66. When the organization admin opens the Cost breakdown for this request, the rows are:
Organization multiplier is 1.00, so it isn’t listed separately. If alice has no active package, this $0.66 is deducted from her wallet, and her Available balance drops by 0.66.
Balance and billing units#
- Model prices, request costs, and wallet balances use the same unit. Model base prices are in US dollars, and
1.00in your balance corresponds to $1 of cost. - The currency symbol before amounts is set by the operator, and no exchange rate conversion is applied. For example, when the currency symbol is set to
¥, a unit price of $2 is shown as¥2. - Costs are deducted from your wallet in the current organization. If you have joined several organizations, each organization’s balance is separate.
- Call costs are covered first by active packages (a time package uses the current period’s credit, and a usage package uses its remaining credit), and any shortfall is then deducted from your pay-as-you-go balance.
- When you click Top up in Wallet, Credit to balance in the dialog is the amount added to your wallet, and Total due is the amount you actually pay.
Frequently asked questions#
Why doesn’t the cost in Call Records match the amount calculated from the effective unit price?#
Common causes:
- The request was priced at another pricing tier. When the Cost column shows a tier badge, the request is billed at that tier’s unit price. You can find each tier’s unit prices in Other price tiers under Pricing tiers in the model details.
- Another group handled the request. After the previous group fails, the routing strategy switches to the next group, and the cost is based on the group that actually handled the request.
- An admin set a markup on the group for your organization or team, or set a billing multiplier on a provider key in the group. These multipliers count toward the Provider-group multiplier, but they aren’t included in the effective unit price in Models & Pricing.
- The input hit the prompt cache. When the price list has Cache read and Cache write prices, the cached part and the part written to the cache are billed at their own unit prices; without those prices, cached tokens are counted in Input at the input price.
My balance is enough, so why was my request rejected for insufficient balance?#
Before CCHP sends a request to the upstream, it reserves an estimated charge based on predicted usage. After the request finishes, CCHP settles the charge at actual usage and refunds any excess. The reserved amount can be higher than the actual cost.
- When the billing mode is Prepaid, the charge comes from your wallet. If your available balance plus the remaining credit of your active packages isn’t enough to cover the reserved amount, the gateway rejects the request and returns HTTP
402. Top up or buy a package. - When the billing mode is Postpaid, the charge goes to the organization’s postpaid account, and your wallet balance and packages stay unchanged. Once the organization’s costs this month exceed the Organization postpaid credit limit, the gateway also returns HTTP
402. The wallet page shows how much of the organization’s postpaid credit is left this month.
When a credit limit that an admin set for you, your team, or your organization is used up, the gateway returns HTTP 429. See Limits on every level and postpaid organizations.
Your billing mode is shown in Billing mode below Available balance on the Wallet page.
The model is redirected to a model that has a price, so why does the request still return 403?#
When Pricing source is Price by requested model, the model name you requested must have a price itself. When an admin redirects a model name that has no price to a model that has one, the requested model name still has no price, and the request is rejected at the hold with 403 (error.code 10004). Ask an admin to configure a price for that model name, or to change Pricing source to Price by redirected model. See Which model’s price is charged.
Why do some requests cost 0?#
- The request hit the response cache: CCHP reuses the response to an earlier identical request without calling the upstream, so this request isn’t charged, and the Cost column shows Not charged.
- The billing multiplier of the group or provider key that handled the request is
0, and the Effective multiplier shows× 0.00. - The gateway rejected the request, and the upstream was never called.