Skip to content

Plans inside your App

How an App gates features, caps usage and counts seats from the customer's plan, and what each screen shows when the plan changes.

Your App reads each Customer's plan before every screen and every call. Lock a feature, cap a count or charge per person on the Offer, and the buttons, limits and invoices follow.

What a plan controls

Every row comes from the Offer the Customer holds. You write no gating code for any of them.

The customer hasThe App showsIt comes from
A feature on a higher planThe button, with a lock and the plan that unlocks itAn Entitlement with no Limit
A capped featureA usage bar, then the upgrade offer at the capAn Entitlement with a Limit, and the Offer's atBound
A per-seat planSeats used and paid, on the members screenThe Offer's seats
A trialDays left, and a button to add a cardThe Offer's trial
A failed renewalA banner to update the card; everything still worksA Subscription in pastDue

The same answer reaches the API and the MCP server, so an agent calling your App meets the same plan as a person clicking it. Checking access covers the check itself.

Lock a feature, cap a count

A feature is a Verb the plan grants. To lock CSV export to pro, grant Collection.export on that Offer with Offer.grant, and leave it off starter.

Show the locked button; never hide it. A locked button with the plan name on it is the cheapest upgrade prompt you have.

A cap is the same grant with a Limit. Give starter ten exports a day and set atBound: upgrade, and the eleventh export offers pro instead of failing. Cap what costs you money, and leave the rest unlimited.

Seats

A per-seat Price counts people. The Offer's seats says how.

seatsHow the count movesUse it for
membersFollows the people in the Customer's Tenant: an invite adds a seat and prorates it inSmall groups that add people as they grow
manualThe buyer sets the quantity; an invite past it asks an admin to buy a seatBuyers who budget by headcount

Charge per seat only when each extra person gets value of their own. Leaseline prices by units managed, not people, because one manager runs 200 units alone. Per seat there would cap its own growth.

When the plan moves

MoveAccessMoney
UpgradeThe new grants work on the next callThe prorated difference, charged at once
DowngradeKeeps the higher plan to the end of the periodThe lower amount from the next period
Past a new capExisting records stay readable; new writes past the Limit get the upgrade offerNone
CancelFull access until the period closesNothing more
A failed chargeFull access while retries runRetried on the dunning schedule

A plan change never deletes a record. Past a new cap, existing records stay readable and only new writes stop.

Next