Skip to main content

Rate limits

Rate limits are applied per API key, per minute. When you exceed a limit, the API returns 429.
EndpointLimit (per minute)
GET /api/payouts/account-requirements500
POST /api/payouts/account-requirements500
GET /api/payouts/deposit-options60
GET /api/payouts/fee60
GET /api/payouts/amount-limits60
GET /api/payouts/quote20
POST /api/payouts/transfer20
POST /api/payouts/transfer/v220
POST /api/payouts/transfer/v2/confirm-transfer20
GET /api/payouts/transfer/{transfer_id}30
GET / POST /api/payouts/recipients30
GET / PATCH / DELETE /api/payouts/recipients/{id}30
Responses include x-ratelimit-remaining and x-ratelimit-reset headers so you can pace requests and back off before hitting the limit.

Error format

All errors return a JSON body with a single human-readable error field.
{ "error": "Invalid or missing API key" }

Status codes

CodeMeaning
400Validation error — bad parameters, unsupported currency, or an amount outside your limits.
401Missing, malformed, or revoked API key.
403Not permitted — recipient not owned by your account, transfer method not enabled, failed compliance screening, unverified wallet, or a disallowed IP.
404Resource not found (for example, an unknown transfer or recipient).
409Conflict — a duplicate customer_uuid, or a tx_hash already used by another transfer.
429Rate limit exceeded. Retry after the window resets.
500Internal server error.
503A compliance or wallet-verification service is unavailable. Retry after a short delay.
Treat 503 and 429 as retryable. Use the rate-limit headers to schedule retries, and add jitter to avoid retry storms.