The Subscription Plans API returns the plan catalogue โ the recurring billing configurations available. For customer-scoped subscription mandates, see Customers โ Subscriptions.
All endpoints require the subscription-plans:read scope.
List subscription plans
GET /subscription-plans
Returns all subscription plans for the company. Deleted plans are excluded.
No pagination โ subscription plans are a small catalogue.
Example response
{
"data": [
{
"id": "plan_5",
"type": "subscription_plan",
"name": "Monthly Unlimited",
"state": "ACTIVE",
"term_days": 30,
"pricing": {
"initial_base100": 2999,
"recurring_base100": 2999
},
"renews_on_expire": true,
"associated_pass": {
"id": "pass_10",
"type": "pass_template",
"name": "Monthly Pass"
},
"modified": "2025-06-15T10:00:00"
}
]
}
Get a single subscription plan
GET /subscription-plan/{id}
Retrieve a single subscription plan by ID. Returns the plan regardless of state (when requested by ID explicitly).
Path parameters
| Parameter | Type | Description |
|---|---|---|
id | string | Plan ID (e.g. plan_5) |
Example response
{
"data": {
"id": "plan_5",
"type": "subscription_plan",
"name": "Monthly Unlimited",
"state": "ACTIVE",
"term_days": 30,
"pricing": {
"initial_base100": 2999,
"recurring_base100": 2999
},
"renews_on_expire": true,
"associated_pass": {
"id": "pass_10",
"type": "pass_template",
"name": "Monthly Pass"
},
"modified": "2025-06-15T10:00:00"
}
}
Error responses
| Status | Condition |
|---|---|
| 403 | Missing subscription-plans:read scope |
| 404 | Plan ID does not exist for this company |
Field reference
| Field | Type | Description |
|---|---|---|
id | string | Prefixed plan ID (e.g. plan_5) |
type | string | Always "subscription_plan" |
name | string | Plan name |
state | string | Plan state: "PENDING_SETUP", "ACTIVE", "PAUSED", or "SUSPENDED" |
term_days | number | Billing cycle length in days |
pricing.initial_base100 | number | Initial price in smallest currency unit (e.g. 2999 = 29.99) |
pricing.recurring_base100 | number | Recurring price in smallest currency unit |
renews_on_expire | boolean | Whether the plan auto-renews when the term expires |
associated_pass | object or null | The pass template granted on each renewal, or null if no pass is associated |
associated_pass.id | string | Prefixed pass ID (e.g. pass_10) |
associated_pass.type | string | Always "pass_template" |
associated_pass.name | string | Pass template name |
modified | string | ISO 8601 datetime |
Caching
Both endpoints are cached for 5 minutes. See Scopes, Rate Limits, Caching & Errors for details.
