{"title":"Meal voucher payments in Brazil","category":"default","creationDate":1776961627,"content":"<p>Under the Worker Food Program (Programa de Alimenta\u00e7\u00e3o 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.<\/p>\n<p>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.<\/p>\n<p>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.<\/p>\n<h2>Requirements<\/h2>\n<p>Before you begin, take into account the following requirements, limitations, and preparations.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Requirement<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><strong>Integration type<\/strong><\/td>\n<td style=\"text-align: left;\">A <a href=\"\/point-of-sale\/basic-tapi-integration\/\">Terminal API<\/a> integration with payment terminals or a <a href=\"\/point-of-sale\/standalone\">standalone solution<\/a>, using a specific software version depending on the PCI PTS compliance of the terminal model: <ul><li markdown=\"1\">PCI PTS 5 terminals: long-term support version <strong>1.120.11<\/strong>.<\/li> <li markdown=\"1\">PCI PTS 6 terminals: long-term support version <strong>1.126.5<\/strong> or version <strong>1.129<\/strong> or later.<\/li><\/ul><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Limitations<\/strong><\/td>\n<td style=\"text-align: left;\">The standalone solution only supports the <a href=\"#automatic-flow\">Adyen UI flow<\/a>. <br> There are <a href=\"#compliance\">compliance<\/a> rules you must meet before you can accept meal or food voucher payments.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Setup steps<\/strong><\/td>\n<td style=\"text-align: left;\">Before you begin: <ul><li markdown=\"1\">Ask our <a href=\"https:\/\/ca-test.adyen.com\/ca\/ca\/contactUs\/support.shtml?form=other\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Support Team<\/a> to enable the Brazilian meal voucher functionality for your merchant account.<\/li> <li markdown=\"1\">If you want to <a href=\"#automatic-flow\">use the Adyen UI flow<\/a>, ask our <a href=\"https:\/\/ca-test.adyen.com\/ca\/ca\/contactUs\/support.shtml?form=other\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Support Team<\/a> to enable that flow. Let them know whether you want this to be configured for a company account, merchant account, store, or terminal.<\/li><\/ul><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Ways to accept meal vouchers<\/h2>\n<p>To accept meal and food voucher payments, you can use the following flows:<\/p>\n<ul>\n<li>\n<p><a href=\"#automatic-flow\">Adyen UI<\/a><br \/>\nWith 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.<\/p>\n<\/li>\n<li>\n<p><a href=\"#terminal-api-flow\">Your own UI<\/a><br \/>\nYou 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 <code>selectedAccountType<\/code>, in this case with a value of <span translate=\"no\"><strong>MEAL_VOUCHER<\/strong><\/span>. On the terminal, the customer then taps, inserts, or swipes the meal or food voucher card to make the payment.<\/p>\n<\/li>\n<\/ul>\n<p>Standalone payment terminals only support the Adyen UI flow. If your Adyen terminals are integrated with your POS system, you can use either flow.<\/p>\n<p>Note that if the balance on a voucher is not enough for the amount due, the transaction is refused in both flows.<\/p>\n<h2 id=\"automatic-flow\">Adyen UI<\/h2>\n<p>To use the Adyen UI flow, you must contact our <a href=\"https:\/\/ca-test.adyen.com\/ca\/ca\/contactUs\/support.shtml?form=other\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Support Team<\/a> 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.<\/p>\n<p>When enabled, the flow is as follows:<\/p>\n<ol>\n<li>\n<p>You initiate a payment like you usually do.<\/p>\n<\/li>\n<li>\n<p>The terminal asks the customer to choose if they want to pay by credit, debit, or voucher.<\/p>\n<p><img alt=\"Screen to select Credit, Debit, or Voucher\" src=\"\/images\/c\/d\/9\/c\/8\/cd9c8166170bdf7ec8636158c12be712826406d3-screen-encard-selection-screen.png\" \/><\/p>\n<\/li>\n<li>\n<p>If the shopper selects voucher, the terminal asks the customer to tap, insert, or swipe.<\/p>\n<div class=\"notices green\">\n<p>For information about the flow if the shopper selects credit or debit, see <a href=\"\/point-of-sale\/installments\/brazil-installments#terminal-api\">Installments in Brazil<\/a>.<\/p>\n<\/div>\n<\/li>\n<li>\n<p>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.<\/p>\n<\/li>\n<\/ol>\n<p>On an integrated terminal, when the voucher payment succeeds, the Terminal API <code>AdditionalResponse<\/code> includes:<\/p>\n<ul>\n<li><span translate=\"no\"><strong>fundingSource=PREPAID<\/strong><\/span>.<\/li>\n<li>The voucher brand used for the payment, for example, <span translate=\"no\"><strong>paymentMethodVariant=elo_voucher_br<\/strong><\/span>.<\/li>\n<\/ul>\n<h2 id=\"terminal-api-flow\">Your own UI<\/h2>\n<p>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.<\/p>\n<p>The flow at the point of sale is as follows:<\/p>\n<ol>\n<li>You collect the information about whether the customer wants to pay by voucher. You can do this in various ways, for example:\n<ul>\n<li>Your store staff asks the customer.<\/li>\n<li>You collect the customer's preference on a secondary screen, for instance a tablet.<\/li>\n<li>You use <a href=\"\/point-of-sale\/shopper-engagement\/shopper-input\" target=\"_blank\">input requests<\/a> to collect the customer's preference on the payment terminal.<\/li>\n<\/ul><\/li>\n<li>You use logic to pass the collected information to your POS app, or your store staff enters this information manually into your POS app.<\/li>\n<li>Your POS app passes this information to the <a href=\"#meal-voucher-payment\">payment request<\/a>.<\/li>\n<li>The customer presents their voucher card to the terminal and completes the payment.<\/li>\n<\/ol>\n<p>When the transaction is approved, you receive a response containing the voucher brand used for the payment.<\/p>\n<h3 id=\"meal-voucher-payment\">Make a meal voucher payment<\/h3>\n<p>If the customer has indicated they want to pay with a meal or food voucher:<\/p>\n<ol>\n<li>\n<p>Create a JSON object consisting of the <code>selectedAccountType<\/code> parameter with the value <span translate=\"no\"><strong>MEAL_VOUCHER<\/strong><\/span>.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'JSON object'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\\"selectedAccountType\\\": \\\"MEAL_VOUCHER\\\"}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<div class=\"notices green\">\n<p>See <a href=\"#interaction-with-installment-parameters\">Interaction with installment parameters<\/a> for more information.<\/p>\n<\/div>\n<\/li>\n<li>\n<p>Encode the JSON object to Base64. You will pass the resulting string in <code>SaleData.SaleToPOIData<\/code>.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Converted to a Base64-encoded string'\" :id=\"''\" :code-data='[{\"language\":\"raw\",\"tabTitle\":\"\",\"content\":\"eyJzZWxlY3RlZEFjY291bnRUeXBlIjogIk1FQUxfVk9VQ0hFUiJ9\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<li>\n<p><a href=\"\/point-of-sale\/basic-tapi-integration\/make-a-payment\">Make a payment request<\/a>, specifying:<\/p>\n<ul>\n<li>\n<p>The standard <a href=\"\/point-of-sale\/design-your-integration\/terminal-api#request-message-header\">\n  <code>SaleToPOIRequest.MessageHeader<\/code>\n<\/a> object, with <code>MessageClass<\/code> set to <span translate=\"no\"><strong>Service<\/strong><\/span> and <code>MessageCategory<\/code> set to <span translate=\"no\"><strong>Payment<\/strong><\/span>.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Parameter<\/th>\n<th style=\"text-align: center;\">Required<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><code>ProtocolVersion<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\"><strong>3.0<\/strong><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>MessageClass<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>Service<\/strong><\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>MessageCategory<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>Payment<\/strong><\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>MessageType<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>Request<\/strong><\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>ServiceID<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\">Your unique ID for this request, consisting of 1-10 alphanumeric characters. Must be unique within the last 48 hours for the terminal (<code>POIID<\/code>) being used.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>SaleID<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\">Your unique ID for the POS system component to send this request from.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>POIID<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\">The unique ID of the terminal to send this request to. Format: <em>[device model]-[serial number]<\/em>.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/li>\n<li>\n<p>The  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/terminal-api\/latest\/post\/payment\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">PaymentRequest<\/a> object with:<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Parameter<\/th>\n<th style=\"text-align: center;\">Required<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><code>PaymentTransaction.AmountsReq<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\">An object with: <ul><li markdown=\"1\"><code>Currency<\/code>: the transaction <a href=\"\/development-resources\/currency-codes\">currency<\/a>.<\/li><li markdown=\"1\"><code>RequestedAmount<\/code>: the final transaction amount.<\/li><\/ul><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>SaleData.SaleToPOIData<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\">Your Base64-encoded JSON object.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>SaleData.SaleTransactionID<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\">An object with: <ul><li markdown=\"1\"><code>TransactionID<\/code>: 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 <strong>merchant reference<\/strong> for the transaction.<\/li> <li markdown=\"1\"><code>TimeStamp<\/code>: the date and time of the request in <a href=\"https:\/\/en.wikipedia.org\/wiki\/ISO_8601#Coordinated_Universal_Time_(UTC)\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">UTC format<\/a>.<\/li><\/ul><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/li>\n<\/ul>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Meal voucher payment request'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n   \\\"SaleToPOIRequest\\\": {\\n      \\\"MessageHeader\\\": {\\n         \\\"MessageCategory\\\": \\\"Payment\\\",\\n         \\\"MessageClass\\\": \\\"Service\\\",\\n         \\\"MessageType\\\": \\\"Request\\\",\\n         \\\"POIID\\\": \\\"S1F2-324688179\\\",\\n         \\\"ProtocolVersion\\\": \\\"3.0\\\",\\n         \\\"SaleID\\\": \\\"POSSystemID12345\\\",\\n         \\\"ServiceID\\\": \\\"0207111104\\\"\\n      },\\n      \\\"PaymentRequest\\\": {\\n         \\\"PaymentTransaction\\\": {\\n            \\\"AmountsReq\\\": {\\n               \\\"Currency\\\": \\\"BRL\\\",\\n               \\\"RequestedAmount\\\": 100\\n            }\\n         },\\n         \\\"SaleData\\\": {\\n            \\\"SaleToPOIData\\\": \\\"eyJzZWxlY3RlZEFjY291bnRUeXBlIjogIk1FQUxfVk9VQ0hFUiJ9\\\",\\n            \\\"SaleTransactionID\\\":{\\n               \\\"TimeStamp\\\":\\\"2026-03-03T11:33:49+02:00\\\",\\n               \\\"TransactionID\\\":\\\"197112\\\"\\n            }\\n         }\\n      }\\n   }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<li>\n<p>In the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/terminal-api\/latest\/post\/payment#responses-200\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">PaymentResponse<\/a>, check the <code>AdditionalResponse<\/code>. For a successful voucher payment, this includes:<\/p>\n<ul>\n<li><span translate=\"no\"><strong>fundingSource=PREPAID<\/strong><\/span>.<\/li>\n<li>The voucher brand used for the payment, for example, <span translate=\"no\"><strong>paymentMethodVariant=elo_voucher_br<\/strong><\/span>.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h3>Interaction with installment parameters<\/h3>\n<p>As described under <a href=\"#meal-voucher-payment\">Make a meal voucher payment<\/a>, a meal or food voucher Terminal API payment request must include the <code>selectedAccountType<\/code> parameter with a value of <span translate=\"no\"><strong>MEAL_VOUCHER<\/strong><\/span>. Other allowed values are:<\/p>\n<ul>\n<li><span translate=\"no\"><strong>CHEQUE<\/strong><\/span> to make a debit card payment.<\/li>\n<li><span translate=\"no\"><strong>CREDIT<\/strong><\/span> to make a credit card payment.<\/li>\n<\/ul>\n<p>If you also accept <a href=\"\/point-of-sale\/installments\/brazil-installments#terminal-api\">installments in Brazil<\/a>, 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 <code>selectedAccountType<\/code> parameter to do this, or use the <code>TransactionConditions.DebitPreferredFlag<\/code> parameter with a value of <span translate=\"no\"><strong>true<\/strong><\/span> for debit or <span translate=\"no\"><strong>false<\/strong><\/span> for credit.<\/p>\n<p>If both <code>DebitPreferredFlag<\/code> and <code>selectedAccountType<\/code> (in Base64-encoded format) are included in a payment request, the <code>selectedAccountType<\/code> parameter takes precedence and its value is applied.<\/p>\n<h2>Testing<\/h2>\n<p>You can test voucher payments using <a href=\"\/point-of-sale\/enter-payment-manually\" target=\"_blank\">Manual Key Entry<\/a> (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.<\/p>\n<p>During MKE, enter a combination of card number, expiry date, and CVC as indicated in the following table:<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Card type<\/th>\n<th style=\"text-align: left;\">Card number<\/th>\n<th style=\"text-align: left;\">Expiry date<\/th>\n<th style=\"text-align: left;\">CVC<\/th>\n<th style=\"text-align: left;\">Payment method variant<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\">Ticket (Edenred - Alimenta\u00e7\u00e3o)<\/td>\n<td style=\"text-align: left;\">6033 4225 5384 5003<\/td>\n<td style=\"text-align: left;\">Any<\/td>\n<td style=\"text-align: left;\">418<\/td>\n<td style=\"text-align: left;\">ticket<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Ticket (Edenred - Refei\u00e7\u00e3o) <\/td>\n<td style=\"text-align: left;\">6026 5145 1530 4787<\/td>\n<td style=\"text-align: left;\">Any<\/td>\n<td style=\"text-align: left;\">265<\/td>\n<td style=\"text-align: left;\">ticket<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Pluxee (Alimenta\u00e7\u00e3o)<\/td>\n<td style=\"text-align: left;\">6033 8902 5703 4050<\/td>\n<td style=\"text-align: left;\">11\/2034<\/td>\n<td style=\"text-align: left;\">164<\/td>\n<td style=\"text-align: left;\">sodexo<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Pluxee (Refei\u00e7\u00e3o)<\/td>\n<td style=\"text-align: left;\">6060 7101 0440 1649<\/td>\n<td style=\"text-align: left;\">11\/2032<\/td>\n<td style=\"text-align: left;\">507<\/td>\n<td style=\"text-align: left;\">sodexo<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Vale Refei\u00e7\u00e3o<\/td>\n<td style=\"text-align: left;\">6370 3671 0000 0993<\/td>\n<td style=\"text-align: left;\">01\/2032<\/td>\n<td style=\"text-align: left;\">520<\/td>\n<td style=\"text-align: left;\">vale_refeicao_prepaid<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Elo voucher<\/td>\n<td style=\"text-align: left;\">5067 2300 0000 0002<\/td>\n<td style=\"text-align: left;\">03\/2030<\/td>\n<td style=\"text-align: left;\">737<\/td>\n<td style=\"text-align: left;\">elo_voucher_br<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Visa voucher<\/td>\n<td style=\"text-align: left;\">4058 8600 0000 0000<\/td>\n<td style=\"text-align: left;\">03\/2030<\/td>\n<td style=\"text-align: left;\">737<\/td>\n<td style=\"text-align: left;\">visa_voucher_br<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Mastercard voucher<\/td>\n<td style=\"text-align: left;\">2340 6300 0000 0009<\/td>\n<td style=\"text-align: left;\">03\/2030<\/td>\n<td style=\"text-align: left;\">737<\/td>\n<td style=\"text-align: left;\">mc_voucher_br<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Testing voucher payments with a physical card is possible for Visa voucher cards; contact Visa to get a test card.<\/p>\n<h2 id=\"compliance\">Merchant Category Codes<\/h2>\n<p>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:<\/p>\n<ul>\n<li>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.<\/li>\n<li>When you accept PAT vouchers, you are technically part of a public health program, and must adhere to all applicable sanitary and nutritional regulations.<\/li>\n<li>\n<p>Your <a href=\"\/get-started-with-adyen\/adyen-glossary\/#merchant-category-code\">Merchant Category Code<\/a> (MCC) must be one of the following.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Category<\/th>\n<th style=\"text-align: left;\">MCC Code<\/th>\n<th style=\"text-align: left;\">MCC Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\">Food<\/td>\n<td style=\"text-align: left;\">5300<\/td>\n<td style=\"text-align: left;\">Wholesale Clubs<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Food<\/td>\n<td style=\"text-align: left;\">5411<\/td>\n<td style=\"text-align: left;\">Grocery Stores \/ Supermarkets<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Food<\/td>\n<td style=\"text-align: left;\">5422<\/td>\n<td style=\"text-align: left;\">Freezer \/ Meat Lockers<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Food<\/td>\n<td style=\"text-align: left;\">5441<\/td>\n<td style=\"text-align: left;\">Candy Stores<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Food<\/td>\n<td style=\"text-align: left;\">5451<\/td>\n<td style=\"text-align: left;\">Dairy Product Stores<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Food<\/td>\n<td style=\"text-align: left;\">5462<\/td>\n<td style=\"text-align: left;\">Bakeries<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Food<\/td>\n<td style=\"text-align: left;\">5499<\/td>\n<td style=\"text-align: left;\">Miscellaneous Food Stores (Default)<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Food<\/td>\n<td style=\"text-align: left;\">5811<\/td>\n<td style=\"text-align: left;\">Caterers \/ Food Distributors<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Culture<\/td>\n<td style=\"text-align: left;\">4722<\/td>\n<td style=\"text-align: left;\">Travel Agencies<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Culture<\/td>\n<td style=\"text-align: left;\">5311<\/td>\n<td style=\"text-align: left;\">Department Stores<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Culture<\/td>\n<td style=\"text-align: left;\">5733<\/td>\n<td style=\"text-align: left;\">Musical Instrument Stores<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Culture<\/td>\n<td style=\"text-align: left;\">5735<\/td>\n<td style=\"text-align: left;\">Record Stores<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Culture<\/td>\n<td style=\"text-align: left;\">5815<\/td>\n<td style=\"text-align: left;\">Digital Audiovisual Products<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Culture<\/td>\n<td style=\"text-align: left;\">5932<\/td>\n<td style=\"text-align: left;\">Antique Shops<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Culture<\/td>\n<td style=\"text-align: left;\">5942<\/td>\n<td style=\"text-align: left;\">Bookstores<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Culture<\/td>\n<td style=\"text-align: left;\">5943<\/td>\n<td style=\"text-align: left;\">Stationery Stores<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Culture<\/td>\n<td style=\"text-align: left;\">5994<\/td>\n<td style=\"text-align: left;\">Newsstands \/ News Providers<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Culture<\/td>\n<td style=\"text-align: left;\">7832<\/td>\n<td style=\"text-align: left;\">Cinemas \/ Motion Picture Production<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Culture<\/td>\n<td style=\"text-align: left;\">7841<\/td>\n<td style=\"text-align: left;\">Video Stores<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Culture<\/td>\n<td style=\"text-align: left;\">7911<\/td>\n<td style=\"text-align: left;\">Dance Studios, Schools, and Halls<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Culture<\/td>\n<td style=\"text-align: left;\">7922<\/td>\n<td style=\"text-align: left;\">Theaters, Theatrical Productions, and Shows<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Culture<\/td>\n<td style=\"text-align: left;\">7929<\/td>\n<td style=\"text-align: left;\">Bands, Orchestras, Misc. Entertainers<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Culture<\/td>\n<td style=\"text-align: left;\">7991<\/td>\n<td style=\"text-align: left;\">Tourist Attractions and Exhibits<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Culture<\/td>\n<td style=\"text-align: left;\">7996<\/td>\n<td style=\"text-align: left;\">Amusement Parks, Circuses, etc.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Culture<\/td>\n<td style=\"text-align: left;\">7998<\/td>\n<td style=\"text-align: left;\">Aquariums and Zoos<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Culture<\/td>\n<td style=\"text-align: left;\">8699<\/td>\n<td style=\"text-align: left;\">Cultural, Union &amp; Other Unclassified Associations<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Culture<\/td>\n<td style=\"text-align: left;\">9399<\/td>\n<td style=\"text-align: left;\">Government Services (Default)<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Meal<\/td>\n<td style=\"text-align: left;\">5812<\/td>\n<td style=\"text-align: left;\">Restaurants<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Meal<\/td>\n<td style=\"text-align: left;\">5813<\/td>\n<td style=\"text-align: left;\">Bars, Pubs, and Nightclubs<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Meal<\/td>\n<td style=\"text-align: left;\">5814<\/td>\n<td style=\"text-align: left;\">Fast Food Restaurants<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/li>\n<\/ul>\n<p>If your main economic activity is not compatible with meal or food services, the voucher transaction will be declined by the issuer.<\/p>\n<p>For more information, see the site of the Brazilian <a href=\"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\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Ministry of Labor and Employment<\/a>.<\/p>\n<h2>See also<\/h2>\n<div class=\"see-also-links output-inline\" id=\"see-also\">\n<ul><li><a href=\"\/point-of-sale\/installments\/brazil-installments\"\n                        target=\"_self\"\n                        >\n                    Installments in Brazil\n                <\/a><\/li><li><a href=\"\/point-of-sale\/shopper-engagement\/shopper-input\"\n                        target=\"_self\"\n                        >\n                    Input requests\n                <\/a><\/li><li><a href=\"\/point-of-sale\/enter-payment-manually\"\n                        target=\"_self\"\n                        >\n                    Manual Key Entry\n                <\/a><\/li><\/ul><\/div>\n","url":"https:\/\/docs.adyen.com\/point-of-sale\/alternative-payment-methods\/brazil-vouchers","articleFields":{"description":"Accept meal and food voucher payments in accordance with the Brazilian Worker Food Program (PAT).","feedback_component":true,"filters_component":false},"algolia":{"url":"https:\/\/docs.adyen.com\/point-of-sale\/alternative-payment-methods\/brazil-vouchers","title":"Meal voucher payments in Brazil","content":"Under the Worker Food Program (Programa de Alimenta\u00e7\u00e3o 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.\nWith 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.\nThis 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.\nRequirements\nBefore you begin, take into account the following requirements, limitations, and preparations.\n\n\n\nRequirement\nDescription\n\n\n\n\nIntegration type\nA Terminal API integration with payment terminals or a standalone solution, 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.\n\n\nLimitations\nThe standalone solution only supports the Adyen UI flow.  There are compliance rules you must meet before you can accept meal or food voucher payments.\n\n\nSetup steps\nBefore you begin: Ask our Support Team to enable the Brazilian meal voucher functionality for your merchant account. If you want to use the Adyen UI flow, ask our Support Team to enable that flow. Let them know whether you want this to be configured for a company account, merchant account, store, or terminal.\n\n\n\nWays to accept meal vouchers\nTo accept meal and food voucher payments, you can use the following flows:\n\n\nAdyen UI\nWith 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.\n\n\nYour own UI\nYou 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.\n\n\nStandalone payment terminals only support the Adyen UI flow. If your Adyen terminals are integrated with your POS system, you can use either flow.\nNote that if the balance on a voucher is not enough for the amount due, the transaction is refused in both flows.\nAdyen UI\nTo use the Adyen UI flow, you must contact our Support Team 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.\nWhen enabled, the flow is as follows:\n\n\nYou initiate a payment like you usually do.\n\n\nThe terminal asks the customer to choose if they want to pay by credit, debit, or voucher.\n\n\n\nIf the shopper selects voucher, the terminal asks the customer to tap, insert, or swipe.\n\nFor information about the flow if the shopper selects credit or debit, see Installments in Brazil.\n\n\n\nThe 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.\n\n\nOn an integrated terminal, when the voucher payment succeeds, the Terminal API AdditionalResponse includes:\n\nfundingSource=PREPAID.\nThe voucher brand used for the payment, for example, paymentMethodVariant=elo_voucher_br.\n\nYour own UI\nAs 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.\nThe flow at the point of sale is as follows:\n\nYou collect the information about whether the customer wants to pay by voucher. You can do this in various ways, for example:\n\nYour store staff asks the customer.\nYou collect the customer's preference on a secondary screen, for instance a tablet.\nYou use input requests to collect the customer's preference on the payment terminal.\n\nYou use logic to pass the collected information to your POS app, or your store staff enters this information manually into your POS app.\nYour POS app passes this information to the payment request.\nThe customer presents their voucher card to the terminal and completes the payment.\n\nWhen the transaction is approved, you receive a response containing the voucher brand used for the payment.\nMake a meal voucher payment\nIf the customer has indicated they want to pay with a meal or food voucher:\n\n\nCreate a JSON object consisting of the selectedAccountType parameter with the value MEAL_VOUCHER.\n\n\n\n\nSee Interaction with installment parameters for more information.\n\n\n\nEncode the JSON object to Base64. You will pass the resulting string in SaleData.SaleToPOIData.\n\n\n\n\n\nMake a payment request, specifying:\n\n\nThe standard \n  SaleToPOIRequest.MessageHeader\n object, with MessageClass set to Service and MessageCategory set to Payment.\n\n\n\nParameter\nRequired\nDescription\n\n\n\n\nProtocolVersion\n\n3.0\n\n\nMessageClass\n\nService\n\n\nMessageCategory\n\nPayment\n\n\nMessageType\n\nRequest\n\n\nServiceID\n\nYour 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.\n\n\nSaleID\n\nYour unique ID for the POS system component to send this request from.\n\n\nPOIID\n\nThe unique ID of the terminal to send this request to. Format: [device model]-[serial number].\n\n\n\n\n\nThe  PaymentRequest object with:\n\n\n\nParameter\nRequired\nDescription\n\n\n\n\nPaymentTransaction.AmountsReq\n\nAn object with: Currency: the transaction currency.RequestedAmount: the final transaction amount.\n\n\nSaleData.SaleToPOIData\n\nYour Base64-encoded JSON object.\n\n\nSaleData.SaleTransactionID\n\nAn 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.\n\n\n\n\n\n\n\n\n\n\nIn the  PaymentResponse, check the AdditionalResponse. For a successful voucher payment, this includes:\n\nfundingSource=PREPAID.\nThe voucher brand used for the payment, for example, paymentMethodVariant=elo_voucher_br.\n\n\n\nInteraction with installment parameters\nAs described under Make a 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:\n\nCHEQUE to make a debit card payment.\nCREDIT to make a credit card payment.\n\nIf you also accept installments in Brazil, 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.\nIf both DebitPreferredFlag and selectedAccountType (in Base64-encoded format) are included in a payment request, the selectedAccountType parameter takes precedence and its value is applied.\nTesting\nYou can test voucher payments using Manual Key Entry (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.\nDuring MKE, enter a combination of card number, expiry date, and CVC as indicated in the following table:\n\n\n\nCard type\nCard number\nExpiry date\nCVC\nPayment method variant\n\n\n\n\nTicket (Edenred - Alimenta\u00e7\u00e3o)\n6033 4225 5384 5003\nAny\n418\nticket\n\n\nTicket (Edenred - Refei\u00e7\u00e3o) \n6026 5145 1530 4787\nAny\n265\nticket\n\n\nPluxee (Alimenta\u00e7\u00e3o)\n6033 8902 5703 4050\n11\/2034\n164\nsodexo\n\n\nPluxee (Refei\u00e7\u00e3o)\n6060 7101 0440 1649\n11\/2032\n507\nsodexo\n\n\nVale Refei\u00e7\u00e3o\n6370 3671 0000 0993\n01\/2032\n520\nvale_refeicao_prepaid\n\n\nElo voucher\n5067 2300 0000 0002\n03\/2030\n737\nelo_voucher_br\n\n\nVisa voucher\n4058 8600 0000 0000\n03\/2030\n737\nvisa_voucher_br\n\n\nMastercard voucher\n2340 6300 0000 0009\n03\/2030\n737\nmc_voucher_br\n\n\n\nTesting voucher payments with a physical card is possible for Visa voucher cards; contact Visa to get a test card.\nMerchant Category Codes\nTo be allowed to accept meal and food voucher payments under the PAT program, your business must comply with certain rules. To mention a few:\n\nYour 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.\nWhen you accept PAT vouchers, you are technically part of a public health program, and must adhere to all applicable sanitary and nutritional regulations.\n\nYour Merchant Category Code (MCC) must be one of the following.\n\n\n\nCategory\nMCC Code\nMCC Description\n\n\n\n\nFood\n5300\nWholesale Clubs\n\n\nFood\n5411\nGrocery Stores \/ Supermarkets\n\n\nFood\n5422\nFreezer \/ Meat Lockers\n\n\nFood\n5441\nCandy Stores\n\n\nFood\n5451\nDairy Product Stores\n\n\nFood\n5462\nBakeries\n\n\nFood\n5499\nMiscellaneous Food Stores (Default)\n\n\nFood\n5811\nCaterers \/ Food Distributors\n\n\nCulture\n4722\nTravel Agencies\n\n\nCulture\n5311\nDepartment Stores\n\n\nCulture\n5733\nMusical Instrument Stores\n\n\nCulture\n5735\nRecord Stores\n\n\nCulture\n5815\nDigital Audiovisual Products\n\n\nCulture\n5932\nAntique Shops\n\n\nCulture\n5942\nBookstores\n\n\nCulture\n5943\nStationery Stores\n\n\nCulture\n5994\nNewsstands \/ News Providers\n\n\nCulture\n7832\nCinemas \/ Motion Picture Production\n\n\nCulture\n7841\nVideo Stores\n\n\nCulture\n7911\nDance Studios, Schools, and Halls\n\n\nCulture\n7922\nTheaters, Theatrical Productions, and Shows\n\n\nCulture\n7929\nBands, Orchestras, Misc. Entertainers\n\n\nCulture\n7991\nTourist Attractions and Exhibits\n\n\nCulture\n7996\nAmusement Parks, Circuses, etc.\n\n\nCulture\n7998\nAquariums and Zoos\n\n\nCulture\n8699\nCultural, Union &amp; Other Unclassified Associations\n\n\nCulture\n9399\nGovernment Services (Default)\n\n\nMeal\n5812\nRestaurants\n\n\nMeal\n5813\nBars, Pubs, and Nightclubs\n\n\nMeal\n5814\nFast Food Restaurants\n\n\n\n\n\nIf your main economic activity is not compatible with meal or food services, the voucher transaction will be declined by the issuer.\nFor more information, see the site of the Brazilian Ministry of Labor and Employment.\nSee also\n\n\n                    Installments in Brazil\n                \n                    Input requests\n                \n                    Manual Key Entry\n                \n","type":"page","locale":"en","boost":17,"hierarchy":{"lvl0":"Home","lvl1":"In-person payments","lvl2":"Alternative payment methods","lvl3":"Meal voucher payments in Brazil"},"hierarchy_url":{"lvl0":"https:\/\/docs.adyen.com\/","lvl1":"https:\/\/docs.adyen.com\/point-of-sale","lvl2":"https:\/\/docs.adyen.com\/point-of-sale\/alternative-payment-methods","lvl3":"\/point-of-sale\/alternative-payment-methods\/brazil-vouchers"},"levels":4,"category":"In-person payments","category_color":"green","tags":["voucher","payments","Brazil"]}}
