API error codes for /payment_requests
and /payments
Error Code | HTTP Error | Description |
INACTIVE_PAYMENT_REQUEST | 400 | Payment request is already in its terminal state. Changes are no longer allowed. |
INVALID_VALUE_ERROR | 400 | The API request format and parameters are correct. However, the values for one or more parameters are not within what is allowed by the payment channel or your settings. |
API_VALIDATION_ERROR | 400 | The API request format or parameters do not follow our validations. |
CARD_EXPIRED | 400 | The card expiry date in the request has already passed. |
CAPTURE_AMOUNT_EXCEEDED | 400 | The capture amount specified in capture request must be less than or equal to the uncaptured authorization amount. |
REFUND_AMOUNT_EXCEEDED | 400 | The refund amount specified in the refund request must be less than or equal to the capture amount that has not been refunded. |
INVALID_PAYMENT_DETAILS | 400 | The payment information entered by the end user is invalid. |
PAYMENT_REQUEST_RATE_LIMITED | 400 | Maximum number of requests to this payment channel has been exceeded in a given time frame. |
INVALID_TOKEN | 400 | Payment token ID specified in the payment request has expired or has been canceled. |
TEMPORARILY_UNAVAILABLE | 400 | Requested feature is unavailable during this timing. You can perform a retry later on. |
PARTIAL_REFUND_COUNTS_EXCEEDED | 400 | Number of partial refunds has exceeded what is allowed by payment channel. |
REFUND_IN_PROGRESS | 400 | There is a pending refund request. Please wait for the pending request to be completed before initiating a new one. |
INELIGIBLE_TRANSACTION_STATUS | 400 | The operation requested is not available for the data resource in its current status. |
INSUFFICIENT_BALANCE | 400 | There is insufficient balance in your account to perform a refund. Please top up your balance with a sufficient amount before retrying the refund. |
BLOCKED_TOKEN | 400 | Payment token ID specified in the payment request was rejected by the payment channel. |
INVALID_OTP | 400 | OTP specified is invalid. |
EXPIRED_OTP | 400 | OTP specified has expired. |
SKIP_3DS_FORBIDDEN | 403 | Non 3DS card payment requests is not allowed. A request to activate this feature is required. |
INVALID_MERCHANT_SETTINGS | 403 | The merchant credentials used faced an error with the provider. |
REFUND_NOT_SUPPORTED | 403 | Refund feature is not available for this payment channel. |
PARTIAL_REFUND_NOT_SUPPORTED | 403 | Partial refund feature is not available for this payment channel. |
VOID_NOT_SUPPORTED | 403 | Void feature is not available for this payment channel. |
INELIGIBLE_MERCHANT_SETTINGS | 403 | Merchant settings configuration is not eligible for the request operation. Please contact Xendit customer support for resolution. |
DATA_NOT_FOUND | 404 | The data resource requested does not exist in our system. This could be due to race conditions. Your system can introduce retries or implement a delay to avoid this error. Only visible to selected team account(s), reader(s), and/or security group(s) |
DUPLICATE_ERROR | 409 | There is a uniqueness constraint blocking the request that you are sending. |
UNSUPPORTED_CONTENT_TYPE | 415 | The content type requested is not supported |
SERVER_ERROR | 500 | An unexpected error occurred, our team has been notified and will troubleshoot the issue. |
CHANNEL_UNAVAILABLE | 503 | The payment channel requested is currently experiencing unexpected issues. The provider will be notified to resolve this issue. |
ISSUER_UNAVAILABLE | 503 | The end user's payment method provider is currently experiencing unexpected issues. The provider will be notified to resolve this issue. |
Failure codes for /payment_requests
and /payments
Error Code | Description |
---|---|
ACCOUNT_ACCESS_BLOCKED | Payment failed because access to the user’s account has been blocked. Payment channel provider has to be contacted to provide specific reasons. |
INVALID_MERCHANT_SETTINGS | Payment failed because payment channel has configured the wrong settings for this account. |
INVALID_ACCOUNT_DETAILS | Payment failed because payment information provided by user is wrong. |
PAYMENT_ATTEMPT_COUNTS_EXCEEDED | Payment failed because there has been too many attempts in a short period of time. |
USER_DEVICE_UNREACHABLE | Payment failed because the payment channel was unable to reach the end user’s device. |
CHANNEL_UNAVAILABLE | Payment channel was unable to provide a definitive response on whether payment has succeeded or not. |
INSUFFICIENT_BALANCE | Payment failed because the end user does not have sufficient balance in their account. |
ACCOUNT_NOT_ACTIVATED | Payment failed because the end user’s account has not been activated. |
INVALID_TOKEN | Payment failed because the payment token has been invalidated or expired. |
SERVER_ERROR | Payment failed due to unknown reasons. Xendit will investigate this issue immediately. |
TIMEOUT_ERROR | Payment channel was unable to provide a definitive response because the connection to payment channel has timed out. |
USER_DECLINED_PAYMENT | Payment failed because the end user declined payment. |
USER_DID_NOT_AUTHORIZE | Payment failed because the end user did not authorize payment with the time limits. |
PAYMENT_REQUEST_EXPIRED | Payment failed because the payment request has already expired. |
FAILURE_DETAILS_UNAVAILABLE | Payment channel informed Xendit that the payment has failed without providing specific reasons. |
EXPIRED_OTP | Payment failed because the OTP is passed its validity period. |
INVALID_OTP | Payment failed because the wrong OTP has been entered. |
PAYMENT_AMOUNT_LIMITS_EXCEEDED | Payment failed because the end user’s transaction limits has been exceeded. |
OTP_ATTEMPT_COUNTS_EXCEEDED | Payment failed because there were too many OTP attempts. |
CARD_DECLINED | Payment failed because the card used was declined for processing. |
DECLINED_BY_ISSUER | Payment failed because the issuer has declined approval. |
ISSUER_UNAVAILABLE | Payment failed because the issuer cannot be reached. |
DECLINED_BY_PROCESSOR | Payment failed because the card used was declined for processing. |
AUTHENTICATION_FAILED | Payment failed because authentication has failed. |