KamoCRM

The billing door makes a member a licensee before a seat, and reads usage for the org billing rights (SITP TP18)

FeatureSecurityService
Shipped
October 18, 2026 at 7:19 PM UTC
Author
Kamo
Commit
042d239

BillingService's LicenseService.assign refuses anyone who is not already a licensee of the subscription, so the relay's seat assign alone could not seat a new member. POST **************** now relays that one step under the seat-write gate (owner or MANAGE_ORG_BILLING): it always sets isLicensee, and reads the member's current row first so a subscription manager stays one (BillingService's add rewrites both flags); nobody is ever made a manager here. GET **************** and /storage/(summary|history): the organization's metered usage. BillingService answers them from X-Org-Id alone, so this door asks the owner or VIEW_ORG_BILLING / MANAGE_ORG_BILLING. Cost modes and the platform storage views stay unrelayed.

All changes

Like what you see shipping?

All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.

Start Free ForeverView Pricing