Error Response Format
Some error responses may include additional context fields depending on the endpoint — for example,
attemptsRemaining on OTP errors or matchScore on name mismatch errors.HTTP Status Codes
Common Error Codes
User Errors
Transaction Errors
Payout Errors
PAYOUTS_ON_HOLD applies to your whole account, not one user or one
transfer. While it is in force, payout requests are rejected before anything
is created — no transaction is opened, your partnerReference is not
consumed, and no balance moves. Once the hold is lifted you can re-send the
identical request, same partnerReference and Idempotency-Key included.Treat it as retryable-after-resolution, not as a failed transfer: don’t mark
the transfer failed to your end user, and don’t re-issue it under a new
reference. The message field carries what is needed to clear the hold.KYC Errors
Rate Limiting
Rate-limited responses (429) include headers to help you manage request pacing:
retryAfter field (seconds) or the X-RateLimit-Reset header to schedule your next request.
Error Handling Examples
- JavaScript
- TypeScript
- Python
Idempotency
For safe retries, include anIdempotency-Key header (UUID) on mutating requests:
Idempotency Conflict (409)
If you send the same idempotency key with a different request body, you’ll receive a409 Conflict:
Keys expire after 24 hours.
