Skip to main content
A plan is what a customer sees on their billing page: a name, a short list of features, and the product it bills monthly, yearly, or both. Prices are read live from those products, so changing a product’s price changes every plan that uses it. A plan holds no money state. It decides what the page offers; Stripe still holds what each customer pays. A plan is named by its key: lowercase letters, digits and dashes, up to 40 characters (growth, pro-annual). A workspace holds up to 12 plans.

The Plan object

monthly and yearly carry the product’s live price and its Stripe state. A plan whose product reads out_of_sync would charge a different amount than it shows; push the price from Revenue › Billing page or by saving the product again.

Create a plan

POST /v1/plans
string
required
Unique in the workspace.
string
required
Up to 80 characters.
string
Up to 280 characters.
string[]
Up to 12 lines, each up to 120 characters.
boolean
Marks the plan as the one to pick.
string
The button’s words. "" uses “Switch to” and the plan’s name.
integer
0 to 90. Applies when a customer with no subscription chooses this plan.
string
The product billed monthly, by id or exact name. It must be a monthly, unmetered product. "" clears it.
string
The product billed yearly, the same way.
string
An https link shown instead of a switch button. "" clears it.
A plan needs at least one of monthlyProduct, yearlyProduct or contactSalesUrl.

Change, remove and order plans

PATCH /v1/plans/{key} takes the same fields, all optional; omitted fields stay as they are. DELETE /v1/plans/{key} removes the plan from the page and returns {deleted: true}. Customers already on it keep their Stripe subscription. POST /v1/plans/order takes every plan’s key, once, in the order customers see them:

Errors

See Errors for the HTTP status each code maps to.