Errors

Learn about our error codes and how to resolve them.

When you make an API request, errors can occur due to authentication failures, invalid input, or processing issues. It's important to handle these errors properly by understanding their structure, status codes, and related messages. You can explore the details below.

Error Structure

If there’s an issue with your request, the API returns a 4XX or 5XX HTTP status code along with a structured error response. This response includes information about what went wrong.

{
    "status": "failed",
    "error": {
        "type": "REQUEST_NOT_VALID",
        "code": "10400",
        "message": "Request is not valid",
        "validation_errors": [
            {
                "field_name": "payment_method_id",
                "message": "must not be null"
            },
            {
                "field_name": "currency",
                "message": "must not be null"
            }
        ]
    }
}

The general structure of the error contains:

ParameterDefinitionExample
statusIndicates the outcome of the request.failed
error.typeDescribes the category of the error, such as validation, authentication, or processing issues.REQUEST_NOT_VALID
error.codeA unique identifier for the error. Useful for debugging and custom error handling.10400
error.messageA short message that explains the error.Invalid card number
error.validation_errorsA list of specific validation errors, usually provided when there are issues with the input data.[{ "field_name": "card.encrypted_card_number", "message": "must not be null" }]

General Error Codes

When a request fails, it returns an error code to help identify the issue and guide troubleshooting. Below is a list of common error codes, their meanings, and potential causes:

CodeError TypeDefinitionPossible cause
10400REQUEST_NOT_VALIDThe request was rejected due to invalid parameters or missing data.Malformed request, missing parameters, or invalid JSON payload.
10401UNAUTHORIZATIONThe request requires authentication or has invalid credentials.Missing API key, expired token, or incorrect credentials.
10403FORBIDDENThe client does not have permission to access the resource.Insufficient privileges or access restrictions.
10404RESOURCE_NOT_FOUNDThe requested resource could not be found on the server.Nonexistent endpoint, incorrect URL, or deleted resource.
10409RESOURCE_CONFLICTA conflict occurred due to duplicate or conflicting data.Attempt to create an existing resource or version conflict.
10422UNPROCESSABLEThe request was well-formed but contained invalid data.Failed validation due to incorrect or incomplete fields.
10500INTERNAL_SERVER_ERRORAn unexpected server error occurred while processing the request.System failure or unhandled exceptions.

Collections or Inflow Payments Error Codes

Below is a list of error codes you may encounter when collecting payments. If you keep getting persistent errors, please contact our support team for assistance.

