Skip to content

Tracking Mistral costs in CostReveal, setup guide

The CostReveal team, , 4 minute read

Mistral bills an organization for what its workspaces use: tokens by model, OCR pages, audio, agents and storage. Mistral publishes no billing export for this, and its programmatic usage reporting is an Enterprise feature whose items it does not document field by field. So CostReveal does not guess at a reader for it. Instead, Mistral spend comes in as a custom source: files in FOCUS, the FinOps Foundation's open format for billing data, that you upload or send on a schedule. This guide covers where the figures are in Mistral, how to turn them into a FOCUS file, and how CostReveal then explains them.

First, check where your Mistral spend is billed

If you call Mistral models through Amazon Bedrock, Azure AI Foundry or Google Cloud's Vertex AI, that spend is on your cloud bill, not Mistral's. It arrives through your AWS, Azure or Google Cloud connection, with nothing more to set up. A custom source is for spend Mistral invoices you for directly, on La Plateforme.

What you need

  • Someone with the Billing or Admin role in your Mistral organization, who can open Usage and limits in the Admin Panel at admin.mistral.ai.
  • An owner or admin role in CostReveal.

Step by step setup

1. Add a custom source for Mistral

In CostReveal, go to Connections and, under Custom sources, choose Add source. Enter Mistral AI as the vendor and choose Save. Then choose Download the template: a CSV file with every column already named, and one example row.

2. Find the figures in Mistral

In Mistral's Admin Panel, open Usage and limits. Its dashboard shows the organization's total cost and its cost per day, and breaks usage down by model, by input and output tokens, by API or capability, by workspace, and by storage and Libraries.

Use the finest breakdown you need. A row per day, workspace and model is a good default: workspaces usually map to teams or products, and models are what changes cost the most.

3. Write the FOCUS file

Fill the template with a row per charge, for a whole billing period:

ColumnWhat to write for Mistral
BilledCostThe cost Mistral shows for the row, as a plain decimal.
BillingCurrencyYour organization's billing currency, such as EUR or USD.
BillingPeriodStartThe first day of the month, such as 2026-09-01.
ChargePeriodStartThe day of the charge.
ChargeCategoryUsage, or Tax for tax on the invoice.
BillingAccountIdYour Mistral organization's name or ID.
SubAccountIdThe workspace, so spend can be read by workspace.
ServiceNameThe model or capability, such as Mistral Large or OCR.
SkuMeterWhat was measured, such as Input tokens or Output tokens.
ConsumedQuantityHow much of it, when Mistral shows it.
InvoiceIdOnce the month is invoiced, the invoice number; until then, leave it empty.
TagsWho the row is for, as JSON, such as {"team":"search"}. Optional; see step 5.

A row looks like this:

BilledCost,BillingCurrency,BillingPeriodStart,ChargePeriodStart,ChargeCategory,BillingAccountId,SubAccountId,ServiceName,SkuMeter
18.40,EUR,2026-09-01,2026-09-14,Usage,acme,search-workspace,Mistral Large,Input tokens

4. Send it

Under the Mistral source, choose the file under Send a FOCUS file and choose Send file. It is read within a minute, and Files sent says which months it stated, how many lines it added, and any rows it left out and why.

To send it from a scheduled job instead, create a key under Settings, API keys with the scope Send data only, and send the file to the address shown under Send files from your own systems:

curl -X POST "<the address shown in Connections>?name=mistral-2026-09.csv" \
  -H "Authorization: Bearer <your key>" \
  -H "Content-Type: text/csv" \
  --data-binary @mistral-2026-09.csv

The key can send files and usage data to its project and read nothing, so it is safe to keep in the job.

5. Name who each workspace is for

Spend is explained the way every provider's is. Two ways work for Mistral:

  • Allocation rules. Under Allocation rules, a rule such as "account search-workspace belongs to team search" explains every row of that workspace, in every month, past and future, without touching the file.
  • Tags. Write who a row is for in its Tags column, read with the project's tag keys.

Spend nothing names is shown as unknown, never spread across teams to look complete.

Keeping it current and correct

Each month a file has rows for becomes exactly what the file says. So send the month so far as often as you like, each time in full, and send it once more when Mistral invoices it, with the InvoiceId filled in. Lines that changed are restated, lines that are gone are restated to zero, and the history of every earlier file is kept. Until a month's rows carry an invoice, CostReveal shows them as not yet invoiced.

Sending the same file twice in a row changes nothing, so a job that retries is safe.

What CostReveal can and cannot check

CostReveal checks that every amount in the file is attributed, on every dimension. It cannot check the file against Mistral's own total, because Mistral publishes none it can read. Compare a month's total in CostReveal with your Mistral invoice once it arrives.

Frequently asked questions

Why is there no Mistral connector? Mistral's usage API is available on its Enterprise plan only, and its usage items are not documented field by field, so a reader built on it would be built on a guess. A custom source reads only what you send, exactly as you send it.

Does it count against my plan? Yes, a custom source is one connection.

Can I send a whole year at once? Yes, as long as the file is under 64 MB uncompressed. Each month in it is recorded on its own.

What if I use Mistral both directly and through a cloud? Send what Mistral invoices directly as a custom source; what the cloud bills arrives with the cloud. They never overlap.

Keep reading