Skip to main content

Plans and seat controls

Billing is organization-owned and seat-based.

Seat ownership model

  • plan is attached to organization, not individual member
  • workspace owner manages billing, checkout, cancellation, and plan changes
  • delegated operators can manage people and teams without owning billing
  • each active member consumes one seat
  • members do not need their own billing account, but the organization must have an active plan before additional members can be added

Checkout correctness requirements

Production checkout should enforce:

  • selected seat quantity is explicit before checkout
  • checkout session locks seat quantity + plan economics
  • webhook processing validates plan/seat intent before state transition
  • abandoned checkout does not change active plan

Plan range behavior

If pricing uses seat bands:

  • lower and upper seat bounds must be enforced per band
  • users can choose exact quantity within valid band
  • invalid quantities should redirect to correct plan/band selection

Billing state transitions

Recommended state model:

  • inactive: no plan selected yet or no active subscription
  • pending_checkout: checkout created but not paid/activated
  • trialing: active trial with payment method present
  • active: paid or validly trialing subscription
  • past_due / canceled: restricted usage based on policy

Operational expectation:

  • a brand-new workspace should start in inactive with no selected plan
  • checkout intent alone must not make the workspace look subscribed
  • only verified payment/subscription events should move state into trialing or active