Legacy subscription model, replaced by GET /billing/plans and GET /billing/plan/current. Lists the legacy Stripe plans with prices and which one is current, plus the attached payment method, the upcoming invoice (null without a subscription) and billingAlert (null when billing is healthy, otherwise the past-due and blocked state). Requires an org admin, owner or billing role.
GET
/payments/plans
curl \
--request GET 'http://api.example.com/payments/plans' \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "organization: string"
Response examples (200)
{
"data": {
"data": [
{
"id": "prod_Example",
"active": true,
"attributes": [
"string"
],
"created": 1736935500,
"default_price": {
"id": "price_1PExample",
"active": true,
"billing_scheme": "per_unit",
"created": 1736935500,
"currency": "usd",
"custom_unit_amount": {},
"livemode": false,
"lookup_key": "firm_monthly",
"metadata": {},
"type": "recurring",
"unit_amount": 24900,
"unit_amount_decimal": "24900"
},
"features": [
{
"name": "Unlimited seats"
}
],
"livemode": false,
"metadata": {
"plan": "firm"
},
"name": "Firm",
"tax_code": {},
"unit_label": {},
"url": {},
"isPayAsYouGo": false,
"isCurrentPlan": true
}
],
"attachedPaymentMethod": {
"id": "pm_1PExample",
"type": "card",
"card": {
"brand": "visa",
"last4": "4242",
"exp_month": 4,
"exp_year": 2030
}
},
"upcomingInvoice": {
"account_country": "US",
"account_name": "Acme Legal",
"amount_due": 24900,
"amount_paid": 0,
"amount_remaining": 24900,
"attempted": false,
"billing_reason": "upcoming",
"collection_method": "charge_automatically",
"created": 1736935500,
"currency": "usd",
"customer_address": {},
"customer_email": "billing@example.com",
"customer_name": "Acme Legal",
"customer_phone": "string",
"description": "string",
"discount": {},
"discounts": [
"string"
],
"due_date": {},
"livemode": false,
"period_end": 1739613900,
"period_start": 1736935500,
"status": "draft",
"subtotal": 24900,
"subtotal_excluding_tax": 24900,
"tax": 0,
"total": 24900,
"total_discount_amounts": [
{}
],
"total_excluding_tax": 24900,
"total_tax_amounts": [
{}
],
"lines": [
{
"id": "il_1PExample",
"amount": 24900,
"amount_excluding_tax": 24900,
"currency": "usd",
"description": "1 x Firm (at $249.00 / month)",
"discount_amounts": [
{}
],
"discountable": true,
"discounts": [
"string"
],
"livemode": false,
"metadata": {},
"period": {
"start": 1736935500,
"end": 1739613900
},
"product_lookup_description": "Subscription",
"plan": {
"id": "prod_Example",
"active": true,
"attributes": [
"string"
],
"created": 1736935500,
"default_price": {
"id": "price_1PExample",
"active": true,
"billing_scheme": "per_unit",
"created": 1736935500,
"currency": "usd",
"custom_unit_amount": {},
"livemode": false,
"lookup_key": "firm_monthly",
"metadata": {},
"type": "recurring",
"unit_amount": 24900,
"unit_amount_decimal": "24900"
},
"features": [
{
"name": "Unlimited seats"
}
],
"livemode": false,
"metadata": {
"plan": "firm"
},
"name": "Firm",
"tax_code": {},
"unit_label": {},
"url": {},
"isPayAsYouGo": false,
"isCurrentPlan": true
},
"price": {
"id": "price_1PExample",
"active": true,
"billing_scheme": "per_unit",
"created": 1736935500,
"currency": "usd",
"custom_unit_amount": {},
"livemode": false,
"lookup_key": "firm_monthly",
"metadata": {},
"type": "recurring",
"unit_amount": 24900,
"unit_amount_decimal": "24900"
},
"quantity": 1,
"unit_amount_excluding_tax": 24900
}
]
},
"currentPlan": {
"id": "prod_Example",
"active": true,
"attributes": [
"string"
],
"created": 1736935500,
"default_price": {
"id": "price_1PExample",
"active": true,
"billing_scheme": "per_unit",
"created": 1736935500,
"currency": "usd",
"custom_unit_amount": {},
"livemode": false,
"lookup_key": "firm_monthly",
"metadata": {},
"type": "recurring",
"unit_amount": 24900,
"unit_amount_decimal": "24900"
},
"features": [
{
"name": "Unlimited seats"
}
],
"livemode": false,
"metadata": {
"plan": "firm"
},
"name": "Firm",
"tax_code": {},
"unit_label": {},
"url": {},
"isPayAsYouGo": false,
"isCurrentPlan": true
},
"billingAlert": {
"pastDue": true,
"graceUntil": "2026-01-22T10:15:00.000Z",
"blocked": false
}
},
"statusCode": 200,
"timestamp": "2026-01-15T10:15:00.000Z"
}