Skip to main content
AI cost

AI Cost Allocation: A Framework for Metered Spend

Three vendors, three billing pages, three different units. Microsoft counts messages. OpenAI counts calls, gigabyte-days and container sessions. Anthropic bills usage at API rates on top of a seat. The one thing they share is that the variable line is measured in a unit the vendor chose, and not one you picked.

Everyone meters. Nobody meters the same thing.

Microsoft bills Copilot Studio usage at $0.01 per message, where a billable message is a request that triggers an action or a response, charged to an Azure subscription. Anthropic prices Claude Enterprise at $20 per seat per month “plus usage billed at API rates”. OpenAI publishes a tool meter that runs separately from its token pricing.

Those are three genuinely different billing designs, not three versions of one. A seat fee appears in one of them. What recurs is the variable line itself, and the fact that its unit is not yours.

The meter is not only the token bill

Most AI cost models start with tokens, because tokens are the number everyone quotes. Read OpenAI's own tool table and the non-token meters are explicit: web search at $10.00 per 1,000 calls, a file-search tool call at $2.50 per 1,000 calls, file storage at $0.10 per GB per day after the first free gigabyte, and a hosted container at $0.03 to $1.92 per 20-minute session depending on size. Microsoft's Copilot Studio meter does not count tokens at all.

So retrieval, search, storage and session time can each produce a charge that a token-only forecast has no row for. Whether that adds up to more or less than the token line depends on the workload, and nothing on a rate card will tell you which.

Four ways allocation breaks

These are failure modes I keep meeting, not vendor claims. They are worth naming because none of them is fixed by changing vendor.

  1. 1
    The meter fires without a person attached. A scheduled agent, a workflow, a background retrieval job. Seat-based allocation has nothing to hang it on, because no seat ran it.
  2. 2
    The bill and the decision sit in different budgets. Microsoft's pay-as-you-go meters bill to an Azure subscription, and the team that owns that subscription may not be the team whose work set the agent running. Where the money and the decision separate, nobody economises.
  3. 3
    Included usage goes unmeasured. Where a vendor includes an allowance, OpenAI lists the first gigabyte of file-search storage as free, the included usage still tells you who is consuming. Reporting that starts at the first chargeable unit throws away the leading indicator.
  4. 4
    Nobody owns the unit. Messages, calls, gigabyte-days and sessions are not interchangeable, and a team asked to cut consumption cannot act on a number in a unit it does not control.

Allocate in the unit the vendor bills in

This next part is a method I use, not something the vendors' pricing pages tell you to do. It is one line: allocate in the vendor's unit, then convert to money once, at the top.

Convert per team and then sum, and every conversation becomes an argument about the rate. Allocate in the native unit and it becomes a question of fact: who sent the messages, who made the calls, whose container stayed open.

Four columns, and the hard part of each is knowing where the data comes from, so decide that before you start:

  • Who triggered it. A person, a team, or a named automation. An automation is a valid owner as long as a human owns the automation. Source: your own agent and workflow inventory, which is usually the field nobody has.
  • What the meter counted. Messages, calls, GB-days, sessions. Source: the vendor's own usage export, in whatever unit it arrives.
  • Where it bills today. The Azure subscription, the API key, the account. Not where you think it should go. Source: the invoice.
  • Included or chargeable. Count both. Bill one.

If a column has no source, that gap is the finding. Run it for two weeks before changing anything.

What this does not do

It does not forecast. A rate card gives you prices, not volumes, so any forecast is really your usage assumptions wearing a rate card's clothes. Write the assumptions down separately and the forecast becomes reviewable.

It also does not stay true on its own. Meters change. Microsoft's cost management dashboard supports policy-level and user-level spending limits, and a limit set against an older usage shape is worth re-reading rather than trusting.

Worth doing this week

Find out where your metered AI usage actually bills: which subscription, which API key, which account, and who owns it. If the usage comes from finance, HR or sales and the bill lands on infrastructure, you have an attribution problem rather than a pricing one. That one is fixable without renegotiating anything.

This page is deliberately runtime-agnostic. If the meter you actually have to allocate is Microsoft's, the vendor-specific version of this work is where the detail lives: the credits and capacity packs guide covers the mechanics, and the allocation method checklist is free.

For the worked version with the templates and two calculators, there is The Copilot Chargeback Playbook at $49. It is Microsoft-specific, which is the point: the job travels between runtimes, the configuration does not.

Prices and meters quoted above were read from each vendor's own published pricing page on 13 October 2026. Metered pricing moves; check the source before you budget against it. Kesslernity is independent and is not affiliated with, or endorsed by, Microsoft, OpenAI or Anthropic.