{"title":"Show a QR code on the terminal","category":"default","creationDate":1776961627,"content":"<p>You can use the display of your payment terminal to show a QR code which the shopper can scan with their mobile device. The QR code can contain anything you like. For example, a URL to join your loyalty program or to download an app, a message with a link to a promotional offer, or an invitation to visit your webshop. You can also add a header and footer to explain what the QR code is for.<\/p>\n<div class=\"notices blue\">\n<p>The terminal shows the QR code during the time you set in the request. If you do not set a time-out, the QR code continues to be shown until you send another request. For example, a payment request, or a request to <a href=\"\/pt\/point-of-sale\/shopper-engagement\/display-data\/idle-display\">show the standby screen<\/a>.<\/p>\n<\/div>\n<p>The following illustrations show a QR code with header and footer on a portrait, small portrait, and landscape display.<\/p>\n<div class=\"sc-columns\" style=\"columns:2 auto;-moz-columns:2 auto;column-gap:normal;-moz-column-gap:normal;\">\n<div style=\"text-align: center;\">\n<p><img alt=\"\" src=\"\/images\/9\/3\/2\/9\/4\/932947d8a5643907cc255314feb8fda58a54db8d-screen-enshowqrcodeportrait.png\" \/><\/p>\n<\/div>\n<div style=\"text-align: center;\">\n<p><img alt=\"\" src=\"\/images\/5\/a\/1\/9\/0\/5a1909a664df6b3edc91097497c54ddf4e68038c-screen-enshowqrcodeportrait-small.png\" \/><\/p>\n<\/div>\n<\/div>\n<p><br><\/p>\n<div style=\"text-align: center;\">\n<p><img alt=\"\" src=\"\/images\/c\/9\/d\/f\/4\/c9df4c91845d62fb7b056b3165a743b0946c95d8-screen-enshowqrcodelandscape.png\" \/><\/p>\n<\/div>\n<h2 id=\"display-qr-code\">Make a display request for a QR code<\/h2>\n<ol>\n<li>\n<p>If the QR code needs to contain more than just a URL, convert the content to a URL-encoded string. You'll need to specify the URL-encoded string in the display request, in the <code>OutputContent.OutputBarcode.BarcodeValue<\/code>.<\/p>\n<p>For example, if the QR code should have this content:<\/p>\n<pre><code class=\"language-bash\">Visit www.adyen.com\/pos-payments and:\n- Learn about the features we support\n- Choose from a range of terminals<\/code><\/pre>\n<p>The resulting URL-encoded string will look like this:<\/p>\n<pre><code class=\"language-bash\">Visit%20www.adyen.com%2Fpos-payments%20and%3A%0A-%20Learn%20about%20the%20features%20we%20support%0A-%20Choose%20from%20a%20range%20of%20terminals<\/code><\/pre>\n<p>If the QR code needs to contain only a URL, for example <code>https:\/\/www.adyen.com\/pos-payments<\/code>, there is no need to URL-encode that. You'll specify the URL in the display request as a plain text string.<\/p>\n<\/li>\n<li>\n<p>Make a <a href=\"\/pt\/point-of-sale\/design-your-integration\/terminal-api\">Terminal API<\/a> display request, specifying:<\/p>\n<ul>\n<li>\n<p>The standard <a href=\"\/pt\/point-of-sale\/design-your-integration\/terminal-api#request-message-header\">\n  <code>SaleToPOIRequest.MessageHeader<\/code>\n<\/a> object, with <code>MessageClass<\/code> set to <strong>Device<\/strong> and <code>MessageCategory<\/code> set to <span translate=\"no\"><strong>Display<\/strong><\/span>.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Parameter<\/th>\n<th style=\"text-align: center;\">Required<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><code>ProtocolVersion<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\"><strong>3.0<\/strong><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>MessageClass<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>Device<\/strong><\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>MessageCategory<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>Display<\/strong><\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>MessageType<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>Request<\/strong><\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>ServiceID<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\">Your unique ID for this request, consisting of 1-10 alphanumeric characters. Must be unique within the last 48 hours for the terminal (<code>POIID<\/code>) being used.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>SaleID<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\">Your unique ID for the POS system component to send this request from.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>POIID<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\">The unique ID of the terminal to send this request to. Format: <em>[device model]-[serial number]<\/em>.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<p>The  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/terminal-api\/latest\/post\/display#request-DisplayOutput\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">DisplayRequest.DisplayOutput<\/a> array, with items representing the elements to show on the terminal display. This includes the <a href=\"#qr\">QR code<\/a> and optionally a <a href=\"#header-footer\">header and\/or footer<\/a>.<\/p>\n<h4 id=\"qr\">QR code:<\/h4>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Parameter<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><code>Device<\/code><\/td>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>CustomerDisplay<\/strong><\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>InfoQualify<\/code><\/td>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>Display<\/strong><\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>MinimumDisplayTime<\/code><\/td>\n<td style=\"text-align: left;\">The number of seconds that the QR code screen is shown. <br> If you omit this parameter, the terminal shows the QR code screen until you send another request, for example, a request to <a href=\"\/pt\/point-of-sale\/shopper-engagement\/display-data\/idle-display\">show the standby screen<\/a>.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>ResponseRequiredFlag<\/code><\/td>\n<td style=\"text-align: left;\">If not specified, defaults to <span translate=\"no\"><strong>true<\/strong><\/span>. The response then informs you whether this element was successfully shown.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>OutputContent.OutputFormat<\/code><\/td>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>BarCode<\/strong><\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>OutputContent.OutputBarcode.BarcodeType<\/code><\/td>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>QRCode<\/strong><\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>OutputContent.OutputBarcode.BarcodeValue<\/code><\/td>\n<td style=\"text-align: left;\">The content of the QR code, specified either as a plain text string, or as a URL encoded string. (See step 1.)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4 id=\"header-footer\">Header and footer (optional):<\/h4>\n<p>The header and footer are both text array items with the same structure. If you specify one text array item, that will be interpreted as the header. If you specify a second text array item, that will be interpreted as the footer.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Parameter<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><code>Device<\/code><\/td>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>CustomerDisplay<\/strong><\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>InfoQualify<\/code><\/td>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>Display<\/strong><\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>ResponseRequiredFlag<\/code><\/td>\n<td style=\"text-align: left;\">If not specified, defaults to <span translate=\"no\"><strong>true<\/strong><\/span>. The response then informs you whether this element was successfully shown.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>OutputContent.OutputFormat<\/code><\/td>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>Text<\/strong><\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>OutputContent.OutputText<\/code><\/td>\n<td style=\"text-align: left;\">An array with a <code>Text<\/code> parameter containing your text to show above the QR code (header element) or below the QR code (footer element).<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/li>\n<\/ul>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'QR code with header and footer'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n   \\\"SaleToPOIRequest\\\":{\\n      \\\"MessageHeader\\\":{\\n         \\\"ProtocolVersion\\\":\\\"3.0\\\",\\n         \\\"MessageClass\\\":\\\"Device\\\",\\n         \\\"MessageCategory\\\":\\\"Display\\\",\\n         \\\"MessageType\\\":\\\"Request\\\",\\n         \\\"ServiceID\\\":\\\"043001\\\",\\n         \\\"SaleID\\\":\\\"POSSystemID12345\\\",\\n         \\\"POIID\\\":\\\"V400m-346403161\\\"\\n      },\\n      \\\"DisplayRequest\\\":{\\n         \\\"DisplayOutput\\\":[\\n            {\\n               \\\"Device\\\":\\\"CustomerDisplay\\\",\\n               \\\"InfoQualify\\\":\\\"Display\\\",\\n               \\\"MinimumDisplayTime\\\":60,\\n               \\\"OutputContent\\\":{\\n                  \\\"OutputFormat\\\":\\\"BarCode\\\",\\n                  \\\"OutputBarcode\\\":{\\n                     \\\"BarcodeType\\\":\\\"QRCode\\\",\\n                     \\\"BarcodeValue\\\":\\\"www.adyen.com\\\/pos-payments\\\"\\n                  }\\n               }\\n            },\\n            {\\n               \\\"Device\\\":\\\"CustomerDisplay\\\",\\n               \\\"InfoQualify\\\":\\\"Display\\\",\\n               \\\"OutputContent\\\":{\\n                  \\\"OutputFormat\\\":\\\"Text\\\",\\n                  \\\"OutputText\\\":[\\n                     {\\n                        \\\"Text\\\":\\\"Join our loyalty program\\\"\\n                     }\\n                  ]\\n               }\\n            },\\n            {\\n               \\\"Device\\\":\\\"CustomerDisplay\\\",\\n               \\\"InfoQualify\\\":\\\"Display\\\",\\n               \\\"OutputContent\\\":{\\n                  \\\"OutputFormat\\\":\\\"Text\\\",\\n                  \\\"OutputText\\\":[\\n                     {\\n                        \\\"Text\\\":\\\"Thank you!\\\"\\n                     }\\n                  ]\\n               }\\n            }\\n         ]\\n      }\\n   }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<li>\n<p>In the display response, check the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/terminal-api\/latest\/post\/display#responses-200-OutputResult\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">OutputResult<\/a>. This array indicates whether the elements were successfully shown. The first item in the array refers to the first item in the <code>DisplayOutput<\/code> array , and so on.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Display response'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n    \\\"SaleToPOIResponse\\\": {\\n        \\\"DisplayResponse\\\": {\\n            \\\"OutputResult\\\": [\\n                {\\n                    \\\"Device\\\": \\\"CustomerDisplay\\\",\\n                    \\\"InfoQualify\\\": \\\"Display\\\",\\n                    \\\"Response\\\": {\\n                        \\\"Result\\\": \\\"Success\\\"\\n                    }\\n                },\\n                {\\n                    \\\"Device\\\": \\\"CustomerDisplay\\\",\\n                    \\\"InfoQualify\\\": \\\"Display\\\",\\n                    \\\"Response\\\": {\\n                        \\\"Result\\\": \\\"Success\\\"\\n                    }\\n                },\\n                {\\n                    \\\"Device\\\": \\\"CustomerDisplay\\\",\\n                    \\\"InfoQualify\\\": \\\"Display\\\",\\n                    \\\"Response\\\": {\\n                        \\\"Result\\\": \\\"Success\\\"\\n                    }\\n                }\\n            ]\\n        },\\n        \\\"MessageHeader\\\": {...}\\n    }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<\/ol>\n<h2>See also<\/h2>\n<div class=\"see-also-links output-inline\" id=\"see-also\">\n<ul><li><a href=\"\/point-of-sale\/shopper-engagement\/display-data\/display-receipt\"\n                        target=\"_self\"\n                        >\n                    Show a virtual receipt on the display\n                <\/a><\/li><li><a href=\"\/point-of-sale\/shopper-engagement\/display-data\/display-image\"\n                        target=\"_self\"\n                        >\n                    Show an image on the display\n                <\/a><\/li><li><a href=\"\/point-of-sale\/shopper-engagement\/display-data\/idle-display\"\n                        target=\"_self\"\n                        >\n                    Set the display to standby\n                <\/a><\/li><\/ul><\/div>\n","url":"https:\/\/docs.adyen.com\/pt\/point-of-sale\/shopper-engagement\/display-data\/display-qr-code","articleFields":{"description":"Let your shoppers scan a QR code from the display of the payment terminal."},"algolia":{"url":"https:\/\/docs.adyen.com\/pt\/point-of-sale\/shopper-engagement\/display-data\/display-qr-code","title":"Show a QR code on the terminal","content":"You can use the display of your payment terminal to show a QR code which the shopper can scan with their mobile device. The QR code can contain anything you like. For example, a URL to join your loyalty program or to download an app, a message with a link to a promotional offer, or an invitation to visit your webshop. You can also add a header and footer to explain what the QR code is for.\n\nThe terminal shows the QR code during the time you set in the request. If you do not set a time-out, the QR code continues to be shown until you send another request. For example, a payment request, or a request to show the standby screen.\n\nThe following illustrations show a QR code with header and footer on a portrait, small portrait, and landscape display.\n\n\n\n\n\n\n\n\n\n\n\n\nMake a display request for a QR code\n\n\nIf the QR code needs to contain more than just a URL, convert the content to a URL-encoded string. You'll need to specify the URL-encoded string in the display request, in the OutputContent.OutputBarcode.BarcodeValue.\nFor example, if the QR code should have this content:\nVisit www.adyen.com\/pos-payments and:\n- Learn about the features we support\n- Choose from a range of terminals\nThe resulting URL-encoded string will look like this:\nVisit%20www.adyen.com%2Fpos-payments%20and%3A%0A-%20Learn%20about%20the%20features%20we%20support%0A-%20Choose%20from%20a%20range%20of%20terminals\nIf the QR code needs to contain only a URL, for example https:\/\/www.adyen.com\/pos-payments, there is no need to URL-encode that. You'll specify the URL in the display request as a plain text string.\n\n\nMake a Terminal API display request, specifying:\n\n\nThe standard \n  SaleToPOIRequest.MessageHeader\n object, with MessageClass set to Device and MessageCategory set to Display.\n\n\n\nParameter\nRequired\nDescription\n\n\n\n\nProtocolVersion\n\n3.0\n\n\nMessageClass\n\nDevice\n\n\nMessageCategory\n\nDisplay\n\n\nMessageType\n\nRequest\n\n\nServiceID\n\nYour unique ID for this request, consisting of 1-10 alphanumeric characters. Must be unique within the last 48 hours for the terminal (POIID) being used.\n\n\nSaleID\n\nYour unique ID for the POS system component to send this request from.\n\n\nPOIID\n\nThe unique ID of the terminal to send this request to. Format: [device model]-[serial number].\n\n\n\n\n\n\n\nThe  DisplayRequest.DisplayOutput array, with items representing the elements to show on the terminal display. This includes the QR code and optionally a header and\/or footer.\nQR code:\n\n\n\nParameter\nDescription\n\n\n\n\nDevice\nCustomerDisplay\n\n\nInfoQualify\nDisplay\n\n\nMinimumDisplayTime\nThe number of seconds that the QR code screen is shown.  If you omit this parameter, the terminal shows the QR code screen until you send another request, for example, a request to show the standby screen.\n\n\nResponseRequiredFlag\nIf not specified, defaults to true. The response then informs you whether this element was successfully shown.\n\n\nOutputContent.OutputFormat\nBarCode\n\n\nOutputContent.OutputBarcode.BarcodeType\nQRCode\n\n\nOutputContent.OutputBarcode.BarcodeValue\nThe content of the QR code, specified either as a plain text string, or as a URL encoded string. (See step 1.)\n\n\n\nHeader and footer (optional):\nThe header and footer are both text array items with the same structure. If you specify one text array item, that will be interpreted as the header. If you specify a second text array item, that will be interpreted as the footer.\n\n\n\nParameter\nDescription\n\n\n\n\nDevice\nCustomerDisplay\n\n\nInfoQualify\nDisplay\n\n\nResponseRequiredFlag\nIf not specified, defaults to true. The response then informs you whether this element was successfully shown.\n\n\nOutputContent.OutputFormat\nText\n\n\nOutputContent.OutputText\nAn array with a Text parameter containing your text to show above the QR code (header element) or below the QR code (footer element).\n\n\n\n\n\n\n\n\n\n\nIn the display response, check the  OutputResult. This array indicates whether the elements were successfully shown. The first item in the array refers to the first item in the DisplayOutput array , and so on.\n\n\n\n\n\nSee also\n\n\n                    Show a virtual receipt on the display\n                \n                    Show an image on the display\n                \n                    Set the display to standby\n                \n","type":"page","locale":"pt","boost":16,"hierarchy":{"lvl0":"Home","lvl1":"Terminais","lvl2":"Shopper engagement","lvl3":"Exibir dados no terminal","lvl4":"Show a QR code on the terminal"},"hierarchy_url":{"lvl0":"https:\/\/docs.adyen.com\/pt","lvl1":"https:\/\/docs.adyen.com\/pt\/point-of-sale","lvl2":"https:\/\/docs.adyen.com\/pt\/point-of-sale\/shopper-engagement","lvl3":"https:\/\/docs.adyen.com\/pt\/point-of-sale\/shopper-engagement\/display-data","lvl4":"\/pt\/point-of-sale\/shopper-engagement\/display-data\/display-qr-code"},"levels":5,"category":"In-person payments","category_color":"green","tags":["terminal"]},"articleFiles":{"screen-EN_ShowQrCode_landscape.png":"<img alt=\"\" src=\"https:\/\/docs.adyen.com\/images\/6\/3\/5\/a\/c\/635ac33c65247773b2233a563aff4d1be0cee601-screen-enshowqrcodelandscape.png\" \/>","screen-EN_ShowQrCode_portrait-small.png":"<img alt=\"\" src=\"https:\/\/docs.adyen.com\/images\/b\/a\/4\/5\/d\/ba45d78d687b40eaa7d491a3a7e418dc71cf5764-screen-enshowqrcodeportrait-small.png\" \/>","screen-EN_ShowQrCode_portrait.png":"<img alt=\"\" src=\"https:\/\/docs.adyen.com\/images\/9\/e\/1\/2\/d\/9e12d58e1c15b7c17739d607daccb9d2ef8d6e14-screen-enshowqrcodeportrait.png\" \/>"}}
