- Shipped
- 11 Agosti 2026, 01:38 UTC
- Author
- Kamo
- Commit
- 5fbd628
Who inside an organization may pay Kamo is now answerable and settable. Both routes are org-scoped and therefore deliberately outside /api/billing/accounts/** and its interceptor: "may my staff buy their own seats" has to be answerable before a second account exists, which is exactly when an account-scoped setting cannot help. Reading the policy is open to any member, because the surfaces that hide self-pay controls need the answer and it reveals nothing actionable. Everything that changes who pays for what is owner-only, checked against the database rather than the caller-supplied header. Group creation refuses when the organization has not permitted groups — a group is several people doing what one person may already do, so an organization that has not allowed self-payment has not allowed this either. Under REQUIRES_APPROVAL a group starts unapproved; every other mode has already given blanket permission, so it starts approved. Deleting a group dissolves the naming and never the billing: cancelling what it pays for is a separate, deliberate act. The roster comes from the subscription's own SubscriptionMember rows rather than being duplicated on the group, so a group cannot disagree with the seats it is paying for.