SIGN IN SIGN UP

feat(billing): purchase a seat from the invite flow (#7538)

* feat(billing): purchase seats from full invite flow

* fix(billing): harden full-capacity invite flow

* fix(billing): explain overcommit with cloud seat occupancy

Cloud refuses a reserve on used + reserved, but the overcommit toast filled
members_over_capacity_description with the product member count. The most
common trigger is a first ledger snapshot whose members alone still fit
inside the purchased seats, so the message read "3 members but only 3
purchased seats" and did not explain the rejection.

Add occupancy_over_capacity_description, which names occupied seats,
purchased seats, members and pending invitations, and feed it from the
Cloud summary. members_over_capacity_description stays as-is: the billing
tab banner is genuinely member-count driven.
L
LinYushen committed
60a55ec57b7ba1c9538c5ff438dbde5c1c91792f
Parent: 617d416
Committed by GitHub <noreply@github.com> on 8/25/2026, 9:19:46 AM