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:
| Column | What to write for Mistral |
|---|---|
BilledCost | The cost Mistral shows for the row, as a plain decimal. |
BillingCurrency | Your organization's billing currency, such as EUR or USD. |
BillingPeriodStart | The first day of the month, such as 2026-09-01. |
ChargePeriodStart | The day of the charge. |
ChargeCategory | Usage, or Tax for tax on the invoice. |
BillingAccountId | Your Mistral organization's name or ID. |
SubAccountId | The workspace, so spend can be read by workspace. |
ServiceName | The model or capability, such as Mistral Large or OCR. |
SkuMeter | What was measured, such as Input tokens or Output tokens. |
ConsumedQuantity | How much of it, when Mistral shows it. |
InvoiceId | Once the month is invoiced, the invoice number; until then, leave it empty. |
Tags | Who 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-workspacebelongs 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
Tagscolumn, 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
- Tracking Cohere costs in CostReveal: the same approach for Cohere.
- Custom sources in the docs: every column, and how corrections work.