Error codes

Learn about the HTTP error responses returned from Plural APIs.

Plural aims to process all the API requests successfully to provide the optimal user experience. Each API request can either return a successful response or a failed response. Successful API responses are indicated by an HTTP status code in the 2XX range. Any status code outside of the 2XX range signifies a failed request. Common reasons for API call failures include human input errors, network issues, and intermittent connectivity problems.

The error response helps to:

  • Identify and examine the causes of failure.
  • Identifying measures to resolve the unsuccessful response.

The table below lists the various HTTP response codes we return to indicate successful or failed API calls.

HTTP Status CodeDescriptionNext Step
2XXSuccessful API request.
4XXFailed API Request.

This is because of the error in the information provided by you.

Example:
  • Bad request
  • Invalid path
  • Invalid method
When these error messages are returned check and correct the information passed in the API request.
5XXFailed API request.

This is returned when:
  • Plural server return errors.
  • Plural service provider's system error.
Try after some time.

Error Structure

The error response contains the code and message parameters in the error response. These parameters helps to identify reasons for the error.

The table below gives a brief description of the various parameters returned in the error message with all non-2XX HTTP status codes.

ParameterTypeDescription
codestringShort code for the error returned.

Possible values:
  • INVALID_REQUEST
  • PAYMENT_RATE_LIMIT
  • CARD_EXPIRED
  • RISK_CHECK_FAILED
  • INTERNAL_ERROR
messagestringCorresponding error message for the code.

Example: Amount must be an Integer value greater than or equal to 1

Shown below are the sample error response for 400 HTTP status code.

{
  "code": "INVALID_REQUEST",
  "message": "Amount must be an Integer value greater than or equal to 1"
}
{
  "code": "INVALID_REQUEST",
  "message": "Amount must be an Integer value less than or equal to 100000000"
}
{
  "code": "INVALID_REQUEST",
  "message": "Merchant Order Reference must not be empty"
}
{
  "code": "INVALID_REQUEST",
  "message": "Merchant Order Reference must be less than or equal to 50 characters"
}
{
  "code": "INVALID_REQUEST",
  "message": "Payment method is missing/invalid"
}

Shown below are the sample error response for 401 HTTP status code.

{
  "code":"UNAUTHORIZED",
  "message":"Unauthorized"
}

Shown below are the sample error response for 422 HTTP status code.

{
  "code": "PAYMENT_RATE_LIMIT",
  "message": "Failure due to request velocity or limit checks"
}
{
  "code": "CARD_EXPIRED",
  "message": "Payment Instrument has expired"
}
{
  "code": "RISK_CHECK_FAILED",
  "message": "Payment Instrument suspected to be used fraudulently"
}

Shown below are the sample error response for 500 HTTP status code.

{
  "code": "INTERNAL_ERROR",
  "message": "Internal Server Error"
}
{
    "code": "INTERNAL_ERROR",
    "message": "Payment processor is unavailable"
}

Common Error Codes

The below table lists all the possible error codes returned in our API responses.

