{"title":"Tax-free shopping with secure card capture","category":"default","creationDate":1722410820,"content":"<p>Tax-free Shopping (TFS) allows international travelers to claim back the sales tax or Value-Added Tax (VAT) on their purchases from a <strong>Tax-Free Shopping provider<\/strong> (TFS provider) such as Global Blue. A TFS provider is an organization that refunds the shopper and takes care of the paperwork with the authorities.<\/p>\n<p>We can share the shopper's encrypted card number with the TFS provider so that it is easier for the provider to refund the shopper on their card. This is referred to as <strong>secure card capture<\/strong>.<\/p>\n<p>Supporting TFS drives sales from international shoppers because of its convenience, and can be a great source of data about international shoppers. To offer TFS with secure card capture to your shoppers, your TFS provider needs to integrate with your POS app.<\/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\/design-your-integration\/terminal-api\/\">Terminal API integration<\/a> with payment terminals, or a <a href=\"\/point-of-sale\/ipp-mobile\">Mobile solution<\/a>.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong><a href=\"\/development-resources\/webhooks\">Webhooks<\/a><\/strong><\/td>\n<td style=\"text-align: left;\"><a href=\"#notification\">Set up <span translate=\"no\"><strong>Send card number to\u00a0&lt;TFS provider&gt;<\/strong><\/span> webhooks<\/a>.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Limitations<\/strong><\/td>\n<td style=\"text-align: left;\">The following limitations apply: <ul><li markdown=\"1\">Only available if you are located in a <a href=\"\/point-of-sale\/what-we-support\/supported-languages\/#supported-countries\">country\/region where a Terminal API integration is supported<\/a> or a <a href=\"\/point-of-sale\/ipp-mobile\">country\/region where Mobile solutions are supported<\/a>, and only if the country\/region allows VAT refunds.<\/li> <li markdown=\"1\">Only available with Global Blue as TFS provider. Check their <a href=\"https:\/\/www.globalblue.com\/en\/shoppers\/how-to-shop-tax-free\/destinations\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">overview of supported countries<\/a>.<\/li><\/ul><\/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, <a href=\"#set-up-tfs\">set up tax-free shopping<\/a>.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>How it works<\/h2>\n<p>The role of Adyen in the tax-free flow is limited. Securely card capture enables us to send a notification with the shopper's encrypted card details to the TFS provider. <\/p>\n<p>For an overview of the flow, select the tab for your integration or solution.<\/p>\n\n<div id=\"tabnsV45\">\n    <div data-component-wrapper=\"tabs\">\n        <tabs\n                        :items=\"[{&quot;title&quot;:&quot;Terminal API with payment terminals&quot;,&quot;content&quot;:&quot;\\n&lt;ol&gt;\\n&lt;li&gt;\\n&lt;p&gt;Check if the purchase is eligible for TFS. You can do this either:&lt;\\\/p&gt;\\n&lt;ul&gt;\\n&lt;li&gt;From the terminal: You send a &lt;a href=\\&quot;#step-1-card-acquisition\\&quot;&gt;card acquisition request&lt;\\\/a&gt; to get the issuer country code and the BIN.&lt;\\\/li&gt;\\n&lt;li&gt;From your POS app: This flow does not involve Adyen and you need to set it up with your TFS provider.&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;Ask the shopper&#039;s consent for secure card capture (to share their encrypted card number with your TFS provider). You can do this either in the POS app user interface or on the payment terminal. There are two flows to ask for consent on the terminal:&lt;\\\/p&gt;\\n&lt;ul&gt;\\n&lt;li&gt;&lt;strong&gt;Automatic consent flow&lt;\\\/strong&gt;: After you have enabled this flow with Adyen, you only need to make a payment. This automatically shows the consent screen and shares the encrypted card number with the TFS provider if consent is given.&lt;\\\/li&gt;\\n&lt;li&gt;&lt;strong&gt;Custom consent flow&lt;\\\/strong&gt;: You send an &lt;a href=\\&quot;#input-request\\&quot;&gt;input request&lt;\\\/a&gt; to ask the shopper for their consent. You also need to implement logic to decide, based on the input response, whether your payment request should trigger secure card capture.&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;div class=\\&quot;notices green\\&quot;&gt;\\n&lt;p&gt;If Global Blue is your TFS provider, it is recommended to ask for consent in the POS app user interface.&lt;\\\/p&gt;\\n&lt;\\\/div&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;You &lt;a href=\\&quot;#step-3-payment\\&quot;&gt;make a payment&lt;\\\/a&gt; with &lt;code&gt;taxfree.indicator&lt;\\\/code&gt; set to &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;true&lt;\\\/strong&gt;&lt;\\\/span&gt; to indicate that the shopper has given consent for secure card capture. We send a &lt;a href=\\&quot;#notification\\&quot;&gt;notification to the TFS provider&lt;\\\/a&gt; with the shopper&#039;s encrypted card number.&lt;\\\/p&gt;\\n&lt;p&gt;If the shopper has not given consent, you set &lt;code&gt;taxfree.indicator&lt;\\\/code&gt; to &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;false&lt;\\\/strong&gt;&lt;\\\/span&gt; so that no secure card capture happens. In the automatic flow, we automatically change the flag to &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;false&lt;\\\/strong&gt;&lt;\\\/span&gt;. The shopper can still claim the refund with the TFS provider. &lt;\\\/p&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;After the shopper completes the payment, you give the shopper the tax-free form issued by the POS app, and a receipt.&lt;\\\/p&gt;\\n&lt;\\\/li&gt;\\n&lt;\\\/ol&gt;\\n&quot;,&quot;altTitle&quot;:&quot;tapi&quot;,&quot;oldTabId&quot;:1,&quot;relation&quot;:&quot;tapi&quot;},{&quot;title&quot;:&quot;Mobile solution&quot;,&quot;content&quot;:&quot;\\n&lt;p&gt;The role of Adyen in the tax-free flow is limited. We pass on information to the TFS provider for secure card capture. However, secure card capture requires consent from the shopper.&lt;\\\/p&gt;\\n&lt;p&gt;After you have set up tax-free shopping:&lt;\\\/p&gt;\\n&lt;ol&gt;\\n&lt;li&gt;\\n&lt;p&gt;Check if the purchase qualifies for TFS, based on the requirements of your TFS provider, by either:&lt;\\\/p&gt;\\n&lt;ul&gt;\\n&lt;li&gt;Checking the shopper&#039;s passport.&lt;\\\/li&gt;\\n&lt;li&gt;Checking the shopper&#039;s details in your Customer Relationship Management (CRM) tool, if you have previously saved their data.&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;Ask the shopper for consent to share their encrypted card number with your TFS provider. You can ask for verbal consent or implement a consent screen in your POS app.&lt;\\\/p&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;If the shopper is eligible for TFS and has given consent, you &lt;a href=\\&quot;#step-1-payment\\&quot;&gt;make a payment&lt;\\\/a&gt; with &lt;code&gt;taxfree.indicator&lt;\\\/code&gt; set to &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;true&lt;\\\/strong&gt;&lt;\\\/span&gt;. We send a &lt;a href=\\&quot;#notification\\&quot;&gt;notification to the TFS provider&lt;\\\/a&gt; with the shopper&#039;s encrypted card number that will be used for the refund.&lt;\\\/p&gt;\\n&lt;p&gt;If the shopper has not given consent, you set &lt;code&gt;taxfree.indicator&lt;\\\/code&gt; to &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;false&lt;\\\/strong&gt;&lt;\\\/span&gt; so that no secure card capture happens.&lt;\\\/p&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;After the shopper completes the payment, you give the shopper the tax-free form issued by the POS app, and a receipt.&lt;\\\/p&gt;\\n&lt;\\\/li&gt;\\n&lt;\\\/ol&gt;\\n&quot;,&quot;altTitle&quot;:&quot;mobile&quot;,&quot;oldTabId&quot;:1,&quot;relation&quot;:&quot;mobile&quot;}]\"\n            :should-update-when-url-changes='true'>\n        <\/tabs>\n    <\/div>\n<\/div>\n\n<p>With the tax-free form and the receipt, the shopper can claim the VAT refund from the TFS provider. As part of this process, the shopper has to take the tax-free form to the customs desk at the airport or border, to get export validation. Customs will place a customs stamp on the form, or use an electronic system for validation. The shopper then needs to send or hand in the (electronically) validated form to the TFS provider.<\/p>\n<h2 id=\"set-up-tfs\">Set up tax-free shopping<\/h2>\n<p>Before you begin offering tax-free shopping to your shoppers, you need to set up the feature.<\/p>\n<p>Select the tab for your integration or solution.<\/p>\n\n<div id=\"tabY09rZ\">\n    <div data-component-wrapper=\"tabs\">\n        <tabs\n                        :items=\"[{&quot;title&quot;:&quot;Terminal API with payment terminals&quot;,&quot;content&quot;:&quot;\\n&lt;ol&gt;\\n&lt;li&gt;\\n&lt;p&gt;Contact a TFS provider to set up a tax-free process.&lt;\\\/p&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;To set up your POS app for TFS support, contact the provider of your POS system.&lt;\\\/p&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;If you want to automatically show a default consent input screen before showing the payment screen, ask your Adyen account manager or the &lt;a href=\\&quot;https:\\\/\\\/ca-test.adyen.com\\\/ca\\\/ca\\\/contactUs\\\/support.shtml?form=other\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;Support Team&lt;\\\/a&gt; to enable the automatic consent flow.&lt;\\\/p&gt;\\n&lt;div class=\\&quot;sc-notice info\\&quot;&gt;&lt;div&gt;\\n&lt;p&gt;If you want to use a custom input screen, the automatic consent flow must be disabled.&lt;\\\/p&gt;\\n&lt;\\\/div&gt;&lt;\\\/div&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;Enable receiving the issuer country:&lt;\\\/p&gt;\\n&lt;ol&gt;\\n&lt;li&gt;In your &lt;a href=\\&quot;https:\\\/\\\/ca-test.adyen.com\\\/\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;Customer Area&lt;\\\/a&gt;, go to &lt;strong&gt;Developers&lt;\\\/strong&gt; &amp;gt; &lt;strong&gt;Additional data&lt;\\\/strong&gt;.&lt;\\\/li&gt;\\n&lt;li&gt;Select &lt;strong&gt;Issuer country&lt;\\\/strong&gt;, &lt;strong&gt;Variant&lt;\\\/strong&gt;, &lt;strong&gt;Funding source&lt;\\\/strong&gt;, and &lt;strong&gt;Funding source subtype&lt;\\\/strong&gt;.&lt;\\\/li&gt;\\n&lt;\\\/ol&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;Configure a &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;Send card number to &lt;TFS provider&gt;&lt;\\\/strong&gt;&lt;\\\/span&gt; webhook to send &lt;a href=\\&quot;#notification\\&quot;&gt;notifications to your TFS provider&lt;\\\/a&gt;.&lt;\\\/p&gt;\\n&quot;,&quot;altTitle&quot;:&quot;tapi&quot;,&quot;oldTabId&quot;:1,&quot;relation&quot;:&quot;tapi&quot;},{&quot;title&quot;:&quot;Mobile solution&quot;,&quot;content&quot;:&quot;\\n&lt;ol&gt;\\n&lt;li&gt;Contact a TFS provider to set up a tax-free process.&lt;\\\/li&gt;\\n&lt;li&gt;To set up your POS app for TFS support, contact the provider of your POS system.&lt;\\\/li&gt;\\n&lt;li&gt;Configure a &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;Send card number to &lt;TFS provider&gt;&lt;\\\/strong&gt;&lt;\\\/span&gt; webhook to send &lt;a href=\\&quot;#notification\\&quot;&gt;notifications to your TFS provider&lt;\\\/a&gt;.\\n&quot;,&quot;altTitle&quot;:&quot;mobile&quot;,&quot;oldTabId&quot;:1,&quot;relation&quot;:&quot;mobile&quot;}]\"\n            :should-update-when-url-changes='true'>\n        <\/tabs>\n    <\/div>\n<\/div>\n\n<h2 id=\"notification\">Set up notifications to your TFS provider<\/h2>\n<p>Configure a <span translate=\"no\"><strong>Send card number to&nbsp;&lt;TFS provider><\/strong><\/span> <a href=\"\/development-resources\/webhooks\">webhook<\/a>. If the shopper agrees to share their card details, we send the following data fields to your TFS provider:<\/p>\n<ul>\n<li>The PSP reference of the transaction.<\/li>\n<li>The shopper's encrypted card number.<\/li>\n<li>The BIN of the shopper's card.\n<div class=\"notices green\">\n<p>If your TFS provider is Global Blue, use <code>https:\/\/www.adyen.com<\/code> as the URL for <strong>Server configuration<\/strong> for the \"Send card number to Global Blue\" webhook.<\/p>\n<\/div>\n<p>We recommend adding a meaningful message to the <strong>Description<\/strong> that identifies it as part of the tax-free shopping flow.<\/p><\/li>\n<\/ul>\n<p>Whether we send this notification is determined by the <code>taxfree.indicator<\/code> flag in the payment request. If the notification is sent, you see this on the transaction in your <a href=\"https:\/\/ca-test.adyen.com\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Customer Area<\/a>. The <strong>POS<\/strong> tile of the transaction includes:<\/p>\n<ul>\n<li><strong>Tax Free Indicator<\/strong>: <span translate=\"no\"><strong>true<\/strong><\/span><\/li>\n<li><strong>Tax Free Identifier<\/strong>: the ID that the TFS provider returned to acknowledge the card details.\n<div class=\"notices green\">\n<p>This notification is needed for testing and when you go live. Note that the shopper can claim the tax refund regardless of whether we notified the TFS provider of the shopper's encrypted card number.<\/p>\n<\/div><\/li>\n<\/ul>\n<h2 id=\"handle-the-flow\">Handle the tax-free flow<\/h2>\n<p>Select the tab for your integration or solution.<\/p>\n\n<div id=\"tabdYgfJ\">\n    <div data-component-wrapper=\"tabs\">\n        <tabs\n                        :items=\"[{&quot;title&quot;:&quot;Terminal API with payment terminals&quot;,&quot;content&quot;:&quot;\\n&lt;p&gt;In a Terminal API integration using payment terminals, the flow can consist of three steps:&lt;\\\/p&gt;\\n&lt;ol&gt;\\n&lt;li&gt;&lt;a href=\\&quot;#step-1-card-acquisition\\&quot;&gt;Optionally acquire the card details&lt;\\\/a&gt; to gather data that enable you to check if the transaction is eligible for TFS. The POS app should handle the eligibility check either locally or through the TFS provider, and should inform your store staff of the result.&lt;\\\/li&gt;\\n&lt;li&gt;&lt;a href=\\&quot;#input-request\\&quot;&gt;Optionally use a custom input request&lt;\\\/a&gt; instead of the automatic consent flow to ask the shopper&#039;s consent to sharing their encrypted card details with the TFS provider.&lt;\\\/li&gt;\\n&lt;li&gt;&lt;a href=\\&quot;#step-3-payment\\&quot;&gt;Make a payment request&lt;\\\/a&gt; with the &lt;code&gt;taxfree.indicator&lt;\\\/code&gt; flag set to &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;true&lt;\\\/strong&gt;&lt;\\\/span&gt;. The shopper&#039;s encrypted card details will be shared with the TFS provider.&lt;\\\/li&gt;\\n&lt;\\\/ol&gt;\\n&lt;h3 id=\\&quot;step-1-card-acquisition\\&quot;&gt;1. Optional: Acquire card details&lt;\\\/h3&gt;\\n&lt;p&gt;To check whether the shopper is eligible for a tax refund and to determine the eligible tax-free service, you can check the shopper&#039;s passport and payment card, or you make a card acquisition:&lt;\\\/p&gt;\\n&lt;ol&gt;\\n&lt;li&gt;\\n&lt;p&gt;&lt;a href=\\&quot;\\\/point-of-sale\\\/card-acquisition\\&quot;&gt;Make a card acquisition request&lt;\\\/a&gt; in which you specify the &lt;code&gt;TotalAmount&lt;\\\/code&gt;.&lt;\\\/p&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;&#039;\\&quot; :id=\\&quot;&#039;tax-free-shopping_0-request&#039;\\&quot; :code-data=&#039;[{\\&quot;language\\&quot;:\\&quot;json\\&quot;,\\&quot;tabTitle\\&quot;:\\&quot;JSON\\&quot;,\\&quot;content\\&quot;:\\&quot;{\\\\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;CardAcquisition\\\\\\&quot;,\\\\n            \\\\\\&quot;MessageType\\\\\\&quot;: \\\\\\&quot;Request\\\\\\&quot;,\\\\n            \\\\\\&quot;SaleID\\\\\\&quot;: \\\\\\&quot;POSSystemID12345\\\\\\&quot;,\\\\n            \\\\\\&quot;ServiceID\\\\\\&quot;: \\\\\\&quot;0207111104\\\\\\&quot;,\\\\n            \\\\\\&quot;POIID\\\\\\&quot;: \\\\\\&quot;MX925-284691408\\\\\\&quot;\\\\n        },\\\\n        \\\\\\&quot;CardAcquisitionRequest\\\\\\&quot;: {\\\\n            \\\\\\&quot;SaleData\\\\\\&quot;: {\\\\n                \\\\\\&quot;SaleTransactionID\\\\\\&quot;: {\\\\n                    \\\\\\&quot;TimeStamp\\\\\\&quot;: \\\\\\&quot;2024-06-10T14:59:09.000Z\\\\\\&quot;,\\\\n                    \\\\\\&quot;TransactionID\\\\\\&quot;: \\\\\\&quot;933\\\\\\&quot;\\\\n                }\\\\n             },\\\\n            \\\\\\&quot;CardAcquisitionTransaction\\\\\\&quot;: {\\\\n                \\\\\\&quot;TotalAmount\\\\\\&quot;:176.99\\\\n            }\\\\n        }\\\\n    }\\\\n}\\&quot;},{\\&quot;language\\&quot;:\\&quot;java\\&quot;,\\&quot;tabTitle\\&quot;:\\&quot;Java\\&quot;,\\&quot;content\\&quot;:\\&quot;String saleID = \\\\\\&quot;YOUR_CASH_REGISTER_ID\\\\\\&quot;;\\\\nString serviceID = \\\\\\&quot;YOUR_UNIQUE_ATTEMPT_ID\\\\\\&quot;;\\\\nString POIID = \\\\\\&quot;YOUR_TERMINAL_ID\\\\\\&quot;;\\\\nString transactionID = \\\\\\&quot;YOUR_UNIQUE_TRANSACTION_ID\\\\\\&quot;;\\\\n\\\\nSaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();\\\\nMessageHeader messageHeader = new MessageHeader();\\\\nmessageHeader.setProtocolVersion(\\\\\\&quot;3.0\\\\\\&quot;);\\\\nmessageHeader.setMessageClass( MessageClassType.SERVICE );\\\\nmessageHeader.setMessageCategory( MessageCategoryType.CARD_ACQUISITION );\\\\nmessageHeader.setMessageType( MessageType.REQUEST );\\\\nmessageHeader.setSaleID(saleID);\\\\nmessageHeader.setServiceID(serviceID);\\\\nmessageHeader.setPOIID(POIID);\\\\nsaleToPOIRequest.setMessageHeader(messageHeader);\\\\n\\\\nCardAcquisitionRequest cardAcquisitionRequest = new CardAcquisitionRequest();\\\\nSaleData saleData = new SaleData();\\\\nTransactionIdentification saleTransactionID = new TransactionIdentification();\\\\nsaleTransactionID.setTimeStamp(DatatypeFactory.newInstance().newXMLGregorianCalendar(new GregorianCalendar()));\\\\nsaleTransactionID.setTransactionID(transactionID);\\\\nsaleData.setSaleTransactionID(saleTransactionID);\\\\ncardAcquisitionRequest.setSaleData(saleData);\\\\n\\\\nCardAcquisitionTransaction cardAcquisitionTransaction = new CardAcquisitionTransaction();\\\\ncardAcquisitionRequest.setCardAcquisitionTransaction(cardAcquisitionTransaction);\\\\nsaleToPOIRequest.setCardAcquisitionRequest(cardAcquisitionRequest);\\\\nterminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);\\&quot;}]&#039; :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;When you receive the  &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/terminal-api\\\/latest\\\/post\\\/cardacquisition#responses-200-Response\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;CardAcquisitionResponse&lt;\\\/a&gt;, get the following details.&lt;\\\/p&gt;\\n&lt;ul&gt;\\n&lt;li&gt;\\n&lt;p&gt;&lt;code&gt;POIData.POITransactionID.TimeStamp&lt;\\\/code&gt; and &lt;code&gt;POIData.POITransactionID.TransactionID&lt;\\\/code&gt;: You need these details later in your payment request.&lt;\\\/p&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;&lt;code&gt;CardData.CardCountryCode&lt;\\\/code&gt;: The &lt;strong&gt;issuer country code&lt;\\\/strong&gt;, for example &lt;strong&gt;528&lt;\\\/strong&gt;. Also included in the &lt;code&gt;AdditionalResponse&lt;\\\/code&gt;.&lt;\\\/p&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;From the &lt;code&gt;AdditionalResponse&lt;\\\/code&gt; (you receive either a string of key-value pairs or a Base64 string that you need to decode to get a JSON object):&lt;\\\/p&gt;\\n&lt;ul&gt;\\n&lt;li&gt;&lt;code&gt;cardIssuerCountryId&lt;\\\/code&gt;: The &lt;strong&gt;issuer country code&lt;\\\/strong&gt;, for example &lt;strong&gt;528&lt;\\\/strong&gt;. Also included in &lt;code&gt;CardData.CardCountryCode&lt;\\\/code&gt;.&lt;\\\/li&gt;\\n&lt;li&gt;&lt;code&gt;cardBin&lt;\\\/code&gt;: The &lt;strong&gt;BIN&lt;\\\/strong&gt; of the shopper&#039;s card, for example &lt;strong&gt;541333&lt;\\\/strong&gt;.&lt;\\\/li&gt;\\n&lt;li&gt;&lt;code&gt;paymentMethod&lt;\\\/code&gt;&lt;\\\/li&gt;\\n&lt;li&gt;&lt;code&gt;fundingSource&lt;\\\/code&gt;&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;Card acquisition response&#039;\\&quot; :id=\\&quot;&#039;&#039;\\&quot; :code-data=&#039;[{\\&quot;language\\&quot;:\\&quot;json\\&quot;,\\&quot;tabTitle\\&quot;:\\&quot;\\&quot;,\\&quot;content\\&quot;:\\&quot;{\\\\n    \\\\\\&quot;SaleToPOIResponse\\\\\\&quot;: {\\\\n        \\\\\\&quot;CardAcquisitionResponse\\\\\\&quot;: {\\\\n            \\\\\\&quot;POIData\\\\\\&quot;: {\\\\n                \\\\\\&quot;POITransactionID\\\\\\&quot;: {\\\\n                    \\\\\\&quot;{hint:For use in the CardAcquisitionReference of the payment request}TimeStamp{\\\\\\\/hint}\\\\\\&quot;: \\\\\\&quot;2024-06-10T14:59:08.000Z\\\\\\&quot;,\\\\n                    \\\\\\&quot;{hint:For use in the CardAcquisitionReference of the payment request}TransactionID{\\\\\\\/hint}\\\\\\&quot;: \\\\\\&quot;jM6S001558097948000\\\\\\&quot;\\\\n                }\\\\n            },\\\\n            \\\\\\&quot;SaleData\\\\\\&quot;: {\\\\n                \\\\\\&quot;SaleTransactionID\\\\\\&quot;: {\\\\n                    \\\\\\&quot;TimeStamp\\\\\\&quot;: \\\\\\&quot;2024-06-10T14:59:09.000Z\\\\\\&quot;,\\\\n                    \\\\\\&quot;TransactionID\\\\\\&quot;: \\\\\\&quot;933\\\\\\&quot;\\\\n                }\\\\n            },\\\\n            \\\\\\&quot;PaymentInstrumentData\\\\\\&quot;: {\\\\n                \\\\\\&quot;CardData\\\\\\&quot;: {\\\\n                    \\\\\\&quot;{hint:Issuer country code}CardCountryCode{\\\\\\\/hint}\\\\\\&quot;: \\\\\\&quot;528\\\\\\&quot;,\\\\n                    \\\\\\&quot;MaskedPan\\\\\\&quot;: \\\\\\&quot;541333*****9999\\\\\\&quot;,\\\\n                    \\\\\\&quot;PaymentBrand\\\\\\&quot;: \\\\\\&quot;mc\\\\\\&quot;,\\\\n                    \\\\\\&quot;SensitiveCardData\\\\\\&quot;: {\\\\n                        \\\\\\&quot;ExpiryDate\\\\\\&quot;: \\\\\\&quot;0228\\\\\\&quot;\\\\n                },\\\\n                \\\\\\&quot;PaymentInstrumentType\\\\\\&quot;: \\\\\\&quot;Card\\\\\\&quot;\\\\n            },\\\\n            \\\\\\&quot;Response\\\\\\&quot;: {\\\\n                \\\\\\&quot;{hint:Contains the BIN and the issuer country code}AdditionalResponse{\\\\\\\/hint}\\\\\\&quot;: \\\\\\&quot;...cardBin=541333...cardIssuerCountryId=528...\\\\\\&quot;,\\\\n                \\\\\\&quot;Result\\\\\\&quot;: \\\\\\&quot;Success\\\\\\&quot;\\\\n            }\\\\n        },\\\\n        \\\\\\&quot;MessageHeader\\\\\\&quot;: {...}\\\\n    }\\\\n}\\&quot;}]&#039; :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;Pass the &lt;code&gt;cardIssuerCountryID&lt;\\\/code&gt;, &lt;code&gt;expiryDate&lt;\\\/code&gt;, &lt;code&gt;paymentMethod&lt;\\\/code&gt;, &lt;code&gt;fundingSource&lt;\\\/code&gt;, and the &lt;code&gt;cardBin&lt;\\\/code&gt; to your POS app for the eligibility check.&lt;\\\/p&gt;\\n&lt;\\\/li&gt;\\n&lt;\\\/ol&gt;\\n&lt;p&gt;The POS app either handles the eligibility check locally or through the TFS provider, and informs your store staff of the result.&lt;\\\/p&gt;\\n&lt;h3 id=\\&quot;input-request\\&quot;&gt;2. Optional: Use a custom input request to ask for consent&lt;\\\/h3&gt;\\n&lt;p&gt;If the purchase qualifies for TFS, you must ask the shopper for their consent to sharing their encrypted card number with your TFS provider. You can do this by showing a screen either on the terminal or in the user interface of your POS app. When using the terminal, you can enable the automatic default consent screen, or send a custom input request.&lt;\\\/p&gt;\\n&lt;div class=\\&quot;notices green\\&quot;&gt;\\n&lt;p&gt;To ask for consent with a custom input request or through the POS app UI, the automatic consent flow must be &lt;a href=\\&quot;\\\/point-of-sale\\\/shopper-recognition\\\/tax-free-shopping?tab=tapi-setup_1#set-up-tfs\\&quot;&gt;disabled for your account&lt;\\\/a&gt;.&lt;\\\/p&gt;\\n&lt;\\\/div&gt;\\n&lt;p&gt;To ask consent with a custom input request on the terminal:&lt;\\\/p&gt;\\n&lt;ol&gt;\\n&lt;li&gt;\\n&lt;p&gt;&lt;a href=\\&quot;\\\/point-of-sale\\\/shopper-engagement\\\/shopper-input\\\/confirmation\\&quot;&gt;Make a Confirmation input request&lt;\\\/a&gt;, including:&lt;\\\/p&gt;\\n&lt;ul&gt;\\n&lt;li&gt;\\n&lt;p&gt;The  &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/terminal-api\\\/latest\\\/post\\\/input#request-DisplayOutput\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;InputRequest.DisplayOutput&lt;\\\/a&gt; object with:&lt;\\\/p&gt;\\n&lt;table&gt;\\n&lt;thead&gt;\\n&lt;tr&gt;\\n&lt;th style=\\&quot;text-align: left;\\&quot;&gt;Parameter&lt;\\\/th&gt;\\n&lt;th style=\\&quot;text-align: left;\\&quot;&gt;Description&lt;\\\/th&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/thead&gt;\\n&lt;tbody&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;OutputContent.OutputText&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;An array of four &lt;code&gt;Text&lt;\\\/code&gt; fields containing: &lt;ul&gt;&lt;li markdown=\\&quot;1\\&quot;&gt;A title. For example: &lt;code&gt;Tax-free shopping&lt;\\\/code&gt;&lt;\\\/li&gt; &lt;li markdown=\\&quot;1\\&quot;&gt;An explanation and a question. This text can be long and is scrollable.  For example: &lt;code&gt;You are eligible for tax-free shopping. Would you like the tax-free provider to refund you on your card?&lt;\\\/code&gt;&lt;\\\/li&gt; &lt;li markdown=\\&quot;1\\&quot;&gt;A \\&quot;No\\&quot; button on the left of the display.&lt;\\\/li&gt; &lt;li markdown=\\&quot;1\\&quot;&gt;A \\&quot;Yes\\&quot; button on the right of the display.&lt;\\\/li&gt;&lt;\\\/ul&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/tbody&gt;\\n&lt;\\\/table&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;The  &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/terminal-api\\\/latest\\\/post\\\/input#request-InputData\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;InputRequest.InputData&lt;\\\/a&gt; object with:&lt;\\\/p&gt;\\n&lt;table&gt;\\n&lt;thead&gt;\\n&lt;tr&gt;\\n&lt;th style=\\&quot;text-align: left;\\&quot;&gt;Parameter&lt;\\\/th&gt;\\n&lt;th style=\\&quot;text-align: left;\\&quot;&gt;Description&lt;\\\/th&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/thead&gt;\\n&lt;tbody&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;MaxInputTime&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;(Integer) Time-out in seconds. This is the time that the shopper gets to answer the question.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/tbody&gt;\\n&lt;\\\/table&gt;\\n&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;Input request asking for consent&#039;\\&quot; :id=\\&quot;&#039;&#039;\\&quot; :code-data=&#039;[{\\&quot;language\\&quot;:\\&quot;json\\&quot;,\\&quot;tabTitle\\&quot;:\\&quot;\\&quot;,\\&quot;content\\&quot;:\\&quot;{\\\\n    \\\\\\&quot;SaleToPOIRequest\\\\\\&quot;:{\\\\n        \\\\\\&quot;MessageHeader\\\\\\&quot;:{\\\\n            \\\\\\&quot;ProtocolVersion\\\\\\&quot;:\\\\\\&quot;3.0\\\\\\&quot;,\\\\n            \\\\\\&quot;MessageClass\\\\\\&quot;:\\\\\\&quot;Device\\\\\\&quot;,\\\\n            \\\\\\&quot;MessageCategory\\\\\\&quot;:\\\\\\&quot;Input\\\\\\&quot;,\\\\n            \\\\\\&quot;MessageType\\\\\\&quot;:\\\\\\&quot;Request\\\\\\&quot;,\\\\n            \\\\\\&quot;ServiceID\\\\\\&quot;:\\\\\\&quot;0207111104\\\\\\&quot;,\\\\n            \\\\\\&quot;SaleID\\\\\\&quot;:\\\\\\&quot;POSSystemID12345\\\\\\&quot;,\\\\n            \\\\\\&quot;POIID\\\\\\&quot;:\\\\\\&quot;V400m-324688179\\\\\\&quot;\\\\n        },\\\\n        \\\\\\&quot;InputRequest\\\\\\&quot;:{\\\\n            \\\\\\&quot;DisplayOutput\\\\\\&quot;:{\\\\n                \\\\\\&quot;Device\\\\\\&quot;:\\\\\\&quot;CustomerDisplay\\\\\\&quot;,\\\\n                \\\\\\&quot;InfoQualify\\\\\\&quot;:\\\\\\&quot;Display\\\\\\&quot;,\\\\n                \\\\\\&quot;OutputContent\\\\\\&quot;:{\\\\n                    \\\\\\&quot;OutputFormat\\\\\\&quot;:\\\\\\&quot;Text\\\\\\&quot;,\\\\n                    \\\\\\&quot;PredefinedContent\\\\\\&quot;:{\\\\n                        \\\\\\&quot;ReferenceID\\\\\\&quot;:\\\\\\&quot;GetConfirmation\\\\\\&quot;\\\\n                    },\\\\n                    \\\\\\&quot;OutputText\\\\\\&quot;:[\\\\n                        {\\\\n                            \\\\\\&quot;Text\\\\\\&quot;:\\\\\\&quot;Tax-free shopping\\\\\\&quot;\\\\n                        },\\\\n                        {\\\\n                            \\\\\\&quot;Text\\\\\\&quot;:\\\\\\&quot;You are eligible for tax-free shopping. Would you like the tax-free provider to refund you on your card?\\\\\\&quot;\\\\n                        },\\\\n                        {\\\\n                            \\\\\\&quot;Text\\\\\\&quot;:\\\\\\&quot;No\\\\\\&quot;\\\\n                        },\\\\n                        {\\\\n                            \\\\\\&quot;Text\\\\\\&quot;:\\\\\\&quot;Yes\\\\\\&quot;\\\\n                        }\\\\n                    ]\\\\n                }\\\\n            },\\\\n            \\\\\\&quot;InputData\\\\\\&quot;:{\\\\n                \\\\\\&quot;Device\\\\\\&quot;:\\\\\\&quot;CustomerInput\\\\\\&quot;,\\\\n                \\\\\\&quot;InfoQualify\\\\\\&quot;:\\\\\\&quot;Input\\\\\\&quot;,\\\\n                \\\\\\&quot;InputCommand\\\\\\&quot;:\\\\\\&quot;GetConfirmation\\\\\\&quot;,\\\\n                \\\\\\&quot;MaxInputTime\\\\\\&quot;:60\\\\n            }\\\\n        }\\\\n    }\\\\n}\\&quot;}]&#039; :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;When you receive the input response, check the  &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/terminal-api\\\/latest\\\/post\\\/input#responses-200-InputResult\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;InputResult&lt;\\\/a&gt; for the shopper&#039;s answer:&lt;\\\/p&gt;\\n&lt;ul&gt;\\n&lt;li&gt;&lt;code&gt;Input.ConfirmedFlag&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;true&lt;\\\/strong&gt;&lt;\\\/span&gt; indicates the shopper gives their consent.&lt;\\\/li&gt;\\n&lt;li&gt;&lt;code&gt;Input.ConfirmedFlag&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;false&lt;\\\/strong&gt;&lt;\\\/span&gt; indicates the shopper doesn&#039;t give their consent.&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;Response when the shopper gives their consent&#039;\\&quot; :id=\\&quot;&#039;&#039;\\&quot; :code-data=&#039;[{\\&quot;language\\&quot;:\\&quot;json\\&quot;,\\&quot;tabTitle\\&quot;:\\&quot;\\&quot;,\\&quot;content\\&quot;:\\&quot;{\\\\n  \\\\\\&quot;SaleToPOIResponse\\\\\\&quot;: {\\\\n    \\\\\\&quot;InputResponse\\\\\\&quot;: {\\\\n      \\\\\\&quot;InputResult\\\\\\&quot;: {\\\\n        \\\\\\&quot;Device\\\\\\&quot;: \\\\\\&quot;CustomerInput\\\\\\&quot;,\\\\n        \\\\\\&quot;InfoQualify\\\\\\&quot;: \\\\\\&quot;Input\\\\\\&quot;,\\\\n        \\\\\\&quot;Response\\\\\\&quot;: {\\\\n          \\\\\\&quot;Result\\\\\\&quot;: \\\\\\&quot;Success\\\\\\&quot;\\\\n        },\\\\n        \\\\\\&quot;Input\\\\\\&quot;: {\\\\n          \\\\\\&quot;ConfirmedFlag\\\\\\&quot;: true,\\\\n          \\\\\\&quot;InputCommand\\\\\\&quot;: \\\\\\&quot;GetConfirmation\\\\\\&quot;\\\\n        }\\\\n      },\\\\n      \\\\\\&quot;OutputResult\\\\\\&quot;: {\\\\n        \\\\\\&quot;Device\\\\\\&quot;: \\\\\\&quot;CustomerDisplay\\\\\\&quot;,\\\\n        \\\\\\&quot;InfoQualify\\\\\\&quot;: \\\\\\&quot;Display\\\\\\&quot;,\\\\n        \\\\\\&quot;Response\\\\\\&quot;: {\\\\n          \\\\\\&quot;Result\\\\\\&quot;: \\\\\\&quot;Success\\\\\\&quot;\\\\n        }\\\\n      }\\\\n    },\\\\n    \\\\\\&quot;MessageHeader\\\\\\&quot;: {...}\\\\n  }\\\\n}\\&quot;}]&#039; :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;Pass the shopper&#039;s answer to the POS app.&lt;\\\/p&gt;\\n&lt;\\\/li&gt;\\n&lt;\\\/ol&gt;\\n&lt;h3 id=\\&quot;step-3-payment\\&quot;&gt;3. Make a payment&lt;\\\/h3&gt;\\n&lt;p&gt;Use a &lt;code&gt;taxfree.indicator&lt;\\\/code&gt; flag in the payment request to indicate if the shopper&#039;s encrypted card details can be shared with the TFS provider. Also include a reference to the card acquisition if you have acquired the card details in &lt;a href=\\&quot;?tab=tapi-setup_1#step-1-card-acquisition\\&quot;&gt;Step 1&lt;\\\/a&gt;.&lt;\\\/p&gt;\\n&lt;ol&gt;\\n&lt;li&gt;\\n&lt;p&gt;&lt;a href=\\&quot;\\\/point-of-sale\\\/basic-tapi-integration\\\/make-a-payment\\&quot;&gt;Make a payment request&lt;\\\/a&gt;, including:&lt;\\\/p&gt;\\n&lt;ul&gt;\\n&lt;li&gt;The  &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/terminal-api\\\/latest\\\/post\\\/payment#request-PaymentData\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;PaymentData&lt;\\\/a&gt; object with:&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;table&gt;\\n&lt;thead&gt;\\n&lt;tr&gt;\\n&lt;th style=\\&quot;text-align: left;\\&quot;&gt;Parameter&lt;\\\/th&gt;\\n&lt;th style=\\&quot;text-align: left;\\&quot;&gt;Description&lt;\\\/th&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/thead&gt;\\n&lt;tbody&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;CardAcquisitionReference&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;Data from the card acquisition: &lt;ul&gt;&lt;li markdown=\\&quot;1\\&quot;&gt;&lt;code&gt;TimeStamp&lt;\\\/code&gt;: the time stamp returned in the &lt;code&gt;POIData.POITransactionID&lt;\\\/code&gt; of the card acquisition response.&lt;\\\/li&gt; &lt;li markdown=\\&quot;1\\&quot;&gt;&lt;code&gt;TransactionID&lt;\\\/code&gt;: the transaction ID returned in the &lt;code&gt;POIData.POITransactionID&lt;\\\/code&gt; of the card acquisition response.&lt;\\\/li&gt;&lt;\\\/ul&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/tbody&gt;\\n&lt;\\\/table&gt;\\n&lt;ul&gt;\\n&lt;li&gt;The  &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/terminal-api\\\/latest\\\/post\\\/payment#request-SaleData\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;SaleData&lt;\\\/a&gt; object with:&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;table&gt;\\n&lt;thead&gt;\\n&lt;tr&gt;\\n&lt;th style=\\&quot;text-align: left;\\&quot;&gt;Parameter&lt;\\\/th&gt;\\n&lt;th style=\\&quot;text-align: left;\\&quot;&gt;Description&lt;\\\/th&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/thead&gt;\\n&lt;tbody&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;SaleToAcquirerData&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;The &lt;code&gt;taxfree.indicator&lt;\\\/code&gt; flag set to &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;true&lt;\\\/strong&gt;&lt;\\\/span&gt;. &lt;div class=\\&quot;sc-notice info\\&quot;&gt;&lt;div&gt;If the purchase does not qualify for TFS or the shopper did not give their consent, you omit &lt;code&gt;taxfree.indicator&lt;\\\/code&gt; or set it to &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;false&lt;\\\/strong&gt;&lt;\\\/span&gt;. &lt;\\\/div&gt;&lt;\\\/div&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/tbody&gt;\\n&lt;\\\/table&gt;\\n&lt;p&gt;Pass the &lt;code&gt;SaleToAcquirerData&lt;\\\/code&gt; in one of the following formats:&lt;\\\/p&gt;\\n&lt;ul&gt;\\n&lt;li&gt;\\n&lt;p&gt;Option 1: A JSON object converted to a Base64-encoded string.&lt;\\\/p&gt;\\n&lt;pre&gt;&lt;code class=\\&quot;language-json\\&quot;&gt;{\\n    \\&quot;additionalData\\&quot;: {\\n        \\&quot;taxfree.indicator\\&quot;: \\&quot;true\\&quot;\\n    }\\n}&lt;\\\/code&gt;&lt;\\\/pre&gt;\\n&lt;p&gt;After encoding, pass this in your request:&lt;\\\/p&gt;\\n&lt;pre&gt;&lt;code class=\\&quot;language-raw\\&quot;&gt;\\&quot;SaleToAcquirerData\\&quot;: \\&quot;ewogICAgImFkZGl0aW9uYWxEYXRhIjogewogICAgICAgICJ0YXhmcmVlLmluZGljYXRvciI6IHRydWUKICAgIH0KfQ==\\&quot;&lt;\\\/code&gt;&lt;\\\/pre&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;Option 2: A form-encoded key-value pair:&lt;\\\/p&gt;\\n&lt;pre&gt;&lt;code class=\\&quot;language-raw\\&quot;&gt;\\&quot;SaleToAcquirerData\\&quot;: \\&quot;taxfree.indicator=true\\&quot;&lt;\\\/code&gt;&lt;\\\/pre&gt;\\n&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;p&gt;The example below shows how to make a payment request with &lt;code&gt;taxfree.indicator&lt;\\\/code&gt; set to &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;true&lt;\\\/strong&gt;&lt;\\\/span&gt;.&lt;\\\/p&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;&#039;\\&quot; :id=\\&quot;&#039;tax-free-shopping_2&#039;\\&quot; :code-data=&#039;[{\\&quot;language\\&quot;:\\&quot;json\\&quot;,\\&quot;tabTitle\\&quot;:\\&quot;JSON\\&quot;,\\&quot;content\\&quot;:\\&quot;{\\\\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;Payment\\\\\\&quot;,\\\\n            \\\\\\&quot;MessageType\\\\\\&quot;:\\\\\\&quot;Request\\\\\\&quot;,\\\\n            \\\\\\&quot;SaleID\\\\\\&quot;:\\\\\\&quot;POSSystemID12345\\\\\\&quot;,\\\\n            \\\\\\&quot;ServiceID\\\\\\&quot;:\\\\\\&quot;0207111104\\\\\\&quot;,\\\\n            \\\\\\&quot;POIID\\\\\\&quot;:\\\\\\&quot;MX925-284691408\\\\\\&quot;\\\\n        },\\\\n        \\\\\\&quot;PaymentRequest\\\\\\&quot;:{\\\\n            \\\\\\&quot;SaleData\\\\\\&quot;:{\\\\n                \\\\\\&quot;SaleToAcquirerData\\\\\\&quot;:\\\\\\&quot;taxfree.indicator=true\\\\\\&quot;,\\\\n                \\\\\\&quot;SaleTransactionID\\\\\\&quot;:{\\\\n                    \\\\\\&quot;TransactionID\\\\\\&quot;:\\\\\\&quot;27908\\\\\\&quot;,\\\\n                    \\\\\\&quot;TimeStamp\\\\\\&quot;:\\\\\\&quot;2024-06-10T10:11:04+00:00\\\\\\&quot;\\\\n                }\\\\n            },\\\\n            \\\\\\&quot;PaymentTransaction\\\\\\&quot;:{\\\\n                \\\\\\&quot;AmountsReq\\\\\\&quot;:{\\\\n                    \\\\\\&quot;Currency\\\\\\&quot;:\\\\\\&quot;EUR\\\\\\&quot;,\\\\n                    \\\\\\&quot;RequestedAmount\\\\\\&quot;:176.99\\\\n                }\\\\n            },\\\\n            \\\\\\&quot;PaymentData\\\\\\&quot;:{\\\\n                \\\\\\&quot;CardAcquisitionReference\\\\\\&quot;:{\\\\n                    \\\\\\&quot;{hint:The POITransactionID.TransactionID of the card acquisition}TransactionID{\\\\\\\/hint}\\\\\\&quot;: \\\\\\&quot;jM6S001558097948000\\\\\\&quot;,\\\\n                    \\\\\\&quot;{hint:The POITransactionID.TimeStamp of the card acquisition}TimeStamp{\\\\\\\/hint}\\\\\\&quot;: \\\\\\&quot;2024-06-10T12:59:08.000Z\\\\\\&quot;\\\\n                }\\\\n            }\\\\n        }\\\\n    }\\\\n}\\&quot;},{\\&quot;language\\&quot;:\\&quot;java\\&quot;,\\&quot;tabTitle\\&quot;:\\&quot;Java\\&quot;,\\&quot;content\\&quot;:\\&quot;String saleID = \\\\\\&quot;YOUR_CASH_REGISTER_ID\\\\\\&quot;;\\\\nString serviceID = \\\\\\&quot;YOUR_UNIQUE_ATTEMPT_ID\\\\\\&quot;;\\\\nString POIID = \\\\\\&quot;YOUR_TERMINAL_ID\\\\\\&quot;;\\\\nString transactionID = \\\\\\&quot;YOUR_UNIQUE_TRANSACTION_ID\\\\\\&quot;;\\\\n\\\\nSaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();\\\\nMessageHeader messageHeader = new MessageHeader();\\\\nmessageHeader.setProtocolVersion(\\\\\\&quot;3.0\\\\\\&quot;);\\\\nmessageHeader.setMessageClass( MessageClassType.SERVICE );\\\\nmessageHeader.setMessageCategory( MessageCategoryType.PAYMENT );\\\\nmessageHeader.setMessageType( MessageType.REQUEST );\\\\nmessageHeader.setSaleID(saleID);\\\\nmessageHeader.setServiceID(serviceID);\\\\nmessageHeader.setPOIID(POIID);\\\\nsaleToPOIRequest.setMessageHeader(messageHeader);\\\\n\\\\nPaymentRequest paymentRequest = new PaymentRequest();\\\\nSaleData saleData = new SaleData();\\\\nsaleData.setSaleToAcquirerData(\\\\\\&quot;taxfree.indicator=True\\\\\\&quot;);\\\\nTransactionIdentification saleTransactionID = new TransactionIdentification();\\\\nsaleTransactionID.setTransactionID(transactionID);\\\\nsaleTransactionID.setTimeStamp(DatatypeFactory.newInstance().newXMLGregorianCalendar(new GregorianCalendar()));\\\\nsaleData.setSaleTransactionID(saleTransactionID);\\\\npaymentRequest.setSaleData(saleData);\\\\n\\\\nPaymentTransaction paymentTransaction = new PaymentTransaction();\\\\nAmountsReq amountsReq = new AmountsReq();\\\\namountsReq.setCurrency(\\\\\\&quot;EUR\\\\\\&quot;);\\\\namountsReq.setRequestedAmount( BigDecimal.valueOf(176.99) );\\\\npaymentTransaction.setAmountsReq(amountsReq);\\\\npaymentRequest.setPaymentTransaction(paymentTransaction);\\\\n\\\\nPaymentData paymentData = new PaymentData();\\\\nTransactionIdentification cardAcquisitionReference = new TransactionIdentification();\\\\ncardAcquisitionReference.setTransactionID(transactionID);\\\\ncardAcquisitionReference.setTimeStamp(DatatypeFactory.newInstance().newXMLGregorianCalendar(new GregorianCalendar()));\\\\npaymentData.setCardAcquisitionReference(cardAcquisitionReference);\\\\npaymentRequest.setPaymentData(paymentData);\\\\nsaleToPOIRequest.setPaymentRequest(paymentRequest);\\\\nterminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);\\&quot;}]&#039; :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;p&gt;When the automatic consent flow is enabled, the terminal asks the shopper for their consent for secure card capture.&lt;\\\/p&gt;\\n&lt;p&gt;&lt;img alt=\\&quot;Terminal confirmation screen\\&quot; src=\\&quot;\\\/images\\\/8\\\/d\\\/d\\\/6\\\/6\\\/8dd66a9eb9b7b06acd643091da8a0733526651b3-screen-enconsentscreen.png\\&quot; \\\/&gt;&lt;\\\/p&gt;\\n&lt;p&gt;The shopper provides their answer and completes the transaction.&lt;\\\/p&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;When the automatic consent flow is enabled, in the payment response note the following in the &lt;code&gt;AdditionalResponse&lt;\\\/code&gt;:&lt;\\\/p&gt;\\n&lt;ul&gt;\\n&lt;li&gt;If the shopper gave consent, the &lt;code&gt;taxfree.indicator&lt;\\\/code&gt; flag remains set to &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;true&lt;\\\/strong&gt;&lt;\\\/span&gt;.&lt;\\\/li&gt;\\n&lt;li&gt;If the shopper did not give consent, the &lt;code&gt;taxfree.indicator&lt;\\\/code&gt; flag is set to &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;false&lt;\\\/strong&gt;&lt;\\\/span&gt;. &lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;Payment response&#039;\\&quot; :id=\\&quot;&#039;&#039;\\&quot; :code-data=&#039;[{\\&quot;language\\&quot;:\\&quot;json\\&quot;,\\&quot;tabTitle\\&quot;:\\&quot;\\&quot;,\\&quot;content\\&quot;:\\&quot;{\\\\n    \\\\\\&quot;SaleToPOIResponse\\\\\\&quot;: {\\\\n        \\\\\\&quot;MessageHeader\\\\\\&quot;: {...},\\\\n        \\\\\\&quot;PaymentResponse\\\\\\&quot;: {\\\\n            \\\\\\&quot;POIData\\\\\\&quot;: {\\\\n                \\\\\\&quot;POIReconciliationID\\\\\\&quot;: \\\\\\&quot;1000\\\\\\&quot;,\\\\n                \\\\\\&quot;POITransactionID\\\\\\&quot;: {\\\\n                    \\\\\\&quot;TimeStamp\\\\\\&quot;: \\\\\\&quot;2024-06-10T08:13:47.000Z\\\\\\&quot;,\\\\n                    \\\\\\&quot;TransactionID\\\\\\&quot;: \\\\\\&quot;jM6S001558097948000.GH4R4RBFJGXXGN82\\\\\\&quot;\\\\n                }\\\\n            },\\\\n            \\\\\\&quot;PaymentReceipt\\\\\\&quot;: [...],\\\\n            \\\\\\&quot;PaymentResult\\\\\\&quot;: {...},\\\\n            \\\\\\&quot;Response\\\\\\&quot;: {\\\\n                \\\\\\&quot;AdditionalResponse\\\\\\&quot;: \\\\\\&quot;...taxfree.indicator=true...\\\\\\&quot;,\\\\n                \\\\\\&quot;Result\\\\\\&quot;: \\\\\\&quot;Success\\\\\\&quot;\\\\n            },\\\\n            \\\\\\&quot;SaleData\\\\\\&quot;: {...}\\\\n        }\\\\n    }\\\\n}\\&quot;}]&#039; :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;\\\/ol&gt;\\n&lt;p&gt;After the transaction, your staff provides the shopper with the tax-free form issued by the POS app, and a receipt.&lt;\\\/p&gt;\\n&quot;,&quot;altTitle&quot;:&quot;tapi&quot;,&quot;oldTabId&quot;:1,&quot;relation&quot;:&quot;tapi&quot;},{&quot;title&quot;:&quot;Mobile solution&quot;,&quot;content&quot;:&quot;\\n&lt;h3 id=\\&quot;mobile-tfs-payment\\&quot;&gt;Make a TFS payment&lt;\\\/h3&gt;\\n&lt;p&gt;Use a &lt;code&gt;taxfree.indicator&lt;\\\/code&gt; flag in the payment request to indicate if the shopper&#039;s encrypted card details can be shared with the TFS provider:&lt;\\\/p&gt;\\n&lt;ol&gt;\\n&lt;li&gt;\\n&lt;p&gt;Make sure the purchase qualifies for TFS and the shopper has given their consent to sharing their encrypted card details .&lt;\\\/p&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;&lt;a href=\\&quot;\\\/point-of-sale\\\/basic-tapi-integration\\\/make-a-payment\\&quot;&gt;Make a payment request&lt;\\\/a&gt;, including:&lt;\\\/p&gt;\\n&lt;ul&gt;\\n&lt;li&gt;The  &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/terminal-api\\\/latest\\\/post\\\/payment#request-SaleData\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;SaleData&lt;\\\/a&gt; object with:&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;table&gt;\\n&lt;thead&gt;\\n&lt;tr&gt;\\n&lt;th style=\\&quot;text-align: left;\\&quot;&gt;Parameter&lt;\\\/th&gt;\\n&lt;th style=\\&quot;text-align: left;\\&quot;&gt;Description&lt;\\\/th&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/thead&gt;\\n&lt;tbody&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;SaleToAcquirerData&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;The &lt;code&gt;taxfree.indicator&lt;\\\/code&gt; flag set to &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;true&lt;\\\/strong&gt;&lt;\\\/span&gt;. &lt;div class=\\&quot;sc-notice info\\&quot;&gt;&lt;div&gt;If the purchase does not qualify for TFS or the shopper did not give their consent, you omit &lt;code&gt;taxfree.indicator&lt;\\\/code&gt; or set it to &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;false&lt;\\\/strong&gt;&lt;\\\/span&gt;. &lt;\\\/div&gt;&lt;\\\/div&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/tbody&gt;\\n&lt;\\\/table&gt;\\n&lt;p&gt;Pass the &lt;code&gt;SaleToAcquirerData&lt;\\\/code&gt; in one of the following formats:&lt;\\\/p&gt;\\n&lt;ul&gt;\\n&lt;li&gt;\\n&lt;p&gt;Option 1: A JSON object converted to a Base64-encoded string.&lt;\\\/p&gt;\\n&lt;pre&gt;&lt;code class=\\&quot;language-json\\&quot;&gt;{\\n    \\&quot;additionalData\\&quot;: {\\n        \\&quot;taxfree.indicator\\&quot;: \\&quot;true\\&quot;\\n    }\\n}&lt;\\\/code&gt;&lt;\\\/pre&gt;\\n&lt;p&gt;After encoding, pass this in your request:&lt;\\\/p&gt;\\n&lt;pre&gt;&lt;code class=\\&quot;language-raw\\&quot;&gt;\\&quot;SaleToAcquirerData\\&quot;: \\&quot;ewogICAgImFkZGl0aW9uYWxEYXRhIjogewogICAgICAgICJ0YXhmcmVlLmluZGljYXRvciI6IHRydWUKICAgIH0KfQ==\\&quot;&lt;\\\/code&gt;&lt;\\\/pre&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;Option 2: A form-encoded key-value pair:&lt;\\\/p&gt;\\n&lt;pre&gt;&lt;code class=\\&quot;language-raw\\&quot;&gt;\\&quot;SaleToAcquirerData\\&quot;: \\&quot;taxfree.indicator=true\\&quot;&lt;\\\/code&gt;&lt;\\\/pre&gt;\\n&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;p&gt;The example below shows how to make a payment request with &lt;code&gt;taxfree.indicator&lt;\\\/code&gt; set to &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;true&lt;\\\/strong&gt;&lt;\\\/span&gt;.&lt;\\\/p&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;&#039;\\&quot; :id=\\&quot;&#039;tax-free-shopping_4&#039;\\&quot; :code-data=&#039;[{\\&quot;language\\&quot;:\\&quot;json\\&quot;,\\&quot;tabTitle\\&quot;:\\&quot;\\&quot;,\\&quot;content\\&quot;:\\&quot;{\\\\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;Payment\\\\\\&quot;,\\\\n            \\\\\\&quot;MessageType\\\\\\&quot;:\\\\\\&quot;Request\\\\\\&quot;,\\\\n            \\\\\\&quot;SaleID\\\\\\&quot;:\\\\\\&quot;POSSystemID12345\\\\\\&quot;,\\\\n            \\\\\\&quot;ServiceID\\\\\\&quot;:\\\\\\&quot;0207111104\\\\\\&quot;,\\\\n            \\\\\\&quot;POIID\\\\\\&quot;:\\\\\\&quot;MX925-284691408\\\\\\&quot;\\\\n        },\\\\n        \\\\\\&quot;PaymentRequest\\\\\\&quot;:{\\\\n            \\\\\\&quot;SaleData\\\\\\&quot;:{\\\\n                \\\\\\&quot;SaleToAcquirerData\\\\\\&quot;:\\\\\\&quot;taxfree.indicator=true\\\\\\&quot;,\\\\n                \\\\\\&quot;SaleTransactionID\\\\\\&quot;:{\\\\n                    \\\\\\&quot;TransactionID\\\\\\&quot;:\\\\\\&quot;27908\\\\\\&quot;,\\\\n                    \\\\\\&quot;TimeStamp\\\\\\&quot;:\\\\\\&quot;2019-03-07T10:11:04+00:00\\\\\\&quot;\\\\n                }\\\\n            }, \\\\n            \\\\\\&quot;PaymentTransaction\\\\\\&quot;:{\\\\n                \\\\\\&quot;AmountsReq\\\\\\&quot;:{\\\\n                    \\\\\\&quot;Currency\\\\\\&quot;:\\\\\\&quot;EUR\\\\\\&quot;,\\\\n                    \\\\\\&quot;RequestedAmount\\\\\\&quot;:176.99\\\\n                }\\\\n            }\\\\n        }\\\\n    }\\\\n}\\&quot;}]&#039; :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;When you receive the payment response, note the following in the &lt;code&gt;AdditionalResponse&lt;\\\/code&gt;:&lt;\\\/p&gt;\\n&lt;ul&gt;\\n&lt;li&gt;If the &lt;code&gt;taxfree.indicator&lt;\\\/code&gt; flag is set to &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;true&lt;\\\/strong&gt;&lt;\\\/span&gt;, the card details are shared with the TFS provider.&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;Payment response&#039;\\&quot; :id=\\&quot;&#039;&#039;\\&quot; :code-data=&#039;[{\\&quot;language\\&quot;:\\&quot;json\\&quot;,\\&quot;tabTitle\\&quot;:\\&quot;\\&quot;,\\&quot;content\\&quot;:\\&quot;{\\\\n    \\\\\\&quot;SaleToPOIResponse\\\\\\&quot;: {\\\\n        \\\\\\&quot;MessageHeader\\\\\\&quot;: {...},\\\\n        \\\\\\&quot;PaymentResponse\\\\\\&quot;: {\\\\n            \\\\\\&quot;POIData\\\\\\&quot;: {\\\\n                \\\\\\&quot;POIReconciliationID\\\\\\&quot;: \\\\\\&quot;1000\\\\\\&quot;,\\\\n                \\\\\\&quot;POITransactionID\\\\\\&quot;: {\\\\n                    \\\\\\&quot;TimeStamp\\\\\\&quot;: \\\\\\&quot;2022-03-14T08:13:47.000Z\\\\\\&quot;,\\\\n                    \\\\\\&quot;TransactionID\\\\\\&quot;: \\\\\\&quot;jM6S001558097948000.GH4R4RBFJGXXGN82\\\\\\&quot;\\\\n                }\\\\n            },\\\\n            \\\\\\&quot;PaymentReceipt\\\\\\&quot;: [...],\\\\n            \\\\\\&quot;PaymentResult\\\\\\&quot;: {...},\\\\n            \\\\\\&quot;Response\\\\\\&quot;: {\\\\n                \\\\\\&quot;AdditionalResponse\\\\\\&quot;: \\\\\\&quot;...taxfree.indicator=true...\\\\\\&quot;,\\\\n                \\\\\\&quot;Result\\\\\\&quot;: \\\\\\&quot;Success\\\\\\&quot;\\\\n            },\\\\n            \\\\\\&quot;SaleData\\\\\\&quot;: {...}\\\\n        }\\\\n    }\\\\n}\\&quot;}]&#039; :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;\\\/ol&gt;\\n&lt;p&gt;After the transaction, your staff provides the shopper with the tax-free form issued by the POS app, and a receipt.&lt;\\\/p&gt;\\n&quot;,&quot;altTitle&quot;:&quot;mobile&quot;,&quot;oldTabId&quot;:1,&quot;relation&quot;:&quot;mobile&quot;}]\"\n            :should-update-when-url-changes='true'>\n        <\/tabs>\n    <\/div>\n<\/div>\n\n<h2 id=\"testing-tax-refund\">Test the tax-free flow<\/h2>\n<p>In most cases, your TFS provider organizes an end-to-end test between themselves, Adyen, you, and your POS system provider.<\/p>\n<p>In general, to test the happy flow, you need to use a card with a BIN that is eligible for tax refunds. Otherwise, the TFS provider returns a message that a tax refund is not possible.<\/p>\n<ol>\n<li>Make sure that you configured <span translate=\"no\"><strong>Send card number to &lt;TFS provider><\/strong><\/span> notifications for your test account.<\/li>\n<li>Discuss with your TFS provider which <a href=\"\/get-started-with-adyen\/adyen-glossary\/#card-number-pan\">card numbers (PAN)<\/a> on your test card you are allowed to use for tax refund testing. (The PAN includes the BIN.)<\/li>\n<li>Optional in a Terminal API integration using payment terminals: during the <a href=\"#step-1-card-acquisition\">card acquisition step<\/a>, use one of the allowed test card PANs and the associated currency.<br \/>\nThe POS app should now show that the card is eligible for a tax refund. This depends on how the eligibility check is set up with your TFS provider and POS system.<\/li>\n<li>Send a <a href=\"#step-3-payment\">payment request<\/a> with <strong>taxfree.indicator<\/strong> set to <span translate=\"no\"><strong>true<\/strong><\/span>, and complete the payment on the terminal. Find the <a href=\"\/point-of-sale\/design-your-integration\/terminal-api\/#transaction-identifier\">PSP reference of the Transaction<\/a> in the transactionID.<\/li>\n<li>Issue a tax-free form from your POS app based on the specifications provided by the TFS provider.<\/li>\n<li>In your <a href=\"https:\/\/ca-test.adyen.com\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Customer Area<\/a>, look up the transaction by PSP reference and check that the <strong>POS<\/strong> tile contains an ID in the <strong>Tax Free Identifier<\/strong> field. If this field is empty, contact your TFS provider to discover what went wrong.<\/li>\n<\/ol>\n<h2 id=\"see-also\">See also<\/h2>\n<div class=\"see-also-links output-inline\" id=\"see-also\">\n<ul><li><a href=\"\/point-of-sale\/card-acquisition\"\n                        target=\"_self\"\n                        >\n                    Card acquisition\n                <\/a><\/li><li><a href=\"\/point-of-sale\/shopper-engagement\/shopper-input\/confirmation\"\n                        target=\"_self\"\n                        >\n                    Confirmation input request\n                <\/a><\/li><li><a href=\"\/point-of-sale\/currency-conversion\"\n                        target=\"_self\"\n                        >\n                    Currency conversion (DCC)\n                <\/a><\/li><li><a href=\"\/point-of-sale\/design-your-integration\/notifications\/standard-notifications\"\n                        target=\"_self\"\n                        >\n                    Platform-generated webhooks \n                <\/a><\/li><\/ul><\/div>\n","url":"https:\/\/docs.adyen.com\/point-of-sale\/shopper-recognition\/tax-free-shopping","articleFields":{"description":"Learn about tax-free shopping and how to support it.","feedback_component":true,"id":"36197708","type":"page","_expandable":{"operations":""},"status":"current","last_edit_on":"19-12-2024 14:42","filters_component":false,"decision_tree":"[]","page_id":"9b4ea329-d9ce-426d-8438-36b246e90a9e"},"algolia":{"url":"https:\/\/docs.adyen.com\/point-of-sale\/shopper-recognition\/tax-free-shopping","title":"Tax-free shopping with secure card capture","content":"Tax-free Shopping (TFS) allows international travelers to claim back the sales tax or Value-Added Tax (VAT) on their purchases from a Tax-Free Shopping provider (TFS provider) such as Global Blue. A TFS provider is an organization that refunds the shopper and takes care of the paperwork with the authorities.\nWe can share the shopper's encrypted card number with the TFS provider so that it is easier for the provider to refund the shopper on their card. This is referred to as secure card capture.\nSupporting TFS drives sales from international shoppers because of its convenience, and can be a great source of data about international shoppers. To offer TFS with secure card capture to your shoppers, your TFS provider needs to integrate with your POS app.\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 Mobile solution.\n\n\nWebhooks\nSet up Send card number to\u00a0&lt;TFS provider&gt; webhooks.\n\n\nLimitations\nThe following limitations apply: Only available if you are located in a country\/region where a Terminal API integration is supported or a country\/region where Mobile solutions are supported, and only if the country\/region allows VAT refunds. Only available with Global Blue as TFS provider. Check their overview of supported countries.\n\n\nSetup steps\nBefore you begin, set up tax-free shopping.\n\n\n\nHow it works\nThe role of Adyen in the tax-free flow is limited. Securely card capture enables us to send a notification with the shopper's encrypted card details to the TFS provider. \nFor an overview of the flow, select the tab for your integration or solution.\n\n\n    \n        \n        \n    \n\n\nWith the tax-free form and the receipt, the shopper can claim the VAT refund from the TFS provider. As part of this process, the shopper has to take the tax-free form to the customs desk at the airport or border, to get export validation. Customs will place a customs stamp on the form, or use an electronic system for validation. The shopper then needs to send or hand in the (electronically) validated form to the TFS provider.\nSet up tax-free shopping\nBefore you begin offering tax-free shopping to your shoppers, you need to set up the feature.\nSelect the tab for your integration or solution.\n\n\n    \n        \n        \n    \n\n\nSet up notifications to your TFS provider\nConfigure a Send card number to&nbsp;&lt;TFS provider> webhook. If the shopper agrees to share their card details, we send the following data fields to your TFS provider:\n\nThe PSP reference of the transaction.\nThe shopper's encrypted card number.\nThe BIN of the shopper's card.\n\nIf your TFS provider is Global Blue, use https:\/\/www.adyen.com as the URL for Server configuration for the \"Send card number to Global Blue\" webhook.\n\nWe recommend adding a meaningful message to the Description that identifies it as part of the tax-free shopping flow.\n\nWhether we send this notification is determined by the taxfree.indicator flag in the payment request. If the notification is sent, you see this on the transaction in your Customer Area. The POS tile of the transaction includes:\n\nTax Free Indicator: true\nTax Free Identifier: the ID that the TFS provider returned to acknowledge the card details.\n\nThis notification is needed for testing and when you go live. Note that the shopper can claim the tax refund regardless of whether we notified the TFS provider of the shopper's encrypted card number.\n\n\nHandle the tax-free flow\nSelect the tab for your integration or solution.\n\n\n    \n        \n        \n    \n\n\nTest the tax-free flow\nIn most cases, your TFS provider organizes an end-to-end test between themselves, Adyen, you, and your POS system provider.\nIn general, to test the happy flow, you need to use a card with a BIN that is eligible for tax refunds. Otherwise, the TFS provider returns a message that a tax refund is not possible.\n\nMake sure that you configured Send card number to &lt;TFS provider> notifications for your test account.\nDiscuss with your TFS provider which card numbers (PAN) on your test card you are allowed to use for tax refund testing. (The PAN includes the BIN.)\nOptional in a Terminal API integration using payment terminals: during the card acquisition step, use one of the allowed test card PANs and the associated currency.\nThe POS app should now show that the card is eligible for a tax refund. This depends on how the eligibility check is set up with your TFS provider and POS system.\nSend a payment request with taxfree.indicator set to true, and complete the payment on the terminal. Find the PSP reference of the Transaction in the transactionID.\nIssue a tax-free form from your POS app based on the specifications provided by the TFS provider.\nIn your Customer Area, look up the transaction by PSP reference and check that the POS tile contains an ID in the Tax Free Identifier field. If this field is empty, contact your TFS provider to discover what went wrong.\n\nSee also\n\n\n                    Card acquisition\n                \n                    Confirmation input request\n                \n                    Currency conversion (DCC)\n                \n                    Platform-generated webhooks \n                \n","type":"page","locale":"en","boost":17,"hierarchy":{"lvl0":"Home","lvl1":"In-person payments","lvl2":"Card recognition","lvl3":"Tax-free shopping with secure card capture"},"hierarchy_url":{"lvl0":"https:\/\/docs.adyen.com\/","lvl1":"https:\/\/docs.adyen.com\/point-of-sale","lvl2":"https:\/\/docs.adyen.com\/point-of-sale\/shopper-recognition","lvl3":"\/point-of-sale\/shopper-recognition\/tax-free-shopping"},"levels":4,"category":"In-person payments","category_color":"green","tags":["Tax-free","shopping","secure","capture"]},"articleFiles":{"screen-EN_ConsentScreen.png":"<img alt=\"\" src=\"https:\/\/docs.adyen.com\/images\/1\/8\/f\/7\/4\/18f74d63d63a3dea44f7ecb6bda94f6442cfc171-screen-enconsentscreen.png\" \/>","tfs-fast-refund.png":"<img alt=\"\" src=\"https:\/\/docs.adyen.com\/user\/pages\/docs\/03.point-of-sale\/34.shopper-recognition\/07.tax-free-shopping\/tfs-fast-refund.png\" \/>","tfs-regular-refund.png":"<img alt=\"\" src=\"https:\/\/docs.adyen.com\/user\/pages\/docs\/03.point-of-sale\/34.shopper-recognition\/07.tax-free-shopping\/tfs-regular-refund.png\" \/>","tax-free-shopping_0-request.json":"<p alt=\"\">tax-free-shopping_0-request.json<\/p>","tax-free-shopping_0-response.json":"<p alt=\"\">tax-free-shopping_0-response.json<\/p>","tax-free-shopping_0.response.json":"<p alt=\"\">tax-free-shopping_0.response.json<\/p>","tax-free-shopping_1.json":"<p alt=\"\">tax-free-shopping_1.json<\/p>","tax-free-shopping_2.json":"<p alt=\"\">tax-free-shopping_2.json<\/p>","tax-free-shopping_4.json":"<p alt=\"\">tax-free-shopping_4.json<\/p>"}}
