Skip to content

Error codes

Envelope

Success: { "success": true, "data": { ... } }

Failure: { "success": false, "code": "PROVIDER_REJECTED", "message": "<user-safe>", "errors": { "recipient.id_number": ["..."] } }

message is fixed per code and may be shown verbatim to end users.

Error codes

CodeHTTPMeaningRe-submission behaviour
VALIDATION_ERROR422Field errors in errorsFix and resend
METHOD_UNAVAILABLE422Method disabled for vendor / not offered by providerOffer another method
AMOUNT_OUT_OF_RANGE422Outside method limitsAdjust amount
AMOUNT_INCREMENT_INVALID422Cash-rail amount not a multiple of R10Round to R10
RECIPIENT_REJECTED422ID checksum / FICA data rejectedCorrect the recipient
PROVIDER_REJECTED422Provider declined; nothing paid; funds releasedTerminal for this attempt
REFERENCE_CONFLICT409Reference reused with a different payloadUse a new reference
INSUFFICIENT_BALANCE409Vendor prefund too lowRetry after top-up
PENDING_CONFIRMATION409Submitted, provider outcome unknown (timeout)Do not resend. Poll GET /payouts/{reference}
PROVIDER_DOWN503Provider unreachable; nothing was sentRetry with the same reference
UNAUTHENTICATED / FORBIDDEN401 / 403Token invalid / lacks scopeOps
NOT_FOUND404Unknown reference for this vendor
RATE_LIMITED429ThrottledBack off

The fixed messages are listed below.

Fixed messages

Use code in application logic. The message below is fixed for that code and may be shown to the end user. Validation details appear in errors.

CodeHTTPMessage
VALIDATION_ERROR422Some payout details are missing or invalid.
METHOD_UNAVAILABLE422This payout method is not available right now.
AMOUNT_OUT_OF_RANGE422The amount is outside the limits for this payout method.
AMOUNT_INCREMENT_INVALID422Cash payouts must be in multiples of R10 — ATMs cannot pay out other amounts.
RECIPIENT_REJECTED422The recipient details were not accepted. Check the ID number and phone number.
REFERENCE_CONFLICT409This payout reference has already been used with different details.
INSUFFICIENT_BALANCE409Payouts are temporarily unavailable. Please try again later.
PENDING_CONFIRMATION409Your payout is being processed. You will be notified once it is complete.
PROVIDER_REJECTED422The payout was declined by the payment provider.
PROVIDER_DOWN503We could not process the payout right now. Please try again in a moment.
UNAUTHENTICATED401Payouts are not available for this account.
FORBIDDEN403Payouts are not available for this account.
NOT_FOUND404Payout not found.
RATE_LIMITED429Too many requests. Please wait a moment and try again.