{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-docs/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Max Billing","projectTitle":"Frontline Documentation"},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"max-billing","__idx":0},"children":["Max Billing"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Max Billing"]}," is the account's Max subscription: plan, seats, and capability licenses. A ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["seat"]}," is what lets someone use Max at all. Add-ons sit on top of a seat as licenses:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MAX_MEETINGS"]}," — Meeting Intelligence (the notetaker). See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/concepts/max/meetings"},"children":["Max Meetings"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MAX_EMAIL_AGENT"]}," — inbox labeling, drafting, and follow-ups."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This is separate from ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/concepts/admin/studio-billing"},"children":["Studio Billing"]}," (account-level credits and agents)."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Buying, resizing, or cancelling the subscription moves money and is ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["app-only"]},". The Public API reads what the account already pays for and lets an OWNER/ADMIN hand seats and licenses out. Requires a USER API key belonging to an OWNER or ADMIN."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"assignments","__idx":1},"children":["Assignments"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /billing/max/seats/matrix"]}," is the read side: one row per account user with their seat and each capability license, plus purchased-versus-assigned pool counters."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PUT /billing/max/assignments"]}," is declarative:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["seatUserIds"]}," is the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["complete"]}," set of seat holders — any user left out loses their seat."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Inside ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["licenses"]},", an omitted capability is left untouched; an explicit empty array revokes it for everyone."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A license cannot be given to a user without a seat."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["You cannot assign more seats or licenses than purchased."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The CLI wrappers (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["seats assign"]}," / ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["unassign"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["licenses grant"]}," / ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["revoke"]},") update one user at a time against that same matrix."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["On the free trial every field on usage is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["null"]}," except ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["limits"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"operations","__idx":2},"children":["Operations"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Verb"},"children":["Verb"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Path"},"children":["Path"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Purpose"},"children":["Purpose"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/public/v1/billing/max/usage"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Plan, seats, add-on pools, limits, scheduled change"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/public/v1/billing/max/plans"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Plans that can be bought, with their prices"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/public/v1/billing/max/catalog"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Plans, capability add-ons and additional credit bags"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/public/v1/billing/max/seats/matrix"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Per-user seat + license grid"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PUT"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/public/v1/billing/max/assignments"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Set the complete assignment"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Every plan and add-on lists its ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["prices"]},", each with its ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["interval"]},", Stripe ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["amount"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["currency"]},", and an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["internalKey"]}," — the price key used for pricing. Legacy prices only appear to accounts already paying for them. Purchasing still happens in the app."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Full list in the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/reference/openapi"},"children":["API Reference"]}]}," under the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Billing"]}," tag."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"cli","__idx":3},"children":["CLI"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"frontline billing max usage --pretty\nfrontline billing max plans --table\nfrontline billing max catalog --table\nfrontline billing max seats matrix --table\nfrontline billing max seats assign <userId>\nfrontline billing max licenses grant MAX_MEETINGS <userId>\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Resolve user IDs with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["frontline users list"]},"."]}]},"headings":[{"value":"Max Billing","id":"max-billing","depth":1},{"value":"Assignments","id":"assignments","depth":2},{"value":"Operations","id":"operations","depth":2},{"value":"CLI","id":"cli","depth":2}],"frontmatter":{"seo":{"title":"Max Billing"}},"lastModified":"2026-10-02T13:31:57.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/docs/concepts/max/billing","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}