Export Payments
GET/reports/payments/exportDescription
Export your payment history as a CSV file. Each row represents one payment and includes the associated checkout’s fiat amount, currency, and customer email. Supports filtering by date range and payment status.
The response is a text/csv file download. The endpoint is available to both API key holders and dashboard sessions.
Headers
| Header | Description | Required |
|---|---|---|
| Authorization | Bearer token with your API key. Required for API key authentication; omit when using dashboard session cookies. | no |
Query Parameters
| Name | Type | Description | Required |
|---|---|---|---|
| to | string | End of date range, inclusive. Format: YYYY-MM-DD. Interpreted as end of day UTC. | yes |
| from | string | Start 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 |
| status | string | Filter by payment status. Repeatable. Omit to include all statuses. Valid values: client_deposit_pending, client_deposit_detected, client_deposit_confirmed, client_deposit_expired, escrow_confirmed, settled, failed, refunded. | no |
CSV Columns
| Column | Description |
|---|---|
| payment_id | Unique payment identifier |
| checkout_id | Associated checkout identifier |
| created_at | Payment creation timestamp (ISO 8601) |
| status | Payment status |
| method | Payment method: DIRECT, TWO_STEP, GRATEFUL |
| token | Crypto token used (e.g. USDC, DAI, USDT) |
| network | Blockchain network (e.g. base, arbitrum, polygon) |
| token_amount | Amount in token units |
| deposit_address | On-chain deposit address |
| payer_address | Payer wallet address |
| on_chain_id | Payment contract on-chain identifier (distinct from transaction hashes such as deploy_tx_hash) |
| checkout_amount | Checkout fiat amount |
| checkout_currency | Checkout fiat currency (e.g. USD, EUR) |
| customer_email | Customer email from the checkout |
Example Request
// Export settled payments from January 2024
const response = await fetch(
'https://checkout.exodus.com/reports/payments/export?from=2024-01-01&to=2024-01-31&status=settled',
{
headers: {
Authorization: 'Bearer sk_live_xxxxxxxxxxxxxxxx',
},
}
);
const csv = await response.text();// Export all payments with no date lower bound
const response = await fetch(
'https://checkout.exodus.com/reports/payments/export?to=2024-12-31',
{
headers: {
Authorization: 'Bearer sk_live_xxxxxxxxxxxxxxxx',
},
}
);// Export multiple statuses
const params = new URLSearchParams({ to: '2024-03-31' });
params.append('status', 'settled');
params.append('status', 'failed');
const response = await fetch(
`https://checkout.exodus.com/reports/payments/export?${params}`,
{
headers: {
Authorization: 'Bearer sk_live_xxxxxxxxxxxxxxxx',
},
}
);Response
SUCCESSFUL RESPONSE (text/csv)
payment_id,checkout_id,created_at,status,method,token,network,token_amount,deposit_address,payer_address,on_chain_id,checkout_amount,checkout_currency,customer_email
pay_abc123,chk_def456,2024-01-15T10:30:00.000Z,settled,DIRECT,USDC,base,120.50,0xDeposit123,0xPayer456,0xTxHash789,120.00,USD,[email protected]
pay_ghi789,chk_jkl012,2024-01-14T09:15:00.000Z,settled,TWO_STEP,DAI,arbitrum,45.00,0xDeposit321,0xPayer654,0xTxHash987,45.00,USD,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"
}
}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"
}
}