List a merchant's subscriptions
GET/merchants/{merchantId}/subscriptionsRetrieve a paginated list of a merchant's subscriptions, most recent first. Filter by status, paused state, and chain.
Headers
| Header | Description | Required |
|---|---|---|
| Authorization | Bearer token with your secret API key | yes |
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| merchantId | string | yes |
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| chain | string | — | |
| status | enum: active | cancelled | — | |
| paused | enum: true | false | — | |
| limit | integer | — | |
| starting_after | string | — | |
| ending_before | string | — |
Example Request
Request
const response = await fetch('https://checkout-api.exodus-int.com/merchants/<merchantId>/subscriptions?chain=<chain>&status=active&paused=true&limit=50&starting_after=<starting_after>&ending_before=<ending_before>', {
method: 'GET',
headers: {
Authorization: 'Bearer sk_live_xxxxxxxxxxxxxxxx',
},
});Responses
| Status | Description |
|---|---|
| 200 | A paginated list of subscriptions. |
| 400 | Validation error |
| 401 | Missing or invalid authentication |
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 | yes | |
| id | string | yes | |
| subscriber | string | yes | |
| asset | string | yes | |
| token_symbol | string | yes | |
| token_decimals | number | yes | |
| cap_amount | string | yes | |
| price | string | yes | |
| price_currency | string | null | yes | |
| period_duration | number | yes | |
| last_charged_at | string | null | yes | |
| next_charge_at | string | null | yes | |
| charge_nonce | number | yes | |
| status | enum: active | cancelling | cancelled | yes | |
| paused | boolean | yes | |
| flagged | boolean | yes | |
| budget | string | null | yes | |
| spent_this_period | string | null | yes | |
| remaining_budget | string | null | yes | |
| created_at | string | yes |
Example Response
{
"object": "list",
"data": [
{
"object": "subscription",
"id": "0x9f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a",
"subscriber": "0x742d35Cc6634C0532925a3b844Bc9e7595f8fE21",
"asset": "eip155:1/erc20:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"token_symbol": "USDC",
"token_decimals": 6,
"cap_amount": "120000000",
"price": "9990000",
"price_currency": null,
"period_duration": 2592000,
"last_charged_at": "2026-04-19T12:02:18Z",
"next_charge_at": "2026-05-19T12:02:18Z",
"charge_nonce": 3,
"status": "active",
"paused": false,
"flagged": false,
"budget": "300000000",
"spent_this_period": "29970000",
"remaining_budget": "270030000",
"created_at": "2026-02-19T12:02:18Z"
}
],
"has_more": false
}Error Response
Error (e.g. 400)
{
"error": {
"type": "validation_error",
"message": "amount must be a positive number",
"param": "amount"
}
}