Skip to Content
CheckoutAPI ReferenceReportsExport Subscriptions

Export Subscriptions

GET/reports/subscriptions/export

Description

Export your subscriptions as a CSV file for reconciliation and analysis. Each row represents one subscription. Supports filtering by date range and subscription status.

The response is a text/csv file download. The endpoint is available to both API key holders and dashboard sessions.

Headers

HeaderDescriptionRequired
AuthorizationBearer token with your API key. Required for API key authentication; omit when using dashboard session cookies.no

Query Parameters

NameTypeDescriptionRequired
tostringEnd of date range, inclusive. Format: YYYY-MM-DD. Interpreted as end of day UTC. Filters by subscription creation date.yes
fromstringStart of date range, inclusive. Format: YYYY-MM-DD. Interpreted as start of day UTC. When omitted, no lower date bound is applied. When provided, the range cannot exceed 1 year.no
statusstringFilter by subscription status. Repeatable. Omit to include all statuses. Valid values: active, cancelling, cancelled.no

CSV Columns

ColumnDescription
subscription_idUnique subscription identifier
onchain_idOn-chain subscription identifier
statusSubscription status: active, cancelling, cancelled
pausedWhether the subscription is paused (true/false)
cancel_at_period_endWhether the subscription is set to cancel at the end of the current period (true/false)
subscriberSubscriber wallet address
tokenPayment token symbol (e.g. USDC)
pricePrice per period, in token base units
price_currencyPrice display currency, if set
cap_amountMaximum total spend authorized, in token base units
period_durationBilling period length in seconds
last_charged_atTimestamp of the last charge (ISO 8601)
next_charge_atTimestamp of the next scheduled charge (ISO 8601)
external_customer_idYour external customer identifier, if set
created_atSubscription creation timestamp (ISO 8601)

Example Request

// Export active subscriptions created in 2026
const response = await fetch(
  'https://checkout-api.exodus-int.com/reports/subscriptions/export?from=2026-01-01&to=2026-12-31&status=active',
  {
    headers: {
      Authorization: 'Bearer sk_live_xxxxxxxxxxxxxxxx',
    },
  }
);
 
const csv = await response.text();
// Export all subscriptions with no date lower bound
const response = await fetch(
  'https://checkout-api.exodus-int.com/reports/subscriptions/export?to=2026-12-31',
  {
    headers: {
      Authorization: 'Bearer sk_live_xxxxxxxxxxxxxxxx',
    },
  }
);

Response

SUCCESSFUL RESPONSE (text/csv)
subscription_id,onchain_id,status,paused,cancel_at_period_end,subscriber,token,price,price_currency,cap_amount,period_duration,last_charged_at,next_charge_at,external_customer_id,created_at
0x9f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a,0x9f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a,active,false,false,0x742d35Cc6634C0532925a3b844Bc9e7595f8fE21,USDC,9990000,,120000000,2592000,2026-04-19T12:02:18.000Z,2026-05-19T12:02:18.000Z,cus_42,2026-02-19T12:02:18.000Z

Error Responses

MISSING REQUIRED PARAMETER
{
  "error": {
    "type": "validation_error",
    "message": "to is required (format: YYYY-MM-DD)",
    "param": "to"
  }
}
INVALID DATE FORMAT
{
  "error": {
    "type": "validation_error",
    "message": "Invalid date format. Use YYYY-MM-DD",
    "param": "from"
  }
}
INVALID DATE RANGE
{
  "error": {
    "type": "validation_error",
    "message": "from must be before to",
    "param": "from"
  }
}
DATE RANGE EXCEEDS 1 YEAR
{
  "error": {
    "type": "validation_error",
    "message": "Date range cannot exceed 1 year. For larger exports, contact support.",
    "param": "to"
  }
}
UNAUTHENTICATED
{
  "error": {
    "type": "authentication_error",
    "message": "Authentication required"
  }
}

Start building

XO

Request Demo

Schedule a call with our team

Select a product
Arrow right

Start building
Grateful

Contact Us

We're here to help