Tracking Cohere costs in CostReveal, setup guide
The CostReveal team, , 4 minute read
Cohere bills by tokens and units consumed, with an invoice at the end of each month. It offers no billing API or export for an organization's spend. What it does give you is a record of every call: each response states the units billed for it. So Cohere spend comes into CostReveal as a custom source: files in FOCUS, the FinOps Foundation's open format for billing data, built from those records or from the invoice, that you upload or send on a schedule. This guide covers both ways, and how CostReveal then explains the spend.
First, check where your Cohere spend is billed
If you call Cohere models through Amazon Bedrock, Azure AI Foundry or Oracle Cloud's Generative AI service, that spend is on your cloud bill, not Cohere's. It arrives through your AWS, Azure or Oracle Cloud connection, with nothing more to set up. A custom source is for spend Cohere invoices you for directly.
What you need
- Access to your Cohere dashboard's Billing and usage, or to the logs of the services that call Cohere.
- An owner or admin role in CostReveal.
Step by step setup
1. Add a custom source for Cohere
In CostReveal, go to Connections and, under Custom sources, choose Add source. Enter Cohere as the vendor and choose Save. Then choose Download the template: a CSV file with every column already named, and one example row.
2. Choose where the figures come from
From the invoice. The simplest: a row per line of the monthly invoice, with the invoice number. It states exactly what Cohere billed, at the grain the invoice has.
From your own call records. The finest: every Cohere API response has a usage object whose billed_units states the input_tokens, output_tokens, search_units and classifications billed for that call. Log them with the model and with who the call was for, then sum them by day and model and price them at your Cohere rates. This tells you which team, feature or customer each call was for. Until the invoice arrives, these are your own figures; send the invoice's figures once it does.
3. Write the FOCUS file
Fill the template with a row per charge, for a whole billing period:
| Column | What to write for Cohere |
|---|---|
BilledCost | The cost of the row, as a plain decimal. |
BillingCurrency | USD, as Cohere bills. |
BillingPeriodStart | The first day of the month, such as 2026-09-01. |
ChargePeriodStart | The day of the charge, or the first of the month for an invoice line. |
ChargeCategory | Usage, or Tax for tax on the invoice. |
BillingAccountId | Your Cohere organization's name. |
ServiceName | The model or endpoint, such as Command A, Embed or Rerank. |
SkuMeter | The unit billed, such as Input tokens, Output tokens or Search units. |
ConsumedQuantity | How many of them. |
InvoiceId | The invoice number, for figures from the invoice; empty for your own figures. |
Tags | Who the row is for, as JSON, such as {"customer":"globex"}, from your logs. |
A row from call records looks like this:
BilledCost,BillingCurrency,BillingPeriodStart,ChargePeriodStart,ChargeCategory,BillingAccountId,ServiceName,SkuMeter,ConsumedQuantity,Tags
6.25,USD,2026-09-01,2026-09-14,Usage,acme,Command A,Input tokens,2500000,"{""customer"":""globex""}"
4. Send it
Under the Cohere 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 the job that sums your call records, 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=cohere-2026-09.csv" \
-H "Authorization: Bearer <your key>" \
-H "Content-Type: text/csv" \
--data-binary @cohere-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 the spend is for
- Tags. Rows from your call records can say who each call was for in
Tags, read with the project's tag keys: the first key present names the team, feature or customer. - Allocation rules. Under Allocation rules, rules explain rows by their service, meter or account, such as "service
Rerankbelongs to feature search", in every month without touching the files.
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. When the invoice arrives, send the month once more with the invoice's figures and its InvoiceId: 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.
To keep who each call was for once the invoice arrives, divide each invoice line by the shares your call records give, a row per team, feature or customer with its Tags, before you send it.
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 Cohere's own total, because Cohere publishes none it can read. Compare a month's total in CostReveal with your Cohere invoice.
Frequently asked questions
Why is there no Cohere connector? Cohere has no billing API or export to read. 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 Parquet? Yes, as application/vnd.apache.parquet, with the same column names. CSV and Parquet can also be sent gzipped.
What if I use Cohere both directly and through a cloud? Send what Cohere invoices directly as a custom source; what the cloud bills arrives with the cloud. They never overlap.
Keep reading
- Tracking Mistral costs in CostReveal: the same approach for Mistral.
- Custom sources in the docs: every column, and how corrections work.