Skip to main content
GET
/
plans
/
{id}
Retrieve Plan
curl --request GET \
  --url https://{defaultHost}/plans/{id} \
  --header 'Authorization: Bearer <token>'
{
  "id": "<string>",
  "created_at": "<string>",
  "updated_at": "<string>",
  "account": {},
  "product": {},
  "invoice": {},
  "billing_period": 123,
  "title": "<string>",
  "description": "<string>",
  "purchase_url": "<string>",
  "expiration_days": 123,
  "initial_price": 123,
  "renewal_price": 123,
  "trial_period_days": 123,
  "member_count": 123,
  "internal_notes": "<string>",
  "metadata": {},
  "stock": 123,
  "unlimited_stock": true,
  "split_pay_required_payments": 123,
  "adaptive_pricing_enabled": true,
  "payment_method_configuration": {},
  "tax_type": "<string>",
  "collect_tax": true,
  "custom_fields": "<array>"
}

Authorizations

Authorization
string
header
required

A company API key, company scoped JWT, app API key, or user OAuth token.

Headers

Api-Version-Date
string<date>

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.

Example:

"2026-06-09"

Path Parameters

id
string
required

The unique identifier of the plan, which will look like plan_*************.

Response

plan retrieved

id
string
required

The ID of the plan, which will look like plan_*************

created_at
string
required

When the plan was created, as an ISO 8601 timestamp

updated_at
string
required

When the plan was last updated, as an ISO 8601 timestamp

visibility
enum<string>
required

Whether the plan is visible to customers or hidden from public view

Available options:
visible,
hidden,
archived,
quick_link
plan_type
enum<string>
required

The billing model for this plan: 'renewal' for recurring subscriptions or 'one_time' for single payments

Available options:
renewal,
one_time
release_method
enum<string>
required

The method used to sell this plan, e.g. 'buy_now' or 'waitlist'

Available options:
buy_now,
waitlist
currency
enum<string>
required

The three-letter ISO currency code all prices on this plan are denominated in

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
account
object
required

The account that sells this plan, an object with an id and title. Null for standalone invoice plans

product
object
required

The product this plan belongs to, an object with an id and title. Null for standalone plans

invoice
object
required

The invoice this plan was generated for, an object with an id. Null unless the plan was created for an invoice

billing_period
number | null
required

The number of days between recurring charges. Null for one-time plans

title
string | null
required

The display name of the plan shown to customers

description
string | null
required

A text description of the plan visible to customers

purchase_url
string
required

The full URL where customers can purchase this plan directly

expiration_days
number | null
required

The number of days until the membership expires, for expiration-based plans

initial_price
number
required

The initial purchase price in the plan's currency

renewal_price
number
required

The recurring price charged every billing period in the plan's currency

trial_period_days
number | null
required

The number of free trial days before the first charge on a recurring plan

three_ds_level
enum<string> | null
required

The 3D Secure behavior for this plan. Null means the plan inherits the account default

Available options:
mandate_challenge,
frictionless
member_count
number | null
required

The number of active memberships on this plan. Only visible to authorized team members

internal_notes
string | null
required

Private notes visible only to authorized team members

metadata
object
required

Custom key-value pairs stored on the plan

stock
number | null
required

The number of units available for purchase. Only visible to authorized team members

unlimited_stock
boolean
required

Whether the plan has unlimited stock

split_pay_required_payments
number | null
required

The number of installment payments required before the subscription pauses

adaptive_pricing_enabled
boolean
required

Whether this plan accepts local currency payments via adaptive pricing

payment_method_configuration
object
required

The explicit payment method configuration for the plan, an object with enabled, disabled and include_platform_defaults. Null if the plan uses default settings

tax_type
string
required

How tax is handled for this plan: 'inclusive', 'exclusive', or 'unspecified'

collect_tax
boolean
required

Whether tax is collected on purchases of this plan

custom_fields
array
required

Custom input fields displayed on the checkout form, objects with id, field_type, name, order, placeholder and required