Skip to content

List deposits and withdrawals combined

GET
/transactions
curl --request GET \
--url 'https://example.com/v2/transactions?type=deposit&chain=TRON_MAINNET&page=1&limit=20' \
--header 'X-CowriePay-Key: <X-CowriePay-Key>'

Returns deposits and withdrawals in separate arrays, optionally filtered by type. This endpoint does not return pagination metadata (total/page/limit), use GET /transactions/deposits or GET /transactions/withdrawals for individually paginated lists. Each item includes a type field ("deposit" or "withdrawal").

type
string
Allowed values: deposit withdrawal

Filter by transaction type. Omit to return both.

status
string

Filter by status string

chain
string
Allowed values: TRON_MAINNET TRON_TESTNET BSC_MAINNET BSC_TESTNET ETH_MAINNET ETH_TESTNET
page
integer
default: 1 >= 1
limit
integer
default: 20 >= 1 <= 100

Combined transaction list

Media typeapplication/json
object
data
object
deposits
Array
object
id
string format: uuid
wallet_id

ID of the wallet that received this deposit. Use this to link the deposit back to your own order or customer record.

string format: uuid
chain
string
Allowed values: TRON_MAINNET TRON_TESTNET BSC_MAINNET BSC_TESTNET ETH_MAINNET ETH_TESTNET
asset
string
Allowed values: USDT_TRON USDT_BSC USDT_ETH USDC_ETH EURC_ETH ETH BNB
txid
Any of:
string
amount

Deposit amount in human-readable units. Example: “100.000000” for 100 USDT, “1.500000000000000000” for 1.5 ETH.

string
status
string
Allowed values: DETECTED CONFIRMING CONFIRMED SWEPT FAILED FLAGGED REJECTED
confirmations
integer
required_confirmations

How many confirmations THIS deposit needs before it is credited. Captured when the deposit is first seen and never changed afterwards, so confirmations / required_confirmations is a stable progress fraction for the life of the deposit. It is a per-deposit value: raising the platform threshold affects future deposits only, never one already in flight.

integer
detected_at
string format: date-time
confirmed_at
Any of:
string format: date-time
swept_at
Any of:
string format: date-time
fee_record
Any of:
object
fee_amount

Fee deducted in human-readable units.

string
net_amount

Amount after fee in human-readable units.

string
type
string
Allowed values: deposit
withdrawals
Array
object
id
string format: uuid
chain
string
Allowed values: TRON_MAINNET TRON_TESTNET BSC_MAINNET BSC_TESTNET ETH_MAINNET ETH_TESTNET
asset
string
Allowed values: USDT_TRON USDT_BSC USDT_ETH USDC_ETH EURC_ETH ETH BNB
txid
Any of:
string
amount

Withdrawal amount in human-readable units.

string
status
string
Allowed values: PENDING_APPROVAL PENDING UNDER_REVIEW PROCESSING CONFIRMING CONFIRMED FAILED CANCELLED
requested_at
string format: date-time
confirmed_at
Any of:
string format: date-time
fee_record
Any of:
object
fee_amount

Fee deducted in human-readable units.

string
net_amount

Amount after fee in human-readable units.

string
type
string
Allowed values: withdrawal
Example
{
"data": {
"deposits": [
{
"chain": "TRON_MAINNET",
"asset": "USDT_TRON",
"txid": "0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890ab",
"amount": "100.000000",
"status": "DETECTED",
"confirmations": 0,
"required_confirmations": 19,
"fee_record": {
"fee_amount": "0.900000",
"net_amount": "99.100000"
},
"type": "deposit"
}
],
"withdrawals": [
{
"chain": "TRON_MAINNET",
"asset": "USDT_TRON",
"txid": "0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890ab",
"amount": "50.000000",
"status": "PENDING_APPROVAL",
"fee_record": {
"fee_amount": "0.900000",
"net_amount": "99.100000"
},
"type": "withdrawal"
}
]
}
}

Invalid or revoked API key / HMAC signature mismatch

Media typeapplication/json
object
error
required

Human-readable message, for display/logging. Do NOT branch on this text.

string
code
required

