API Error Handling & Codes

Our API uses standard HTTP status codes to indicate the success or failure of a request. For client-side errors (4xx) and server-side errors (5xx), the response body will contain a JSON object with a specific errorCode and a descriptive message.

Example Error Response

{
    "success": false,
    "message": "External reference already in use.",
    "errorCode": "DUPLICATE_EXTERNAL_REFERENCE"
}

Common Errors

These are general errors that can be returned by multiple API endpoints.

HTTP StatusError CodeDescription
403 ForbiddenUSER_NOT_ONBOARDEDThe user's account has not completed the required onboarding or approval process to use this feature.
409 ConflictDUPLICATE_EXTERNAL_REFERENCEThe externalReference provided has already been used for a previous transaction and must be unique.
422 Unprocessable EntityINSUFFICIENT_FUNDSThe user's wallet balance is too low to complete the requested debit transaction.
503 Service UnavailableFX_RATE_UNAVAILABLEThe service was temporarily unable to retrieve a currency conversion rate. This is often safe to retry.
500 Internal Server ErrorINTERNAL_SERVER_ERRORAn unexpected error occurred on our end. Our team has been notified. This should be reported if it persists.

Payout Specific Errors

These errors are specific to the Fiat Payouts service.


HTTP StatusError CodeDescription
403 ForbiddenCURRENCY_NOT_ENABLEDThe specified currency is not enabled for payouts on the user's account.
404 Not FoundPAYOUT_PROVIDER_NOT_FOUNDNo payment provider could be found to process a payout for the specified currency and destination.
422 Unprocessable EntityDEBIT_CURRENCY_NOT_SUPPORTEDThe combination of debitCurrency and currency is not allowed (e.g., debiting NGN for a non-NGN payout).
422 Unprocessable EntityMOMO_CODE_REQUIREDA payoutMethod.code (operator code) is required for Mobile Money (MoMo) payouts in this region.