Update Plan
Update a plan’s pricing, billing interval, visibility, stock, and other settings.
Authorizations
An account API key, account scoped JWT, app API key, or user OAuth token.
Headers
Pins the request to a dated API version. When omitted, the request uses the original (2025-01-01) request/response shapes, so existing unversioned callers are never broken. Generated SDKs always send the latest version they were built against. An unrecognized value is rejected with a 400. The schemas documented here always describe the latest version.
"2026-06-20"
Path Parameters
Plan ID, prefixed plan_.
Body
Whether to offer a retention discount when a customer attempts to cancel.
A comparison price displayed with a strikethrough for the initial price.
A comparison price displayed with a strikethrough for the renewal price.
Whether this plan accepts local currency payments via adaptive pricing.
Recurring billing interval in days, such as 30 for monthly or 365 for annual.
Checkout styling overrides for this plan.
The three-letter ISO currency code for the plan's pricing. Defaults to USD.
An array of custom field definitions to collect from customers at checkout. Omitting this field clears existing custom fields.
A text description of the plan displayed to customers on the product page.
Access duration in days before the membership expires.
An image displayed on the product page to represent this plan.
Initial amount charged in the plan's currency, e.g. 10.43 for $10.43.
Private notes visible only to the account owner. Not shown to customers.
Whether this plan uses legacy payment method controls.
Custom key-value pairs to store on the plan. Included in webhook payloads for payment and membership events. Max 50 keys, 100 chars per key, 500 chars per string value.
Override the default tax classification for this specific plan.
Explicit payment method configuration for the plan. When not provided, the account's defaults apply.
The amount charged each billing period for recurring plans, in the plan's currency.
The maximum number of units available for purchase. Ignored when unlimited_stock is true.
3D Secure behavior for this plan. Send null to inherit the account default.
mandate_challenge, frictionless The display name of the plan shown to customers on the product page.
Free trial duration before the first recurring charge.
Whether the plan has unlimited stock. When true, the stock field is ignored.
Whether the plan is visible to customers or hidden from public view.
Response
plan updated
Plan ID, prefixed plan_.
When the plan was created, as an ISO 8601 timestamp.
When the plan was last updated, as an ISO 8601 timestamp.
Whether the plan is visible to customers or hidden from public view.
visible, hidden, archived, quick_link "visible"
Billing model for this plan: renewal (recurring) or one_time (single payment).
renewal, one_time "renewal"
Sales method for this plan, such as buy_now or waitlist.
buy_now, waitlist "buy_now"
Three-letter ISO currency code for this plan's prices.
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 "usd"
Account that sells this plan; null for standalone invoice plans.
Product this plan belongs to; null for standalone plans.
Invoice this plan was generated for; null unless created for an invoice.
Recurring billing interval in days, such as 30 for monthly or 365 for annual. null for one-time plans.
Plan display name shown to customers.
Customer-visible plan description.
URL where customers can purchase this plan directly.
Access duration in days for expiration-based plans.
Initial purchase price in plan currency.
Recurring price charged every billing period.
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.
3D Secure behavior for this plan; null inherits account default.
mandate_challenge, frictionless, null "mandate_challenge"
Active memberships through this plan, when visible to the requester.
Private notes visible only to authorized team members.
Custom key-value pairs stored on the plan.
Units available for purchase, when visible to the requester.
Whether the plan has unlimited stock.
Installment payments required before the subscription pauses.
Whether this plan accepts local currency payments via adaptive pricing.
Payment method configuration (enabled, disabled, include_platform_defaults); null when plan uses default settings.
How tax is handled for this plan.
inclusive, exclusive, unspecified "inclusive"
Whether tax is collected on purchases of this plan.