Stable, machine-readable error code, branch on this, not the message. Common values: VALIDATION_ERROR, INVALID_JSON, PAYLOAD_TOO_LARGE, MISSING_AUTH_HEADERS, INVALID_SIGNATURE, TIMESTAMP_EXPIRED, REPLAY_DETECTED, INVALID_API_KEY, IP_NOT_ALLOWED, API_KEY_EXPIRED, WORKSPACE_INACTIVE, INSUFFICIENT_SCOPE, NOT_FOUND, CONFLICT, UNPROCESSABLE, INSUFFICIENT_BALANCE, INVALID_DESTINATION_ADDRESS, DESTINATION_IS_INTERNAL, CHAIN_NOT_ENABLED, FAUCET_ONLY_SANDBOX, FAUCET_ADDRESS_NOT_FOUND, FAUCET_INVALID_ASSET, FAUCET_AMOUNT_OVER_CAP, FAUCET_RATE_LIMITED, FAUCET_TOO_MANY_ITEMS, FAUCET_DUPLICATE_ASSET, FAUCET_NATIVE_REQUIRES_DEPOSIT, FAUCET_NATIVE_BUDGET_EXCEEDED, FAUCET_DISPENSER_EXHAUSTED, WITHDRAWAL_NOT_CANCELLABLE, IDEMPOTENCY_CONFLICT, IDEMPOTENCY_MISMATCH, IDEMPOTENCY_KEY_INVALID, FEATURE_NOT_AVAILABLE, RATE_LIMITED, DATABASE_ERROR, INTERNAL_ERROR, UNAUTHORIZED, FORBIDDEN, UNSUPPORTED_MEDIA_TYPE, WITHDRAWALS_FROZEN, WORKSPACE_NOT_FOUND, SYSTEM_WORKSPACE_PROTECTED, FAUCET_INVALID_AMOUNT, FAUCET_NO_ASSETS, FAUCET_NOT_SANDBOX. Most failures do NOT carry a business code. 326 throw sites raise a generic one (VALIDATION_ERROR, NOT_FOUND, UNPROCESSABLE, UNAUTHORIZED, CONFLICT, FORBIDDEN) against 46 named public codes, so a generic code is the common case and a named one is the exception. Branch on code; treat error as human text that may be reworded. The full catalogue, with causes and next steps, is the Error codes guide.

string
Example
{
"error": "Insufficient balance. Available: 10.000000, Requested: 50.000000",
"code": "INSUFFICIENT_BALANCE"
}

Rate limit exceeded

Media typeapplication/json
object
error
required

Human-readable message, for display/logging. Do NOT branch on this text.

string
code
required

Stable, machine-readable error code, branch on this, not the message. Common values: VALIDATION_ERROR, INVALID_JSON, PAYLOAD_TOO_LARGE, MISSING_AUTH_HEADERS, INVALID_SIGNATURE, TIMESTAMP_EXPIRED, REPLAY_DETECTED, INVALID_API_KEY, IP_NOT_ALLOWED, API_KEY_EXPIRED, WORKSPACE_INACTIVE, INSUFFICIENT_SCOPE, NOT_FOUND, CONFLICT, UNPROCESSABLE, INSUFFICIENT_BALANCE, INVALID_DESTINATION_ADDRESS, DESTINATION_IS_INTERNAL, CHAIN_NOT_ENABLED, FAUCET_ONLY_SANDBOX, FAUCET_ADDRESS_NOT_FOUND, FAUCET_INVALID_ASSET, FAUCET_AMOUNT_OVER_CAP, FAUCET_RATE_LIMITED, FAUCET_TOO_MANY_ITEMS, FAUCET_DUPLICATE_ASSET, FAUCET_NATIVE_REQUIRES_DEPOSIT, FAUCET_NATIVE_BUDGET_EXCEEDED, FAUCET_DISPENSER_EXHAUSTED, WITHDRAWAL_NOT_CANCELLABLE, IDEMPOTENCY_CONFLICT, IDEMPOTENCY_MISMATCH, IDEMPOTENCY_KEY_INVALID, FEATURE_NOT_AVAILABLE, RATE_LIMITED, DATABASE_ERROR, INTERNAL_ERROR, UNAUTHORIZED, FORBIDDEN, UNSUPPORTED_MEDIA_TYPE, WITHDRAWALS_FROZEN, WORKSPACE_NOT_FOUND, SYSTEM_WORKSPACE_PROTECTED, FAUCET_INVALID_AMOUNT, FAUCET_NO_ASSETS, FAUCET_NOT_SANDBOX. Most failures do NOT carry a business code. 326 throw sites raise a generic one (VALIDATION_ERROR, NOT_FOUND, UNPROCESSABLE, UNAUTHORIZED, CONFLICT, FORBIDDEN) against 46 named public codes, so a generic code is the common case and a named one is the exception. Branch on code; treat error as human text that may be reworded. The full catalogue, with causes and next steps, is the Error codes guide.

string
Example
{
"error": "Insufficient balance. Available: 10.000000, Requested: 50.000000",
"code": "INSUFFICIENT_BALANCE"
}