CodeError TypeDefinitionPossible Cause
10400REQUEST_NOT_VALIDThe request was rejected due to invalid parameters or missing data.The JSON body is malformed, or required parameters are missing.
10401UNAUTHORIZEDThe request requires authentication or has invalid credentials.Missing API credentials, expired token, or incorrect credentials.
10403FORBIDDENThe client does not have permission to access the resource.Insufficient privileges or access restrictions.
10404RESOURCE_NOT_FOUNDThe requested resource could not be found on the server.Nonexistent endpoint, incorrect URL, or deleted resource.
10405METHOD_NOT_ALLOWEDMethod not allowedYou used GET instead of POST (or vice versa).
10409RESOURCE_CONFLICTA conflict occurred due to duplicate or conflicting data.Attempt to create an existing resource or version conflict.
10422UNPROCESSABLEThe request was well-formed but contained invalid data.Failed validation due to incorrect or incomplete fields.
10500INTERNAL_SERVER_ERRORAn unexpected server error occurred while processing the request.System failure or unhandled exceptions.
701500INVALID_PAGINATION_TYPEInvalid pagination typeThe pagination parameters (page, limit) are formatted incorrectly.
1100409CHARGE_ALREADY_EXISTSCharge with reference already existsYou are reusing a transaction reference that has already been used.
1101422CUSTOMER_NOT_FOUND_FOR_CHARGEThe Customer was not found for the charge.The customer_id provided does not exist.
1102422PAYMENT_METHOD_NOT_FOUND_FOR_CHARGEThe Payment method was not found for the charge.The payment_method_id is invalid or does not belong to this customer.
1104400CARD_NOT_TOKENIZEDThe card is not tokenized.You sent raw card data to an endpoint expecting a token/nonce.
1105500CHARGE_FAILEDCould not complete charge.General processing failure from the upstream provider.
1106400PAYMENT_METHOD_TYPE_MISSINGMissing payment method typeThe request body is missing the type field (e.g., card, bank_transfer).
1107500CHARGE_CREATION_FAILEDUnable to create a chargeSystem error during the initialization of the charge. Kindly retry.
1108400CARD_RETOKENIZATION_REQUIREDPlease retokenize the card.The encryption or token used is invalid or expired.
1110404CHARGE_NOT_FOUNDCharge not foundThe charge ID provided does not exist.
1111400CHARGE_FINALIZEDThe Charge already has a final statusYou cannot update or retry a transaction that is already successful or failed.
1112400CHARGE_UPDATE_NOT_ALLOWEDThe charge cannot be updatedThe current state of the charge does not allow modification.
1113500CHARGE_UPDATE_FAILEDUnable to update chargeSystem error during the update process.
1114400ACCOUNT_ID_NOT_FOUNDNo accountId foundInternal configuration error regarding the merchant account.
1118400INVALID_CARD_NUMBERInvalid card numberThe card number length is incorrect or failed the Luhn check.
1119500FAILED_TO_INITIATE_CHARGEFailed to initiate chargeThe payment provider rejected the initialization request.
1121400INVALID_AUTHORIZATIONFailed to validate pre-existing chargeThe PIN or OTP provided is incorrect.
1122400FAILED_TO_VALIDATE_EXISTING_CHARGEFailed to validate pre-existing chargeAn error occurred while checking the status of a previous transaction.
1125400CURRENCY_NOT_SUPPORTEDCurrency not supported for payment typeExample: Trying to use UGX with a payment method that only supports NGN.
1126400MOBILE_MONEY_COUNTRY_CODE_NOT_SUPPORTEDCountry code not supported for Mobile MoneyThe country code provided is not valid for mobile money.
1127400MOBILE_MONEY_NETWORK_NOT_SUPPORTEDNetwork not supported for Mobile Money.The network (e.g., MTN, Airtel) is not supported in the selected region.
1128500PAYMENT_CARD_TOKENIZATION_FAILEDPayment card details tokenization failedEncryption failed. Check your encryption keys and logic.
1130400AMOUNT_BELOW_MINIMUMAmount below the minimum for the payment typeThe transaction amount is too small to be processed.
1134422CARD_EXPIREDThe Card has expiredThe expiry date on the card is due.
1135422CARD_EXPIRY_YEAR_OUT_OF_RANGECard expiry year out of rangeThe card expiry year provided is invalid.
1136422CARD_EXPIRY_MONTH_OUT_OF_RANGECard expiry month out of rangeThe card expiry month provided is not between 01 and 12.
1137400CLIENT_ENCRYPTION_ERRORUnable to decrypt encrypted fieldsThe encryption logic is incorrect, or the wrong encryption key was used.
1138422UNPROCESSABLE_F4B_RESPONSEUnprocessable F4B responseAn error was received from the banking partner system.
1139422UNPROCESSABLE_CC_RESPONSEUnprocessable CC responseAn error was received from the card network/scheme.
1140400CHARGE_NOT_SUCCESSFULThe charge is not successful.The transaction was declined by the bank or failed fraud checks.
1141400REDIRECT_URL_INVALIDRedirect URL is invalid.The redirect URL format is incorrect.
1142400USSD_BANK_CODE_INVALIDInvalid bank codeThe USSD bank code provided is incorrect
1150400INVALID_CHARGEPlease use the /virtual-accounts resourceYou are attempting to create a bank transfer using the wrong endpoint.
1100409ORDER_ALREADY_EXISTSOrder with reference already existsDuplicate order reference.
1101422CUSTOMER_NOT_FOUND_FOR_ORDERCustomer not found for the orderThe customer_id attached to the order is invalid.
1102422PAYMENT_METHOD_NOT_FOUND_FOR_ORDERPayment method not found for orderThe payment_method_id attached to the order is invalid.
1110404ORDER_NOT_FOUNDOrder not foundThe Order ID provided does not exist.
1111400ORDER_FINALIZEDOrder already has final statusYou cannot modify an order that is already completed.
1112400ORDER_UPDATE_NOT_ALLOWEDOrder update is not allowedThe order state does not allow updates.
1143400CAPTURE_AMOUNT_INVALIDCapture amount is greater than the order amountYou cannot capture more funds than were authorized.
1144400PAYMENT_METHOD_MISMATCHThe payment method does not match the orderThe payment method in the charge request differs from the Order.
1144400CUSTOMER_MISMATCHCustomer does not match the order customerThe customer in the charge request differs from the Order.
1144400CURRENCY_MISMATCHCurrency does not match the order currencyThe currency in the charge request differs from the Order.
1145400CAPTURE_VOID_NOT_ALLOWEDThe order cannot be captured or voidedThe order is not in a state (e.g., authorized) that allows capture/void.
1145400PAYMENT_METHOD_INVALIDThe payment method is invalidThe payment method provided is not valid for this order type.
1401404REFUND_NOT_FOUNDRefund not foundThe Refund ID provided does not exist.
1402400REFUND_AMOUNT_INVALIDThe refund amount cannot be more than the charge amountYou are attempting to refund more than the original transaction value.
1403400REFUND_CREATION_FAILEDRefunds can't be initiated for pending transactionsYou must wait for the transaction to be successful before refunding.
1404400REFUND_ALREADY_COMPLETEDCharge already refundedThe transaction has already been fully refunded.
1500404SETTLEMENT_NOT_FOUNDSettlement not foundThe Settlement ID provided does not exist.
1600400WEBHOOK_URL_INVALIDWebhook endpoint URL is invalidThe URL provided is not a valid HTTP/HTTPS URL.
1601404WEBHOOK_ENDPOINT_NOT_FOUNDWebhook endpoint not foundNo webhook configuration exists for this account.
1602422UNPROCESSABLE_SVIX_RESPONSEUnprocessable Svix responseError communicating with the webhook provider (Svix).
1603500INTERNAL_SERVER_ERROR_SVIXInternal server error Svix responseSystem failure with the webhook provider.
1700404CHARGEBACK_NOT_FOUNDChargeback not foundThe Chargeback ID provided does not exist.
1703400CHARGEBACK_DECLINE_INVALIDDeclined chargebacks must have a comment and proofYou rejected a chargeback without providing evidence.
1704400CHARGEBACK_PROOF_INVALIDInvalid proof dataThe file uploaded is corrupted or in an unsupported format.
1705500CHARGEBACK_PROOF_UPLOAD_FAILEDError uploading proof dataSystem error during file upload.
1706400CHARGEBACK_DUE_DATE_INVALIDThe chargeback due date is invalidThe deadline for responding to this chargeback has passed.
1707400CHARGEBACK_AMOUNT_INVALIDThe chargeback amount is invalidThe amount specified does not match the dispute amount.
1708400CHARGEBACK_HAS_EXISTING_CHARGEThe charge already has an existing chargebackA dispute is already in progress for this transaction.
1800404CHECKOUT_SESSION_NOT_FOUNDCheckout section not foundThe session ID provided does not exist or has expired.
1801409CHECKOUT_SESSION_ALREADY_EXISTSCheckout session with reference already existsDuplicate session reference.
1900404VIRTUAL_ACCOUNT_NOT_FOUNDVirtual account not foundThe Virtual Account reference provided does not exist.
1900409VIRTUAL_ACCOUNT_REFERENCE_ALREADY_EXISTSVirtual account with that reference already existsYou are reusing a reference for a new virtual account.
1900500VIRTUAL_ACCOUNT_UPDATE_FAILEDVirtual account update failedSystem error during account update.
1900500FAILED_TO_CREATE_VIRTUAL_ACCOUNTFailed to create a virtual accountSystem error during account creation.
10503VIRTUAL_ACCOUNT_CREATE_TIMEOUTRequest timeoutThe provider took too long to generate the account. Retry.
19400VIRTUAL_ACCOUNT_IS_ALREADY_INACTIVEThe virtual account is already inactiveYou are trying to deactivate an account that is already closed.

