---
title: "Meal voucher payments in Brazil"
description: "Accept meal and food voucher payments in accordance with the Brazilian Worker Food Program (PAT)."
url: "https://docs.adyen.com/point-of-sale/alternative-payment-methods/brazil-vouchers"
source_url: "https://docs.adyen.com/point-of-sale/alternative-payment-methods/brazil-vouchers.md"
canonical: "https://docs.adyen.com/point-of-sale/alternative-payment-methods/brazil-vouchers"
last_modified: "2026-06-01T15:33:14+02:00"
language: "en"
---

# Meal voucher payments in Brazil

Accept meal and food voucher payments in accordance with the Brazilian Worker Food Program (PAT).

[View source](/point-of-sale/alternative-payment-methods/brazil-vouchers.md)

Under the Worker Food Program (Programa de Alimentação do Trabalhador) known as PAT, many workers in Brazil receive meal and food vouchers as an employee benefit. PAT vouchers are digital or physical prepaid benefit cards that are loaded with new funds each month by the employer. These cards can be co-branded with a credit or debit card.

With Adyen terminals you can accept all major brands of PAT vouchers in a fully compliant way, regardless of whether you have a contract with the issuer of the voucher. There is no need to have separate terminals for different voucher brands.

This page describes how you can accept Brazilian meal and food vouchers, either using a UI provided by Adyen or by creating your own UI and implementing an additional field in your Terminal API requests.

