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>",
  "visibility": "visible",
  "plan_type": "renewal",
  "release_method": "buy_now",
  "currency": "usd",
  "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,
  "three_ds_level": "mandate_challenge",
  "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": "inclusive",
  "collect_tax": true,
  "custom_fields": [
    {
      "id": "<string>",
      "field_type": "text",
      "name": "<string>",
      "order": 123,
      "placeholder": "<string>",
      "required": true
    }
  ]
}

Authorizations

Authorization
string
header
required

An account API key, account 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-20"

Path Parameters

id
string
required

Plan ID, prefixed plan_.

Response

plan retrieved

id
string
required

Plan ID, prefixed 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
Example:

"visible"

plan_type
enum<string>
required

Billing model for this plan: renewal (recurring) or one_time (single payment).

Available options:
renewal,
one_time
Example:

"renewal"

release_method
enum<string>
required

Sales method for this plan, such as buy_now or waitlist.

Available options:
buy_now,
waitlist
Example:

"buy_now"

currency
enum<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
Example:

"usd"

account
object
required

Account that sells this plan; null for standalone invoice plans.

product
object
required

Product this plan belongs to; null for standalone plans.

invoice
object
required

Invoice this plan was generated for; null unless created for an invoice.

billing_period
number | null
required

Recurring billing interval in days, such as 30 for monthly or 365 for annual. null for one-time plans.

title
string | null
required

Plan display name shown to customers.

description
string | null
required

Customer-visible plan description.

purchase_url
string
required

URL where customers can purchase this plan directly.

expiration_days
number | null
required

Access duration in days for expiration-based plans.

initial_price
number
required

Initial purchase price in plan currency.

renewal_price
number
required

Recurring price charged every billing period.

trial_period_days
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.

three_ds_level
enum<string> | null
required

3D Secure behavior for this plan; null inherits account default.

Available options:
mandate_challenge,
frictionless,
null
Example:

"mandate_challenge"

member_count
number | null
required

Active memberships through this plan, when visible to the requester.

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

Units available for purchase, when visible to the requester.

unlimited_stock
boolean
required

Whether the plan has unlimited stock.

split_pay_required_payments
number | null
required

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

Payment method configuration (enabled, disabled, include_platform_defaults); null when plan uses default settings.

tax_type
enum<string>
required

How tax is handled for this plan.

Available options:
inclusive,
exclusive,
unspecified
Example:

"inclusive"

collect_tax
boolean
required

Whether tax is collected on purchases of this plan.

custom_fields
object[]
required