List payouts
Refund payouts are included; they carry refund_id.
Authorization
Section titled “Authorization”Send your API key as a bearer token in the Authorization header. Secret API key: Authorization: Bearer ctp_live_sk_…. A publishable key (ctp_…_pk_…) is accepted by these operations only, which serve reference data: getRate, listAssets, listNetworks (each marked x-publishable-key: true). Every other operation refuses it with 403 publishable_key_not_allowed, whatever Origin the request carries: that header binds browsers, not other clients, and nothing on this API relies on it.
Query parameters
Section titled “Query parameters”| Name | Type | Description |
|---|---|---|
limit |
integer | Number of items to return (1 to 100). Default 50. Minimum 1, maximum 100. |
starting_after |
string | Return items after this id: pass next_cursor of the previous page. At most 100 characters. |
status |
string | One of pending, processing, included, confirmed, failed. |
Example request
Section titled “Example request”curl "https://api.ctpeway.com/v1/payouts" \ -H "Authorization: Bearer $CTPEWAY_API_KEY"import { CtpeWay } from '@ctpeway/sdk';
const ctpeway = new CtpeWay(process.env.CTPEWAY_API_KEY);
const result = await ctpeway.payouts.list();Response
Section titled “Response”200 OK
Section titled “200 OK”| Field | Type | Description |
|---|---|---|
data |
array of objects | |
data[]. |
string | |
data[]. |
string | One of pending, processing, included, confirmed, failed. |
data[]. |
string | |
data[]. |
string | |
data[]. |
string | |
data[]. optional |
string | |
data[]. |
integer | |
data[]. |
string | What the destination receives, base units of asset. A whole number written as a string of digits. |
data[]. |
string | |
data[]. optional |
string | |
data[]. optional |
string | |
data[]. optional |
string | Set when the payout pays a refund. |
data[]. optional |
string | Why a failed payout failed. Among them: canceled (canceled before it was signed), stale (not signed within two hours of being created, so given up instead of paid late), conflict (something else used the wallet’s nonce or coins first), expired (signed bytes the network never took), reverted (included, but its execution failed), chain:insufficient_funds, destination_not_payable, signer_refused:<reason>. In every case nothing was sent; failure_message says it in a sentence. |
data[]. |
object | |
data[]. |
string | One of user, apiKey. |
data[]. |
string | |
data[]. |
string (date-time) | |
data[]. optional |
string (date-time) | |
data[]. optional |
string (date-time) | |
data[]. |
string | Symbol of the coin the network fee is paid in. |
data[]. |
integer | |
data[]. optional |
string | The most the transaction may cost, base units of native_asset: what was set aside for its fee when the payout was created. A whole number written as a string of digits. |
data[]. optional |
string | What the transaction actually paid for its inclusion, base units of native_asset. Present once the transaction is in a block, on networks that report it; gone again if a reorganisation takes the transaction out of its block. A whole number written as a string of digits. |
data[]. |
boolean | |
data[]. optional |
string | What failure_code means, in a sentence for a person. Absent for codes that need no explanation. |
has_more |
boolean | Whether more items exist after this page. |
next_cursor |
string or null | Pass as starting_after to get the next page; null on the last page. |
{ "data": [ { "id": "string", "status": "pending", "network": "string", "asset": "string", "asset_id": "string", "contract": "string", "decimals": 0, "amount": "1000000", "destination": "string", "memo": "string", "tx_hash": "string", "refund_id": "string", "failure_code": "string", "requested_by": { "type": "user", "id": "string" }, "created_at": "2026-01-01T00:00:00.000Z", "confirmed_at": "2026-01-01T00:00:00.000Z", "failed_at": "2026-01-01T00:00:00.000Z", "native_asset": "string", "native_decimals": 0, "max_network_fee": "1000000", "network_fee": "1000000", "livemode": true, "failure_message": "string" } ], "has_more": true, "next_cursor": "string"}The values are placeholders generated from the schema. They show the shape, not real data.
Errors
Section titled “Errors”A failed request answers with the error format described under Errors.
Besides the codes any endpoint can return, this endpoint can answer with these code values:

