Welcome to Xendit’s latest documentation. For legacy content, access the previous version here.

Error scenarios

Prev Next

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.