Error shape
When a request fails, the API returns a non-2xx status code with a JSON body:number
The HTTP status code, repeated in the body for convenience.
string | string[]
A human-readable description of what went wrong. For validation errors this can be an array of field-level messages.
string
ISO-8601 timestamp of when the error was generated.
string
The request path that produced the error.
Validated request bodies are checked with a whitelist — unknown fields are rejected outright with a
400 rather than silently ignored, so double-check field names against the API Reference if you get an unexpected validation error.HTTP status codes
Common error messages
Idempotency
POST /api/deposit is naturally idempotent on paymentReference — retrying with the same reference returns a 400 Transaction already exists, so it’s safe to retry deposit creation requests as long as you keep the reference stable. There is currently no dedicated idempotency key for /api/payout; use your own sessionId/narration bookkeeping to avoid double-submitting payouts on retry.