Get Subscription
GET/subscriptions/:idDescription
Retrieve the current state of an on-chain subscription, including the on-chain subscriber address, the contract address on the chosen chain, and rolling state used for charge scheduling (next_charge_at, charge_nonce).
Headers
| Header | Description | Required |
|---|---|---|
| Authorization | Bearer token with your API key | yes |
Path Parameters
| Name | Type | Description | Required |
|---|---|---|---|
| id | string | The on-chain subscription ID (bytes32 hex, e.g. `0x9f3a...`). Obtain it from `GET /subscriptions`, the `subscription.created` webhook, or the `subscription_checkout.completed` webhook. | yes |
Example Request
const response = await fetch('https://checkout-api.exodus-int.com/subscriptions/0x9f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a', {
headers: {
Authorization: 'Bearer sk_live_xxxxxxxxxxxxxxxx',
},
});Response
SUCCESSFUL RESPONSE
{
"object": "subscription",
"id": "0x9f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a",
"status": "active",
"subscriber": "0x742d35Cc6634C0532925a3b844Bc9e7595f8fE21",
"token": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"cap_amount": "120000000",
"period_duration": 2592000,
"last_charged_at": "2026-04-19T12:02:18Z",
"next_charge_at": "2026-05-19T12:02:18Z",
"charge_nonce": 3,
"paused": false,
"created_at": "2026-02-19T12:02:18Z",
"subscription_manager_address": "0xA1B2C3D4E5F6789012345678901234567890ABCD",
"chain": "eip155:1",
"cancel_url": "https://merchant.com/cancelled",
"subscription_checkout_id": "schk_1234567890abcdef",
"flagged": false
}Field reference
| Field | Description |
|---|---|
id | The on-chain subscriptionId (bytes32 hex). This is the subscription’s id. Pass it to all signing helpers and as the :id path param on every action endpoint. |
token | ERC-20 token contract address on chain. |
subscription_manager_address | Contract address on chain. Pass to signCharge and signCancelSubscription. |
chain | CAIP-2 identifier (e.g. eip155:1). Pass to all signing helpers. |
flagged | Compliance screening flag. When true, the API blocks charges on this subscription. |
charge_nonce | Pre-increment nonce consumed by charge. Pass to the next call to signCharge. Advances by 1 after every on-chain charge call (succeeded or failed). |
paused | In-band sub-state of active. true after a subscriber-fault revert (InsufficientBalance, InsufficientAllowance) or any receipt revert; the scheduler skips charges while true. Cleared on the next successful charge. |
last_charged_at | Block timestamp of the most recent successful cycle charge. null until first charge confirms. |
next_charge_at | Block timestamp at which the next cycle charge becomes eligible. Calls to charge before this revert with PeriodNotElapsed. |
The subscription carries no stored charge amount — the per-cycle amount is dynamic. Fetch it from POST /subscriptions/:id/charge-quote; for FIAT-denominated plans the price and price_currency live on the originating subscription checkout.
Errors
| Status | Code | Description |
|---|---|---|
| 404 | not_found | Subscription ID does not exist. |
| 403 | forbidden | Subscription belongs to another merchant. |
