Skip to main content

Price cards

The Price cards screen lets you record and retire the versioned prices of a provider model, used by the Control Plane to compute the measured cost of each call. Portal path: /finops/price-cards (menu FinOps > Price cards). FinOps analysts and tenant administrators maintain the cards; auditors read them.

What the screen shows​

AreaContent
Price cards tableColumns: Provider, Model pattern, Region, Version, Currency, Prices (JSON of price per unit), Scope (tenant for a card of your tenant, global for a platform card), Effective from, Status.
List contentThe server lists the active cards only: a retired card leaves the list.
Detail panelA click on a row loads the full card (tiers, image and video prices, reasoning billing, notes).
Empty stateNo price card: add the prices of a provider model.

Actions​

Button or actionWhat it doesAPI callRoles
New price cardOpens the form: Provider (required), Model pattern (required, for example gpt-4o-mini*), Region (default *), Version (for example openai-2026-01, else v<n>), Currency (required, default USD), Prices (required JSON, price per 1M units), Effective from (ISO 8601, default now), Notes. Create sends it.POST /v1/finops/price-cardsfinops, tenant_admin, platform_admin
Retire (row menu, active cards)Asks for a confirmation, then ends the card now: status retired and end of validity set.POST /v1/finops/price-cards/{card_id}/retirefinops, tenant_admin, platform_admin
Click on a rowOpens the detail panel of the card.GET /v1/finops/price-cards/{card_id}Readers of the FinOps section
Refresh (round arrow icon)Reloads the list.GET /v1/finops/price-cardsReaders of the FinOps section

The default Prices value of the form is:

{"input_tokens": "0.15", "output_tokens": "0.60", "cached_input_tokens": "0.075"}

The keys accepted by the server include input_tokens, output_tokens, reasoning_tokens, cached_input_tokens, cache_read_tokens, cache_write_tokens, audio_tokens, embedding_tokens, characters, images, audio_seconds, video_seconds, requests and tool_calls; a key outside the list is refused.

Roles​

RoleAccess
finops, tenant_adminCreate and retire the cards of the tenant (ADMIN_ROLES).
platform_adminSame rights. Signed in without a tenant, the card created is a global card shared by all tenants.
auditorReads the cards; the New price card button and the Retire action are hidden.
developer, viewer, security_officerAllowed to read by the API, but the FinOps section of the portal menu does not open for them.

Typical tasks​

Record the new prices of a model​

  1. Open the form. A new card keeps the history: the previous card of the same provider, pattern and region is closed at the date of the new one. Click New price card. Expected result: the form opens on the right. If it fails: if the button is missing, your roles are not finops, tenant_admin or platform_admin.
  2. Fill the card. Enter Provider, Model pattern, Currency and the Prices JSON, and set Effective from to the date of the new price list. Expected result: the form accepts the values. If it fails: the currency must be three capital letters (EUR, USD).
  3. Create it. Click Create. Expected result: the toast Created appears and the card is listed with the status active. If it fails: price_card_invalid names the wrong price keys; conflict means a later card of the same model already exists from that date.

Retire an obsolete card​

  1. Find the card. Look for the provider and the pattern in the table. Expected result: the card is listed with the status active. If it fails: click Refresh.
  2. Retire it. Open the row menu, choose Retire and confirm the message. Expected result: the toast Done appears and the card leaves the list (the server lists active cards only). If it fails: not_found means the card was already removed; reload the list.

Troubleshooting​

SymptomCauseFix
Error price_card_invalid (HTTP 422): "The price card is invalid: ..."A key of Prices is not a known unit, or a price is negative.Use the keys listed above with positive values.
Error conflict (HTTP 409): "The resource already exists or is in conflict."A card of the same provider, pattern and region starts at or after Effective from.Choose a later Effective from, or retire the later card first.
Error validation_error (HTTP 422)Currency is not three capital letters, or Effective from is not a timestamp.Fix the field.
Error forbidden (HTTP 403)Not a FinOps administrator, or platform_admin needed for a global card.Ask for the finops role.
The measured cost of a call stays emptyNo active card matches the provider and the model.Create a card whose Model pattern matches the model id.