---
title: "Installments in Mexico"
description: "Flag the payment as debit or credit, and make credit card installment payments in Mexico."
url: "https://docs.adyen.com/point-of-sale/installments/mexico-installments"
source_url: "https://docs.adyen.com/point-of-sale/installments/mexico-installments.md"
canonical: "https://docs.adyen.com/point-of-sale/installments/mexico-installments"
last_modified: "2026-06-01T15:33:14+02:00"
language: "en"
---

# Installments in Mexico

Flag the payment as debit or credit, and make credit card installment payments in Mexico.

[View source](/point-of-sale/installments/mexico-installments.md)

In Mexico, shoppers can use most credit cards to make payments in installments. Combo cards that have both a debit and a credit functionality can also be used to pay in installments.

If a shopper chooses to pay in installments, you receive the full amount. However, you are responsible for the installment fees charged by the issuer.

This page explains how to flag in-store card payments as credit or debit and make credit card installment payments in a Terminal API integration.

## Requirements

| Requirement          | Description                                                                                           |
| -------------------- | ----------------------------------------------------------------------------------------------------- |
| **Integration type** | A [Terminal API](/point-of-sale/basic-tapi-integration/) integration with payment terminals.          |
| **Limitations**      | Supported in Mexico with specific issuing banks. See the list of [supported cards](#supported-cards). |

## How it works

1. Your store staff asks the shopper how they prefer to pay:

   * Do they want to pay by debit or credit?
   * If credit, do they want to make a one-off payment of the total amount or do they want to pay in installments?
   * If installments, how many installments?

2. Your store staff enters this information into your POS app.

3. Your POS app passes this information in the [payment request](#payment-terminal-api).

4. The shopper presents their card to the terminal and completes the payment.

5. When the transaction is approved, you receive a response containing installment and receipt data.

## Make a payment

The Terminal API payment request needs to contain a flag to indicate a debit or credit card payment. When paying by credit in installments, the request also needs to contain an object to define the installments.

1. Make sure that your POS app collects the following information and passes it to the Terminal API payment request:

   * Whether the shopper is going to pay by debit or credit.
   * If credit: whether the shopper wants to pay in installments.
   * If credit installments: how many installments.

2. [Make a payment request](/point-of-sale/basic-tapi-integration/make-a-payment), specifying:

   * The standard [`SaleToPOIRequest.MessageHeader` ](/point-of-sale/design-your-integration/terminal-api#request-message-header)object, with `MessageClass` set to **Service** and `MessageCategory` set to **Payment**.

     | Parameter         | Required                                                                                    | Description                                                                                                                                                 |
     | ----------------- | ------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
     | `ProtocolVersion` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | **3.0**                                                                                                                                                     |
     | `MessageClass`    | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | **Service**                                                                                                                                                 |
     | `MessageCategory` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | **Payment**                                                                                                                                                 |
     | `MessageType`     | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | **Request**                                                                                                                                                 |
     | `ServiceID`       | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | Your unique ID for this request, consisting of 1-10 alphanumeric characters. Must be unique within the last 48 hours for the terminal (`POIID`) being used. |
     | `SaleID`          | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | Your unique ID for the POS system component to send this request from.                                                                                      |
     | `POIID`           | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The unique ID of the terminal to send this request to. Format: *\[device model]-\[serial number]*.                                                          |

   - The [PaymentRequest](https://docs.adyen.com/api-explorer/terminal-api/latest/post/payment) object with:

     | Parameter                       | Required                                                                                    | Description                                                                                                                                                                                                                                                                                                                                                               |
     | ------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
     | `SaleData.SaleTransactionID`    | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | An object with:- `TransactionID`: your reference to identify a payment. We recommend using a unique value per payment. In your Customer Area and Adyen reports, this will show as the **merchant reference** for the transaction.
     - `TimeStamp`: date and time of the request in [UTC format](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_\(UTC\)). |
     | `PaymentTransaction.AmountsReq` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | An object with:- `Currency`: the transaction [currency](/development-resources/currency-codes).
     - `RequestedAmount`: The final transaction amount.                                                                                                                                                                                                                        |

3. Add a flag to specify if the shopper wants to pay by debit or credit:

   * `TransactionConditions.DebitPreferredFlag`:

     * **true**: makes a debit card payment.
     * **false**: makes a credit card payment.

   For a debit card payment or a one-off credit card payment, no further parameters are required.

4. If the shopper is paying by credit card in installments, define the installments by adding:

   * `PaymentData`: the installment details. This contains:

     * `PaymentType`: **Instalment**
     * `Instalment.TotalNbOfPayments`: the number of installments. The minimum is **3**, the maximum **18**.

   Here are some sample requests:

   ### Tab: Debit card payment

   ```json
   {
     "SaleToPOIRequest":{
       "MessageHeader":{
         "ProtocolVersion":"3.0",
         "MessageClass":"Service",
         "MessageCategory":"Payment",
         "MessageType":"Request",
         "ServiceID":"2307d64b8",
         "SaleID":"Demo",
         "POIID":"P400Plus-275040710"
       },
       "PaymentRequest":{
         "SaleData":{
           "SaleTransactionID":{
             "TransactionID":"TID-2018-07-23-21:43:03",
             "TimeStamp":"2018-07-23T21:43:03"
           },
           "SaleReferenceID":"TID-2018-07-23-21:43:03",
           "SaleToAcquirerData":""
         },
         "PaymentTransaction":{
           "AmountsReq":{
             "Currency":"MXN",
             "RequestedAmount":120.00
           },
           "TransactionConditions":{
             "DebitPreferredFlag":true
           }
         }
       }
     }
   }
   ```

   ### Tab: Credit card payment without installments

   ```json
   {
     "SaleToPOIRequest":{
       "MessageHeader":{
         "ProtocolVersion":"3.0",
         "MessageClass":"Service",
         "MessageCategory":"Payment",
         "MessageType":"Request",
         "ServiceID":"2307d64b8",
         "SaleID":"Demo",
         "POIID":"P400Plus-275040710"
       },
       "PaymentRequest":{
         "SaleData":{
           "SaleTransactionID":{
             "TransactionID":"TID-2018-07-23-21:43:03",
             "TimeStamp":"2018-07-23T21:43:03"
           },
           "SaleReferenceID":"TID-2018-07-23-21:43:03",
           "SaleToAcquirerData":""
         },
         "PaymentTransaction":{
           "AmountsReq":{
             "Currency":"MXN",
             "RequestedAmount":120.00
           },
           "TransactionConditions":{
             "DebitPreferredFlag":false
           }
         }
       }
     }
   }
   ```

   ### Tab: Credit card payment with 12 installments

   ```json
   {
     "SaleToPOIRequest":{
       "MessageHeader":{
         "ProtocolVersion":"3.0",
         "MessageClass":"Service",
         "MessageCategory":"Payment",
         "MessageType":"Request",
         "SaleID":"Demo",
         "ServiceID":"2307d64b8",
         "POIID":"P400Plus-275040710"
       },
       "PaymentRequest":{
         "SaleData":{
           "SaleTransactionID":{
             "TransactionID":"TID-2022-09-11-21:43:03",
             "TimeStamp":"2022-11-09T14:43:03"
           },
           "SaleReferenceID":"TID-2022-11-09-21:43:03",
           "SaleToAcquirerData":""
         },
         "PaymentTransaction":{
           "AmountsReq":{
             "Currency":"MXN",
             "RequestedAmount":120.00
           },
           "TransactionConditions":{
             "DebitPreferredFlag":false
           }
         },
         "PaymentData":{
           "PaymentType":"Instalment",
           "Instalment":{
             "TotalNbOfPayments":12
           }
         }
       }
     }
   }
   ```

5. Check the payment result.\
   If the payment is successful, the terminal shows the payment is approved, and you receive a [Terminal API response](/point-of-sale/design-your-integration/terminal-api#responses). This response contains:

   * `PaymentReceipt`: dynamically generated receipt data that you can use for printing (or emailing) receipts. Both the merchant receipt and the shopper receipt have additional required keys:

     * `productType`: indicates if the shopper paid by debit, credit, or credit in a specified number of installments.

   * If the shopper paid in installments, the response also includes:

     * `PaymentResult.PaymentType`: **Instalment**
     * `PaymentResult.Instalment`: object containing the same installment details that you defined in the `PaymentData` of your `PaymentRequest`.

   Here is a sample response for a **credit card payment with 12 installments**:

   **Payment response with 12 installments**

   ```json
   {
       "SaleToPOIResponse":{
           "MessageHeader":{...},
           "PaymentResponse":{
               "PaymentReceipt":[...],
               "POIData":{...},
               "PaymentResult":{
                   "PaymentType":"Instalment",
                   ...
                   "Instalment":{
                       "TotalNbOfPayments":12
                   },
                   ...
               },
               "SaleData":{...},
               "Response":{"Result": "Success"...}
           }
       }
   }
   ```

## Reconciling installments

If a shopper chooses to pay in installments, the full purchase amount is deducted from their credit card limit. The issuing bank then deducts the amount for each monthly installment from their debit account. Typically, shoppers choose to pay in 3 to 18 monthly installments.

You as the merchant receive the full purchase amount from the issuing bank. However, you are responsible for the installment fees charged by the issuer.

## Supported cards

Currently, Adyen supports five different installment programs in Mexico. These programs and the participating card issuers are:

* Prosa installments program: AFIRME, AZTECA, BANBAJIO, BANCA MIFEL, BANJERCITO, BANORTE, BANREGIO, CAJA MORELIA, CREDICLUB, EFEVOO, FALABELLA, INBURSA, INVEX, KLAR, KONFIO, LIVERPOOL, RAPPI CARD, SANTANDER, SCOTIABANK, SUBURBIA.

* Mastercard installments program: FINSUS, PLATA REGIGOLD, REVOLUT, STORI, UALA.

* Nubank installments program: NU.

* Citibanamex installments program: BANAMEX.

* Bancoppel installments program: BANCOPPEL.

To accept installment payments made with cards issued by other banks, you must have a legal agreement directly with the bank that issued the card.

## See also

* [Make a Terminal API payment](/point-of-sale/basic-tapi-integration/make-a-payment)
* [Receipts](/point-of-sale/basic-tapi-integration/generate-receipts)
* [Receiving webhooks](/point-of-sale/design-your-integration/notifications)
