When we started Commet, we made a few decisions optimized purely for time-to-market.
One of them was our original model: Events → Products → Subscriptions.
It's the default model for classic PSPs (Stripe, Lemon Squeezy, Nuvei, etc.). It makes sense for their era and for the type of customers they were built for.
But it didn't make sense for our users.
Commet powers subscriptions for AI and SaaS tools with usage-based pricing. So we rebuilt the model from the ground up.
(Decker, our CTO, wrote a deep-dive on this change if you want the full reasoning.)
New Entities
This redesign introduced two entities we didn't have before:
- Features
- Plans
Features
Features are the atomic building blocks of a pricing model. They represent capabilities a user can access:
- Boolean features: Custom Branding, SSO, API Access
- Metered features: API Calls, Emails Sent, Storage Used
- Seat features: Team Members, Admin Users, Editor Seats
Plans
Plans are reusable bundles of features with a price per billing period. You can assign the same plan to N customers without redefining anything.
A subscription now exists only as the result of assigning a Plan to a Customer.
The new model is: Features → Plans → Subscriptions

SDK Changes
Features
The Feature model lets us:
Check whether a specific user has access to a feature
const { data } = await commet.features.canUse('team_members', 'user_123')
if (!data.allowed) {
return { error: 'Upgrade to add more members' }
}
if (data.willBeCharged) {
// Show overage confirmation
}Check usage and remaining availability for any metered feature
const feature = await commet.features.get('team_members', 'user_123')Subscriptions
To create a subscription, you now pass the plan code directly into the subscription method.
const subscription = await commet.subscriptions.create({
customerId: 'user_123',
planCode: 'pro',
})
redirect(subscription.data.checkoutUrl)Conclusion
We can now support our users' pricing models much more effectively.
Plans are easier to create, easier to manage, and scale cleanly as your product grows.