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 one.

   

Make a display request for a QR code

  1. Decide what the QR code needs to contain.

    • Only a URL: You don't need to do anything now. You will be specifying this as a plain text string in the display request.
    • More than just a URL: Write the content and convert this to a URL encoded string.

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

    • MessageHeader: The standard MessageHeader structure, explained in Terminal API fundamentals:
      Parameter Required Description
      ProtocolVersion -white_check_mark- 3.0
      MessageClass -white_check_mark- Device
      MessageCategory -white_check_mark- Display
      MessageType -white_check_mark- Request
      SaleID -white_check_mark- Your unique ID for the cash register.
      ServiceID -white_check_mark- Your unique ID for this request, consisting of 1-10 alphanumeric characters. This value needs to be unique within the last 48 hours.
      POIID -white_check_mark- Unique ID of the terminal that you want to route this request to. Format: [device model]-[serial number].
    • 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 Required Description
      Device -white_check_mark- CustomerDisplay
      InfoQualify -white_check_mark- 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 -white_check_mark- BarCode
      OutputContent.OutputBarcode.BarcodeType -white_check_mark- QRCode
      OutputContent.OutputBarcode.BarcodeValue -white_check_mark- The content of the QR code, specified as a plain text string or 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