## 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), using a specific software version depending on the PCI PTS compliance of the terminal model:- PCI PTS 5 terminals: long-term support version **1.120.11**.
- PCI PTS 6 terminals: long-term support version **1.126.5** or version **1.129** or later.                                                                                |
| **Limitations**      | The standalone solution only supports the [Adyen UI flow](#automatic-flow). There are [compliance](#compliance) rules you must meet before you can accept meal or food voucher payments.                                                                                                                                                                                                                                                                                                 |
| **Setup steps**      | Before you begin:- Ask our [Support Team](https://ca-test.adyen.com/ca/ca/contactUs/support.shtml?form=other) to enable the Brazilian meal voucher functionality for your merchant account.
- If you want 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, merchant account, store, or terminal. |

## Ways to accept meal vouchers

To accept meal and food voucher payments, you can use the following flows:

* [Adyen UI](#automatic-flow)\
  With this flow enabled, the terminal automatically shows a screen that lets the customer select if they want to make a credit, debit, or voucher payment. After selecting voucher, the customer taps, inserts, or swipes the meal or food voucher card to make the payment. This flow works for integrated and standalone payment terminals.

* [Your own UI](#terminal-api-flow)\
  You use your own custom POS UI or some other process to let the customer indicate they want to make a credit, debit, or voucher payment. You then send a Terminal API payment request specifying the chosen payment type as the `selectedAccountType`, in this case with a value of **MEAL\_VOUCHER**. On the terminal, the customer then taps, inserts, or swipes the meal or food voucher card to make the payment.

Standalone payment terminals only support the Adyen UI flow. If your Adyen terminals are integrated with your POS system, you can use either flow.

Note that if the balance on a voucher is not enough for the amount due, the transaction is refused in both flows.

## 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 asks the customer to choose if they want to pay by credit, debit, or voucher.

   ![Screen to select Credit, Debit, or Voucher](/images/d/a/3/b/a/da3bacf4443d85251f24b339d1982211a40e79a4-screen-encard-selection-screen.png)

3. If the shopper selects voucher, the terminal asks the customer to tap, insert, or swipe.

   For information about the flow if the shopper selects credit or debit, see [Installments in Brazil](/point-of-sale/installments/brazil-installments#terminal-api).

4. The customer presents their voucher card to the terminal and completes the payment. If the payment amount is above the CVM limit, the customer may need to enter their PIN.

On an integrated terminal, when the voucher payment succeeds, the Terminal API `AdditionalResponse` includes:

* **fundingSource=PREPAID**.
* The voucher brand used for the payment, for example, **paymentMethodVariant=elo\_voucher\_br**.

## Your own UI

As an alternative to the Ayden UI, you can design your own custom UI to collect the customer's preference. Your Terminal API request then needs to flag the transaction as a meal voucher payment. This flow does not apply to standalone terminals.

The flow at the point of sale is as follows:

1. You collect the information about whether the customer wants to pay by voucher. You can do this in various ways, for example:

   * Your store staff asks the customer.
   * You collect the customer's preference on a secondary screen, for instance a tablet.
   * You use [input requests](/point-of-sale/shopper-engagement/shopper-input) to collect the customer's preference 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](#meal-voucher-payment).

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

When the transaction is approved, you receive a response containing the voucher brand used for the payment.

### Make a meal voucher payment

If the customer has indicated they want to pay with a meal or food voucher:

1. Create a JSON object consisting of the `selectedAccountType` parameter with the value **MEAL\_VOUCHER**.

   **JSON object**

   ```json
   {"selectedAccountType": "MEAL_VOUCHER"}
   ```

   See [Interaction with installment parameters](#interaction-with-installment-parameters) for more information.

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

   **Converted to a Base64-encoded string**

   ```raw
   eyJzZWxlY3RlZEFjY291bnRUeXBlIjogIk1FQUxfVk9VQ0hFUiJ9
   ```

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                                                                                                                                                                                                                                                                                                                                                               |
     | ------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
     | `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.                                                                                                                                                                                                                        |
     | `SaleData.SaleToPOIData`        | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | Your Base64-encoded JSON object.                                                                                                                                                                                                                                                                                                                                          |
     | `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`: the date and time of the request in [UTC format](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_\(UTC\)). |

   **Meal voucher payment request**

   ```json
   {
      "SaleToPOIRequest": {
         "MessageHeader": {
            "MessageCategory": "Payment",
            "MessageClass": "Service",
            "MessageType": "Request",
            "POIID": "S1F2-324688179",
            "ProtocolVersion": "3.0",
            "SaleID": "POSSystemID12345",
            "ServiceID": "0207111104"
         },
         "PaymentRequest": {
            "PaymentTransaction": {
               "AmountsReq": {
                  "Currency": "BRL",
                  "RequestedAmount": 100
               }
            },
            "SaleData": {
               "SaleToPOIData": "eyJzZWxlY3RlZEFjY291bnRUeXBlIjogIk1FQUxfVk9VQ0hFUiJ9",
               "SaleTransactionID":{
                  "TimeStamp":"2026-03-03T11:33:49+02:00",
                  "TransactionID":"197112"
               }
            }
         }
      }
   }
   ```

4. In the [PaymentResponse](https://docs.adyen.com/api-explorer/terminal-api/latest/post/payment#responses-200), check the `AdditionalResponse`. For a successful voucher payment, this includes:

   * **fundingSource=PREPAID**.
   * The voucher brand used for the payment, for example, **paymentMethodVariant=elo\_voucher\_br**.

### Interaction with installment parameters

As described under [Make a meal voucher payment](#meal-voucher-payment), a meal or food voucher Terminal API payment request must include the `selectedAccountType` parameter with a value of **MEAL\_VOUCHER**. Other allowed values are:

* **CHEQUE** to make a debit card payment.
* **CREDIT** to make a credit card payment.

If you also accept [installments in Brazil](/point-of-sale/installments/brazil-installments#terminal-api), the Terminal API payment request needs to indicate if the transaction is a debit or credit payment. Depending on your implementation, your code can use the `selectedAccountType` parameter to do this, or use the `TransactionConditions.DebitPreferredFlag` parameter with a value of **true** for debit or **false** for credit.

If both `DebitPreferredFlag` and `selectedAccountType` (in Base64-encoded format) are included in a payment request, the `selectedAccountType` parameter takes precedence and its value is applied.

## Testing

You can test voucher payments using [Manual Key Entry](/point-of-sale/enter-payment-manually) (MKE). This does not simulate the voucher flow on the terminal, but does enable you to test how your integration and reconciliation handle voucher payments.

During MKE, enter a combination of card number, expiry date, and CVC as indicated in the following table:

| Card type                      | Card number         | Expiry date | CVC | Payment method variant  |
| ------------------------------ | ------------------- | ----------- | --- | ----------------------- |
| Ticket (Edenred - Alimentação) | 6033 4225 5384 5003 | Any         | 418 | ticket                  |
| Ticket (Edenred - Refeição)    | 6026 5145 1530 4787 | Any         | 265 | ticket                  |
| Pluxee (Alimentação)           | 6033 8902 5703 4050 | 11/2034     | 164 | sodexo                  |
| Pluxee (Refeição)              | 6060 7101 0440 1649 | 11/2032     | 507 | sodexo                  |
| Vale Refeição                  | 6370 3671 0000 0993 | 01/2032     | 520 | vale\_refeicao\_prepaid |
| Elo voucher                    | 5067 2300 0000 0002 | 03/2030     | 737 | elo\_voucher\_br        |
| Visa voucher                   | 4058 8600 0000 0000 | 03/2030     | 737 | visa\_voucher\_br       |
| Mastercard voucher             | 2340 6300 0000 0009 | 03/2030     | 737 | mc\_voucher\_br         |

Testing voucher payments with a physical card is possible for Visa voucher cards; contact Visa to get a test card.

## Merchant Category Codes

To be allowed to accept meal and food voucher payments under the PAT program, your business must comply with certain rules. To mention a few:

* Your business must be registered with a National Classification of Economic Activities (CNAE) code that indicates your main economic activity is compatible with meal or food services.

* When you accept PAT vouchers, you are technically part of a public health program, and must adhere to all applicable sanitary and nutritional regulations.

* Your [Merchant Category Code](/get-started-with-adyen/adyen-glossary/#merchant-category-code) (MCC) must be one of the following.

  | Category | MCC Code | MCC Description                                   |
  | -------- | -------- | ------------------------------------------------- |
  | Food     | 5300     | Wholesale Clubs                                   |
  | Food     | 5411     | Grocery Stores / Supermarkets                     |
  | Food     | 5422     | Freezer / Meat Lockers                            |
  | Food     | 5441     | Candy Stores                                      |
  | Food     | 5451     | Dairy Product Stores                              |
  | Food     | 5462     | Bakeries                                          |
  | Food     | 5499     | Miscellaneous Food Stores (Default)               |
  | Food     | 5811     | Caterers / Food Distributors                      |
  | Culture  | 4722     | Travel Agencies                                   |
  | Culture  | 5311     | Department Stores                                 |
  | Culture  | 5733     | Musical Instrument Stores                         |
  | Culture  | 5735     | Record Stores                                     |
  | Culture  | 5815     | Digital Audiovisual Products                      |
  | Culture  | 5932     | Antique Shops                                     |
  | Culture  | 5942     | Bookstores                                        |
  | Culture  | 5943     | Stationery Stores                                 |
  | Culture  | 5994     | Newsstands / News Providers                       |
  | Culture  | 7832     | Cinemas / Motion Picture Production               |
  | Culture  | 7841     | Video Stores                                      |
  | Culture  | 7911     | Dance Studios, Schools, and Halls                 |
  | Culture  | 7922     | Theaters, Theatrical Productions, and Shows       |
  | Culture  | 7929     | Bands, Orchestras, Misc. Entertainers             |
  | Culture  | 7991     | Tourist Attractions and Exhibits                  |
  | Culture  | 7996     | Amusement Parks, Circuses, etc.                   |
  | Culture  | 7998     | Aquariums and Zoos                                |
  | Culture  | 8699     | Cultural, Union & Other Unclassified Associations |
  | Culture  | 9399     | Government Services (Default)                     |
  | Meal     | 5812     | Restaurants                                       |
  | Meal     | 5813     | Bars, Pubs, and Nightclubs                        |
  | Meal     | 5814     | Fast Food Restaurants                             |

If your main economic activity is not compatible with meal or food services, the voucher transaction will be declined by the issuer.

For more information, see the site of the Brazilian [Ministry of Labor and Employment](https://www.gov.br/trabalho-e-emprego/pt-br/noticias-e-conteudo/2026/fevereiro/novas-regras-do-programa-de-alimentacao-do-trabalhador-entram-em-vigor-nesta-terca-feira-10).

## See also

* [Installments in Brazil](/point-of-sale/installments/brazil-installments)
* [Input requests](/point-of-sale/shopper-engagement/shopper-input)
* [Manual Key Entry](/point-of-sale/enter-payment-manually)
