Skip to main content
A Plan defines how customers buy a product. It controls pricing, billing cadence, availability, tax behavior, checkout fields, and purchase visibility. Use the Plans API to create plans for products, list existing plans, retrieve or update plan configuration, calculate tax for checkout, and delete plans that should no longer be offered.

Endpoints

Attributes

string
required
Plan ID, prefixed plan_.
object | null
required
Account that sells this plan; null for standalone invoice plans.
boolean
required
Whether adaptive pricing is enabled for this plan. Raw setting — does not check processor compatibility or feature flags.
number | null
required
Number of days between recurring charges, such as 30 for monthly or 365 for annual. null for one-time plans.
number | null
required
Billing intervals the cancellation discount applies to (0 forever, 1 first payment, or a month count). null when none is offered or the actor lacks the plan:basic:read scope.
number | null
required
Cancellation discount as a whole-number percentage. null when none is offered or the actor lacks the plan:basic:read scope.
object | null
required
Plan-level checkout styling (background_color, button_color, font_family, border_style); null inherits the account default.
boolean
required
Whether tax is collected on purchases of this plan, based on the account’s tax configuration.
string
required
When the plan was created, as an ISO 8601 timestamp.
string
required
Three-letter ISO currency code for this plan’s prices.Available options: usd, sgd, inr, aud, brl, cad, dkk, eur, nok, gbp, sek, chf, hkd, huf, jpy, mxn, myr, pln, czk, nzd, aed, eth, ape, cop, ron, thb, bgn, idr, dop, php, try, krw, twd, vnd, pkr, clp, uyu, ars, zar, dzd, tnd, mad, kes, kwd, jod, all, xcd, amd, bsd, bhd, bob, bam, khr, crc, xof, egp, etb, gmd, ghs, gtq, gyd, ils, jmd, mop, mga, mur, mdl, mnt, nad, ngn, mkd, omr, pyg, pen, qar, rwf, sar, rsd, lkr, tzs, ttd, uzs, rub, btc, cny, usdt, kzt, awg, whop_usd, xau
object[]
required
Custom input fields collected on the checkout form.

Properties

string
required
Custom field ID, prefixed field_.
string
required
Custom field input type.Available options: text
string
required
Field label shown to customer at checkout.
number
required
Field position on checkout form.
string | null
required
Placeholder text shown in the empty field. null if none is set.
boolean
required
Whether the customer must complete this field to check out.
boolean | null
required
Whether the plan can be deleted (it has no memberships or waitlist entries). null unless the actor has the plan:basic:read scope on the plan’s account.
string | null
required
Customer-visible plan description. Maximum 1000 characters. null if no description is set.
number | null
required
Access duration in days for expiration-based plans, such as 365 for a one-year pass. null for plans without an expiration.
string
required
Human-readable price for display (currency + interval), e.g. “$10 / month”.
object | null
required
Pricing-tier image (url, blurhash) shown on the product page; null when no image is set.
number
required
Initial purchase price in plan currency.
string | null
required
Private notes not shown to customers. null unless the actor has the plan:basic:read scope on the plan’s account.
object | null
required
Invoice this plan was generated for; null unless created for an invoice.
number | null
required
Active memberships through this plan. null unless the actor has the plan:basic:read scope on the plan’s account.
object | null
required
Custom key-value pairs stored on the plan. Included in webhook payloads for payment and membership events. Maximum 50 keys, 100 characters per key, 500 characters per value.
boolean | null
required
Whether a cancellation discount is offered. null unless the actor has the plan:basic:read scope on the plan’s account.
object | null
required
Payment method configuration (enabled, disabled, include_platform_defaults); null when plan uses default settings.
string
required
Billing model for this plan.Available options: renewal, one_time
object | null
required
Product this plan belongs to; null for standalone plans.
string
required
URL where customers can purchase this plan directly.
string
required
Sales method for this plan.Available options: buy_now, waitlist
number
required
Recurring price charged every billing period.
number | null
required
Installment payments required before the subscription pauses. Must be greater than 1. null if split pay is not configured.
number | null
required
Units available for purchase. null unless the actor has the plan:basic:read scope on the plan’s account.
number | null
required
Original initial price shown with a strikethrough, in the plan’s currency. null when no strikethrough is set.
number | null
required
Original renewal price shown with a strikethrough, in the plan’s currency. null when no strikethrough is set.
string
required
How tax is handled for this plan, including whether tax is included in the price, added at checkout, or not configured.Available options: inclusive, exclusive, unspecified
string | null
required
3D Secure behavior for this plan; null inherits the account default.Available options: mandate_challenge, frictionless
string | null
required
Plan display name shown to customers. Maximum 30 characters. null if no title has been set.
number | null
required
Free trial days before the first renewal charge. null if no trial is configured or the user has already used a trial for this plan.
boolean
required
Whether the plan has unlimited stock. When true, the stock field is ignored; waitlist plans always report true.
string
required
When the plan was last updated, as an ISO 8601 timestamp.
string
required
Controls where this plan can be seen. When hidden, the plan is reachable only by its direct link.Available options: visible, hidden, archived, quick_link
Plan