Payout Error Codes

Transfers could fail due to different reasons. Read all possible error codes for payouts in the table below:

CodeError TypeDefinitionsPossible Cause
0301TRANSFER_AMOUNT_EXCEEDS_LIMITThe transfer amount exceeds the allowed limit.The amount you are trying to transfer exceeds the maximum allowed limit for a single transfer.
0302TRANSFER_AMOUNT_BELOW_LIMITThe transfer amount is below the minimum amount required.You are trying to transfer an amount that is below the minimum allowed amount.
0303MONTHLY_TRANSFER_LIMIT_EXCEEDEDYou have exceeded your monthly transfer limit.You have reached the cumulative value of transfers allowed for your account in a single month.
0304DAILY_TRANSFER_LIMIT_EXCEEDEDThe daily transfer limit has been reached.You have reached the cumulative value of transfers allowed on your account in a day.
0305TRANSFER_LIMIT_NOT_SET_FOR_CURRENCYThe transfer limit has not been set for this currency.There is no configured transfer limit for the specified currency. Kindly contact support.
0306PAYOUT_CREATION_FAILEDAn error occurred while creating the payout.Temporary service timeout. Kindly retry again.
0307INSUFFICIENT_BALANCEYou do not have sufficient funds.Your wallet does not have sufficient funds to cover the transfer amount and the applicable fee.
0308SERVICE_UNAVAILABLEThe service is temporarily unavailable.Bank maintenance or network downtime
0309TRANSFER_FAILEDWe encountered an issue processing your transfer.The destination account is closed or dormant,
Network failure during processing.
0310PRICING_NOT_SETPricing has not been set.The transfer fee could not be determined. Kindly contact support.
0311CURRENCY_CONVERSION_NOT_SETCurrency conversion has not been configured.You are attempting a cross-currency transfer (e.g., USD Wallet to NGN Bank), but the exchange rate is not configured. Kindly contact support.
0312REJECTED_RECIPIENT_MERCHANTThe recipient merchant is not eligible to receive transfers.There are compliance or risk restrictions on the destination account.
0313INVALID_BANK_CODEThe provided bank destination code is invalid.You are passing an incorrect or outdated bank code.
0314UNABLE_TO_DETERMINE_COUNTRYThe country for the provided bank code could not be determined.The bank code format is incorrect.
There is a mismatch between the bank code and the expected currency