Manage seats and billing
In SupaCloud, billing is per organization seat (ADR 0035, ADR 0045). Every active member of your organization occupies exactly one seat. Your plan ships an included seat pool; once your active headcount exceeds that pool, each extra member bills as an overage seat. Seat types (member, operator, …) are entitlement markers — they do not add a separate billing line; every seat, role or not, pools the same way against the headcount.
How seats are counted and billed
Section titled “How seats are counted and billed”SupaCloud reconciles seat quantities automatically on every membership change (invite accepted, member suspended, reactivated, removed, or a seat reassigned) and on an hourly background sweep. The figures are computed entirely on the server — the panel renders them verbatim, with no client-side math.
Billing is a single dimension — headcount:
| Part | What it is | How it bills |
|---|---|---|
| Included seats | The pool your plan ships, read from the plan’s users.max |
Already covered by the plan base price (no extra charge). An unlimited pool never overflows. |
| Extra seats (overage) | max(0, active members − included pool) |
extra seats × per-extra-seat price, charged on top of the plan base. |
Every active member — including one who holds the operator (or any other) role — is counted once: one seat in the headcount pool. A role no longer adds a flat per-seat charge on top; it only sharpens that member’s entitlements.
Assign a member’s seat
Section titled “Assign a member’s seat”Seats are assigned from the member’s detail drawer. You need the owner, admin, or billing admin organization role to change a seat.
-
Open Organization settings.
Navigate to Settings → Organization. The Members list is on the left; the Seats & billing panel is in the right rail.
-
Open the member.
Click a member’s row to open their detail drawer.
-
Pick a seat tile.
In the Seat type chooser, select a tile. Each active seat type is offered (for example the default member seat and the operator seat), plus a No seat option. Selecting a tile assigns that seat immediately.
-
Confirm the reconcile.
The change is saved and the organization’s seat quantities are reconciled. The Seats & billing panel updates to reflect the new totals.
Read the Seats & billing panel
Section titled “Read the Seats & billing panel”The Seats & billing panel (right rail of Settings → Organization) shows exactly how your bill is composed. Lines appear only when they apply:
- Included seats —
used of included, e.g.5 of 3. Theusedfigure is your active headcount;includedis the plan pool (orunlimited). This line is always shown. - Extra seats — shown only when you are over the pool. The sub-line reads
count × unit(extra seats times the per-extra-seat price); the amount is the overage total. - Plan base — your plan’s flat monthly base price, shown when it is greater than zero.
The panel footer shows the total members seated and the MRR (monthly recurring revenue): the plan base plus the overage total.
Worked example
Section titled “Worked example”A plan with a 3-seat included pool, a €19 base price, and a €5 per-extra-seat price. The organization has 5 active members, one of whom also holds the operator role:
| Line | Calculation | Amount |
|---|---|---|
| Included seats | 5 of 3 (pool covered by the plan base) |
— |
| Extra seats | 2 × €5 (5 active − 3 included) |
€10 |
| Plan base | flat | €19 |
| MRR | €19 + €10 |
€29 |
The operator member is counted once toward the 5 active members (driving the overage); holding the operator role adds no separate charge.
Troubleshooting
Section titled “Troubleshooting”A member shows “No seat” but the MRR still went up. Expected. Every active member occupies one headcount seat regardless of seat type — “No seat” does not change billing; the member still pools against the included/overage seats.
The seat tile chooser is not shown in the member drawer. Changing seats requires the owner, admin, or billing admin organization role. Members and viewers see the member’s seat read-only.
Extra seats / overage line never appears even with many members.
Your plan’s included pool is unlimited, so there is no overage to bill —
every member is covered by the plan base.
The panel total looks stale after a member change. Seat quantities reconcile on every membership mutation and on an hourly sweep. If a transient Stripe push failed, the database figure stays accurate and the next sweep retries; reload the page to re-fetch the server-computed summary.
Edit a plan’s included seats
Section titled “Edit a plan’s included seats”An instance admin sets each billing plan’s included-seat quota — the pool a subscriber gets before overage seats bill — in the admin Plans tab.
- Open Settings → Admin → Plans. Each plan has an Included seats column.
- Enter a whole number for a finite pool, or
unlimitedfor a pool that never overflows. - Save.
The quota is the plan’s users.max feature. The value must be a non-negative
whole number or the literal unlimited — decimals, negatives and other strings
are rejected. The seat and € figures the seat-billing panel shows stay coherent
with the deployment edition; an Enterprise-edition instance grants entitlements by
edition, so a per-plan pool there is informational rather than billed.