---
title: "Capability: AI spend and subscriptions"
canonical_url: "https://tokenobserve.com/platform/estate-spend"
published: 2026-09-06
last_updated: 2026-10-21
---

# Capability: AI spend and subscriptions

What you were billed and what you were metered, recorded as two numbers and never added into one.

## What it is

Give each AI subscription and API account a vendor, tool, team and named owner. Map your finance export to the billing import template, then validate and preview the CSV before committing it. You can also post the fields as JSON. No vendor billing credential needed. Billed charges and metered token estimates stay separate, with each currency reported as billed.

## Facts

- What you supply: Mapped charge lines; ten required fields, two optional
- Import bounds: 1,000 lines; CSV uploads up to 2 MB, API JSON bodies up to 2 MiB
- Charge kinds: Subscription and API, reported separately
- Currency conversion: None. Each currency reported as billed

## The limit

What an import cannot find: A subscription that is on no invoice you give it

## Why it exists: One blended AI total reconciles against nothing

Ask what AI costs the business this month and the answer is a number with a shrug attached. Some of it is monthly subscriptions on the corporate card, one per tool, signed up for by whoever needed them first. Some of it is metered API usage on an account somebody in engineering owns. Some of it is a seat still being paid for by a person who left in March.

Most tooling makes that worse, because it produces one confident total. Add a £120 subscription to £340 of estimated tokens and you get £460, a figure that appears nowhere else in your business, on no vendor invoice and in no gateway. On a spend question somebody always checks.

## How it works

- Register the subscription against a named owner: Each entry names a vendor, a tool, a team and an owner email, normalised so the same service registered twice does not become two entries. Reads need viewer rank, writes need operator rank, and every mutation is audited.
- Map your finance export onto the import template: Ten required CSV headers: externalId, vendor, tool, team, kind, currency, amount, chargedAt, periodStart and periodEnd. ownerEmail and subscriptionId are optional. Upload or paste the CSV, validate it and review the preview before committing. The API accepts the same fields as JSON.
- Reject an import rather than half-apply it: An unrecognised column, a missing required one, a credential in metadata or an invalid period fails validation. Each import accepts up to 1,000 lines. CSV file uploads are capped at 2 MB (2,000,000 bytes); the API caps the JSON request body at 2 MiB (2,097,152 bytes). One line reusing an existing identity with different data rolls the whole batch back.
- Report billed and metered side by side: Subscription and API amounts are reported per currency with their evidence counts, and nothing is converted: a euro charge is reported in euros. Actual API invoices are never added to token-price estimates, and a report that hit its row cap says so on the result. The same figures reach an agent over MCP under the same team scope, to a caller holding an explicit report grant.

## What it does not do

- It discovers no subscriptions on its own. An import finds what the invoice you gave it lists; a service nobody has invoiced stays invisible to it.
- The cloud pilot connects OpenAI, Anthropic, xAI and configured Google Cloud Billing reporting sources. Reported costs preserve their period and source status and are separate from imported invoices and gateway estimates; the adapters do not cover every subscription plan. Real customer billing accounts and permissions remain unqualified in the product record.
- A finance system's own export is not loaded as it stands. The parser refuses an unrecognised column and a missing required one, so the charge lines are mapped onto the template first.
- It never converts currencies, so there is no consolidated cross-currency total to report to a board.
- It cannot recognise two differently labelled copies of the same real-world bill as one charge.
- It will not allocate one invoice across teams. That is a reviewed decision a person makes.
- Registering a subscription changes nothing at the vendor: no cancellation, no payment-plan change, no control on an endpoint.
- The invoice and register ledger sits outside subject erasure, which clears trace evidence rather than billing records. That ledger and its backups belong in your retention scope as a separate item.
- Estate reporting is not a complete claim about the business. An invoice, a network observation or a missing trace cannot establish comprehensive coverage, and the reports say so.

## Read next

- https://tokenobserve.com/platform/approved-ai
- https://tokenobserve.com/platform/spend-controls
- https://tokenobserve.com/platform/conversation-evidence

## Questions and answers

Q: What do I have to supply to import a month of spend?
A: Map the charge lines from your finance export onto the dashboard's import template. It has ten required columns and two optional ones, ownerEmail and subscriptionId. Use the exact headers shown above. Upload or paste the CSV, validate it, then review the preview before committing. You need no vendor billing credential or vendor console login; your organisation decides how to review the data you import.

Q: What happens if the same invoice is imported twice?
A: Nothing is added. Import identity is team, source and external id, and an identical reimport is recognised and ignored. The same identity arriving with different data is a conflict rather than an update: the import errors and rolls back completely, because the same reference carrying a different amount is something a person should look at. Corrections are issued as separately identified credit lines.

Q: Will it find AI subscriptions nobody told us about?
A: Not from invoices, which list only what they list. Unregistered services surface through the observation side of the product instead, and that is evidence about a destination rather than proof of a subscription: a hostname without a verified owner cannot establish whose subscription it is. Treat the register as the record you build deliberately and observations as leads to investigate.

The long-form detail on this capability (the anchored sections, the worked policies and the error envelopes) is on the page itself at https://tokenobserve.com/platform/estate-spend.
