List subscription checkouts
GET/subscription-checkoutsRetrieve a paginated list of subscription checkout intents, most recent first. Filter by status, subscriber, chain, and creation-date range.
Headers
| Header | Description | Required |
|---|---|---|
| Authorization | Bearer token with your secret API key | yes |
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| limit | integer | — | Rows per page, 1 to 100. Defaults to 50. Values outside the range are rejected rather than clamped. |
| starting_after | string | — | Cursor for forward pagination: an object id from a previous page. Returns results after it. Mutually exclusive with ending_before; sending both is a 400. |
| ending_before | string | — | Cursor for backward pagination: an object id from a previous page. Returns results before it. Mutually exclusive with starting_after; sending both is a 400. |
| status | enum: pending | completed | expired | cancelled | — | |
| subscriber | string | — | |
| external_customer_id | string | — | |
| chain | string | — | |
| created_gte | string · date-time | — | |
| created_lte | string · date-time | — |
Example Request
Request
const response = await fetch('https://checkout-api.exodus-int.com/subscription-checkouts?limit=50&starting_after=<starting_after>&ending_before=<ending_before>&status=pending&subscriber=<subscriber>&external_customer_id=<external_customer_id>&chain=<chain>&created_gte=<created_gte>&created_lte=<created_lte>', {
method: 'GET',
headers: {
Authorization: 'Bearer sk_live_xxxxxxxxxxxxxxxx',
},
});Responses
| Status | Description |
|---|---|
| 200 | A paginated list of subscription checkouts. |
| 400 | Validation error |
| 401 | Missing or invalid authentication |
| 403 | API key lacks the required scope |
Response body
| Field | Type | Required | Description |
|---|---|---|---|
| object | enum: list | yes | |
| data | object[] | yes | |
| has_more | boolean | yes |
data
| Field | Type | Required | Description |
|---|---|---|---|
| object | enum: subscription_checkout | yes | |
| id | string | yes | |
| status | enum: pending | completed | expired | cancelled | yes | |
| onchain_id | string | yes | |
| business_name | string | yes | |
| background_color | string | null | yes | |
| primary_color | string | null | yes | |
| subscriber | string | null | yes | |
| external_customer_id | string | null | yes | |
| subscription_options | object[] | yes | Every chain/token combination the subscriber may pick at subscribe time. Always an array -- do not assume a single entry. |
| price | string | yes | The recurring per-cycle amount, in price_currency's minor units. price, cap, and budget share one unit system; fiat figures convert to exact-out token amounts at subscribe/charge time via a quote, never pre-converted here. |
| price_currency | string | null | yes | ISO-4217 pricing currency. Always set on checkouts created after fiat-only creation shipped; null only on legacy rows. |
| period_duration | number | yes | |
| cap | string | null | yes | Per-charge ceiling, same unit system as price. |
| budget | string | yes | Per-window spend ceiling, same unit system as price. |
| initial_charge | boolean | yes | |
| checkout_url | string | yes | |
| success_url | string | null | yes | |
| cancel_url | string | null | yes | |
| return_url | string | null | yes | |
| metadata | object | null | yes | |
| expires_at | string | yes | |
| created_at | string | yes | |
| updated_at | string | yes | |
| completed_at | string | null | yes | |
| cancelled_at | string | null | yes | |
| expired_at | string | null | yes | |
| cancellation_reason | string | null | yes |
subscription_options
| Field | Type | Required | Description |
|---|---|---|---|
| chain | string | yes | |
| token | string | yes | |
| subscription_manager_address | string | yes | |
| relayer_address | string | yes |
Example Response
{
"object": "list",
"data": [
{
"object": "subscription_checkout",
"id": "schk_1234567890abcdef",
"status": "completed",
"onchain_id": "0x9f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a",
"business_name": "Acme Inc",
"background_color": "#0f172a",
"primary_color": "#7c3aed",
"subscriber": "0x742d35Cc6634C0532925a3b844Bc9e7595f8fE21",
"external_customer_id": "cus_42",
"subscription_options": [
{
"chain": "eip155:1",
"token": "USDC",
"subscription_manager_address": "0xa1b2c3d4e5f6789012345678901234567890abcd",
"relayer_address": "0x9a8b7c6d5e4f3a2b1c0d9e8f7a6b5c4d3e2f1a0b"
},
{
"chain": "eip155:137",
"token": "USDC",
"subscription_manager_address": "0xb2c3d4e5f67890123456789012345678901234cd",
"relayer_address": "0x9a8b7c6d5e4f3a2b1c0d9e8f7a6b5c4d3e2f1a0b"
}
],
"price": "250000",
"price_currency": "ARS",
"period_duration": 2592000,
"cap": "1000000",
"budget": "2500000",
"initial_charge": true,
"checkout_url": "https://checkout.exodus-int.com/subscribe/schk_1234567890abcdef",
"success_url": "https://merchant.com/subscribed",
"cancel_url": "https://merchant.com/cancelled",
"return_url": "https://merchant.com/plans/pro",
"metadata": {
"external_plan_ref": "pro_monthly"
},
"expires_at": "2026-05-19T12:05:00Z",
"created_at": "2026-05-19T12:00:00Z",
"updated_at": "2026-05-19T12:02:18Z",
"completed_at": "2026-05-19T12:02:18Z",
"cancelled_at": null,
"expired_at": null,
"cancellation_reason": null
},
{
"object": "subscription_checkout",
"id": "schk_fiat0987654321",
"status": "completed",
"onchain_id": "0x1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b",
"business_name": "Klassly",
"background_color": null,
"primary_color": null,
"subscriber": "0x742d35Cc6634C0532925a3b844Bc9e7595f8fE21",
"external_customer_id": "cus_88",
"subscription_options": [
{
"chain": "eip155:1",
"token": "USDC",
"subscription_manager_address": "0xa1b2c3d4e5f6789012345678901234567890abcd",
"relayer_address": "0x9a8b7c6d5e4f3a2b1c0d9e8f7a6b5c4d3e2f1a0b"
},
{
"chain": "eip155:1",
"token": "USDT",
"subscription_manager_address": "0xa1b2c3d4e5f6789012345678901234567890abcd",
"relayer_address": "0x9a8b7c6d5e4f3a2b1c0d9e8f7a6b5c4d3e2f1a0b"
},
{
"chain": "eip155:137",
"token": "USDC",
"subscription_manager_address": "0xb2c3d4e5f67890123456789012345678901234cd",
"relayer_address": "0x9a8b7c6d5e4f3a2b1c0d9e8f7a6b5c4d3e2f1a0b"
},
{
"chain": "eip155:137",
"token": "USDT",
"subscription_manager_address": "0xb2c3d4e5f67890123456789012345678901234cd",
"relayer_address": "0x9a8b7c6d5e4f3a2b1c0d9e8f7a6b5c4d3e2f1a0b"
}
],
"price": "150000",
"price_currency": "ARS",
"period_duration": 2592000,
"cap": "1500000",
"budget": "1500000",
"initial_charge": true,
"checkout_url": "https://checkout.exodus-int.com/subscribe/schk_fiat0987654321",
"success_url": "https://klassly.com/subscribed",
"cancel_url": "https://klassly.com/cancelled",
"return_url": "https://klassly.com/plans",
"metadata": {
"external_plan_ref": "ars_monthly"
},
"expires_at": "2026-07-10T09:20:42Z",
"created_at": "2026-07-10T09:15:00Z",
"updated_at": "2026-07-10T09:15:42Z",
"completed_at": "2026-07-10T09:15:42Z",
"cancelled_at": null,
"expired_at": null,
"cancellation_reason": null
}
],
"has_more": false
}Error Response
Error (e.g. 400)
{
"error": {
"type": "validation_error",
"message": "starting_after and ending_before are mutually exclusive",
"param": "ending_before"
}
}