# submitPayment()

> This method is used to initiate a payment request to the server. After the buyer clicks your custom payment button, the SDK will automatically process payment information, advance the transaction flow based on the selected payment method, and perform operations such as 3D authentication when required.

 This method is used to initiate a payment request to the server. After the buyer clicks your custom payment button, the SDK will automatically process payment information, advance the transaction flow based on the selected payment method, and perform operations such as 3D authentication when required. Payment results and exception information will be returned through asynchronous callbacks.

## Method signature {#FmLyb}

 When calling this method, please use the following standard method signature format.

<!-- TabGroup -->

**Tab: JavaScript**

```javascript
submitPayment(options)
```

**Tab: TypeScript**

```typescript
submitPayment(options?: SubmitFuncParams): Promise<IPaymentApiResponse>
```

<!-- /TabGroup -->

## Parameters {#l1R91}

 The following parameters are used to configure the submission options for the payment request.

 | **Parameter** | **Data type** | **Required** | **Description** |
| --- | --- | --- | --- |
| [*options*](#yVmLP) | Object | No | Configuration options for submitting the payment request. |

### *options* {#yVmLP}

 | **Parameter** | **Data type** | **Required** | **Description** |
| --- | --- | --- | --- |
| *handleActions* | Boolean | No | Indicates whether the SDK handles automatic redirects. Valid values are: - `true`  : Default value. The SDK automatically controls the payment flow. - `false`  : The SDK will return the URL information required for payment, and you will handle the redirect or app launch yourself. This scenario is suitable for non-browser environments or when custom redirect logic is needed.   > **[INFO]** **Note**    : Custom redirect control (when     *handleActions*     is   `false`  ) is only applicable to scenarios other than card, [Apple Pay](https://docs.antom.com/ac/antomop/applepay.md), and [Google Pay](https://docs.antom.com/ac/antomop/googlepay.md). |
| [*shippingInfo*](#Am5lZ) | Object | No | Used to submit shipping address information. |

#### *shippingInfo* {#Am5lZ}

 | **Parameter** | **Data type** | **Required** | **Description** |
| --- | --- | --- | --- |
| [*shippingAddress*](#FdEPO) | Object | Yes | Shipping address information. |
| [*shippingName*](#fIigX) | Object | Yes | Recipient name information. |
| *shippingPhoneNo* | String | Yes | Recipient's phone number in E.164 international standard format. |

##### *shippingAddress* {#FdEPO}

 | **Parameter** | **Data type** | **Required** | **Description** |
| --- | --- | --- | --- |
| *region* | String | Yes | Two-letter country or region code compliant with   [ISO 3166](https://www.iso.org/obp/ui/#search)   standard. |
| *state* | String | Yes | State, province, or 2-3 letter region code compliant with   [ISO 3166-2](https://www.iso.org/obp/ui/#search)   standard. |
| *city* | String | Yes | City name. |
| *address1* | String | Yes | Address line 1. |
| *address2* | String | Yes | Address line 2. |
| *zipCode* | String | Yes | Postal code. |

##### *shippingName* {#fIigX}

 | **Parameter** | **Data type** | **Required** | **Description** |
| --- | --- | --- | --- |
| *firstName* | String | Yes | Recipient's first name. |
| *lastName* | String | Yes | Recipient's last name. |
| *middleName* | String | No | Recipient's middle name (if available). |
| *fullName* | String | No | Recipient's full name. |

## Return value {#4Kxd3}

 Returns a   `Promise`   object that resolves to an object containing the payment result.

 | **Parameter** | **Data type** | **Required** | **Description** |
| --- | --- | --- | --- |
| *status* | String | Yes | Payment status. You can simplify the integration processing based on the value of     *status*    . You may also perform refined exception handling based on     *error?.code*    . Valid values are: - `SUCCESS`  : Payment succeeded. - `FAIL`  : Payment failed. - `PROCESSING`  : Payment processing. - `CANCELLED`  : Payment canceled. |
| *userCanceled3D* | Boolean | No | Indicates whether the buyer actively closed the 3D Secure authentication popup. Valid values are: - `true`  : Buyer actively terminated the 3D process. When this value is returned, it is recommended to poll the result from the server. - `false`  : 3D process was not terminated by the buyer. |
| [*session*](#BvOgO) | Object | No | Payment session information. |
| [*error*](#ewOaK) | Object | No | This parameter is only returned when the operation fails, and is an *error* object containing     *code*     and     *message*     parameters. If not returned, the operation was successful. |

### *session* {#BvOgO}

 | **Parameter** | **Data type** | **Required** | **Description** |
| --- | --- | --- | --- |
| [*nextAction*](#Hmd3J) | Object | No | Provides necessary information when additional steps are required in the payment process (e.g., manual app launch handling). |

#### *nextAction* {#Hmd3J}

 | **Parameter** | **Data type** | **Required** | **Description** |
| --- | --- | --- | --- |
| *applinkUrl* | String | No | App Link URL (iOS Universal Link or Android App Link). |
| *schemeUrl* | String | No | Custom URL Scheme link. |
| *normalUrl* | String | Yes | Regular H5 page link. |

### *error* {#ewOaK}

 | **Parameter** | **Data type** | **Required** | **Description** |
| --- | --- | --- | --- |
| *code* | String | Yes | Error code. |
| *message* | String | Yes | Error message. |
| *traceId* | String | No | Trace ID for issue investigation. |
| *context* | Any | No | Error context information. |

## Error codes {#bflMZ}

 > **[INFO]** **Note**    : The payment results returned by the   `submitPayment().then()`   method are only for client-side page navigation and status display. For the final order status, please obtain it through   [Step 3: Obtain the payment result](https://docs.antom.com/ac/cashierpay/element.md?platform=web-wap#MxqX3)  .

 | ***code*** | ***status*** | **Suggested prompt for buyers (*message*)** | **Description** | **Recommended action** |
| --- | --- | --- | --- | --- |
| `UNKNOWN_EXCEPTION` | `PROCESSING` | Unknown exception. Please check the payment status and contact the merchant. | Due to unknown reasons, the API call failed. | It is recommended to poll the payment result from the server. If no payment result is found, you can re-initiate `submitPayment()` using the existing *paymentSessionData* within the payment session validity period. |
| `INQUIRY_PAYMENT_SESSION_FAILED` | `FAIL` | The order status is abnormal. Please check the payment status and contact the merchant. | The payment session has expired. | The order has timed out and been closed. Please use a new     *paymentRequestId*     to initiate the payment again. |
| `UI_STATE_ERROR` | `FAIL` | An error occurred. The transaction cannot be initiated. | The timing of the `[mount()](https://docs.antom.com/ac/sdks/web_mount.md)` method call is abnormal. | Integration code exception. Please troubleshoot. If the problem persists, contact Antom technical support. |
| `ERR_DATA_STRUCT_UNRECOGNIZED` | None | An error occurred. The transaction cannot be initiated. | The SDK    did not return the required payment information. | Please contact Antom technical support for details. |
| `USER_BALANCE_NOT_ENOUGH` | `FAIL` | The user's balance is insufficient. Please top up or choose another payment method. | Payment failed due to insufficient buyer balance for the selected payment method. | Display a pop-up message to the buyer. Re-initiate `submitPayment()` using the existing *paymentSessionData* within the payment session validity period. |
| `ORDER_NOT_EXIST` | `FAIL` | The order status is abnormal. Please check the payment status and contact the merchant. | The order does not exist. | Please contact Antom technical support for details. Re-initiate `submitPayment()` using the existing *paymentSessionData* within the payment session validity period. |
| `PROCESS_FAIL` | `FAIL` | System error. Please check your payment status and contact the merchant. | Common business failure occurred. | Please contact Antom technical support for details. Re-initiate `submitPayment()` using the existing *paymentSessionData* within the payment session validity period. |
| `ORDER_IS_CANCELLED` | `FAIL` | The order status is abnormal. Please check the payment status and contact the merchant. | The order has been cancelled. | The order has been cancelled. To make another payment, you need to use a new *paymentRequestId* to re-initiate the payment. |
| `RISK_REJECT` | `FAIL` | Risk control rejected. We recommend changing the card and trying again or contacting the card issuer. | Due to risk control, the transaction cannot be further processed. If the buyer has made payment for the transaction, it will be refunded. | Display a pop-up message to the buyer. Re-initiate `submitPayment()` using the existing *paymentSessionData* within the payment session validity period. |
| `ORDER_IS_CLOSED` | `FAIL` | The order status is abnormal. Please check the payment status and contact the merchant. | The request you initiated uses the same     *paymentRequestId*     as a closed transaction. | The order has timed out and been closed. Please use a new     *paymentRequestId*     to initiate the payment again. |
| `ACCESS_DENIED` | `FAIL` | System error. Please check your payment status and contact the merchant. | The access is denied. | Please contact Antom technical support for details. Re-initiate `submitPayment()` using the existing *paymentSessionData* within the payment session validity period. |
| `CARD_EXPIRED` | `FAIL` | Your card has expired. Please check the expiration date or use a different card. | The bank card used for the transaction has expired. | Antom has notified the buyer, and no further action required. Re-initiate `submitPayment()` using the existing *paymentSessionData* within the payment session validity period. |
| `INVALID_EXPIRY_DATE_FORMAT` | `FAIL` | The card expiration date is incorrect. Please check the expiration date or use a different card. | The format of     *expiryYear*     or     *expiryMonth*     is incorrect. | Antom has notified the buyer, and no further action required. Re-initiate `submitPayment()` using the existing *paymentSessionData* within the payment session validity period. |
| `INVALID_EXPIRATION_DATE` | `FAIL` | The card expiration date is incorrect. Please check the expiration date or use a different card. | The value of     *paymentMethod.paymentMethodMetaData.expiryYear*     or     *paymentMethod.paymentMethodMetaData.expiryDate*     is invalid. | Antom has notified the buyer, and no further action required. Re-initiate `submitPayment()` using the existing *paymentSessionData* within the payment session validity period. |
| `INVALID_CVV` | `FAIL` | The card CVV is incorrect. Please verify the CVV or use a different card. | The bank card used for the transaction has an invalid CVV. | Antom has notified the buyer, and no further action required. Re-initiate `submitPayment()` using the existing *paymentSessionData* within the payment session validity period. |
| `INVALID_CARD_NUMBER` | `FAIL` | The card number is incorrect. Please try using a different card or contact the card issuer. | The bank card used for the transaction has an invalid card number. | Antom has notified the buyer, and no further action required. Re-initiate `submitPayment()` using the existing *paymentSessionData* within the payment session validity period. |
| `SELECTED_CARD_BRAND_NOT_AVAILABLE` | `FAIL` | The card brand is not supported. We recommend changing the card and trying again or contacting the card issuer. | The card brand you specified for transactions is not supported. | The card brand you specified for transactions is not supported. Please troubleshoot. Re-initiate `submitPayment()` using the existing *paymentSessionData* within the payment session validity period. |
| `CARD_NOT_SUPPORTED` | `FAIL` | The card is not supported. Please try using a different card or contact the card issuer. | The bank card used for the transaction is not supported. | Antom has notified the buyer, and no further action required. Re-initiate `submitPayment()` using the existing *paymentSessionData* within the payment session validity period. |
| `CARD_BIN_QUERY_ERROR` | `FAIL` | The card number is incorrect. Please try using a different card or contact the card issuer. | The bank card used for the transaction has an invalid card number. | Antom has notified the buyer, and no further action required. Re-initiate `submitPayment()` using the existing *paymentSessionData* within the payment session validity period. |
| `PAYMENT_IN_PROCESS` | `PROCESSING`  / `PENDING` | The payment is being processed, please wait for the payment to complete. | The payment is being processed. | `PROCESSING`   indicates that no payment result is found after the SDK inquiry. It is recommended to poll the payment result from the server, and re-initiate `submitPayment()` using the existing *paymentSessionData* within the payment session validity period. You can check the     *userCanceled3D*     field in the response to determine whether the buyer manually closed the 3D Secure pop-up: - `true`  : The buyer manually aborts the 3D Secure process. - `false`  : The 3D Secure process is not aborted by the buyer. |
| `CURRENCY_NOT_SUPPORT` | `FAIL` | The merchant does not support this currency, and the transaction cannot be initiated. | The currency is not supported. | Please contact Antom technical support for details. Re-initiate `submitPayment()` using the existing *paymentSessionData* within the payment session validity period. |
| `INVALID_CARD` | `FAIL` | The card number is invalid. Please check the card details or use a different card. | Invalid bank card. Possible reasons include: the bank card number cannot be recognized, the card has no corresponding issuing bank, or the card number format is incorrect. | Display a pop-up message to the buyer. Re-initiate `submitPayment()` using the existing *paymentSessionData* within the payment session validity period. |
| `ISSUER_REJECTS_TRANSACTION` | `FAIL` | The issuing bank has declined the transaction. Please try using a different card or contact the card issuer. | The issuing bank rejects the transaction. | Display a pop-up message to the buyer. Re-initiate `submitPayment()` using the existing *paymentSessionData* within the payment session validity period. |
| `INVALID_MERCHANT_STATUS` | `FAIL` | Merchant status is abnormal, and the transaction cannot be initiated. | The merchant status is abnormal because restrictions exist. | Please contact Antom technical support for details. |
| `KEY_NOT_FOUND` | `FAIL` | Unknown exception. Please check the payment status and contact the merchant. | The private key or public key of Antom or the merchant is not found. | Please contact Antom technical support for details. |
| `MERCHANT_KYB_NOT_QUALIFIED` | `FAIL` | Merchant status is abnormal, and the transaction cannot be initiated. | The payment failed to your abnormal KYB status. You are either not KYB compliant, or the KYB status is not qualified for this transaction. | Please contact Antom technical support for details. |
| `NO_PAY_OPTIONS` | `FAIL` | No supported payment method | No payment options are available. | Please contact Antom technical support for details. |
| `PARAM_ILLEGAL` | `FAIL` | Unknown exception. Please check the payment status and contact the merchant. | The required parameters are not passed, or illegal parameters exist. For example, a non-numeric input, an invalid date, or the length and type of the parameter are incorrect. | Please contact Antom technical support for details. |
| `PAYMENT_AMOUNT_EXCEED_LIMIT` | `FAIL` | The payment amount is greater than the maximum amount allowed by the contract or payment method. | The payment amount is greater than the maximum amount allowed by the contract or payment method. | Check whether the payment amount exceeds the limit, or use a lower amount and try again. Use a new *paymentRequestId* to change the amount and re-initiate the payment. |
| `PAYMENT_COUNT_EXCEED_LIMIT` | `FAIL` | The number of payment attempts by the merchant has exceeded the limit, and the transaction cannot be initiated. | The maximum number of payments exceeds the limit specified by the payment method. | Please contact Antom technical support for details. |
| `PAYMENT_NOT_QUALIFIED` | `FAIL` | Merchant status is abnormal, and the transaction cannot be initiated. | You are not eligible to make payments, possibly because you are not registered, have not signed the Tokenized Payment contract, or are prohibited from making payments. | Please contact Antom technical support for details. |
| `SUSPECTED_CARD` | `FAIL` | Risk control declined. Please try using a different card or contact your card issuer. | The bank card is suspected of fraud. For example, it may be stolen or restricted. | Display a pop-up message to the buyer. Re-initiate `submitPayment()` using the existing *paymentSessionData* within the payment session validity period. |
| `SYSTEM_ERROR` | `FAIL` | Unknown exception. Please check the payment status and contact the merchant. | A system error occurred. | Please contact Antom technical support for details. Display a pop-up message to the buyer. Re-initiate `submitPayment()` using the existing *paymentSessionData* within the payment session validity period. |
| `USER_AMOUNT_EXCEED_LIMIT` | `FAIL` | The amount exceeds the limit. Please initiate the payment with an amount less than or equal to your available balance. | The payment amount exceeds the buyer payment limit. | Display a pop-up message to the buyer. Re-initiate `submitPayment()` using the existing *paymentSessionData* within the payment session validity period. |
| `USER_KYC_NOT_QUALIFIED` | `FAIL` | Your account status is unusual. Please try using a different card or contact the card issuer.2 | The payment failed because of the buyer's KYC status. The buyer is either not KYC compliant, or the KYC status is not qualified for this transaction (for example, limitations on the payment amount or product information). | Display a pop-up message to the buyer. Re-initiate `submitPayment()` using the existing *paymentSessionData* within the payment session validity period. |
| `USER_PAYMENT_VERIFICATION_FAILED` | `FAIL` | Your account status is unusual. Please try using a different card or contact the card issuer. | The buyer is restricted from making payments by the payment method provider. | Display a pop-up message to the buyer. Re-initiate `submitPayment()` using the existing *paymentSessionData* within the payment session validity period. |
| `USER_STATUS_ABNORMAL` | `FAIL` | Your account status is unusual. Please try using a different card or contact the card issuer. | The buyer status is abnormal on the payment method side. | Display a pop-up message to the buyer. Re-initiate `submitPayment()` using the existing *paymentSessionData* within the payment session validity period. |
| `DO_NOT_HONOR` | `FAIL` | The payment was declined by the card issuer. We recommend changing the card and trying again or contacting the card issuer. | The payment is rejected by the issuing bank. | Display a pop-up message to the buyer. Re-initiate `submitPayment()` using the existing *paymentSessionData* within the payment session validity period. |
| `EXTERNAL_RESOURCE_LOAD_FAILED` | `FAIL` | An error occurred. The transaction cannot be initiated. | Google/Apple resource error. | Buyer network exception detected, or their device does not support payments via Google, Apple, or other third‑party‑dependent platforms. It is recommended to display a pop‑up prompting the buyer to check their payment execution environment. |
| `SUBMIT_PAYMENT_TIMEOUT` | `PROCESSING` | An error occurred. The transaction cannot be initiated. | Network exception occurred during payment submission. | Buyer network exception or Antom service exception detected. Please try to poll the payment result from the server. If the payment result cannot be retrieved, re-initiate `submitPayment()` using the existing *paymentSessionData* within the payment session validity period. |
| `PAYMENT_RESULT_TIMEOUT` | `PROCESSING` | An error occurred. The transaction cannot be initiated. | Network exception occurred while retrieving the payment result. | Please try to poll the payment result from the server. If the payment result cannot be retrieved, re-initiate `submitPayment()` using the existing *paymentSessionData* within the payment session validity period. |
| `USER_CANCELED` | `PROCESSING` | None. | The buyer closed the QR code or leading pop-up manually. | Re-initiate `submitPayment()` using the existing *paymentSessionData* within the payment session validity period. |
| `FORM_INVALID` | `FAIL` | None. | Incorrect payment information entered. | Antom has notified the buyer, and no further action required. Re-initiate `submitPayment()` using the existing *paymentSessionData* within the payment session validity period. |
| `FRAUD_REJECT` | `FAIL` | Sorry, this transaction cannot be processed at the moment. If a payment was involved, the funds will be automatically refunded to your payment account. No further action is required. | Due to risk control measures, the transaction cannot be processed further. If the user has already paid for the transaction, the payment will be refunded. | Risk control interception: this transaction has been terminated due to triggered risk control rules.       For orders that have already been paid, a refund will be initiated automatically. The time it takes for the refund to be received depends on the payment channel. |
| `SECURITY_REJECT` | `FAIL` | Declined for security reasons by bank. Contact your bank or try another card. | The transaction was declined because the issuing bank detected a security issue. | Bank interception: the issuing bank declined the transaction based on its risk control policies. Possible reasons include abnormal card status, cross-border transaction restrictions, or daily spending limits. Suggested action: - Guide the buyer to use a different payment method or bank card; - Advise the buyer to contact the issuing bank to verify the card status; - This type of decline is initiated by the bank, and the platform cannot intervene |
| `TRANSACTION_NOT_PERMITTED` | `FAIL` | Transaction is not permited. Please try again later. | The issuing bank declined the transaction for this card/account. | Bank decline: the issuing bank did not authorize the transaction. Possible reasons: - Insufficient card balance; - Exceeded the per-transaction or daily transaction limit; - The card has expired or has been frozen; - The transaction was blocked by the issuing bank’s risk control policies.   Suggested action: guide the buyer to try a different card or payment method, or contact the bank for verification. In most cases, this issue can be resolved by using an alternative payment method. |
| `RESTRICTED_CARD` | `FAIL` | Card restricted. Contact your bank or try another card. | The issuing bank limits the use of the card. | Card usage restricted: the issuing bank has placed restrictions on usage scenarios for this card. Suggested action: - Guide the buyer to use a different bank card if possible; - If the buyer wishes to continue using this card, advise them to contact the issuing bank to request that the restriction be lifted; - These restrictions are controlled by the issuing bank, and the platform cannot intervene. |
| `USER_PAYMENT_VERIFICATION_FAILED` | `FAIL` | Your account status is unusual. Please try using a different card or contact the card issuer. | The user is restricted from paying on the payment method side. | Popup notification for buyers. |
| `DO_NOT_HONOR` | `FAIL` | The payment was declined by the card issuer. We recommend changing the card and trying again or contacting the card issuer. | Payment was refused by the issuing bank. | Popup notification for buyers. |
| `PAYMENT_AMOUNT_EXCEED_LIMIT` | `FAIL` | Merchant status is abnormal, and the transaction cannot be initiated. | The amount paid exceeds the maximum amount allowed by the contract or payment method. | Check if the payment amount exceeds the limit, or try again with a lower amount. |
| `RE_ENTER_TRANSACTION` | `FAIL` | The order status is abnormal. Please check the payment status and contact the merchant. | The transaction is temporarily unprocessed. | The transaction cannot be processed at this time. It is recommended to guide the buyer to change the payment method, or contact the bank to confirm the reason and try again. |
| `BLOCKED_FIRST_USED` | `FAIL` | Blocked by bank. Contact your bank or try another card. | The card may be temporarily suspended for the following reasons: it has not been activated for the first time, or it may be subject to special conditions (such as a new card not being activated). | This card is a new card that hasn't been activated, or the issuing bank has set special usage conditions (such as requiring in-person activation for the first transaction). We recommend guiding the buyer to: - Activate the card via the bank's app or at a branch; - Complete the first transaction verification; - Or switch to another payment method. |
| `POLICY` | `FAIL` | Payment declined by bank. Try again or another card. | Policy restrictions. | Card policy restrictions: The issuing bank has set transaction type limits on this card. Suggested action: - Suggest the buyer use a different card to complete the payment; - To resolve the issue, the buyer should contact the issuing bank to modify the card policy; - Such restrictions are controlled by the bank, and the platform cannot bypass them. |
| `ACCOUNT_CLOSED` | `FAIL` | Card Not Allowed. Please try another card. | The account has been closed. Please verify the accuracy of the account number and do not process the same bank card number or token again. | Account status issue: The issuing bank has reported that the account is closed. Please do not attempt to use the same card number again. This is a terminal error, and resubmitting will not succeed and may trigger platform or bank risk control rules. We recommend guiding the buyer to use a different card. |
| `LIFECYCLE` | `FAIL` | Your card number/expire date/CVV is invalid. | The transaction was declined due to invalid card data. | Invalid card data: Card issuing bank or card network failed to verify card information. Possible causes: - Card number input error (incorrect number of digits/Luhn verification failed); - Expiration of validity period or format error (MM/YY); - CVV/CVC security code error; - The name of the cardholder does not match the card; - Magnetic stripe/chip data read error. |
| `PICKUP_CARD` | `FAIL` | Card Not Allowed. Please try another card. | The issuing bank requires the merchant to retain the payment card. This situation usually occurs in cases of suspected counterfeit cards or fraudulent transactions. | The issuing bank requires the card to be retained. High risk: the issuing bank has indicated that the card may be associated with fraud risk, such as a suspected counterfeit or stolen card, and has requested that it be retained. In offline scenarios, the card should be retained in accordance with the bank’s instructions and the authorization center should be contacted. In online scenarios, the transaction should be terminated immediately, relevant information should be recorded, and the buyer should be advised to contact the issuing bank. |
| `INVALID_AMOUNT` | `FAIL` | The payment amount seems invalid. Please check the amount and try again. | The issuing bank may decline the transaction for various reasons, such as an invalid specified amount or exceeding the maximum limit. | Transaction declined due to amount issues: The issuing bank rejected the transaction because of the amount. Possible reasons: - Exceeds the card's single transaction/daily/monthly limit; - Below the card's minimum transaction amount; - Suggest that merchants prompt buyers with a pop-up. |
| `DOMESTIC_DEBIT_TRANSACTION_NOT_ALLOWED` | `FAIL` | Payment Restricted.     This type of bank card does not currently support this transaction. Please use another payment method. | Domestic debit card transactions are not allowed (for regional use only). | Unsupported card type: Domestic debit cards are not supported for transactions in the current channel/scenario. Please use a different card for the transaction. |
| `BLOCKED_BY_CARDHOLDER` | `FAIL` | Bank cards are temporarily unavailable.     Please use another payment method to complete the payment. | The card is locked by the buyer. | The card has been actively locked by the cardholder (possibly through the bank app for reporting loss, freezing, or setting a security lock). We recommend guiding the buyer to: - Use a different bank card for payment; - If they wish to use this card, please have the buyer contact the bank to lift the freeze. This status is a result of the buyer's action, and the platform cannot intervene. |
| `INSTALLMENT_NOT_SUPPORTED` | `FAIL` | This card does not support installment payments. Please use a different card to pay. | The card or merchant does not support installment payments. | This card does not have the installment feature enabled, or the current merchant/transaction scenario does not support installments. Suggested action: - Guide the buyer to choose full payment; - Or switch to a credit card that supports installments; - If the merchant has enabled installments but an error occurs, please check the installment parameter settings or contact technical support. |
| `PAYMENT_METHOD_SYSTEM_ERROR` | `FAIL` | System busy. The payment system is temporarily unable to process your request. Please try again later or choose another payment method. | Payment method system error. | The payment system of the issuing bank is abnormal. It is recommended to guide the buyer to retry or change the payment method later. If the error continues, contact technical support to check the channel status. |
| `INVALID_INSTALLMENT_PLAN` | `FAIL` | The number of installment periods is incorrect. Please change the selected installment period and try again. | The number of installments or intervals is incorrect. | Installment parameters error: The number of installments or the interval rules in the request are incorrect. Please check if the installment parameters are within the supported values, or contact the channel to confirm the installment plan supported by the card. Suggested action:    Prompt the buyer to modify the number of installments or change the card and try again. |
| `INVALID_CPF` | `FAIL` | Identity verification failed. Please verify your information and resubmit. | The provided CPF number is invalid. | The CPF (Brazilian tax number) provided by the buyer is in the wrong format or has failed validation. Please prompt the buyer to check the input format or contact Antom technical support to see if local rules need to be adapted. |
| `REFERRAL_ISSUER` | `FAIL` | This bank does not currently support this transaction. Please use an alternative payment method. | The transaction was declined by the issuing bank. | The transaction was declined by the issuing bank, and no specific reason was provided. We recommend guiding the buyer to: - Use a different bank card; - Contact the issuing bank to verify the card status. |
| `INVALID_PIN` | `FAIL` | The PIN code is incorrect or does not meet the requirements. Please re-enter it or change your payment method. | The provided PIN code is incorrect or does not meet requirements. | The PIN is incorrect or does not meet the requirements (entered incorrectly, format is invalid, or the channel requires an online PIN that was not provided). Suggested action:   ​ - Prompt the buyer to re-enter the PIN; - If there are multiple failures, consider using a different card to avoid locking the card. |
| `LAW_VIOLATION` | `FAIL` | Your bank does not currently support this transaction. We recommend: - Using a different bank card for payment - Contacting your issuing bank to understand the specific reason. | The issuing bank declined the transaction. | Bank rejection: The issuing bank did not authorize this transaction. Possible reasons: - Insufficient card balance; - Exceeded single transaction/daily transaction limit; - Card expired or frozen; - Blocked by the issuing bank's risk control policy.   Suggested action:    Guide the buyer to use a different card for payment or contact the bank to verify. This error can usually be resolved by changing the payment method. |
| `LOST_CARD` | `FAIL` | Your bank card is in an abnormal state. Please contact your issuing bank or use an alternative payment method to complete the payment. | Lost card (fraudulent account). | Lost card or fraudulent account. The card has been flagged as lost, stolen or involved in a fraudulent transaction. Guide buyers to replace other bank cards. |
| `STOLEN_CARD` | `FAIL` | Your bank card is in an abnormal state. Please contact your issuing bank or use an alternative payment method to complete the payment. | Stolen card (fraudulent account). | Stolen card or fraudulent account: This card has been marked as stolen and is involved in fraudulent transactions. Suggested action: Inform the buyer that the card appears to be abnormal and guide them to use a different bank card. |
| `INVALID_TRANSACTION` | `FAIL` | If the transaction fails, please do not retry. Contact Antom Technical Support for more information. | Invalid transaction. | The transaction has been deemed invalid. Possible reasons: - Missing or incorrect transaction parameters; - Risk control rules intercepted; - Duplicate transaction submission; - Or the channel does not support this transaction type.   Please check the completeness of the request parameters. |

## Best practices {#Sb5b0}

### Loading management {#KxZls}

 Before calling the   `submitPayment()`      method, you may add a     *loading*     indicator and close it when handling the callback in the   `.then()`      method.