{"title":"Best practices when accepting meal vouchers","category":"default","creationDate":1792741180,"content":"<p>Use the recommendations on this page to give shoppers a clear meal voucher payment experience. Regardless of sales channel, you should:<\/p>\n<ul>\n<li>Register your MIDs with the voucher issuers.<\/li>\n<li>Distinguish products that can be paid with a voucher from those that cannot.<\/li>\n<li>Have a strategy for handling split tenders, where the voucher balance does not cover the purchase amount of the eligible products.<\/li>\n<li>Test multiple scenarios.<\/li>\n<\/ul>\n<p>Other recommendations on this page apply to either online payments or in-person payments.<\/p>\n<h2>Register your MIDs<\/h2>\n<p><div data-component-wrapper=\"tag\">\n    <tag :variant=&quot;success&quot;>\n        Applies to:\n    <\/tag>\n<\/div>\n Online payments, in-person payments<br \/>\nIssuers decline meal voucher transactions from unregistered MIDs. Adyen receives a standard \"card declined\" response when this is the case, so we cannot inform you about the underlying reason. Therefore, make sure you register your MIDs with the issuer before you start accepting their meal vouchers.<\/p>\n<p>The setup depends on the voucher network.<\/p>\n<p>For single-branded vouchers, such as Monizze and Pluxee in Belgium through Intersolve or French vouchers through Conecs:<\/p>\n<ol>\n<li>Where required, make sure you have a national authorization such as registration with Commission Nationale des Titres-Restaurant (CNTR) in France.<\/li>\n<li>Ask your Adyen contact to enable the relevant network on your merchant account.<\/li>\n<li>Make sure you have a contract with each issuer and register your MIDs with them.<\/li>\n<\/ol>\n<p>For vouchers that are co-branded with Mastercard, such as Edenred in Belgium and Spain:<\/p>\n<ol>\n<li>Determine the voucher types you want to accept and the stores where those voucher types are legally applicable.<\/li>\n<li>Register your Mastercard MID with each issuer, making sure to do this for each voucher type separately.<\/li>\n<\/ol>\n<h2>Validate eligibility of products<\/h2>\n<p><div data-component-wrapper=\"tag\">\n    <tag :variant=&quot;success&quot;>\n        Applies to:\n    <\/tag>\n<\/div>\n Online payments, In-person payments<br \/>\nNational regulations define the product categories that each voucher type can pay for. Issuers decline a payment when your MID is not registered for the voucher type or when your MCC is not eligible for the voucher type.<\/p>\n<p>Proceed as follows:<\/p>\n<ol>\n<li>Check the line items in the shopper's basket.<\/li>\n<li>For online payments:\n<ul>\n<li>Only show voucher types that match the eligible products. For example, only show eco-cheques when the basket contains eligible eco-products.<\/li>\n<li>If the basket has eligible and ineligible items, show which portion the voucher can pay for.<\/li>\n<li>When you include order lines in an API request, provide accurate product categories. Issuers and networks can use line-item data to validate eligibility.<\/li>\n<\/ul><\/li>\n<li>For in-person payments:<br \/>\nDo not combine voucher-eligible and ineligible items in one voucher tender. Split the basket before payment.<\/li>\n<\/ol>\n<h2>Present as payment option<\/h2>\n<p><div data-component-wrapper=\"tag\">\n    <tag :variant=&quot;success&quot;>\n        Applies to:\n    <\/tag>\n<\/div>\n Online payments<br \/>\nA dedicated payment option on your checkout for the voucher, regardless of whether the voucher is co-branded with a global card scheme, ensures that the payment uses the correct network and acquirer path. It also lets you validate product eligibility before authorization, and prepares shoppers for having to use a second payment method if the voucher covers only a portion of the transaction.<\/p>\n<p>Follow these guidelines:<\/p>\n<ul>\n<li>Do not ask shoppers to enter voucher card details in your standard card payment form. Instead, present each meal voucher brand as a separate payment method.<\/li>\n<li>Use Drop-in or Components to show each supported voucher brand.<\/li>\n<li>Only show voucher brands that apply to the store's country. For example, do not show Belgian eco-cheques on a Dutch or Spanish ecommerce store.<\/li>\n<\/ul>\n<h2 id=\"split-tenders\">Handle split tenders<\/h2>\n<p><div data-component-wrapper=\"tag\">\n    <tag :variant=&quot;success&quot;>\n        Applies to:\n    <\/tag>\n<\/div>\n Online payments, In-person payments<br \/>\nThe term \"split tender\" refers to the situation where the balance on the voucher is lower than the purchase amount, and the customer needs to pay the remainder with a different payment method, such as a credit card or cash.<\/p>\n<p>You need to prepare your integration to collect any remaining amount with a second payment method. The available approach depends on the sales channel and the voucher network.<\/p>\n<ul>\n<li>\n<p>For online payments, you can integrate <a href=\"\/online-payments\/partial-payments\" target=\"_blank\">partial payments<\/a> to split an order between payment methods. However, this only works for single-branded \"non-scheme\" meal vouchers, which are routed through Intersolve or Conecs. Meal vouchers that are co-branded with Mastercard are \"scheme\" meal vouchers.<\/p>\n<\/li>\n<li>\n<p>For both online and in-person payments you can integrate <a href=\"#partial-auth\">partial authorizations<\/a>, also called partial approvals. When the voucher does not cover the transaction amount in full, the issuer normally declines the transaction. But if your payment request includes a parameter to allow partial authorization, this asks the issuer to authorize less than the transaction amount instead of declining the transaction. You can then make a second payment request for the remainder.<\/p>\n<\/li>\n<li>\n<p>Because there is no guarantee that all issuers support partial authorizations, we recommend that for certain vouchers you first <a href=\"#balance-check\">check the balance<\/a> on the meal voucher. You can then make a voucher payment that does not exceed the funds on the voucher, and a second payment request for any remaining amount.<\/p>\n<\/li>\n<\/ul>\n<p>Also note that for in-person payments you need to verify that your POS system supports multiple tenders for one transaction.<\/p>\n<h3 id=\"partial-auth\">Mastercard-based vouchers<\/h3>\n<p>This applies to meal vouchers co-branded with Mastercard, including Edenred in Belgium and Spain. For these voucher types, you can use partial authorizations. If the voucher balance is lower than the requested amount, the issuer can authorize the available amount instead of declining the payment. You can then collect the remaining amount with another payment method.<\/p>\n<div class=\"notices yellow\">\n<p>For online payments, you need to 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 partial authorizations.<\/p>\n<\/div>\n<p>To handle an insufficient balance:<\/p>\n<ol>\n<li>\n<p>Send a payment request for the full eligible basket amount and a parameter to allow partial authorization.<\/p>\n\n<div id=\"tab8ScwC\">\n    <div data-component-wrapper=\"tabs\">\n        <tabs\n                        :items=\"[{&quot;title&quot;:&quot;Checkout API&quot;,&quot;content&quot;:&quot;\\n&lt;p&gt;Make a  &lt;a href=\\&quot;https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;\/payments&lt;\/a&gt; request with &lt;code&gt;additionalData.allowPartialAuth&lt;\/code&gt; set to &lt;strong&gt;true&lt;\/strong&gt;. See &lt;a href=\\&quot;\/online-payments\/partial-authorizations\\&quot;&gt;partial authorizations&lt;\/a&gt; for the full flow.&lt;\/p&gt;\\n&quot;,&quot;altTitle&quot;:null,&quot;oldTabId&quot;:1,&quot;relation&quot;:&quot;&quot;},{&quot;title&quot;:&quot;Terminal API&quot;,&quot;content&quot;:&quot;\\n&lt;p&gt;Make a payment request with a &lt;code&gt;SaleData.SaleToAcquirerData&lt;\/code&gt; value that includes the &lt;code&gt;AllowPartialAuthorisation&lt;\/code&gt; tender option. See &lt;a href=\\&quot;\/point-of-sale\/partial-authorizations\\&quot;&gt;partial authorizations for in-person payments&lt;\/a&gt;.&lt;\/p&gt;\\n&quot;,&quot;altTitle&quot;:null,&quot;oldTabId&quot;:1,&quot;relation&quot;:&quot;&quot;}]\"\n            :should-update-when-url-changes='false'>\n        <\/tabs>\n    <\/div>\n<\/div>\n\n<\/li>\n<li>\n<p>Check the response and decide if you need to follow up on the initial payment request.<\/p>\n<ul>\n<li>\n<p>If the full amount is authorized, no follow-up is needed.<\/p>\n<!-- list-separator -->\n<\/li>\n<li>\n<p>If the response shows a partial amount is authorized, collect the remaining amount with a different payment method by sending a follow-up payment request with:<\/p>\n<ul>\n<li>The remaining amount.<\/li>\n<li>The parameter to allow partial authorization.<\/li>\n<li>A reference parameter value that enables you to connect the two partial authorizations in your reconciliation process.<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>If the payment is declined, ask the shopper to enter a lower voucher amount and try again. You can then make a follow-up payment request as described above to collect the remaining amount.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h3 id=\"balance-check\">Intersolve-based vouchers<\/h3>\n<p>This applies to Monizze, Pluxee in Belgium, and Lunch Check in Switzerland. For these issuers, first check the available funds on the voucher. This minimizes the number of declines and retry attempts. Inform the customer, so that they understand the situation beforehand. You can then make a payment request for the available amount on the voucher and collect the remaining amount with another payment method.<\/p>\n<p>One of the ways to check the balance on gift cards and meal vouchers is to use the <a href=\"\/payment-methods\/gift-cards\/stored-value-api\/check-balance\">Stored Value API<\/a>. However, this only works for \"non-scheme\" meal vouchers. For \"scheme\" meal vouchers (vouchers that are co-branded with Mastercard) you can check the balance using a Checkout API <code>\/paymentMethods\/balance<\/code> request in the case of online payments, or a Terminal API <code>BalanceInquiry<\/code> request in the case of in-person payments.<\/p>\n<p>To handle a split tender:<\/p>\n<ol>\n<li>\n<p>Ask the shopper for their voucher details.<\/p>\n<\/li>\n<li>\n<p>Check the balance using the method that matches your integration and the voucher type.<\/p>\n\n<div id=\"tabySeC8\">\n    <div data-component-wrapper=\"tabs\">\n        <tabs\n                        :items=\"[{&quot;title&quot;:&quot;Stored Value API&quot;,&quot;content&quot;:&quot;\\n&lt;p&gt;This method is suitable for both online and in-person payments with single-branded \\&quot;non-scheme\\&quot; vouchers.&lt;\/p&gt;\\n&lt;ol&gt;\\n&lt;li&gt;\\n&lt;p&gt;Send a &lt;a href=\\&quot;\/payment-methods\/gift-cards\/stored-value-api\/check-balance\\&quot;&gt;&lt;code&gt;\/checkBalance&lt;\/code&gt; request&lt;\/a&gt;.&lt;\/p&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;\/checkBalance request&#039;\\&quot; :id=\\&quot;&#039;&#039;\\&quot; :code-data=\\&quot;[{&amp;quot;language&amp;quot;:&amp;quot;bash&amp;quot;,&amp;quot;tabTitle&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;content&amp;quot;:&amp;quot;curl https:\\\\\/\\\\\/pal-test.adyen.com\\\\\/pal\\\\\/servlet\\\\\/StoredValue\\\\\/v46\\\\\/checkBalance \\\\\\\\\\\\n-H &#039;x-API-key: ADYEN_API_KEY&#039; \\\\\\\\\\\\n-X POST \\\\\\\\\\\\n-d &#039;{\\\\n    \\\\&amp;quot;merchantAccount\\\\&amp;quot;: \\\\&amp;quot;ADYEN_MERCHANT_ACCOUNT\\\\&amp;quot;,\\\\n    \\\\&amp;quot;store\\\\&amp;quot;:\\\\&amp;quot;YOUR_STORE_ID\\\\&amp;quot;,\\\\n    \\\\&amp;quot;paymentMethod\\\\&amp;quot;: {\\\\n        \\\\&amp;quot;type\\\\&amp;quot;: \\\\&amp;quot;monizze_mealvoucher\\\\&amp;quot;,\\\\n        \\\\&amp;quot;number\\\\&amp;quot;: \\\\&amp;quot;4082791234567890\\\\&amp;quot;\\\\n    },\\\\n    \\\\&amp;quot;reference\\\\&amp;quot;: \\\\&amp;quot;YOUR_REFERENCE\\\\&amp;quot;\\\\n}&#039;&amp;quot;}]\\&quot; :enable-copy-link-to-code-block=\\&quot;true\\&quot; :code-sample-card-size=\\&quot;&#039;fullsize&#039;\\&quot;&gt;&lt;\/code-sample&gt;\\n&lt;\/div&gt;\\n&lt;\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;In the response, check the &lt;code&gt;currentBalance&lt;\/code&gt; object for the available funds.&lt;\/p&gt;\\n&quot;,&quot;altTitle&quot;:null,&quot;oldTabId&quot;:1,&quot;relation&quot;:&quot;&quot;},{&quot;title&quot;:&quot;Checkout API&quot;,&quot;content&quot;:&quot;\\n&lt;p&gt;This method is for online payments only.&lt;\/p&gt;\\n&lt;ol&gt;\\n&lt;li&gt;\\n&lt;p&gt;Send a  &lt;a href=\\&quot;https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/paymentMethods\/balance\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;\/paymentMethods\/balance&lt;\/a&gt; request.&lt;\/p&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;\/paymentMethods\/balance&#039;\\&quot; :id=\\&quot;&#039;&#039;\\&quot; :code-data=\\&quot;[{&amp;quot;language&amp;quot;:&amp;quot;bash&amp;quot;,&amp;quot;tabTitle&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;content&amp;quot;:&amp;quot;curl https:\\\\\/\\\\\/checkout-test.adyen.com\\\\\/v72\\\\\/paymentMethods\\\\\/balance \\\\\\\\\\\\n-H &#039;x-api-key: ADYEN_API_KEY&#039; \\\\\\\\\\\\n-H &#039;content-type: application\\\\\/json&#039; \\\\\\\\\\\\n-d &#039;{\\\\n    \\\\&amp;quot;paymentMethod\\\\&amp;quot;: {\\\\n        \\\\&amp;quot;type\\\\&amp;quot;: \\\\&amp;quot;monizze_mealvoucher\\\\&amp;quot;,\\\\n        \\\\&amp;quot;number\\\\&amp;quot;:\\\\&amp;quot;4082791234567890\\\\&amp;quot;,\\\\n        \\\\&amp;quot;expiryMonth\\\\&amp;quot;: \\\\&amp;quot;06\\\\&amp;quot;,\\\\n        \\\\&amp;quot;expiryYear\\\\&amp;quot;: \\\\&amp;quot;2027\\\\&amp;quot;\\\\n    },\\\\n    \\\\&amp;quot;reference\\\\&amp;quot;: \\\\&amp;quot;YOUR_REFERENCE\\\\&amp;quot;,\\\\n    \\\\&amp;quot;merchantAccount\\\\&amp;quot;: \\\\&amp;quot;ADYEN_MERCHANT_ACCOUNT\\\\&amp;quot;\\\\n}&#039;&amp;quot;}]\\&quot; :enable-copy-link-to-code-block=\\&quot;true\\&quot; :code-sample-card-size=\\&quot;&#039;fullsize&#039;\\&quot;&gt;&lt;\/code-sample&gt;\\n&lt;\/div&gt;\\n&lt;\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;In the response, check the &lt;code&gt;balance&lt;\/code&gt; object for the available funds.&lt;\/p&gt;\\n&quot;,&quot;altTitle&quot;:null,&quot;oldTabId&quot;:1,&quot;relation&quot;:&quot;&quot;},{&quot;title&quot;:&quot;Terminal API&quot;,&quot;content&quot;:&quot;\\n&lt;p&gt;This method is for in-person payments only.&lt;\/p&gt;\\n&lt;ol&gt;\\n&lt;li&gt;\\n&lt;p&gt;Send a Terminal API &lt;a href=\\&quot;\/point-of-sale\/gift-cards-terminal-api\/query-the-balance\\&quot;&gt;balance inquiry&lt;\/a&gt; request.&lt;\/p&gt;\\n&lt;pre&gt;&lt;code class=\\&quot;language-json\\&quot;&gt;{\\n  \\&quot;SaleToPOIRequest\\&quot;:{\\n      \\&quot;MessageHeader\\&quot;:{\\n          \\&quot;ProtocolVersion\\&quot;:\\&quot;3.0\\&quot;,\\n          \\&quot;MessageClass\\&quot;:\\&quot;Service\\&quot;,\\n          \\&quot;MessageCategory\\&quot;:\\&quot;BalanceInquiry\\&quot;,\\n          \\&quot;MessageType\\&quot;:\\&quot;Request\\&quot;,\\n          \\&quot;ServiceID\\&quot;:\\&quot;9266\\&quot;,\\n          \\&quot;SaleID\\&quot;:\\&quot;POSSystemID12345\\&quot;,\\n          \\&quot;POIID\\&quot;:\\&quot;V400m-324688179\\&quot;\\n      },\\n      \\&quot;BalanceInquiryRequest\\&quot;:{\\n          \\&quot;PaymentAccountReq\\&quot;:{\\n              \\&quot;PaymentInstrumentData\\&quot;:{\\n                  \\&quot;PaymentInstrumentType\\&quot;:\\&quot;StoredValue\\&quot;,\\n                  \\&quot;StoredValueAccountID\\&quot;:{\\n                      \\&quot;StoredValueAccountType\\&quot;:\\&quot;GiftCard\\&quot;,\\n                      \\&quot;StoredValueProvider\\&quot;:\\&quot;genericgiftcard\\&quot;,\\n                      \\&quot;IdentificationType\\&quot;:\\&quot;PAN\\&quot;,\\n                      \\&quot;EntryMode\\&quot;:[\\n                          \\&quot;Scanned\\&quot;\\n                      ],\\n                      \\&quot;StoredValueID\\&quot;:\\&quot;4082791234567890\\&quot;,\\n                      \\&quot;ExpiryDate\\&quot;:\\&quot;0627\\&quot;\\n                  }\\n              }\\n          }\\n      }\\n  }\\n}&lt;\/code&gt;&lt;\/pre&gt;\\n&lt;\/li&gt;\\n&lt;li&gt;In the response, check &lt;code&gt;PaymentAccountStatus.CurrentBalance&lt;\/code&gt; for the available funds.\\n&quot;,&quot;altTitle&quot;:null,&quot;oldTabId&quot;:1,&quot;relation&quot;:&quot;&quot;}]\"\n            :should-update-when-url-changes='false'>\n        <\/tabs>\n    <\/div>\n<\/div>\n\n<\/li>\n<li>\n<p>Tell the shopper how much the voucher can pay and what amount remains.<\/p>\n<\/li>\n<li>\n<p>Send a voucher payment request for the available balance, or for the full amount when the balance is sufficient.<\/p>\n<\/li>\n<li>\n<p>If an amount remains, send another payment request, letting the shopper choose a different payment method.<\/p>\n<\/li>\n<\/ol>\n<h2>Show a clear receipt<\/h2>\n<p><div data-component-wrapper=\"tag\">\n    <tag :variant=&quot;success&quot;>\n        Applies to:\n    <\/tag>\n<\/div>\n In-person payments<br \/>\nPrint a receipt that shows the voucher amount and, when the issuer supports it, the remaining balance.<\/p>\n<h2>Show a clear decline message<\/h2>\n<p><div data-component-wrapper=\"tag\">\n    <tag :variant=&quot;success&quot;>\n        Applies to:\n    <\/tag>\n<\/div>\n Online payments<br \/>\nDo not show a generic payment failure message when a voucher payment is declined. Explain the reason and the next step.<\/p>\n<ul>\n<li>For an insufficient balance, ask the shopper to use the voucher for a lower amount and pay the remainder with another method.<\/li>\n<li>For ineligible products, identify the items that the voucher cannot pay for.<\/li>\n<li>For an unregistered MID, resolve the setup issue during onboarding. Do not ask the shopper to take action.<\/li>\n<\/ul>\n<h2>Recurring payments and refunds<\/h2>\n<p><div data-component-wrapper=\"tag\">\n    <tag :variant=&quot;success&quot;>\n        Applies to:\n    <\/tag>\n<\/div>\n Online payments<br \/>\nDo not save voucher tokens for recurring or saved-payment flows unless the issuer explicitly supports this. Most voucher types do not support recurring payments.<\/p>\n<p>Refund behavior depends on the voucher network. Refund a voucher payment to the original voucher whenever possible, in case the issuer or applicable regulation does not permit refunding to a different payment method.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Network<\/th>\n<th style=\"text-align: left;\">Refund flow<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\">Mastercard, such as Edenred in Belgium and Spain<\/td>\n<td style=\"text-align: left;\">Use the standard Mastercard refund flow.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Intersolve, such as Monizze and Pluxee in Belgium<\/td>\n<td style=\"text-align: left;\">Adyen processes the refund through Intersolve.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Conecs in France<\/td>\n<td style=\"text-align: left;\">Refunds are not supported for meal voucher (Titres-restaurant) payments through Conecs. Explain this at checkout. Instead of a refund, provide store credit or another remedy.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Testing<\/h2>\n<p><div data-component-wrapper=\"tag\">\n    <tag :variant=&quot;success&quot;>\n        Applies to:\n    <\/tag>\n<\/div>\n Online payments, In-person payments<br \/>\nBefore you go live, test a payment where the voucher covers the full amount, part of the amount, and none of the amount.<\/p>\n<h2>See also<\/h2>\n<div class=\"see-also-links output-inline\" id=\"see-also\">\n<ul><li><a href=\"\/industries\/markets\/europe-meal-vouchers\"\n                        target=\"_self\"\n                        >\n                    Meal vouchers in Europe\n                <\/a><\/li><li><a href=\"\/payment-methods\/gift-cards\/stored-value-api\/check-balance\"\n                        target=\"_self\"\n                        >\n                    Stored Value API: Check the balance of a gift card\n                <\/a><\/li><\/ul><\/div>\n\n<h4>Online payments<\/h4>\n<div class=\"see-also-links output-inline\" id=\"see-also\">\n<ul><li><a href=\"\/online-payments\/partial-payments\"\n                        target=\"_self\"\n                        >\n                    Partial payments\n                <\/a><\/li><li><a href=\"\/online-payments\/partial-authorizations\"\n                        target=\"_self\"\n                        >\n                    Partial authorizations\n                <\/a><\/li><li><a href=\"\/payment-methods\/gift-cards\"\n                        target=\"_self\"\n                        >\n                    Gift cards\n                <\/a><\/li><\/ul><\/div>\n\n<h4>In-person payments<\/h4>\n<div class=\"see-also-links output-inline\" id=\"see-also\">\n<ul><li><a href=\"\/point-of-sale\/partial-authorizations\"\n                        target=\"_self\"\n                        >\n                    Partial authorizations\n                <\/a><\/li><li><a href=\"\/point-of-sale\/gift-cards-terminal-api\/payment\"\n                        target=\"_self\"\n                        >\n                    Make a gift card payment with Terminal API\n                <\/a><\/li><\/ul><\/div>\n","url":"https:\/\/docs.adyen.com\/industries\/markets\/europe-meal-vouchers\/best-practices","articleFields":{"description":"How to provide a smooth voucher payment experience for your shoppers, both online and in-person.","type":"page"},"algolia":{"url":"https:\/\/docs.adyen.com\/industries\/markets\/europe-meal-vouchers\/best-practices","title":"Best practices when accepting meal vouchers","content":"Use the recommendations on this page to give shoppers a clear meal voucher payment experience. Regardless of sales channel, you should:\n\nRegister your MIDs with the voucher issuers.\nDistinguish products that can be paid with a voucher from those that cannot.\nHave a strategy for handling split tenders, where the voucher balance does not cover the purchase amount of the eligible products.\nTest multiple scenarios.\n\nOther recommendations on this page apply to either online payments or in-person payments.\nRegister your MIDs\n\n    \n        Applies to:\n    \n\n Online payments, in-person payments\nIssuers decline meal voucher transactions from unregistered MIDs. Adyen receives a standard \"card declined\" response when this is the case, so we cannot inform you about the underlying reason. Therefore, make sure you register your MIDs with the issuer before you start accepting their meal vouchers.\nThe setup depends on the voucher network.\nFor single-branded vouchers, such as Monizze and Pluxee in Belgium through Intersolve or French vouchers through Conecs:\n\nWhere required, make sure you have a national authorization such as registration with Commission Nationale des Titres-Restaurant (CNTR) in France.\nAsk your Adyen contact to enable the relevant network on your merchant account.\nMake sure you have a contract with each issuer and register your MIDs with them.\n\nFor vouchers that are co-branded with Mastercard, such as Edenred in Belgium and Spain:\n\nDetermine the voucher types you want to accept and the stores where those voucher types are legally applicable.\nRegister your Mastercard MID with each issuer, making sure to do this for each voucher type separately.\n\nValidate eligibility of products\n\n    \n        Applies to:\n    \n\n Online payments, In-person payments\nNational regulations define the product categories that each voucher type can pay for. Issuers decline a payment when your MID is not registered for the voucher type or when your MCC is not eligible for the voucher type.\nProceed as follows:\n\nCheck the line items in the shopper's basket.\nFor online payments:\n\nOnly show voucher types that match the eligible products. For example, only show eco-cheques when the basket contains eligible eco-products.\nIf the basket has eligible and ineligible items, show which portion the voucher can pay for.\nWhen you include order lines in an API request, provide accurate product categories. Issuers and networks can use line-item data to validate eligibility.\n\nFor in-person payments:\nDo not combine voucher-eligible and ineligible items in one voucher tender. Split the basket before payment.\n\nPresent as payment option\n\n    \n        Applies to:\n    \n\n Online payments\nA dedicated payment option on your checkout for the voucher, regardless of whether the voucher is co-branded with a global card scheme, ensures that the payment uses the correct network and acquirer path. It also lets you validate product eligibility before authorization, and prepares shoppers for having to use a second payment method if the voucher covers only a portion of the transaction.\nFollow these guidelines:\n\nDo not ask shoppers to enter voucher card details in your standard card payment form. Instead, present each meal voucher brand as a separate payment method.\nUse Drop-in or Components to show each supported voucher brand.\nOnly show voucher brands that apply to the store's country. For example, do not show Belgian eco-cheques on a Dutch or Spanish ecommerce store.\n\nHandle split tenders\n\n    \n        Applies to:\n    \n\n Online payments, In-person payments\nThe term \"split tender\" refers to the situation where the balance on the voucher is lower than the purchase amount, and the customer needs to pay the remainder with a different payment method, such as a credit card or cash.\nYou need to prepare your integration to collect any remaining amount with a second payment method. The available approach depends on the sales channel and the voucher network.\n\n\nFor online payments, you can integrate partial payments to split an order between payment methods. However, this only works for single-branded \"non-scheme\" meal vouchers, which are routed through Intersolve or Conecs. Meal vouchers that are co-branded with Mastercard are \"scheme\" meal vouchers.\n\n\nFor both online and in-person payments you can integrate partial authorizations, also called partial approvals. When the voucher does not cover the transaction amount in full, the issuer normally declines the transaction. But if your payment request includes a parameter to allow partial authorization, this asks the issuer to authorize less than the transaction amount instead of declining the transaction. You can then make a second payment request for the remainder.\n\n\nBecause there is no guarantee that all issuers support partial authorizations, we recommend that for certain vouchers you first check the balance on the meal voucher. You can then make a voucher payment that does not exceed the funds on the voucher, and a second payment request for any remaining amount.\n\n\nAlso note that for in-person payments you need to verify that your POS system supports multiple tenders for one transaction.\nMastercard-based vouchers\nThis applies to meal vouchers co-branded with Mastercard, including Edenred in Belgium and Spain. For these voucher types, you can use partial authorizations. If the voucher balance is lower than the requested amount, the issuer can authorize the available amount instead of declining the payment. You can then collect the remaining amount with another payment method.\n\nFor online payments, you need to ask our Support Team to enable partial authorizations.\n\nTo handle an insufficient balance:\n\n\nSend a payment request for the full eligible basket amount and a parameter to allow partial authorization.\n\n\n    \n        \n        \n    \n\n\n\n\nCheck the response and decide if you need to follow up on the initial payment request.\n\n\nIf the full amount is authorized, no follow-up is needed.\n\n\n\nIf the response shows a partial amount is authorized, collect the remaining amount with a different payment method by sending a follow-up payment request with:\n\nThe remaining amount.\nThe parameter to allow partial authorization.\nA reference parameter value that enables you to connect the two partial authorizations in your reconciliation process.\n\n\n\nIf the payment is declined, ask the shopper to enter a lower voucher amount and try again. You can then make a follow-up payment request as described above to collect the remaining amount.\n\n\n\n\nIntersolve-based vouchers\nThis applies to Monizze, Pluxee in Belgium, and Lunch Check in Switzerland. For these issuers, first check the available funds on the voucher. This minimizes the number of declines and retry attempts. Inform the customer, so that they understand the situation beforehand. You can then make a payment request for the available amount on the voucher and collect the remaining amount with another payment method.\nOne of the ways to check the balance on gift cards and meal vouchers is to use the Stored Value API. However, this only works for \"non-scheme\" meal vouchers. For \"scheme\" meal vouchers (vouchers that are co-branded with Mastercard) you can check the balance using a Checkout API \/paymentMethods\/balance request in the case of online payments, or a Terminal API BalanceInquiry request in the case of in-person payments.\nTo handle a split tender:\n\n\nAsk the shopper for their voucher details.\n\n\nCheck the balance using the method that matches your integration and the voucher type.\n\n\n    \n        \n        \n    \n\n\n\n\nTell the shopper how much the voucher can pay and what amount remains.\n\n\nSend a voucher payment request for the available balance, or for the full amount when the balance is sufficient.\n\n\nIf an amount remains, send another payment request, letting the shopper choose a different payment method.\n\n\nShow a clear receipt\n\n    \n        Applies to:\n    \n\n In-person payments\nPrint a receipt that shows the voucher amount and, when the issuer supports it, the remaining balance.\nShow a clear decline message\n\n    \n        Applies to:\n    \n\n Online payments\nDo not show a generic payment failure message when a voucher payment is declined. Explain the reason and the next step.\n\nFor an insufficient balance, ask the shopper to use the voucher for a lower amount and pay the remainder with another method.\nFor ineligible products, identify the items that the voucher cannot pay for.\nFor an unregistered MID, resolve the setup issue during onboarding. Do not ask the shopper to take action.\n\nRecurring payments and refunds\n\n    \n        Applies to:\n    \n\n Online payments\nDo not save voucher tokens for recurring or saved-payment flows unless the issuer explicitly supports this. Most voucher types do not support recurring payments.\nRefund behavior depends on the voucher network. Refund a voucher payment to the original voucher whenever possible, in case the issuer or applicable regulation does not permit refunding to a different payment method.\n\n\n\nNetwork\nRefund flow\n\n\n\n\nMastercard, such as Edenred in Belgium and Spain\nUse the standard Mastercard refund flow.\n\n\nIntersolve, such as Monizze and Pluxee in Belgium\nAdyen processes the refund through Intersolve.\n\n\nConecs in France\nRefunds are not supported for meal voucher (Titres-restaurant) payments through Conecs. Explain this at checkout. Instead of a refund, provide store credit or another remedy.\n\n\n\nTesting\n\n    \n        Applies to:\n    \n\n Online payments, In-person payments\nBefore you go live, test a payment where the voucher covers the full amount, part of the amount, and none of the amount.\nSee also\n\n\n                    Meal vouchers in Europe\n                \n                    Stored Value API: Check the balance of a gift card\n                \n\nOnline payments\n\n\n                    Partial payments\n                \n                    Partial authorizations\n                \n                    Gift cards\n                \n\nIn-person payments\n\n\n                    Partial authorizations\n                \n                    Make a gift card payment with Terminal API\n                \n","type":"page","locale":"en","boost":16,"hierarchy":{"lvl0":"Home","lvl1":"Industries and markets","lvl2":"Markets","lvl3":"Meal vouchers in Europe","lvl4":"Best practices when accepting meal vouchers"},"hierarchy_url":{"lvl0":"https:\/\/docs.adyen.com\/","lvl1":"https:\/\/docs.adyen.com\/industries","lvl2":"https:\/\/docs.adyen.com\/industries\/markets","lvl3":"https:\/\/docs.adyen.com\/industries\/markets\/europe-meal-vouchers","lvl4":"\/industries\/markets\/europe-meal-vouchers\/best-practices"},"levels":5,"category":"","category_color":"","tags":["practices","accepting","vouchers"]}}