Status CodeError CodeError SourceError Description
422AMOUNT_LIMIT_EXCEEDEDACQUIRERThe transaction was declined because the specified amount exceeds allowed limits
422AMOUNT_LIMIT_EXCEEDEDACQUIRERAmount exceeds allowed limit
422AMOUNT_LIMIT_EXCEEDEDMERCHANTRequested refund amount is greater than eligible amount
422AMOUNT_LIMIT_EXCEEDEDMERCHANTRequested refund amount is greater than captured amount
422AMOUNT_LIMIT_EXCEEDEDMERCHANTRequested split refund amount with blank status is greater than eligible amount
422CARD_EXPIREDACQUIRERSpecified card is not allowed for this transaction because it has expired
422CARD_LOSTACQUIRERSpecified card is not allowed for this transaction because it was flagged as lost.
422CARD_NOT_ALLOWEDACQUIRERPayment Instrument is restricted to perform the relevant operation
422CARD_NOT_ALLOWEDACQUIRERSpecified card is not allowed for this transaction.
422CARD_STOLENACQUIRERSpecified card is not allowed for this transaction because it was flagged as stolen
422CARD_VERIFICATION_FAILEDACQUIRERInvalid CVV specified on the card payment option
422DUPLICATE_REQUESTACQUIRERThe request has already been processed
422DUPLICATE_REQUESTACQUIRERThe request was rejected because the client has sent too many requests in a given time window
422DUPLICATE_REQUESTINTERNALThe request has already been processed
422DUPLICATE_REQUESTACQUIRERThe request has already been processed.
422DUPLICATE_REQUESTINTERNALDuplicate payment id found
422DUPLICATE_REQUESTINTERNALRelease instruction already received
422DUPLICATE_REQUESTMERCHANTDuplicate payment reference received
422DUPLICATE_REQUESTMERCHANTDuplicate Merchant Reference ID received
422DUPLICATE_REQUESTMERCHANTAnother payment already in process. Please retry in some time
422DUPLICATE_REQUESTMERCHANTCancel request already received
422INSUFFICIENT_FUNDSACQUIRERInsufficient funds to proceed with payment using the specified payment option
422INSUFFICIENT_FUNDSACQUIRERInsufficient funds to proceed with payment using the specified payment option.
500INTERNAL_ERRORINTERNALInternal server error. The request cannot be processed at this time
500INTERNAL_ERRORINTERNALCould not fetch merchant details
500INTERNAL_ERRORINTERNALCould not find merchant
500INTERNAL_ERRORINTERNALCould not fetch acquirer details
500INTERNAL_ERRORINTERNALCould not fetch merchant hierarchy details
500INTERNAL_ERRORINTERNALInvalid merchant acquirer configuration
500INTERNAL_ERRORINTERNALCould not fetch merchant convenience fee details
500INTERNAL_ERRORINTERNALCould not find merchant convenience fee details
500INTERNAL_ERRORINTERNALInternal Server Error
500INTERNAL_ERRORINTERNALPayment processor is unavailable
500INTERNAL_ERRORINTERNALCould not fetch order details
500INTERNAL_ERRORINTERNALParent payment auth failed
500INTERNAL_ERRORINTERNALFetch bin details failure
500INTERNAL_ERRORINTERNALNo Bin Details Found
500INTERNAL_ERRORINTERNALCould not create a transaction
500INTERNAL_ERRORINTERNALCould not create an authentication
500INTERNAL_ERRORINTERNALAuthentication timed out
500INTERNAL_ERRORINTERNALCould not create an authorization
500INTERNAL_ERRORINTERNALAuthorization timed out
500INTERNAL_ERRORINTERNALCould not create a void request
500INTERNAL_ERRORINTERNALVoid Timed out
500INTERNAL_ERRORINTERNALCapture payment could not be processed
500INTERNAL_ERRORINTERNALCapture Payment Timed out
500INTERNAL_ERRORINTERNALRefund Payment Timed out
500INTERNAL_ERRORINTERNALRefund payment could not be processed
500INTERNAL_ERRORINTERNALInquire payment timed out
500INTERNAL_ERRORINTERNALCancel Payment timed out
500INTERNAL_ERRORINTERNALUnable to initiate refund
500INTERNAL_ERRORINTERNALUnable to process refund
500INTERNAL_ERRORINTERNALCould not fetch merchant convenience configuration
500INTERNAL_ERRORINTERNALCould not fetch subscription details
500INTERNAL_ERRORINTERNALCould not generate otp
500INTERNAL_ERRORINTERNALCould not submit otp
500INTERNAL_ERRORINTERNALCould not resend otp
500INTERNAL_ERRORINTERNALCould not fetch otp config details
500INTERNAL_ERRORINTERNALInternal Error
400INVALID_REQUESTACQUIRERThe request does not follow the expected contract and cannot be processed. This may be due to
malformed request, invalid or missing parameters
400INVALID_REQUESTINTERNALThe request does not follow the expected contract and cannot be processed. This may be due to
malformed request, invalid or missing parameters
400INVALID_REQUESTACQUIRERThe request does not follow the expected contract and cannot be processed. This may be due to
malformed request, invalid or missing parameters
400INVALID_REQUESTMERCHANTCould not find Split Merchant Details
400INVALID_REQUESTINTERNALSettlement Details not found
400INVALID_REQUESTMERCHANTUpdate Request is invalid
400INVALID_REQUESTMERCHANTMerchant Payment Reference is Missing
400INVALID_REQUESTINTERNALOffer Validation Failed
400INVALID_REQUESTMERCHANTMerchant ID is missing in headers
400INVALID_REQUESTMERCHANTOrder ID is invalid
400INVALID_REQUESTMERCHANTSettlement ID is invalid
400INVALID_REQUESTINTERNALCould not find merchant
400INVALID_REQUESTMERCHANTInvalid Merchant Order Reference
400INVALID_REQUESTMERCHANTInvalid Order Amount Details
400INVALID_REQUESTMERCHANTNotes must be less than or equal to 100 characters
400INVALID_REQUESTMERCHANTInvalid Product Details
400INVALID_REQUESTMERCHANTInvalid Paymode Mode List
400INVALID_REQUESTMERCHANTInvalid Redirect Url
400INVALID_REQUESTMERCHANTInvalid Customer Details
400INVALID_REQUESTMERCHANTInvalid Split Details
400INVALID_REQUESTMERCHANTInvalid Payment Amount Details
400INVALID_REQUESTMERCHANTInvalid Payment Option Object
400INVALID_REQUESTMERCHANTInvalid Card Details
400INVALID_REQUESTMERCHANTPay By Points is Disabled
400INVALID_REQUESTMERCHANTInvalid Card Token Details
400INVALID_REQUESTMERCHANTInvalid UPI Payment Details
400INVALID_REQUESTMERCHANTInvalid Convenience Fee Details
400INVALID_REQUESTMERCHANTInvalid Merchant Capture Reference
400INVALID_REQUESTMERCHANTInvalid Merchant Refund Reference
400INVALID_REQUESTMERCHANTInvalid Refund Request Data
400INVALID_REQUESTMERCHANTInvalid Process Details
400INVALID_REQUESTMERCHANTOrderId is invalid
400INVALID_REQUESTMERCHANTInvalid Amount Details
400INVALID_REQUESTMERCHANTPayment method is required when network type is provided
400INVALID_REQUESTMERCHANTProduct mismatch from the order
400INVALID_REQUESTMERCHANTRefund request is invalid
400INVALID_REQUESTMERCHANTThe payment method is not enabled for this payment
400INVALID_REQUESTMERCHANTInvalid payment request
400INVALID_REQUESTMERCHANTNo valid payment methods are available for this order
400INVALID_REQUESTMERCHANTRequested release amount is greater than the eligible amount
400INVALID_REQUESTMERCHANTCurrency is invalid
400INVALID_REQUESTMERCHANTPartner Merchant Id does not match the parent orders Partner Merchant Id.
400INVALID_REQUESTMERCHANTPayment method is invalid or empty
400INVALID_REQUESTMERCHANTPayment Amount is invalid or empty
400INVALID_REQUESTMERCHANTPayment currency is invalid or empty
400INVALID_REQUESTMERCHANTRequest Type is missing in Mandate Info
400INVALID_REQUESTMERCHANTCard details not found. Please create payment first.
400INVALID_REQUESTMERCHANTBrowser details not found. Native-OTP feature is only eligible for payments created with browser detail
400INVALID_REQUESTMERCHANTInvalid dcc payment request
422INVALID_USER_ACCOUNTACQUIRERRelevant User Account not active/valid
422INVALID_USER_ACCOUNTACQUIRERRelevant User Account not active/valid
422ISSUER_NOT_SUPPORTEDACQUIRERThe specified issuer is not supported for this operation
422OPERATION_NOT_ALLOWEDINTERNALInvalid Merchant or merchant not permitted related operation
422OPERATION_NOT_ALLOWEDINTERNALThe specified operation cannot be made because required precondition has failed.
422OPERATION_NOT_ALLOWEDMERCHANTConvenience fee not configured for merchant
422OPERATION_NOT_ALLOWEDMERCHANTInvalid convenience fee applied with payment
422OPERATION_NOT_ALLOWEDMERCHANTConvenience fee is configured for this payment method but missing in request
422OPERATION_NOT_ALLOWEDMERCHANTIncorrect payment amount
422OPERATION_NOT_ALLOWEDINTERNALOrder might have already processed
422OPERATION_NOT_ALLOWEDINTERNALAuthorization is not allowed
422OPERATION_NOT_ALLOWEDINTERNALPayment can not be captured
422OPERATION_NOT_ALLOWEDINTERNALPartial Capture is not allowed for split payments
422OPERATION_NOT_ALLOWEDINTERNALOrder cannot be cancelled
422OPERATION_NOT_ALLOWEDMERCHANTPreAuth disabled for Merchant
422OPERATION_NOT_ALLOWEDMERCHANTSplit Settlement Amount is not equal to Order Amount
422OPERATION_NOT_ALLOWEDINTERNALThe order is not in processed state
422OPERATION_NOT_ALLOWEDINTERNALPayments limit reached on this order
422OPERATION_NOT_ALLOWEDMERCHANTSave Card feature not enabled for merchant
422OPERATION_NOT_ALLOWEDMERCHANTMerchant is not allowed to create split settlement orders
422OPERATION_NOT_ALLOWEDMERCHANTPayments cannot be cancelled
422OPERATION_NOT_ALLOWEDMERCHANTRefund not allowed on this order
422OPERATION_NOT_ALLOWEDINTERNALForce refund not allowed on this payment
422OPERATION_NOT_ALLOWEDINTERNALConvenience fee configuration not enabled for merchant
422OPERATION_NOT_ALLOWEDMERCHANTRefund not applicable for the issuer, Please contact with the bank
422OPERATION_NOT_ALLOWEDMERCHANTsubsequent refund requests on this order must include split info as specified by the initial refund requ
422OPERATION_NOT_ALLOWEDMERCHANTplit info is not permitted for refund requests on this order as the initial refund request did not contain i
422OPERATION_NOT_ALLOWEDMERCHANTThe order is not a split settlement order, providing split info in the refund request is not allowed
422OPERATION_NOT_ALLOWEDMERCHANTSettlement Details not found, please provide valid parent order settlement id
422OPERATION_NOT_ALLOWEDMERCHANTSum of all splits Amount is not equal to Order Amount
422OPERATION_NOT_ALLOWEDMERCHANTSplit merchant id should be same as parent order split merchant id
422OPERATION_NOT_ALLOWEDMERCHANTRefund request with DO_NOT_RECOVER status already received on this parent order split settlement id
422OPERATION_NOT_ALLOWEDMERCHANTRequested split refund amount with DO_NOT_RECOVER status is not equal to the eligible amount
422OPERATION_NOT_ALLOWEDMERCHANTRequested parent split is on HOLD state, can not refund with DO_NOT_RECOVER status
422OPERATION_NOT_ALLOWEDMERCHANTRequested parent split is not released, can not refund with blank status
422OPERATION_NOT_ALLOWEDMERCHANTMultiple splits on same parent order split settlement id with same status is not allowed
422OPERATION_NOT_ALLOWEDMERCHANTRefund not allowed for this order as the parent order exceeds the allowed timeframe.
422OPERATION_NOT_ALLOWEDMERCHANTThe order is not CHARGE type
422OPERATION_NOT_ALLOWEDINTERNALPartial refund not allowed for this payment mode
422OPERATION_NOT_ALLOWEDMERCHANTOTP already generated
422OPERATION_NOT_ALLOWEDMERCHANTOTP not yet generated. Please generate OTP first.
422OPERATION_NOT_ALLOWEDMERCHANTCould not perform the requested operation. Please call generate OTP before proceeding
422OPERATION_NOT_ALLOWEDMERCHANTNative OTP feature is not enabled for the merchant
422OPERATION_NOT_ALLOWEDMERCHANTNative OTP feature is not enabled for the payment
422ORDER_CANCELLEDACQUIRERThe order has already been cancelled and cannot be modified further.
422ORDER_CANCELLEDINTERNALCancelled due to Late Auth Expiry
404ORDER_NOT_FOUNDINTERNALNo order with specified order-id exists in the system
404ORDER_NOT_FOUNDMERCHANTParent order not found. Ensure that order has been created before proceeding with payment
404ORDER_NOT_FOUNDINTERNALOrder not found
422PAYMENT_DECLINEDACQUIRERThe payment was declined by the acquirer.
422PAYMENT_DECLINEDACQUIRERThe payment was declined by the acquirer
422PAYMENT_DECLINEDINTERNALThe payment was declined by the acquirer
422PAYMENT_EXPIREDACQUIRERThe payment has expired and cannot be modified further
422PAYMENT_NOT_AUTHORIZEDINTERNALThe payment requires authorization before it can be processed
422PAYMENT_PENDINGACQUIRERThe payment is pending and requires authorization before it can be processed
422PAYMENT_PENDINGINTERNALRefund is pending
422PAYMENT_RATE_LIMITACQUIRERe payment was declined because too many payments were attempted using the specified payment opti
422RISK_CHECK_FAILEDACQUIRERThe payment was declined after a risk check
422RISK_CHECK_FAILEDINTERNALPayment has been blocked based on the risk check
422TIMED_OUTACQUIRERThe request timed out. Please try again latet.
422TIMED_OUTACQUIRERThe request timed out. Please try again later
422TIMED_OUTACQUIRERThe request timed out. Please try again later
422USER_AUTHENTICATION_FAILEDACQUIRERUser Authentication Failed, Please try again with valid parameters.
422USER_AUTHENTICATION_FAILEDINTERNALUser Authentication Failed, Please try again with valid parameters

📘

Note:

  • For the unstructured error returned from Plural, the response may not always include a corresponding code and message. In such cases, refer to the HTTP status codes to determine the status of the API request.