Search

Are you looking for test card numbers?

Would you like to contact support?

Point-of-sale icon

Show a QR code on the terminal

Let your shoppers scan a QR code from the display of the payment terminal.

You can use the display of your payment terminal to show a QR code for the shopper to 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. The next examples show a QR code with header and footer on a narrow terminal display and on a wide display.

   

Make a display request for a QR code

  1. If the QR code needs to contain more than just a URL, convert the content to a URL encoded string. For example:

    Visit%20www.adyen.com%2Fpos-payments%20and%3A%0A-%20Learn%20about%20the%20features%20we%20support%0A-%20Choose%20from%20a%20range%20of%20terminals

    If it's just a URL, for example https://www.adyen.com/pos-payments, you will be specifying this as a plain text string in the display request.

  2. Make a POST request to a Terminal API endpoint, specifying:

    • DisplayRequest.DisplayOutput : An array with array items representing the elements to show on the terminal display: QR code, header, and footer. Select the tabs below to view the parameters to use for each array item.

      Parameter Description
      Device CustomerDisplay
      InfoQualify Display
      MinimumDisplayTime The number of seconds that the element is shown on the terminal display. Used only if greater than the default timeout of 60 seconds.
      ResponseRequiredFlag If not specified, defaults to true. The response then informs you whether this element was successfully shown.
      OutputContent.OutputFormat BarCode
      OutputContent.OutputBarcode.BarcodeType QRCode
      OutputContent.OutputBarcode.BarcodeValue The content of the QR code, specified either as a plain text string, or as a URL encoded string.
    {
       "SaleToPOIRequest":{
          "MessageHeader":{
             "ProtocolVersion":"3.0",
             "MessageClass":"Device",
             "MessageCategory":"Display",
             "MessageType":"Request",
             "ServiceID":"043001",
             "SaleID":"POSSystemID12345",
             "POIID":"V400m-346403161"
          },
          "DisplayRequest":{
             "DisplayOutput":[
                {
                   "Device":"CustomerDisplay",
                   "InfoQualify":"Display",
                   "OutputContent":{
                      "OutputFormat":"BarCode",
                      "OutputBarcode":{
                         "BarcodeType":"QRCode",
                         "BarcodeValue":"www.adyen.com/pos-payments"
                      }
                   }
                },
                {
                   "Device":"CustomerDisplay",
                   "InfoQualify":"Display",
                   "OutputContent":{
                      "OutputFormat":"Text",
                      "OutputText":[
                         {
                            "Text":"Join our loyalty program"
                         }
                      ]
                   }
                },
                {
                   "Device":"CustomerDisplay",
                   "InfoQualify":"Display",
                   "OutputContent":{
                      "OutputFormat":"Text",
                      "OutputText":[
                         {
                            "Text":"Thank you!"
                         }
                      ]
                   }
                }
             ]
          }
       }
    }

    If you didn't set the ResponseRequiredFlag to false in all array items, you receive a display response with:

    • OutputResult: An array that indicates whether the elements were successfully shown. The first item in this array refers to the first item in the DisplayOutput array, and so on.
    {
        "SaleToPOIResponse": {
            "DisplayResponse": {
                "OutputResult": [
                    {
                        "Device": "CustomerDisplay",
                        "InfoQualify": "Display",
                        "Response": {
                            "Result": "Success"
                        }
                    },
                    {
                        "Device": "CustomerDisplay",
                        "InfoQualify": "Display",
                        "Response": {
                            "Result": "Success"
                        }
                    },
                    {
                        "Device": "CustomerDisplay",
                        "InfoQualify": "Display",
                        "Response": {
                            "Result": "Success"
                        }
                    }
                ]
            },
            "MessageHeader": {...}
        }
    }

See also