{"title":"QR code wallet payments","category":"default","creationDate":1779706500,"content":"<div class=\"additional-info-block output-inline\">\n<h5 class=\"article__heading additional-info-block__title\">Supported wallets<\/h5><div class=\"additional-info-block__body\"><p>To learn which QR code wallets we support, see the <a href=\"\/point-of-sale\/what-we-support\/payment-methods#qr-code-wallets\">payment methods overview<\/a>.<\/p><\/div><\/div>\n\n<p>Many shoppers have installed a QR code wallet app on their phone. They link the wallet app to their credit or debit card (bank account), and then make in-person payments with the wallet app on their phone. In the payment process, the payment terminal and the wallet app communicate through a QR code.<\/p>\n<h2>Requirements<\/h2>\n<p>Before you begin, take into account the following requirements, limitations, and preparations.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Requirement<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><strong>Integration type<\/strong><\/td>\n<td style=\"text-align: left;\">A <a href=\"\/point-of-sale\/basic-tapi-integration\/\">Terminal API<\/a> integration with payment terminals or a <a href=\"\/point-of-sale\/standalone\">standalone solution<\/a>.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Setup steps<\/strong><\/td>\n<td style=\"text-align: left;\">Before you begin: <ul><li markdown=\"1\"><a href=\"\/point-of-sale\/what-we-support\/payment-methods\/add-payment-methods\">Add the QR code payment method to your Adyen account<\/a>. We will contact you if we need additional details.<\/li><li markdown=\"1\">To use IRIS, you need to complete the <a href=\"\/point-of-sale\/what-we-support\/payment-methods#local-onboarding\">onboarding process with a Greek bank<\/a>. <\/li><\/ul><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2 id=\"qr-code-payment-flows\">QR code payment flows<\/h2>\n<p>With a <a href=\"\/point-of-sale\/design-your-integration\/choose-your-architecture\">Terminal API integration<\/a>, there are several flows you can use for QR code wallet payments. Each flow varies in terms of the shopper experience, and the amount of additional integration work required.<\/p>\n<p><strong>Merchant-initiated<\/strong> flows, where you generate a QR code that the shopper can scan.<\/p>\n<ul>\n<li>\n<p><a href=\"#initiate-from-terminal\">Initiate from terminal<\/a>: you send a payment request. On the terminal display, your staff or the shopper selects the QR code icon.<br \/>\nA list of supported wallets appears. From the list, your staff or the shopper selects the wallet app that the shopper wants to use.<br \/>\nA QR code for the selected wallet appears. The shopper scans the QR code with their wallet app to complete the payment.<br \/>\nThis flow requires no additional integration work.<\/p>\n<div class=\"sc-notice info\"><div>\n<p><strong>Using our Standalone solution?<\/strong><br \/>\nThis flow is also used for making QR code payments on a <a href=\"\/point-of-sale\/standalone\/standalone-use#qr-code\">standalone terminal<\/a>.<\/p>\n<\/div><\/div>\n<\/li>\n<li>\n<p><a href=\"#initiate-from-cash-register\">Initiate from POS app<\/a>: you send a payment request which directly launches a QR code on the terminal. The shopper scans the QR code with their wallet app to complete the payment.<\/p>\n<p>This provides a simpler payment flow for your shoppers, but requires some additional integration work.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Shopper-initiated<\/strong> flow, where the shopper generates a QR code that you can scan.<\/p>\n<ul>\n<li>\n<p><a href=\"#initiate-from-barcode-scanner\">Initiate from barcode scanner<\/a>: the shopper launches a QR code from the wallet app on their phone. You scan this with a barcode scanner, then pass the QR code data in a payment request.<br \/>\n<div class=\"sc-notice note\"><div>This flow is not supported for the following QR code wallets: Affirm, Atome, IRIS, PayMe, PayNow, PayPay, PIX, Rakuten Pay, TWINT, and Zip.<\/div><\/div><\/p>\n<p>This flow requires the most integration work, but is familiar to many shoppers. It also does not require your shopper to have an active internet connection to complete a payment. If you have poor cellular reception in your store, you may want to use this flow.<\/p>\n<\/li>\n<\/ul>\n<p>With your Adyen integration, you can support one or several of these QR code payment flows.<\/p>\n<h2 id=\"initiate-from-terminal\">Initiate from terminal<\/h2>\n<p>If your integration is able to make a card payment, it can also make QR code payments with this flow. After sending a payment request to the terminal, your staff or the shopper uses the terminal to specify the wallet app that the shopper will use for the transaction. This presents a QR code on the terminal, for the shopper to scan and verify the payment. The terminal then sends the payment to Adyen for processing.<\/p>\n<p><a rel=\"lightbox\" href=\"\/user\/pages\/docs\/03.point-of-sale\/10.alternative-payment-methods\/03.qr-code-wallets\/noText_terminal.png\" src=\"\">\n  <img alt=\"\" src=\"\/user\/pages\/docs\/03.point-of-sale\/10.alternative-payment-methods\/03.qr-code-wallets\/noText_terminal.png\" \/>\n<\/a><\/p>\n<p>To initiate a QR code payment from your terminal:<\/p>\n<ol>\n<li>\n<p>Make a payment request, as you would for a <a href=\"\/point-of-sale\/basic-tapi-integration\/make-a-payment#make-a-payment\">card payment<\/a>.<br \/>\nThe payment is routed to the terminal.<\/p>\n<\/li>\n<li>\n<p>On the terminal screen, select the QR code icon, and then select the wallet app that the shopper will use for the payment.<br \/>\nThe terminal shows a QR code on the display.<\/p>\n<\/li>\n<li>\n<p>The shopper scans this QR code, and verifies the payment.<\/p>\n<div class=\"notices blue\">\n<p>If you are building a test integration, this payment is automatically <span translate=\"no\"><strong>Approved<\/strong><\/span> after 15 seconds. For IRIS, the test payment result depends on the test amount, as <a href=\"\/payment-methods\/iris\/api-only#test-and-go-live\">described in this Test and go live section<\/a>. For information on testing other payment scenarios, such as an abandoned transaction, see <a href=\"\/point-of-sale\/testing-pos-payments#testing-qr-code-wallets\">Testing QR code wallets<\/a>.<\/p>\n<\/div>\n<p>The payment is sent to the Adyen payments platform for processing.<\/p>\n<\/li>\n<li>\n<p>You receive the result of the payment, as you would <a href=\"\/point-of-sale\/basic-tapi-integration\/make-a-payment#payment-response\">receive the result of a card payment<\/a>.<\/p>\n<\/li>\n<\/ol>\n<p>You can view the details of a payment in your <a href=\"https:\/\/ca-test.adyen.com\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Customer Area<\/a>, under <strong>Transactions<\/strong> &gt; <strong>Payments<\/strong>.<\/p>\n<h2 id=\"initiate-from-cash-register\">Initiate from POS app<\/h2>\n<p>Using this flow is similar to making a regular payment request, but you additionally specify the wallet app that the shopper will use for the transaction. When you send the payment request to the terminal, this shows a QR code for the specified wallet app. The shopper scans the QR code and verifies the payment. The terminal then sends the payment to Adyen for processing.<\/p>\n<p><a rel=\"lightbox\" href=\"\/user\/pages\/docs\/03.point-of-sale\/10.alternative-payment-methods\/03.qr-code-wallets\/noText_cashregister.png\" src=\"\">\n  <img alt=\"\" src=\"\/user\/pages\/docs\/03.point-of-sale\/10.alternative-payment-methods\/03.qr-code-wallets\/noText_cashregister.png\" \/>\n<\/a><\/p>\n<p>To initiate a QR code payment from your POS app:<\/p>\n<ol>\n<li>\n<p>Ask the shopper which wallet app they will use for the payment.<\/p>\n<\/li>\n<li>\n<p><a href=\"\/point-of-sale\/basic-tapi-integration\/make-a-payment#make-a-payment\">Make a payment request<\/a> including:<\/p>\n<ul>\n<li>\n<p>The  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/terminal-api\/latest\/post\/payment#request-PaymentTransaction-TransactionConditions\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">PaymentRequest.PaymentTransaction.TransactionConditions<\/a> array with:<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Parameter<\/th>\n<th style=\"text-align: center;\">Required<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><code>AllowedPaymentBrand<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\">The wallet app that the shopper will use for the payment. Use one of the values from the following list. <ul><li markdown=\"1\"><span translate=\"no\"><strong>affirm_pos<\/strong><\/span>: shows an Affirm QR code.<\/li> <li markdown=\"1\"><span translate=\"no\"><strong>alipay<\/strong><\/span>: shows an Alipay QR code.<\/li> <li markdown=\"1\"><span translate=\"no\"><strong>alipay_hk<\/strong><\/span>: shows an AlipayHK QR code.<\/li> <li markdown=\"1\"><span translate=\"no\"><strong>alipay_plus<\/strong><\/span>: shows an Alipay+ QR code.<\/li> <li markdown=\"1\"><span translate=\"no\"><strong>atome_pos<\/strong><\/span>: shows an Atome QR code.<\/li> <li markdown=\"1\"><span translate=\"no\"><strong>duitnow_pos<\/strong><\/span>: shows a DuitNow QR code.<\/li> <li markdown=\"1\"><span translate=\"no\"><strong>grabpay_pos<\/strong><\/span>: shows a GrabPay QR code.<\/li><li markdown=\"1\"><span translate=\"no\"><strong>iris_pos<\/strong><\/span>: iris_pos: shows an IRIS QR code.<\/li>  <li markdown=\"1\"><span translate=\"no\"><strong>payme_pos<\/strong><\/span>: shows a PayMe QR code.<\/li> <li markdown=\"1\"><span translate=\"no\"><strong>paynow_pos<\/strong><\/span>: shows a PayNow QR code.<\/li> <li markdown=\"1\"><span translate=\"no\"><strong>paypay_pos<\/strong><\/span>: shows a PayPay QR code.<\/li> <li markdown=\"1\"><span translate=\"no\"><strong>pix<\/strong><\/span>: shows a PIX QR code.<\/li> <li markdown=\"1\"><span translate=\"no\"><strong>rakutenpay_pos<\/strong><\/span>: shows a Rakuten Pay QR code.<\/li> <li markdown=\"1\"><span translate=\"no\"><strong>swish<\/strong><\/span>: shows a Swish QR code.<\/li> <li markdown=\"1\"><span translate=\"no\"><strong>twint_pos<\/strong><\/span>: shows a TWINT QR code.<\/li>  <li markdown=\"1\"><span translate=\"no\"><strong>wechatpay_pos<\/strong><\/span>: shows a WeChat Pay QR code.<\/li> <li markdown=\"1\"><span translate=\"no\"><strong>zip_pos<\/strong><\/span>: shows a Zip QR code.<\/li><\/ul><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/li>\n<\/ul>\n<p>The example below shows a request for a <strong>EUR&nbsp;10.99 Alipay<\/strong> payment from your POS app.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Payment request initiated from the POS app'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n   \\\"SaleToPOIRequest\\\":{\\n      \\\"MessageHeader\\\":{\\n         \\\"ProtocolVersion\\\":\\\"3.0\\\",\\n         \\\"MessageClass\\\":\\\"Service\\\",\\n         \\\"MessageCategory\\\":\\\"Payment\\\",\\n         \\\"MessageType\\\":\\\"Request\\\",\\n         \\\"ServiceID\\\":\\\"0918171608\\\",\\n         \\\"SaleID\\\":\\\"POSSystemID12345\\\",\\n         \\\"POIID\\\":\\\"V400m-324688179\\\"\\n      },\\n      \\\"PaymentRequest\\\":{\\n         \\\"SaleData\\\":{\\n            \\\"SaleTransactionID\\\":{\\n               \\\"TransactionID\\\":\\\"8954\\\",\\n               \\\"TimeStamp\\\":\\\"2019-09-18T15:16:08+00:00\\\"\\n            }\\n         },\\n         \\\"PaymentTransaction\\\":{\\n            \\\"AmountsReq\\\":{\\n               \\\"Currency\\\":\\\"EUR\\\",\\n               \\\"RequestedAmount\\\":10.99\\n            },\\n            \\\"TransactionConditions\\\":{\\n               \\\"AllowedPaymentBrand\\\":[\\n                  \\\"alipay\\\"\\n               ]\\n            }\\n         }\\n      }\\n   }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p>This directly shows an Alipay QR code on the terminal display.<\/p>\n<\/li>\n<li>\n<p>Hand the terminal to the shopper, so they can scan the QR code and verify the payment.<\/p>\n<div class=\"notices blue\">\n<p>If you are building a test integration, this payment is automatically <span translate=\"no\"><strong>Approved<\/strong><\/span> after 15 seconds. For information on testing other payment scenarios, such as an abandoned transaction, see <a href=\"\/point-of-sale\/testing-pos-payments#testing-qr-code-wallets\">Testing QR code wallets<\/a>.<\/p>\n<\/div>\n<p>The payment is sent to the Adyen payments platform for processing.<\/p>\n<\/li>\n<li>\n<p>You receive the result of the payment, as you would <a href=\"\/point-of-sale\/basic-tapi-integration\/make-a-payment#payment-response\">receive the result of a card payment<\/a>.<\/p>\n<\/li>\n<\/ol>\n<p>You can view the details of a payment in your <a href=\"https:\/\/ca-test.adyen.com\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Customer Area<\/a>, under <strong>Transactions<\/strong> &gt; <strong>Payments<\/strong>.<\/p>\n<h2 id=\"initiate-from-barcode-scanner\">Initiate from barcode scanner<\/h2>\n<p>To use this flow, your POS system must include a barcode scanner that can read a QR code. This can be an infrared scanner or a camera. Your POS system also needs to translate the QR code into a numerical value.<\/p>\n<p>You scan the QR code presented in the wallet app on the shopper's phone. Your POS app sends this QR code data to Adyen in a payment request, for processing.<\/p>\n<p><a rel=\"lightbox\" href=\"\/user\/pages\/docs\/03.point-of-sale\/10.alternative-payment-methods\/03.qr-code-wallets\/noText_scanner.png\" src=\"\">\n  <img alt=\"\" src=\"\/user\/pages\/docs\/03.point-of-sale\/10.alternative-payment-methods\/03.qr-code-wallets\/noText_scanner.png\" \/>\n<\/a><\/p>\n<p>To initiate a QR code payment from your barcode scanner:<\/p>\n<ol>\n<li>\n<p>Scan the shopper's QR code with your barcode scanner.<\/p>\n<\/li>\n<li>\n<p>Translate the QR code data into a numeric value, to be passed in the payment request.<br \/>\nFor example, the numeric value contains:<\/p>\n<ul>\n<li>16-24 digits for Alipay.\n<\/li>\n<li>18 digits for WeChat Pay.<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"\/point-of-sale\/basic-tapi-integration\/make-a-payment#make-a-payment\">Make a payment request<\/a> including:<\/p>\n<ul>\n<li>\n<p>The  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/terminal-api\/latest\/post\/payment#request-PaymentData-PaymentInstrumentData\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">PaymentRequest.PaymentData.PaymentInstrumentData<\/a> object with:<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Parameter<\/th>\n<th style=\"text-align: center;\">Required<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><code>PaymentInstrumentType<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>StoredValue<\/strong><\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>StoredValueAccountID<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\">The details of the barcode or QR code: <ul><li markdown=\"1\"><code>StoredValueAccountType<\/code>: <span translate=\"no\"><strong>Other<\/strong><\/span><\/li> <li markdown=\"1\"><code>EntryMode<\/code>: <span translate=\"no\"><strong>Scanned<\/strong><\/span><\/li> <li markdown=\"1\"><code>IdentificationType<\/code>: <span translate=\"no\"><strong>BarCode<\/strong><\/span><\/li> <li markdown=\"1\"><code>StoredValueID<\/code>: A numeric value representing the shopper's QR code.<\/li><\/ul><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/li>\n<li>\n<p>For <span translate=\"no\"><strong>AlipayHK<\/strong><\/span>, add the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/terminal-api\/latest\/post\/payment#request-PaymentTransaction-TransactionConditions\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">PaymentRequest.PaymentTransaction.TransactionConditions<\/a> object with <code>AllowedPaymentBrand<\/code>: <span translate=\"no\"><strong>alipay_hk<\/strong><\/span>.<\/p>\n<\/li>\n<\/ul>\n<p>The examples below show a payment request using a QR code with the numeric value <strong>284687593190468703<\/strong>.<\/p>\n\n<div id=\"tabSyCgQ\">\n    <div data-component-wrapper=\"tabs\">\n        <tabs\n                        :items=\"[{&quot;title&quot;:&quot;Payment request&quot;,&quot;content&quot;:&quot;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;With StoredValueID&#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;Service\\\\\\&quot;,\\\\n         \\\\\\&quot;MessageCategory\\\\\\&quot;:\\\\\\&quot;Payment\\\\\\&quot;,\\\\n         \\\\\\&quot;MessageType\\\\\\&quot;:\\\\\\&quot;Request\\\\\\&quot;,\\\\n         \\\\\\&quot;ServiceID\\\\\\&quot;:\\\\\\&quot;0918171609\\\\\\&quot;,\\\\n         \\\\\\&quot;SaleID\\\\\\&quot;:\\\\\\&quot;POSSystemID12345\\\\\\&quot;,\\\\n         \\\\\\&quot;POIID\\\\\\&quot;:\\\\\\&quot;V400m-324688179\\\\\\&quot;\\\\n      },\\\\n      \\\\\\&quot;PaymentRequest\\\\\\&quot;:{\\\\n         \\\\\\&quot;SaleData\\\\\\&quot;:{\\\\n            \\\\\\&quot;SaleTransactionID\\\\\\&quot;:{\\\\n               \\\\\\&quot;TransactionID\\\\\\&quot;:\\\\\\&quot;19630\\\\\\&quot;,\\\\n               \\\\\\&quot;TimeStamp\\\\\\&quot;:\\\\\\&quot;2019-09-18T15:26:39+00:00\\\\\\&quot;\\\\n            }\\\\n         },\\\\n         \\\\\\&quot;PaymentData\\\\\\&quot;:{\\\\n            \\\\\\&quot;PaymentInstrumentData\\\\\\&quot;:{\\\\n               \\\\\\&quot;PaymentInstrumentType\\\\\\&quot;:\\\\\\&quot;StoredValue\\\\\\&quot;,\\\\n               \\\\\\&quot;StoredValueAccountID\\\\\\&quot;:{\\\\n                  \\\\\\&quot;StoredValueAccountType\\\\\\&quot;:\\\\\\&quot;Other\\\\\\&quot;,\\\\n                  \\\\\\&quot;EntryMode\\\\\\&quot;:[\\\\n                     \\\\\\&quot;Scanned\\\\\\&quot;\\\\n                  ],\\\\n                  \\\\\\&quot;IdentificationType\\\\\\&quot;:\\\\\\&quot;BarCode\\\\\\&quot;,\\\\n                  \\\\\\&quot;StoredValueID\\\\\\&quot;:\\\\\\&quot;284687593190468703\\\\\\&quot;\\\\n               }\\\\n            }\\\\n         },\\\\n         \\\\\\&quot;PaymentTransaction\\\\\\&quot;:{\\\\n            \\\\\\&quot;AmountsReq\\\\\\&quot;:{\\\\n               \\\\\\&quot;Currency\\\\\\&quot;:\\\\\\&quot;EUR\\\\\\&quot;,\\\\n               \\\\\\&quot;RequestedAmount\\\\\\&quot;:10.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&quot;,&quot;altTitle&quot;:null,&quot;oldTabId&quot;:1,&quot;relation&quot;:&quot;&quot;},{&quot;title&quot;:&quot;Payment request - AlipayHK&quot;,&quot;content&quot;:&quot;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;With StoredValueID and AllowedPaymentBrand&#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;Service\\\\\\&quot;,\\\\n         \\\\\\&quot;MessageCategory\\\\\\&quot;:\\\\\\&quot;Payment\\\\\\&quot;,\\\\n         \\\\\\&quot;MessageType\\\\\\&quot;:\\\\\\&quot;Request\\\\\\&quot;,\\\\n         \\\\\\&quot;ServiceID\\\\\\&quot;:\\\\\\&quot;0918171609\\\\\\&quot;,\\\\n         \\\\\\&quot;SaleID\\\\\\&quot;:\\\\\\&quot;POSSystemID12345\\\\\\&quot;,\\\\n         \\\\\\&quot;POIID\\\\\\&quot;:\\\\\\&quot;V400m-324688179\\\\\\&quot;\\\\n      },\\\\n      \\\\\\&quot;PaymentRequest\\\\\\&quot;:{\\\\n         \\\\\\&quot;SaleData\\\\\\&quot;:{\\\\n            \\\\\\&quot;SaleTransactionID\\\\\\&quot;:{\\\\n               \\\\\\&quot;TransactionID\\\\\\&quot;:\\\\\\&quot;19630\\\\\\&quot;,\\\\n               \\\\\\&quot;TimeStamp\\\\\\&quot;:\\\\\\&quot;2019-09-18T15:26:39+00:00\\\\\\&quot;\\\\n            }\\\\n         },\\\\n         \\\\\\&quot;PaymentData\\\\\\&quot;:{\\\\n            \\\\\\&quot;PaymentInstrumentData\\\\\\&quot;:{\\\\n               \\\\\\&quot;PaymentInstrumentType\\\\\\&quot;:\\\\\\&quot;StoredValue\\\\\\&quot;,\\\\n               \\\\\\&quot;StoredValueAccountID\\\\\\&quot;:{\\\\n                  \\\\\\&quot;StoredValueAccountType\\\\\\&quot;:\\\\\\&quot;Other\\\\\\&quot;,\\\\n                  \\\\\\&quot;EntryMode\\\\\\&quot;:[\\\\n                     \\\\\\&quot;Scanned\\\\\\&quot;\\\\n                  ],\\\\n                  \\\\\\&quot;IdentificationType\\\\\\&quot;:\\\\\\&quot;BarCode\\\\\\&quot;,\\\\n                  \\\\\\&quot;StoredValueID\\\\\\&quot;:\\\\\\&quot;284687593190468703\\\\\\&quot;\\\\n               }\\\\n            }\\\\n         },\\\\n         \\\\\\&quot;PaymentTransaction\\\\\\&quot;:{\\\\n            \\\\\\&quot;AmountsReq\\\\\\&quot;:{\\\\n               \\\\\\&quot;Currency\\\\\\&quot;:\\\\\\&quot;HKD\\\\\\&quot;,\\\\n               \\\\\\&quot;RequestedAmount\\\\\\&quot;:10.99\\\\n            },\\\\n            \\\\\\&quot;TransactionConditions\\\\\\&quot;:{\\\\n               \\\\\\&quot;AllowedPaymentBrand\\\\\\&quot;:[\\\\n                  \\\\\\&quot;alipay_hk\\\\\\&quot;\\\\n               ]\\\\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&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>You receive the result of the payment, as you would <a href=\"\/point-of-sale\/basic-tapi-integration\/make-a-payment#payment-response\">receive the result of a card payment<\/a>.<\/p>\n<div class=\"notices blue\">\n<p>If you are building a test integration, this payment is immediately <span translate=\"no\"><strong>Approved<\/strong><\/span>. For information on testing other payment scenarios, such as a refused transaction, see <a href=\"\/point-of-sale\/testing-pos-payments#testing-qr-code-wallets\">Testing QR code wallets<\/a>.<\/p>\n<\/div>\n<\/li>\n<\/ol>\n<p>You can view the details of a payment in your <a href=\"https:\/\/ca-test.adyen.com\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Customer Area<\/a>, under <strong>Transactions<\/strong> &gt; <strong>Payments<\/strong>.<\/p>\n<h2>Refunds<\/h2>\n<p>QR code wallets only support <a href=\"\/point-of-sale\/basic-tapi-integration\/refund-payment\/referenced\">referenced refunds<\/a>, so you have to make a <code>ReversalRequest<\/code> to refund a QR code wallet payment.<\/p>\n<p>Both full and partial referenced refunds are allowed.<\/p>\n<h2>Testing<\/h2>\n<p>We provide a simulator that you can use to test your integration. Some QR code payment methods also provide their own test environment. For more information, see <a href=\"\/point-of-sale\/testing-pos-payments#testing-qr-code-wallets\">Testing QR code payments<\/a>.<\/p>\n<h2>See also<\/h2>\n<div class=\"see-also-links output-inline\" id=\"see-also\">\n<ul><li><a href=\"\/point-of-sale\/what-we-support\/payment-methods#qr-code-wallets\"\n                        target=\"_self\"\n                        >\n                    Supported QR code wallets\n                <\/a><\/li><\/ul><\/div>\n","url":"https:\/\/docs.adyen.com\/point-of-sale\/alternative-payment-methods\/qr-code-wallets","articleFields":{"description":"Accept wallet payments with a QR code initiated from the terminal or the POS, or scanned from the shopper's phone.","feedback_component":true,"id":"42842602","type":"page","_expandable":{"operations":""},"status":"current","last_edit_on":"21-04-2021 13:59","page_id":"ea5e5e2e-7672-436c-b744-34c0be7bd41b","filters_component":false,"decision_tree":"[]"},"algolia":{"url":"https:\/\/docs.adyen.com\/point-of-sale\/alternative-payment-methods\/qr-code-wallets","title":"QR code wallet payments","content":"\nSupported walletsTo learn which QR code wallets we support, see the payment methods overview.\n\nMany shoppers have installed a QR code wallet app on their phone. They link the wallet app to their credit or debit card (bank account), and then make in-person payments with the wallet app on their phone. In the payment process, the payment terminal and the wallet app communicate through a QR code.\nRequirements\nBefore you begin, take into account the following requirements, limitations, and preparations.\n\n\n\nRequirement\nDescription\n\n\n\n\nIntegration type\nA Terminal API integration with payment terminals or a standalone solution.\n\n\nSetup steps\nBefore you begin: Add the QR code payment method to your Adyen account. We will contact you if we need additional details.To use IRIS, you need to complete the onboarding process with a Greek bank. \n\n\n\nQR code payment flows\nWith a Terminal API integration, there are several flows you can use for QR code wallet payments. Each flow varies in terms of the shopper experience, and the amount of additional integration work required.\nMerchant-initiated flows, where you generate a QR code that the shopper can scan.\n\n\nInitiate from terminal: you send a payment request. On the terminal display, your staff or the shopper selects the QR code icon.\nA list of supported wallets appears. From the list, your staff or the shopper selects the wallet app that the shopper wants to use.\nA QR code for the selected wallet appears. The shopper scans the QR code with their wallet app to complete the payment.\nThis flow requires no additional integration work.\n\nUsing our Standalone solution?\nThis flow is also used for making QR code payments on a standalone terminal.\n\n\n\nInitiate from POS app: you send a payment request which directly launches a QR code on the terminal. The shopper scans the QR code with their wallet app to complete the payment.\nThis provides a simpler payment flow for your shoppers, but requires some additional integration work.\n\n\nShopper-initiated flow, where the shopper generates a QR code that you can scan.\n\n\nInitiate from barcode scanner: the shopper launches a QR code from the wallet app on their phone. You scan this with a barcode scanner, then pass the QR code data in a payment request.\nThis flow is not supported for the following QR code wallets: Affirm, Atome, IRIS, PayMe, PayNow, PayPay, PIX, Rakuten Pay, TWINT, and Zip.\nThis flow requires the most integration work, but is familiar to many shoppers. It also does not require your shopper to have an active internet connection to complete a payment. If you have poor cellular reception in your store, you may want to use this flow.\n\n\nWith your Adyen integration, you can support one or several of these QR code payment flows.\nInitiate from terminal\nIf your integration is able to make a card payment, it can also make QR code payments with this flow. After sending a payment request to the terminal, your staff or the shopper uses the terminal to specify the wallet app that the shopper will use for the transaction. This presents a QR code on the terminal, for the shopper to scan and verify the payment. The terminal then sends the payment to Adyen for processing.\n\n  \n\nTo initiate a QR code payment from your terminal:\n\n\nMake a payment request, as you would for a card payment.\nThe payment is routed to the terminal.\n\n\nOn the terminal screen, select the QR code icon, and then select the wallet app that the shopper will use for the payment.\nThe terminal shows a QR code on the display.\n\n\nThe shopper scans this QR code, and verifies the payment.\n\nIf you are building a test integration, this payment is automatically Approved after 15 seconds. For IRIS, the test payment result depends on the test amount, as described in this Test and go live section. For information on testing other payment scenarios, such as an abandoned transaction, see Testing QR code wallets.\n\nThe payment is sent to the Adyen payments platform for processing.\n\n\nYou receive the result of the payment, as you would receive the result of a card payment.\n\n\nYou can view the details of a payment in your Customer Area, under Transactions &gt; Payments.\nInitiate from POS app\nUsing this flow is similar to making a regular payment request, but you additionally specify the wallet app that the shopper will use for the transaction. When you send the payment request to the terminal, this shows a QR code for the specified wallet app. The shopper scans the QR code and verifies the payment. The terminal then sends the payment to Adyen for processing.\n\n  \n\nTo initiate a QR code payment from your POS app:\n\n\nAsk the shopper which wallet app they will use for the payment.\n\n\nMake a payment request including:\n\n\nThe  PaymentRequest.PaymentTransaction.TransactionConditions array with:\n\n\n\nParameter\nRequired\nDescription\n\n\n\n\nAllowedPaymentBrand\n\nThe wallet app that the shopper will use for the payment. Use one of the values from the following list. affirm_pos: shows an Affirm QR code. alipay: shows an Alipay QR code. alipay_hk: shows an AlipayHK QR code. alipay_plus: shows an Alipay+ QR code. atome_pos: shows an Atome QR code. duitnow_pos: shows a DuitNow QR code. grabpay_pos: shows a GrabPay QR code.iris_pos: iris_pos: shows an IRIS QR code.  payme_pos: shows a PayMe QR code. paynow_pos: shows a PayNow QR code. paypay_pos: shows a PayPay QR code. pix: shows a PIX QR code. rakutenpay_pos: shows a Rakuten Pay QR code. swish: shows a Swish QR code. twint_pos: shows a TWINT QR code.  wechatpay_pos: shows a WeChat Pay QR code. zip_pos: shows a Zip QR code.\n\n\n\n\n\nThe example below shows a request for a EUR&nbsp;10.99 Alipay payment from your POS app.\n\n\n\nThis directly shows an Alipay QR code on the terminal display.\n\n\nHand the terminal to the shopper, so they can scan the QR code and verify the payment.\n\nIf you are building a test integration, this payment is automatically Approved after 15 seconds. For information on testing other payment scenarios, such as an abandoned transaction, see Testing QR code wallets.\n\nThe payment is sent to the Adyen payments platform for processing.\n\n\nYou receive the result of the payment, as you would receive the result of a card payment.\n\n\nYou can view the details of a payment in your Customer Area, under Transactions &gt; Payments.\nInitiate from barcode scanner\nTo use this flow, your POS system must include a barcode scanner that can read a QR code. This can be an infrared scanner or a camera. Your POS system also needs to translate the QR code into a numerical value.\nYou scan the QR code presented in the wallet app on the shopper's phone. Your POS app sends this QR code data to Adyen in a payment request, for processing.\n\n  \n\nTo initiate a QR code payment from your barcode scanner:\n\n\nScan the shopper's QR code with your barcode scanner.\n\n\nTranslate the QR code data into a numeric value, to be passed in the payment request.\nFor example, the numeric value contains:\n\n16-24 digits for Alipay.\n\n18 digits for WeChat Pay.\n\n\n\nMake a payment request including:\n\n\nThe  PaymentRequest.PaymentData.PaymentInstrumentData object with:\n\n\n\nParameter\nRequired\nDescription\n\n\n\n\nPaymentInstrumentType\n\nStoredValue\n\n\nStoredValueAccountID\n\nThe details of the barcode or QR code: StoredValueAccountType: Other EntryMode: Scanned IdentificationType: BarCode StoredValueID: A numeric value representing the shopper's QR code.\n\n\n\n\n\nFor AlipayHK, add the  PaymentRequest.PaymentTransaction.TransactionConditions object with AllowedPaymentBrand: alipay_hk.\n\n\nThe examples below show a payment request using a QR code with the numeric value 284687593190468703.\n\n\n    \n        \n        \n    \n\n\n\n\nYou receive the result of the payment, as you would receive the result of a card payment.\n\nIf you are building a test integration, this payment is immediately Approved. For information on testing other payment scenarios, such as a refused transaction, see Testing QR code wallets.\n\n\n\nYou can view the details of a payment in your Customer Area, under Transactions &gt; Payments.\nRefunds\nQR code wallets only support referenced refunds, so you have to make a ReversalRequest to refund a QR code wallet payment.\nBoth full and partial referenced refunds are allowed.\nTesting\nWe provide a simulator that you can use to test your integration. Some QR code payment methods also provide their own test environment. For more information, see Testing QR code payments.\nSee also\n\n\n                    Supported QR code wallets\n                \n","type":"page","locale":"en","boost":17,"hierarchy":{"lvl0":"Home","lvl1":"In-person payments","lvl2":"Alternative payment methods","lvl3":"QR code wallet payments"},"hierarchy_url":{"lvl0":"https:\/\/docs.adyen.com\/","lvl1":"https:\/\/docs.adyen.com\/point-of-sale","lvl2":"https:\/\/docs.adyen.com\/point-of-sale\/alternative-payment-methods","lvl3":"\/point-of-sale\/alternative-payment-methods\/qr-code-wallets"},"levels":4,"category":"In-person payments","category_color":"green","tags":["wallet","payments"]},"articleFiles":{"noText_cashregister.png":"<img alt=\"\" src=\"https:\/\/docs.adyen.com\/user\/pages\/docs\/03.point-of-sale\/10.alternative-payment-methods\/03.qr-code-wallets\/noText_cashregister.png\" \/>","noText_scanner.png":"<img alt=\"\" src=\"https:\/\/docs.adyen.com\/user\/pages\/docs\/03.point-of-sale\/10.alternative-payment-methods\/03.qr-code-wallets\/noText_scanner.png\" \/>","noText_terminal.png":"<img alt=\"\" src=\"https:\/\/docs.adyen.com\/user\/pages\/docs\/03.point-of-sale\/10.alternative-payment-methods\/03.qr-code-wallets\/noText_terminal.png\" \/>","screen-EN_ScanToPay.png":"<img alt=\"\" src=\"https:\/\/docs.adyen.com\/user\/pages\/docs\/03.point-of-sale\/10.alternative-payment-methods\/03.qr-code-wallets\/screen-EN_ScanToPay.png\" \/>","screen-EN_SelectQRCode.png":"<img alt=\"\" src=\"https:\/\/docs.adyen.com\/user\/pages\/docs\/03.point-of-sale\/10.alternative-payment-methods\/03.qr-code-wallets\/screen-EN_SelectQRCode.png\" \/>","digital-ewallets_0.json":"<p alt=\"\">digital-ewallets_0.json<\/p>","digital-ewallets_1.json":"<p alt=\"\">digital-ewallets_1.json<\/p>"}}
