Skip to main content

FinOps settings

The FinOps settings screen lets you set the currency and the monthly budget of your tenant, load the exchange rates and record the dated unit prices of media, GPU and storage. Portal path: /finops/settings (menu FinOps > FinOps settings). FinOps analysts and tenant administrators change the settings; auditors read them.

What the screen shows​

The screen has three tabs: Currency and budget (default), Exchange rates (?tab=fxRates) and Unit prices (?tab=mediaPrices).

AreaContent
Current settingsJSON of the values the cost estimation, the budget alerts and the quota reservations use now: currency, monthly_budget, variance_threshold_pct, reservation_ttl_seconds.
Update the settingsForm: Currency (for example EUR), Monthly budget (for example 10000.00), Variance threshold (%), Reservation lifetime (s), with a Result panel.
Exchange rates tableFilters Base currency and Quote currency. Columns: Base currency, Quote currency, Rate, As of, Source. A click on a row shows it as JSON.
Load exchange ratesForm with one Rates field (JSON list) and a Result panel.
Media, GPU and storage unit prices tableFilter Unit (audio_second, image, video_second, gpu_second, storage_gb_month). Columns: Unit, Provider, Resource, Unit price, Effective from, Source. A click on a row shows it as JSON.
Empty statesNo exchange rate; No unit price (an unknown price is never counted as zero).

Actions​

Button or actionWhat it doesAPI callRoles
Current settings (loaded with the tab)Reads the settings of the tenant.GET /v1/finops/settingsReaders of the FinOps section
Run (Update the settings)Saves the fields filled; an empty field keeps its current value.PUT /v1/finops/settingsfinops, tenant_admin, platform_admin
Filter (Exchange rates)Filters the rates on the currencies.GET /v1/finops/fx-rates (base, quote)Readers of the FinOps section
Run (Load exchange rates)Writes the rates; an existing rate at the same date is replaced.PUT /v1/finops/fx-ratesfinops, tenant_admin, platform_admin
Filter (unit prices)Filters the prices on the unit.GET /v1/finops/media-prices (unit)Readers of the FinOps section
New unit priceOpens the form: Unit (required), Provider (required), Resource (required), Unit price (required, for example 0.006), Currency (default EUR), Effective from, Source. Create sends it.POST /v1/finops/media-pricesfinops, tenant_admin, platform_admin
Refresh (round arrow icon)Reloads the table of the tab.GET /v1/finops/fx-rates or GET /v1/finops/media-pricesReaders of the FinOps section

The default value of Rates is:

[{"base": "EUR", "quote": "USD", "rate": "1.08", "as_of": "2026-01-01T00:00:00Z", "source": "ecb"}]

Roles​

RoleAccess
finops, tenant_adminChange the settings, the rates and the unit prices (ADMIN_ROLES of services/control-plane/src/eai/domains/finops/__init__.py and services/control-plane/src/eai/domains/finops/media.py).
platform_adminSame rights. The settings and the unit prices need a tenant context; rates loaded without a tenant are platform rates.
auditorReads every tab. The forms show Requires one of these roles: FinOps, Tenant admin, Platform admin and New unit price is 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​

Set the currency and the monthly budget​

  1. Read the current values. Current settings shows what the estimation uses now. Expected result: the JSON shows currency and monthly_budget. If it fails: an error tenant_required means you are not signed in to a tenant.
  2. Fill the form. In Update the settings, enter Currency (three capital letters) and Monthly budget, which the budget alerts compare with the spend. Expected result: the fields are filled; the other fields can stay empty. If it fails: if the form is replaced by a role notice, ask for the finops role.
  3. Save. Click Run. Expected result: the Result panel shows the new values. Current settings shows them after a reload of the page. If it fails: validation_error means a currency that is not three capital letters or a negative value.

Load the exchange rates of the month​

  1. Open the tab. Click Exchange rates. The costs in another currency are converted with the rate valid at their date. Expected result: the list of rates is shown. If it fails: click Refresh.
  2. Paste the rates. Replace the Rates JSON with your list of base, quote, rate, as_of, source (1 to 1000 rates), then click Run. Expected result: the Result panel shows updated and the list of rates. If it fails: validation_error names the invalid entry (a rate must be above zero).

Record the price of a media unit​

  1. Open the form. In Unit prices, click New unit price. Expected result: the form opens on the right. If it fails: the button is shown to FinOps administrators only.
  2. Fill and create. Choose the Unit, enter Provider, Resource, Unit price and Source (the server requires it), then click Create. Expected result: the toast Created appears and the price is listed. If it fails: media_price_exists means a revision already exists at that date; choose another Effective from.

Troubleshooting​

SymptomCauseFix
Error media_price_invalid (HTTP 422): "The media price field source is invalid."Source left empty, or another field is invalid (the message names it).Fill Source and check the named field.
Error media_price_exists (HTTP 409)A revision exists for this unit, provider, resource and date.Choose another Effective from.
Error validation_error (HTTP 422)Currency not three capital letters, negative budget, rate not above zero, or more than 1000 rates.Fix the value.
Current settings shows the old valuesThe block is read when the tab opens.Reload the page.
Error tenant_required (HTTP 403)Platform administrator without a tenant on the settings or unit prices.Sign in to a tenant.
Error fx_rate_missing elsewhere in FinOpsNo rate covers the currency pair at the date of a cost.Load the rate here.