Skip to content

Subscriptions and seats

A subscription is a plan your organisation pays for per seat, such as Claude Max, ChatGPT Team or GitHub Copilot Business. Recording them under Costs → Subscriptions is what turns the spend report from “what tokens would cost” into “what we actually pay”, and what separates sanctioned use from shadow AI.

FieldMeaning
NameYour label, for example “Engineering Claude Max”.
Vendoranthropic, openai, google, github or other.
PlanThe plan as the vendor names it, for humans: “Claude Max 20x”.
Seat cost (monthly)Per seat, per month, in the subscription’s currency (default USD).
Seats purchasedSeats paid for. This can exceed seats assigned, and the difference is what you’re buying and not using.
Match toolsCollector tool names this subscription pays for, comma-separated (for example claude-code,claude-desktop). Empty matches any tool from the vendor.
Match plansPlan values as the collector reports them (for example claude_max,claude_pro). Empty matches any plan.
NotesFree text.

A seat belongs to a person, identified by the user name the collector reports. Give it a display name when the OS account isn’t a person’s name (jdoe → “Jane Doe”). Every machine a person reports from rolls up to their seat, whether that’s a laptop, a desktop or a build box.

Releasing a seat keeps it on record with the date it was released.

A request is covered when all of these are true:

  1. The tool reported that it ran on a paid plan, not an API key.
  2. The person holds a seat on a subscription from the same vendor.
  3. The subscription’s match tools and match plans (if set) include the tool and plan reported.

Plan usage that meets 1 but not 2 or 3 is untracked. It’s surfaced in the report and in Shadow AI, never counted as free.

GET /api/subscriptions
POST /api/subscriptions
PUT /api/subscriptions/{id}
DELETE /api/subscriptions/{id}
POST /api/subscriptions/{id}/seats
DELETE /api/subscriptions/seats/{seatId}