In addition to usage-based billing, Schematic enables you to implement seat-based billing models, with the ability to:
The 2 most common pricing models for seat-based billing are Pay in advance and Overage.
Traditionally, pay in advance models have been the most common pricing model for seat-based billing. In pay in advance models, customers purchase a number of seats up front, and then can use them as needed. If a customer has hit their limit and requires more seats, they must complete a checkout flow to purchase additional seats.
Recently, overage models have become more common for seat-based billing. In overage models, customers are charged a per-seat price for each seat they use beyond the base number of seats included in the plan. Instead of requiring a checkout flow to purchase additional seats, customers simply use as many seats as they need, and are charged accordingly at the end of the billing period. The lower friction to add seats has made this popular for products like Figma.
Seat-based billing in Schematic is implemented using trait-based entitlements. A trait tracks the current number of seats in use for each company, and Schematic compares that value against the entitlement limit to determine whether to enable or disable the corresponding feature flag.
seats_used).seats_allocated), which is useful when seat counts are negotiated per customer.To let Schematic know how many seats a company is currently using, upsert the trait value on the company profile whenever a seat is added or removed:
You don’t have to report seat usage to Schematic to use entitlements. If you manage seat counts in your own system, you can check the entitlement limit directly and enforce access without sending usage to Schematic. However, reporting usage to Schematic enables usage visibility in the Schematic UI and powers usage reporting features.
Checking whether a company has available seats works the same as any other feature flag check. Schematic evaluates the current trait value against the entitlement limit automatically. The flag returns true when seat usage is below the limit and false when usage meets or exceeds it.
Because seat types are modeled as individual trait-based features, you can support multiple seat types within the same plan. For example, a plan could have separate entitlements for editor_seats and viewer_seats, each with its own limit and usage trait. Each seat type gets its own feature flag, and you report usage separately for each trait.
Overrides work on seat-based entitlements. If a specific company needs a different seat limit than their plan provides (for example, a customer negotiated extra seats mid-cycle), you can set a company-level override without changing the plan.