---
title: "Installments in Brazil"
description: "Flag a payment as credit, debit, or voucher, and make credit card installment payments in Brazil."
url: "https://docs.adyen.com/point-of-sale/installments/brazil-installments"
source_url: "https://docs.adyen.com/point-of-sale/installments/brazil-installments.md"
canonical: "https://docs.adyen.com/point-of-sale/installments/brazil-installments"
last_modified: "2025-08-19T09:19:00+02:00"
language: "en"
---

# Installments in Brazil

Flag a payment as credit, debit, or voucher, and make credit card installment payments in Brazil.

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

In Brazil, shoppers commonly use a combo card that has both a debit and a credit functionality, and most credit cards accept installment payments. Consequently, when paying by card, shoppers are asked to make some choices:

* Do they want to pay by credit, debit, or voucher?
* 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?

Here we explain how to flag in-store card payments as credit or debit and make credit card installment payments using one of the following flows:

* [Adyen UI](#automatic-flow): with this flow enabled, the terminal automatically shows screens that let the shopper make their choices, and then processes the payment request according to those choices. This flow works for integrated and standalone payment terminals.
* [Your own UI](#terminal-api): you create your own UI or use some other process to get the shopper's choices, and then pass this information in your payment request.

## Requirements

Before you begin, take into account the following requirements, limitations, and preparations.

| Requirement          | Description                                                                                                                                                                                                                                                                          |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Integration type** | A [Terminal API](/point-of-sale/basic-tapi-integration/) integration with payment terminals or a [standalone solution](/point-of-sale/standalone).                                                                                                                                   |
| **Limitations**      | Note the following:- Installments with combo cards is supported in Brazil.
- The [automatic flow](#automatic-flow) requires terminal software version **v1.119** or later.                                                                                                           |
| **Setup steps**      | To [use the Adyen UI flow](#automatic-flow), ask our [Support Team](https://ca-test.adyen.com/ca/ca/contactUs/support.shtml?form=other) to enable that flow. Let them know whether you want this to be configured for a company account, a merchant account, a store, or a terminal. |

## Adyen UI

To use the Adyen UI flow, you must contact our [Support Team](https://ca-test.adyen.com/ca/ca/contactUs/support.shtml?form=other) and let them know whether you want this to be enabled for a company or merchant account, a store, or a terminal. The Adyen UI flow works for integrated and standalone payment terminals.

When enabled, the flow is as follows:

1. You initiate a payment like you usually do.

2. The terminal shows a series of prompts:

   1. First, the terminal asks the shopper to choose if they want to pay by credit, debit, or voucher.
   2. If the shopper selects **Credit**, the terminal asks them to select if they want to pay in **Installments** or as a **One-off** payment.
   3. If the shopper selects **Installments**, the terminal asks them to **Enter the number of installments** and select **Confirm**.

   |                                                                                                                                                                      |                                                                                                                                                                                       |                                                                                                                                                                                 |
   | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
   | Select card type screen ![Screen to select Credit, Debit, or Voucher](/images/d/a/3/b/a/da3bacf4443d85251f24b339d1982211a40e79a4-screen-encard-selection-screen.png) | Select payment type screen ![Screen to select one-off payment or installments](/images/8/3/9/9/1/83991a6dff8d5e3d5f0540b3bf3d0e30f4ac4df6-screen-enpayment-type-selection-screen.png) | Enter number of installments screen ![Screen to select the number of installments](/images/0/2/3/e/e/023ee90ab28ef5e979e35987c257fc8ebbf3eb13-screen-eninstallments-screen.png) |

3. The terminal asks the shopper to present their card.

4. The shopper completes the payment on the terminal. They may need to enter their PIN or signature to verify the payment.\
   When applicable, the generated receipt includes the number of installments, for example, "Crédito em 12 parcelas" ("Credit in 12 installments").

On an integrated terminal, you can find the installment information in the Terminal API response:

* `PaymentResult.PaymentType`: **Instalment**.

* `PaymentResult.Instalment`: an object containing:

  * `InstalmentType`: **EqualInstalments**
  * `SequenceNumber`: **1**
  * `Period`: **1**
  * `PeriodUnit`: **Monthly**
  * `TotalNbOfPayments`: the number of installments.

* `Response.AdditionalResponse`: **installments=** with the number of installments.

## Your own UI

As an alternative to the Adyen UI, you can design your own custom UI to collect the customer's preference. Your Terminal API request then needs to flag the credit card transaction as credit and make credit card installment payments.

The flow at the point of sale is as follows:

1. You collect the information about whether the shopper prefers to pay by credit, debit, or voucher, and if applicable, in how many installments. You can do this in various ways, for example:

   * Your store staff asks the shopper about their preferences.
   * You collect the shopper's preferences on a secondary screen, for instance a tablet.
   * You use [input requests](/point-of-sale/shopper-engagement/shopper-input/) to collect the shopper's preferences on the payment terminal.

2. You use logic to pass the collected information to your POS app or your store staff enters this information manually into your POS app.

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

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

If the customer paid in installments, the response contains the installment details and the receipt data includes the number of installments, for example, "Crédito em 12 parcelas" ("Credit in 12 installments").

### Make a payment with Terminal API

When paying in installments, the Terminal API payment request needs to indicate that the payment type is credit, and contain an object to define the installments.

There are two ways to indicate the payment type:

* **`selectedAccountType`**:\
  This method is recommended because it also applies to meal or food [vouchers](/point-of-sale/alternative-payment-methods/brazil-vouchers). You create a JSON object containing `selectedAccountType` with a value of **CREDIT**, **CHEQUE**, or **MEAL\_VOUCHER**. Then you Base64-encode the JSON object and pass the resulting string in your Terminal API request, in the `SaleToPOIData` field.
* **`DebitPreferredFlag`**:\
  This method is limited to credit or debit. You add `TransactionConditions.DebitPreferredFlag` set to **false** for credit, or **true** for debit.

In the event that both `DebitPreferredFlag` and `selectedAccountType` occur in the same request, `selectedAccountType` takes precedence and its value is used.

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

   * The payment type: credit or debit (or voucher).
   * If credit: whether the shopper wants to pay in installments.
   * If credit installments: how many installments.

2. If you want to indicate the payment type using `selectedAccountType`:

   1. Create a JSON object consisting of the `selectedAccountType` parameter with the value **CREDIT**, or **CHEQUE** for debit, or **MEAL\_VOUCHER** for a voucher.

      **JSON object**

      ```json
      {"selectedAccountType": "CREDIT"}
      ```

   2. Encode the JSON object to Base64. You will pass the resulting string in `SaleData.SaleToPOIData`.

      **Converted to a Base64-encoded string**

      ```raw
      eyJzZWxlY3RlZEFjY291bnRUeXBlIjogIkNSRURJVCJ9
      ```

3. [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 shows 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.                                                                                                                                                                                                                    |

   * The payment type, specified in one of the following ways:

     * `SaleData.SaleToPOIData` with the Base64-encoded string from step 2 as its value.

     * `TransactionConditions.DebitPreferredFlag` set to **false** for credit, or **true** for debit.

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

   * If the shopper is paying by credit card in installments, define the installments by adding `PaymentData` object with:

     * `PaymentType`: **Instalment**
     * `Instalment.InstalmentType`: **EqualInstalments**
     * `Instalment.SequenceNumber`: **1**
     * `Instalment.Period`: **1**
     * `Instalment.PeriodUnit`: **Monthly**
     * `Instalment.TotalNbOfPayments`: the number of installments. The minimum is **2**, the maximum **36**.

   To see some sample requests, select your method.

   **

   ### selectedAccountType method

   ### Tab: Credit payment with 12 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": "",
          "SaleToPOIData": "eyJzZWxlY3RlZEFjY291bnRUeXBlIjogIkNSRURJVCJ9"
        },
        "PaymentTransaction": {
          "AmountsReq": {
            "Currency": "BRL",
            "RequestedAmount": 120.00
          }
        },
        "PaymentData": {
          "PaymentType": "Instalment",
          "Instalment": {
            "InstalmentType": "EqualInstalments",
            "SequenceNumber": 1,
            "Period": 1,
            "PeriodUnit": "Monthly",
            "TotalNbOfPayments": 12
          }
        }
      }
    }
   }
   ```

   ### Tab: Credit 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": "",
          "SaleToPOIData": "eyJzZWxlY3RlZEFjY291bnRUeXBlIjogIkNSRURJVCJ9"
        },
        "PaymentTransaction": {
          "AmountsReq": {
            "Currency": "BRL",
            "RequestedAmount": 120.00
          }
        }
      }
    }
   }
   ```

   ### Tab: Debit 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": "",
          "SaleToPOIData": "eyJzZWxlY3RlZEFjY291bnRUeXBlIjogIkNIRVFVRSJ9"
        },
        "PaymentTransaction": {
          "AmountsReq": {
            "Currency": "BRL",
            "RequestedAmount": 120.00
          }
        }
      }
    }
   }
   ```

   **

   ### DebitPreferredFlag method

   ### Tab: Credit payment with 12 installments

   #### JSON

   ```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": "BRL",
             "RequestedAmount": 120.00
           },
           "TransactionConditions": {
             "DebitPreferredFlag": false
           }
         },
         "PaymentData": {
           "PaymentType": "Instalment",
           "Instalment": {
             "InstalmentType": "EqualInstalments",
             "SequenceNumber": 1,
             "Period": 1,
             "PeriodUnit": "Monthly",
             "TotalNbOfPayments": 12
           }
         }
       }
     }
   }
   ```

   #### Java

   ```java
   String serviceID = "YOUR_UNIQUE_ATTEMPT_ID";
   String saleID = "YOUR_CASH_REGISTER_ID";
   String POIID = "YOUR_TERMINAL_ID";
   String transactionID = "YOUR_UNIQUE_TRANSACTION_ID";

   SaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();
   MessageHeader messageHeader = new MessageHeader();
   messageHeader.setProtocolVersion("3.0");
   messageHeader.setMessageClass( MessageClassType.SERVICE );
   messageHeader.setMessageCategory( MessageCategoryType.PAYMENT );
   messageHeader.setMessageType( MessageType.REQUEST );
   messageHeader.setServiceID(serviceID);
   messageHeader.setSaleID(saleID);
   messageHeader.setPOIID(POIID);
   saleToPOIRequest.setMessageHeader(messageHeader);

   PaymentRequest paymentRequest = new PaymentRequest();
   SaleData saleData = new SaleData();
   TransactionIdentification saleTransactionID = new TransactionIdentification();
   saleTransactionID.setTransactionID(transactionID);
   saleTransactionID.setTimeStamp(DatatypeFactory.newInstance().newXMLGregorianCalendar(new GregorianCalendar()));
   saleData.setSaleTransactionID(saleTransactionID);
   saleData.setSaleReferenceID("TID-2018-07-23-21:43:03");
   saleData.setSaleToAcquirerData("");
   paymentRequest.setSaleData(saleData);

   PaymentTransaction paymentTransaction = new PaymentTransaction();
   AmountsReq amountsReq = new AmountsReq();
   amountsReq.setCurrency("BRL");
   amountsReq.setRequestedAmount( BigDecimal.valueOf(120.00) );
   paymentTransaction.setAmountsReq(amountsReq);

   TransactionConditions transactionConditions = new TransactionConditions();
   transactionConditions.setDebitPreferredFlag( Boolean.FALSE );
   paymentTransaction.setTransactionConditions(transactionConditions);
   paymentRequest.setPaymentTransaction(paymentTransaction);
   saleToPOIRequest.setPaymentRequest(paymentRequest);

   PaymentData paymentData = new PaymentData();
   paymentData.setPaymentType( PaymentType.INSTALMENT );
   Instalment instalment = new Instalment();
   instalment.getInstalmentType.add( InstalmentType.EQUAL_INSTALMENTS );
   instalment.setSequenceNumber(1);
   instalment.setPeriod(1);
   instalment.setPeriodUnit( PeriodUnitType.MONTHLY );
   instalment.setTotalNbOfPayments(12);
   paymentData.setInstalment(instalment);
   saleToPOIRequest.setPaymentData(paymentData);
   terminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);
   ```

   ### Tab: Credit payment without installments

   #### JSON

   ```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": "BRL",
             "RequestedAmount": 120.00
           },
           "TransactionConditions": {
             "DebitPreferredFlag": false
           }
         }
       }
     }
   }
   ```

   #### Java

   ```java
   String serviceID = "YOUR_UNIQUE_ATTEMPT_ID";
   String saleID = "YOUR_CASH_REGISTER_ID";
   String POIID = "YOUR_TERMINAL_ID";
   String transactionID = "YOUR_UNIQUE_TRANSACTION_ID";

   SaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();
   MessageHeader messageHeader = new MessageHeader();
   messageHeader.setProtocolVersion("3.0");
   messageHeader.setMessageClass( MessageClassType.SERVICE );
   messageHeader.setMessageCategory( MessageCategoryType.PAYMENT );
   messageHeader.setMessageType( MessageType.REQUEST );
   messageHeader.setServiceID(serviceID);
   messageHeader.setSaleID(saleID);
   messageHeader.setPOIID(POIID);
   saleToPOIRequest.setMessageHeader(messageHeader);

   PaymentRequest paymentRequest = new PaymentRequest();
   SaleData saleData = new SaleData();
   TransactionIdentification saleTransactionID = new TransactionIdentification();
   saleTransactionID.setTransactionID(transactionID);
   saleTransactionID.setTimeStamp(DatatypeFactory.newInstance().newXMLGregorianCalendar(new GregorianCalendar()));
   saleData.setSaleTransactionID(saleTransactionID);
   saleData.setSaleReferenceID("TID-2018-07-23-21:43:03");
   saleData.setSaleToAcquirerData("");
   paymentRequest.setSaleData(saleData);

   PaymentTransaction paymentTransaction = new PaymentTransaction();
   AmountsReq amountsReq = new AmountsReq();
   amountsReq.setCurrency("BRL");
   amountsReq.setRequestedAmount( BigDecimal.valueOf(120.00) );
   paymentTransaction.setAmountsReq(amountsReq);

   TransactionConditions transactionConditions = new TransactionConditions();
   transactionConditions.setDebitPreferredFlag( Boolean.FALSE );
   paymentTransaction.setTransactionConditions(transactionConditions);
   paymentRequest.setPaymentTransaction(paymentTransaction);
   saleToPOIRequest.setPaymentRequest(paymentRequest);
   terminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);
   ```

   ### Tab: Debit payment

   #### JSON

   ```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": "BRL",
             "RequestedAmount": 120.00
           },
           "TransactionConditions": {
             "DebitPreferredFlag": true
           }
         }
       }
     }
   }
   ```

   #### Java

   ```java
   String serviceID = "YOUR_UNIQUE_ATTEMPT_ID";
   String saleID = "YOUR_CASH_REGISTER_ID";
   String POIID = "YOUR_TERMINAL_ID";
   String transactionID = "YOUR_UNIQUE_TRANSACTION_ID";

   SaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();
   MessageHeader messageHeader = new MessageHeader();
   messageHeader.setProtocolVersion("3.0");
   messageHeader.setMessageClass( MessageClassType.SERVICE );
   messageHeader.setMessageCategory( MessageCategoryType.PAYMENT );
   messageHeader.setMessageType( MessageType.REQUEST );
   messageHeader.setServiceID(serviceID);
   messageHeader.setSaleID(saleID);
   messageHeader.setPOIID(POIID);
   saleToPOIRequest.setMessageHeader(messageHeader);

   PaymentRequest paymentRequest = new PaymentRequest();
   SaleData saleData = new SaleData();
   TransactionIdentification saleTransactionID = new TransactionIdentification();
   saleTransactionID.setTransactionID(transactionID);
   saleTransactionID.setTimeStamp(DatatypeFactory.newInstance().newXMLGregorianCalendar(new GregorianCalendar()));
   saleData.setSaleTransactionID(saleTransactionID);
   saleData.setSaleReferenceID("TID-2018-07-23-21:43:03");
   saleData.setSaleToAcquirerData("");
   paymentRequest.setSaleData(saleData);

   PaymentTransaction paymentTransaction = new PaymentTransaction();
   AmountsReq amountsReq = new AmountsReq();
   amountsReq.setCurrency("BRL");
   amountsReq.setRequestedAmount( BigDecimal.valueOf(120.00) );
   paymentTransaction.setAmountsReq(amountsReq);

   TransactionConditions transactionConditions = new TransactionConditions();
   transactionConditions.setDebitPreferredFlag( Boolean.TRUE );
   paymentTransaction.setTransactionConditions(transactionConditions);
   paymentRequest.setPaymentTransaction(paymentTransaction);
   saleToPOIRequest.setPaymentRequest(paymentRequest);
   terminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);
   ```

4. If the payment is successful, the terminal shows the payment is approved, and you receive a [PaymentResponse](https://docs.adyen.com/api-explorer/terminal-api/latest/post/payment#responses-200) that 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.

     * `cnpj`: identification number issued for the Brazilian National Registry of Legal Entities.

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

     * `PaymentResult.PaymentType`: **Instalment**.

     * `PaymentResult.Instalment`: An object containing the same installment details that you defined in the `PaymentData` of your payment request.

     * `Response.AdditionalResponse`: **installments=** with the number of installments.

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

   **Payment response**

   ```json
   {
       "SaleToPOIResponse":{
           "MessageHeader":{...},
           "PaymentResponse":{
               "PaymentReceipt":[
                   {
                       "OutputContent":{
                           "OutputFormat":"Text",
                           "OutputText":[
                               ...
                               {
                                   "EndOfLineFlag":true,
                                   "Text":"key=productType&name=productType&value=Credit%20in%2012%20Installments"
                               },
                               {
                                   "EndOfLineFlag":true,
                                   "Text":"key=cnpj&name=cnpj&value=00.000.000%2F0000-00"
                               },
                               ...
                           ]
                       },
                       "DocumentQualifier":"CashierReceipt"
                   },
                   {
                       "OutputContent":{
                           "OutputFormat":"Text",
                           "OutputText":[
                               ...
                               {
                                   "EndOfLineFlag":true,
                                   "Text":"key=productType&name=productType&value=Credit%20in%2012%20Installments"
                               },
                               {
                                   "EndOfLineFlag":true,
                                   "Text":"key=cnpj&name=cnpj&value=00.000.000%2F0000-00"
                               },
                               ...
                           ]
                       },
                       "DocumentQualifier":"CustomerReceipt"
                   }
               ],
               "POIData":{...},
               "PaymentResult":{
                   "PaymentType":"Instalment",
                   ...
                   "Instalment":{
                       "InstalmentType":"EqualInstalments",
                       "SequenceNumber":1,
                       "Period":1,
                       "PeriodUnit":"Monthly",
                       "TotalNbOfPayments":12
                   },
                   ...
               },
               "SaleData":{...},
               "Response":{
                   "AdditionalResponse": "...installments=12...",
                   "Result": "Success"
               }
           }
       }
   }
   ```

## Reconciling installments

If a shopper pays in installments, the first installment is immediately charged to the shopper's credit card, and all future installments will be charged automatically.

You receive the funds for each installment as it is settled. There is a settlement delay of 30 days. If you need the funds sooner, we also offer [advancements](/reporting/settlement-reconciliation/transaction-level/reconcile-installment-payments/). There is an additional fee for this service. Contact your Adyen Account Manager for details.

If you use standalone terminals, you need to manually reconcile your point-of-sale transactions against your sales and returns.

For more information on how installments are settled and reconciled, see [Reconcile installment payments](/reporting/settlement-reconciliation/transaction-level/reconcile-installment-payments).

## See also

* [Receipts](/point-of-sale/basic-tapi-integration/generate-receipts)
* [Receiving webhooks](/point-of-sale/design-your-integration/notifications)
* [Standalone terminals](/point-of-sale/standalone)
* [Reporting and reconciliation for credit card installments](/reporting/settlement-reconciliation/transaction-level/reconcile-installment-payments)
