Search

Are you looking for test card numbers?

Would you like to contact support?

Point-of-sale icon

Display notifications

Receive display notifications on your cash register.

During a transaction, Adyen terminals generate display notifications. These can be presented on your cash register to keep your store staff up-to-date on the progress of the transaction.

If your integration uses cloud communications with an asynchronous result, you need to integrate display notifications to receive the result of your transactions.

Here we describe how you expose an endpoint on your server, and set up display notifications. Your server will then receive webhooks that include an event. This can indicate how the shopper is interacting with the terminal, or the result of the transaction. Use these to present a message on your cash register.

We also provide a list of possible event values, and examples of each.

Set up display notifications

Step 1: Expose an endpoint on your server

Display notifications are sent as HTTP callbacks (webhooks) to an endpoint on your server. To receive notifications, you need a server that has:

  • An endpoint that can receive a JSON call.
  • An open TCP port for HTTP traffic (443, 8443, or 8843).

    For testing, you can also use an HTTP port (80, 8080, or 8888).

  • A username and password for basic authentication.

Next, enter the details of this endpoint in your Customer Area.

Step 2: Set up notifications in your Customer Area

Enter your server's details, and select additional information that you wish to receive in notifications. You can configure notifications either at company or merchant account level.

  1. Log in to your Customer Area. To configure notifications at merchant level, switch to your merchant account.
  2. Go to Account > Server communication.
  3. Next to Terminal API Notification, click Add.
  4. Under Transport, enter your server's:
    • URL. Make sure that this is a public URL.
    • SSL (TLS) Version.
  5. Check the Active checkbox.
  6. In the Authentication section, enter your server's username and password for basic authentication.
    We include these details in the header of the notification request to authenticate with your server.
  7. Under Additional settings:
    • Turn on Display notification.
  8. Click Test Configuration, to test whether the notification was received at your endpoint.
  9. If your endpoint received the notification, click Save Configuration.

Display notifications will now be sent to the endpoint you specified.

Display notification types

When you receive a display notification, the type of notification is indicated by the event specified in a ReferenceID property. Use the event to present a message to your store staff, informing them of the progress of the transaction.

Event Description
TENDER_CREATED

The tender was successfully created.

In addition to the event (TENDER_CREATED) being provided in the ReferenceID, the TransactionID and TimeStamp are also provided.

For an example of this notification, see TENDER_CREATED

CARD_DETAILS_PROVIDED The card details have been entered.
CARD_INSERTED

The shopper has inserted their card into the terminal.

For an example of this notification, see CARD_INSERTED

CARD_PRESENTED The shopper has presented the card to the terminal's contactless reader.
CARD_SWIPED

The shopper has swiped their card.

For an example of this notification, see CARD_SWIPED

WAIT_FOR_APP_SELECTION

The terminal is waiting for the shopper to select a payment application.

For an example of this notification, see WAIT_FOR APP_SELECTION

APPLICATION_SELECTED

The shopper has selected their preferred payment application.

For an example of this notification, see APPLICATION_SELECTED

ASK_SIGNATURE The terminal has requested a signature from the shopper.
WAIT_FOR_PIN

The terminal is waiting for the shopper to enter their PIN.

For an example of this notification, see WAIT_FOR_PIN

CHECK_SIGNATURE The signature is ready to be checked by store staff.
PIN_DIGIT_ENTERED

The shopper has entered a digit of their PIN.

For an example of this notification, see PIN_DIGIT_ENTERED

PIN_ENTERED

The shopper has finished entering their PIN.

For an example of this notification, see PIN_ENTERED

SIGNATURE_CHECKED The signature has been checked by store staff.
PRINT_RECEIPT

The terminal is printing the receipt.

For an example of this notification, see PRINT_RECEIPT

RECEIPT_PRINTED The terminal has finished printing the receipt.
CARD_REMOVED

The shopper has removed their card from the terminal.

For an example of this notification, see CARD_REMOVED

TENDER_FINAL

The tender was finished (the shopper either completed or abandoned the transaction).

In addition to the event (TENDER_FINAL) being provided in the ReferenceID, the Result of the transaction, TimeStamp, and TransactionID are also provided.

For an example of this notification, see TENDER_FINAL

ASK_DCC The terminal is asking whether the shopper requires dynamic currency conversion.
ASK_GRATUITY The terminal is waiting for a possible gratuity.
BALANCE_QUERY_COMPLETED Balance query completed on the terminal.
BALANCE_QUERY_STARTED

Balance query started on the terminal.

For an example of this notification, see BALANCE_QUERY_STARTED

DCC_ACCEPTED The shopper accepted the dynamic currency conversion request.
DCC_REJECTED The shopper rejected the dynamic currency conversion request.
GRATUITY_ENTERED

The shopper has entered a gratuity on the terminal.

For an example of this notification, see GRATUITY_ENTERED

LOAD_STARTED

Gift card load has been initated.

For an example of this notification, see LOAD_STARTED

LOAD_COMPLETED Gift card load has been completed.
PROVIDE_CARD_DETAILS

The terminal is waiting for card details to be entered manually.

For an example of this notification, see PROVIDE_CARD_DETAILS

Examples of display notifications are provided below.

Examples

TENDER_CREATED

{
  "SaleToPOIRequest":{
    "DisplayRequest":{
      "DisplayOutput":[
        {
          "OutputContent":{
            "OutputFormat":"MessageRef",
            "PredefinedContent":{
              "ReferenceID":"TransactionID=oLkO001517998574000&TimeStamp=2018-02-07T10%3a16%3a14.000Z&event=TENDER_CREATED"
            }
          },
          "InfoQualify":"Status",
          "Device":"CashierDisplay",
          "ResponseRequiredFlag":false
        }
      ]
    },
    "MessageHeader":{
      "SaleID":"POSSystemID12345",
      "ProtocolVersion":"3.0",
      "MessageType":"Request",
      "POIID":"V400m-324688179",
      "ServiceID":"0207111617",
      "MessageClass":"Device",
      "MessageCategory":"Display",
      "DeviceID":"1517998562"
    }
  }
}
String saleID = "YOUR_CASH_REGISTER_ID";
String POIID = "YOUR_TERMINAL_ID";
String serviceID = "YOUR_UNIQUE_ATTEMPT_ID";

SaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();
DisplayRequest displayRequest = new DisplayRequest();
DisplayOutput displayOutput = new DisplayOutput();
OutputContent outputContent = new OutputContent();
outputContent.setOutputFormat( OutputFormatType.MESSAGE_REF );
PredefinedContent predefinedContent = new PredefinedContent();
predefinedContent.setReferenceID("TransactionID=oLkO001517998574000&TimeStamp=2018-02-07T10%3a16%3a14.000Z&event=TENDER_CREATED");
outputContent.setPredefinedContent(predefinedContent);
displayOutput.setOutputContent(outputContent);
displayOutput.setInfoQualify( InfoQualifyType.STATUS );
displayOutput.setDevice( DeviceType.CASHIER_DISPLAY );
displayOutput.setResponseRequiredFlag( Boolean.FALSE );
displayRequest.setDisplayOutput(displayOutput);
saleToPOIRequest.setDisplayRequest(displayRequest);

MessageHeader messageHeader = new MessageHeader();
messageHeader.setSaleID(saleID);
messageHeader.setProtocolVersion("3.0");
messageHeader.setMessageType( MessageType.REQUEST );
messageHeader.setPOIID(POIID);
messageHeader.setServiceID(serviceID);
messageHeader.setMessageClass( MessageClassType.DEVICE );
messageHeader.setMessageCategory( MessageCategoryType.DISPLAY );
messageHeader.setDeviceID("1517998562");
saleToPOIRequest.setMessageHeader(messageHeader);
terminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);

CARD_INSERTED

{
  "SaleToPOIRequest":{
    "DisplayRequest":{
      "DisplayOutput":[
        {
          "OutputContent":{
            "OutputFormat":"MessageRef",
            "PredefinedContent":{
              "ReferenceID":"event=CARD_INSERTED"
            }
          },
          "InfoQualify":"Status",
          "Device":"CashierDisplay",
          "ResponseRequiredFlag":false
        }
      ]
    },
    "MessageHeader":{
      "SaleID":"POSSystemID12345",
      "ProtocolVersion":"3.0",
      "MessageType":"Request",
      "POIID":"V400m-324688179",
      "ServiceID":"0207111617",
      "MessageClass":"Device",
      "MessageCategory":"Display",
      "DeviceID":"1517998563"
    }
  }
}
String saleID = "YOUR_CASH_REGISTER_ID";
String POIID = "YOUR_TERMINAL_ID";
String serviceID = "YOUR_UNIQUE_ATTEMPT_ID";

SaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();
DisplayRequest displayRequest = new DisplayRequest();
DisplayOutput displayOutput = new DisplayOutput();
OutputContent outputContent = new OutputContent();
outputContent.setOutputFormat( OutputFormatType.MESSAGE_REF );
PredefinedContent predefinedContent = new PredefinedContent();
predefinedContent.setReferenceID("event=CARD_INSERTED");
outputContent.setPredefinedContent(predefinedContent);
displayOutput.setOutputContent(outputContent);
displayOutput.setInfoQualify( InfoQualifyType.STATUS );
displayOutput.setDevice( DeviceType.CASHIER_DISPLAY );
displayOutput.setResponseRequiredFlag( Boolean.FALSE );
displayRequest.setDisplayOutput(displayOutput);
saleToPOIRequest.setDisplayRequest(displayRequest);

MessageHeader messageHeader = new MessageHeader();
messageHeader.setSaleID(saleID);
messageHeader.setProtocolVersion("3.0");
messageHeader.setMessageType( MessageType.REQUEST );
messageHeader.setPOIID(POIID);
messageHeader.setServiceID(serviceID);
messageHeader.setMessageClass( MessageClassType.DEVICE );
messageHeader.setMessageCategory( MessageCategoryType.DISPLAY );
messageHeader.setDeviceID("1517998563");
saleToPOIRequest.setMessageHeader(messageHeader);
terminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);

CARD_SWIPED

{
  "SaleToPOIRequest":{
    "DisplayRequest":{
      "DisplayOutput":[
        {
          "ResponseRequiredFlag":false,
          "Device":"CashierDisplay",
          "InfoQualify":"Status",
          "OutputContent":{
            "PredefinedContent":{
              "ReferenceID":"event=CARD_SWIPED"
            },
            "OutputFormat":"MessageRef"
          }
        }
      ]
    },
    "MessageHeader":{
      "SaleID":"POSSystemID12345",
      "ProtocolVersion":"3.0",
      "MessageType":"Request",
      "POIID":"V400m-324688179",
      "ServiceID":"0207111617",
      "MessageClass":"Device",
      "MessageCategory":"Display",
      "DeviceID":"1517998573"
    }
  }
}
String saleID = "YOUR_CASH_REGISTER_ID";
String POIID = "YOUR_TERMINAL_ID";
String serviceID = "YOUR_UNIQUE_ATTEMPT_ID";

SaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();
DisplayRequest displayRequest = new DisplayRequest();
DisplayOutput displayOutput = new DisplayOutput();
displayOutput.setResponseRequiredFlag( Boolean.FALSE );
displayOutput.setDevice( DeviceType.CASHIER_DISPLAY );
displayOutput.setInfoQualify( InfoQualifyType.STATUS );
OutputContent outputContent = new OutputContent();
PredefinedContent predefinedContent = new PredefinedContent();
predefinedContent.setReferenceID("event=CARD_SWIPED");
outputContent.setPredefinedContent(predefinedContent);
outputContent.setOutputFormat( OutputFormatType.MESSAGE_REF );
displayOutput.setOutputContent(outputContent);
displayRequest.setDisplayOutput(displayOutput);
saleToPOIRequest.setDisplayRequest(displayRequest);

MessageHeader messageHeader = new MessageHeader();
messageHeader.setSaleID(saleID);
messageHeader.setProtocolVersion("3.0");
messageHeader.setMessageType( MessageType.REQUEST );
messageHeader.setPOIID(POIID);
messageHeader.setServiceID(serviceID);
messageHeader.setMessageClass( MessageClassType.DEVICE );
messageHeader.setMessageCategory( MessageCategoryType.DISPLAY );
messageHeader.setDeviceID("1517998573");
saleToPOIRequest.setMessageHeader(messageHeader);
terminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);

WAIT_FOR_APP_SELECTION

{
  "SaleToPOIRequest":{
    "DisplayRequest":{
      "DisplayOutput":[
        {
          "OutputContent":{
            "OutputFormat":"MessageRef",
            "PredefinedContent":{
              "ReferenceID":"event=WAIT_FOR_APP_SELECTION"
            }
          },
          "InfoQualify":"Status",
          "Device":"CashierDisplay",
          "ResponseRequiredFlag":false
        }
      ]
    },
    "MessageHeader":{
      "SaleID":"POSSystemID12345",
      "ProtocolVersion":"3.0",
      "MessageType":"Request",
      "POIID":"V400m-324688179",
      "ServiceID":"0207111617",
      "MessageClass":"Device",
      "MessageCategory":"Display",
      "DeviceID":"1517998564"
    }
  }
}
String saleID = "YOUR_CASH_REGISTER_ID";
String POIID = "YOUR_TERMINAL_ID";
String serviceID = "YOUR_UNIQUE_ATTEMPT_ID";

SaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();
DisplayRequest displayRequest = new DisplayRequest();
DisplayOutput displayOutput = new DisplayOutput();
OutputContent outputContent = new OutputContent();
outputContent.setOutputFormat( OutputFormatType.MESSAGE_REF );
PredefinedContent predefinedContent = new PredefinedContent();
predefinedContent.setReferenceID("event=WAIT_FOR_APP_SELECTION");
outputContent.setPredefinedContent(predefinedContent);
displayOutput.setOutputContent(outputContent);
displayOutput.setInfoQualify( InfoQualifyType.STATUS );
displayOutput.setDevice( DeviceType.CASHIER_DISPLAY );
displayOutput.setResponseRequiredFlag( Boolean.FALSE );
displayRequest.setDisplayOutput(displayOutput);
saleToPOIRequest.setDisplayRequest(displayRequest);

MessageHeader messageHeader = new MessageHeader();
messageHeader.setSaleID(saleID);
messageHeader.setProtocolVersion("3.0");
messageHeader.setMessageType( MessageType.REQUEST );
messageHeader.setPOIID(POIID);
messageHeader.setServiceID(serviceID);
messageHeader.setMessageClass( MessageClassType.DEVICE );
messageHeader.setMessageCategory( MessageCategoryType.DISPLAY );
messageHeader.setDeviceID("1517998564");
saleToPOIRequest.setMessageHeader(messageHeader);
terminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);

APPLICATION_SELECTED

{
  "SaleToPOIRequest":{
    "DisplayRequest":{
      "DisplayOutput":[
        {
          "OutputContent":{
            "OutputFormat":"MessageRef",
            "PredefinedContent":{
              "ReferenceID":"event=APPLICATION_SELECTED"
            }
          },
          "InfoQualify":"Status",
          "Device":"CashierDisplay",
          "ResponseRequiredFlag":false
        }
      ]
    },
    "MessageHeader":{
      "SaleID":"POSSystemID12345",
      "ProtocolVersion":"3.0",
      "MessageType":"Request",
      "POIID":"V400m-324688179",
      "ServiceID":"0207111617",
      "MessageClass":"Device",
      "MessageCategory":"Display",
      "DeviceID":"1517998565"
    }
  }
}
String saleID = "YOUR_CASH_REGISTER_ID";
String POIID = "YOUR_TERMINAL_ID";
String serviceID = "YOUR_UNIQUE_ATTEMPT_ID";

SaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();
DisplayRequest displayRequest = new DisplayRequest();
DisplayOutput displayOutput = new DisplayOutput();
OutputContent outputContent = new OutputContent();
outputContent.setOutputFormat( OutputFormatType.MESSAGE_REF );
PredefinedContent predefinedContent = new PredefinedContent();
predefinedContent.setReferenceID("event=APPLICATION_SELECTED");
outputContent.setPredefinedContent(predefinedContent);
displayOutput.setOutputContent(outputContent);
displayOutput.setInfoQualify( InfoQualifyType.STATUS );
displayOutput.setDevice( DeviceType.CASHIER_DISPLAY );
displayOutput.setResponseRequiredFlag( Boolean.FALSE );
displayRequest.setDisplayOutput(displayOutput);
saleToPOIRequest.setDisplayRequest(displayRequest);

MessageHeader messageHeader = new MessageHeader();
messageHeader.setSaleID(saleID);
messageHeader.setProtocolVersion("3.0");
messageHeader.setMessageType( MessageType.REQUEST );
messageHeader.setPOIID(POIID);
messageHeader.setServiceID(serviceID);
messageHeader.setMessageClass( MessageClassType.DEVICE );
messageHeader.setMessageCategory( MessageCategoryType.DISPLAY );
messageHeader.setDeviceID("1517998565");
saleToPOIRequest.setMessageHeader(messageHeader);
terminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);

WAIT_FOR_PIN

{
  "SaleToPOIRequest":{
    "DisplayRequest":{
      "DisplayOutput":[
        {
          "OutputContent":{
            "OutputFormat":"MessageRef",
            "PredefinedContent":{
              "ReferenceID":"event=WAIT_FOR_PIN"
            }
          },
          "InfoQualify":"Status",
          "Device":"CashierDisplay",
          "ResponseRequiredFlag":false
        }
      ]
    },
    "MessageHeader":{
      "SaleID":"POSSystemID12345",
      "ProtocolVersion":"3.0",
      "MessageType":"Request",
      "POIID":"V400m-324688179",
      "ServiceID":"0207111617",
      "MessageClass":"Device",
      "MessageCategory":"Display",
      "DeviceID":"1517998566"
    }
  }
}
String saleID = "YOUR_CASH_REGISTER_ID";
String POIID = "YOUR_TERMINAL_ID";
String serviceID = "YOUR_UNIQUE_ATTEMPT_ID";

SaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();
DisplayRequest displayRequest = new DisplayRequest();
DisplayOutput displayOutput = new DisplayOutput();
OutputContent outputContent = new OutputContent();
outputContent.setOutputFormat( OutputFormatType.MESSAGE_REF );
PredefinedContent predefinedContent = new PredefinedContent();
predefinedContent.setReferenceID("event=WAIT_FOR_PIN");
outputContent.setPredefinedContent(predefinedContent);
displayOutput.setOutputContent(outputContent);
displayOutput.setInfoQualify( InfoQualifyType.STATUS );
displayOutput.setDevice( DeviceType.CASHIER_DISPLAY );
displayOutput.setResponseRequiredFlag( Boolean.FALSE );
displayRequest.setDisplayOutput(displayOutput);
saleToPOIRequest.setDisplayRequest(displayRequest);

MessageHeader messageHeader = new MessageHeader();
messageHeader.setSaleID(saleID);
messageHeader.setProtocolVersion("3.0");
messageHeader.setMessageType( MessageType.REQUEST );
messageHeader.setPOIID(POIID);
messageHeader.setServiceID(serviceID);
messageHeader.setMessageClass( MessageClassType.DEVICE );
messageHeader.setMessageCategory( MessageCategoryType.DISPLAY );
messageHeader.setDeviceID("1517998566");
saleToPOIRequest.setMessageHeader(messageHeader);
terminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);

PIN_DIGIT_ENTERED

{
  "SaleToPOIRequest":{
    "DisplayRequest":{
      "DisplayOutput":[
        {
          "OutputContent":{
            "OutputFormat":"MessageRef",
            "PredefinedContent":{
              "ReferenceID":"event=PIN_DIGIT_ENTERED"
            }
          },
          "InfoQualify":"Status",
          "Device":"CashierDisplay",
          "ResponseRequiredFlag":false
        }
      ]
    },
    "MessageHeader":{
      "SaleID":"POSSystemID12345",
      "ProtocolVersion":"3.0",
      "MessageType":"Request",
      "POIID":"V400m-324688179",
      "ServiceID":"0207111617",
      "MessageClass":"Device",
      "MessageCategory":"Display",
      "DeviceID":"1517998569"
    }
  }
}
String saleID = "YOUR_CASH_REGISTER_ID";
String POIID = "YOUR_TERMINAL_ID";
String serviceID = "YOUR_UNIQUE_ATTEMPT_ID";

SaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();
DisplayRequest displayRequest = new DisplayRequest();
DisplayOutput displayOutput = new DisplayOutput();
OutputContent outputContent = new OutputContent();
outputContent.setOutputFormat( OutputFormatType.MESSAGE_REF );
PredefinedContent predefinedContent = new PredefinedContent();
predefinedContent.setReferenceID("event=PIN_DIGIT_ENTERED");
outputContent.setPredefinedContent(predefinedContent);
displayOutput.setOutputContent(outputContent);
displayOutput.setInfoQualify( InfoQualifyType.STATUS );
displayOutput.setDevice( DeviceType.CASHIER_DISPLAY );
displayOutput.setResponseRequiredFlag( Boolean.FALSE );
displayRequest.setDisplayOutput(displayOutput);
saleToPOIRequest.setDisplayRequest(displayRequest);

MessageHeader messageHeader = new MessageHeader();
messageHeader.setSaleID(saleID);
messageHeader.setProtocolVersion("3.0");
messageHeader.setMessageType( MessageType.REQUEST );
messageHeader.setPOIID(POIID);
messageHeader.setServiceID(serviceID);
messageHeader.setMessageClass( MessageClassType.DEVICE );
messageHeader.setMessageCategory( MessageCategoryType.DISPLAY );
messageHeader.setDeviceID("1517998569");
saleToPOIRequest.setMessageHeader(messageHeader);
terminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);

PIN_ENTERED

{
  "SaleToPOIRequest":{
    "DisplayRequest":{
      "DisplayOutput":[
        {
          "OutputContent":{
            "OutputFormat":"MessageRef",
            "PredefinedContent":{
              "ReferenceID":"event=PIN_ENTERED"
            }
          },
          "InfoQualify":"Status",
          "Device":"CashierDisplay",
          "ResponseRequiredFlag":false
        }
      ]
    },
    "MessageHeader":{
      "SaleID":"POSSystemID12345",
      "ProtocolVersion":"3.0",
      "MessageType":"Request",
      "POIID":"V400m-324688179",
      "ServiceID":"0207111617",
      "MessageClass":"Device",
      "MessageCategory":"Display",
      "DeviceID":"1517998571"
    }
  }
}
String saleID = "YOUR_CASH_REGISTER_ID";
String POIID = "YOUR_TERMINAL_ID";
String serviceID = "YOUR_UNIQUE_ATTEMPT_ID";

SaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();
DisplayRequest displayRequest = new DisplayRequest();
DisplayOutput displayOutput = new DisplayOutput();
OutputContent outputContent = new OutputContent();
outputContent.setOutputFormat( OutputFormatType.MESSAGE_REF );
PredefinedContent predefinedContent = new PredefinedContent();
predefinedContent.setReferenceID("event=PIN_ENTERED");
outputContent.setPredefinedContent(predefinedContent);
displayOutput.setOutputContent(outputContent);
displayOutput.setInfoQualify( InfoQualifyType.STATUS );
displayOutput.setDevice( DeviceType.CASHIER_DISPLAY );
displayOutput.setResponseRequiredFlag( Boolean.FALSE );
displayRequest.setDisplayOutput(displayOutput);
saleToPOIRequest.setDisplayRequest(displayRequest);

MessageHeader messageHeader = new MessageHeader();
messageHeader.setSaleID(saleID);
messageHeader.setProtocolVersion("3.0");
messageHeader.setMessageType( MessageType.REQUEST );
messageHeader.setPOIID(POIID);
messageHeader.setServiceID(serviceID);
messageHeader.setMessageClass( MessageClassType.DEVICE );
messageHeader.setMessageCategory( MessageCategoryType.DISPLAY );
messageHeader.setDeviceID("1517998571");
saleToPOIRequest.setMessageHeader(messageHeader);
terminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);

{
  "SaleToPOIRequest":{
    "DisplayRequest":{
      "DisplayOutput":[
        {
          "OutputContent":{
            "OutputFormat":"MessageRef",
            "PredefinedContent":{
              "ReferenceID":"event=PRINT_RECEIPT"
            }
          },
          "InfoQualify":"Status",
          "Device":"CashierDisplay",
          "ResponseRequiredFlag":false
        }
      ]
    },
    "MessageHeader":{
      "SaleID":"POSSystemID12345",
      "ProtocolVersion":"3.0",
      "MessageType":"Request",
      "POIID":"V400m-324688179",
      "ServiceID":"0207111617",
      "MessageClass":"Device",
      "MessageCategory":"Display",
      "DeviceID":"1517998572"
    }
  }
}
String saleID = "YOUR_CASH_REGISTER_ID";
String POIID = "YOUR_TERMINAL_ID";
String serviceID = "YOUR_UNIQUE_ATTEMPT_ID";

SaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();
DisplayRequest displayRequest = new DisplayRequest();
DisplayOutput displayOutput = new DisplayOutput();
OutputContent outputContent = new OutputContent();
outputContent.setOutputFormat( OutputFormatType.MESSAGE_REF );
PredefinedContent predefinedContent = new PredefinedContent();
predefinedContent.setReferenceID("event=PRINT_RECEIPT");
outputContent.setPredefinedContent(predefinedContent);
displayOutput.setOutputContent(outputContent);
displayOutput.setInfoQualify( InfoQualifyType.STATUS );
displayOutput.setDevice( DeviceType.CASHIER_DISPLAY );
displayOutput.setResponseRequiredFlag( Boolean.FALSE );
displayRequest.setDisplayOutput(displayOutput);
saleToPOIRequest.setDisplayRequest(displayRequest);

MessageHeader messageHeader = new MessageHeader();
messageHeader.setSaleID(saleID);
messageHeader.setProtocolVersion("3.0");
messageHeader.setMessageType( MessageType.REQUEST );
messageHeader.setPOIID(POIID);
messageHeader.setServiceID(serviceID);
messageHeader.setMessageClass( MessageClassType.DEVICE );
messageHeader.setMessageCategory( MessageCategoryType.DISPLAY );
messageHeader.setDeviceID("1517998572");
saleToPOIRequest.setMessageHeader(messageHeader);
terminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);

CARD_REMOVED

{
  "SaleToPOIRequest":{
    "DisplayRequest":{
      "DisplayOutput":[
        {
          "OutputContent":{
            "OutputFormat":"MessageRef",
            "PredefinedContent":{
              "ReferenceID":"event=CARD_REMOVED"
            }
          },
          "InfoQualify":"Status",
          "Device":"CashierDisplay",
          "ResponseRequiredFlag":false
        }
      ]
    },
    "MessageHeader":{
      "SaleID":"POSSystemID12345",
      "ProtocolVersion":"3.0",
      "MessageType":"Request",
      "POIID":"V400m-324688179",
      "ServiceID":"0207111617",
      "MessageClass":"Device",
      "MessageCategory":"Display",
      "DeviceID":"1517998573"
    }
  }
}
String saleID = "YOUR_CASH_REGISTER_ID";
String POIID = "YOUR_TERMINAL_ID";
String serviceID = "YOUR_UNIQUE_ATTEMPT_ID";

SaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();
DisplayRequest displayRequest = new DisplayRequest();
DisplayOutput displayOutput = new DisplayOutput();
OutputContent outputContent = new OutputContent();
outputContent.setOutputFormat( OutputFormatType.MESSAGE_REF );
PredefinedContent predefinedContent = new PredefinedContent();
predefinedContent.setReferenceID("event=CARD_REMOVED");
outputContent.setPredefinedContent(predefinedContent);
displayOutput.setOutputContent(outputContent);
displayOutput.setInfoQualify( InfoQualifyType.STATUS );
displayOutput.setDevice( DeviceType.CASHIER_DISPLAY );
displayOutput.setResponseRequiredFlag( Boolean.FALSE );
displayRequest.setDisplayOutput(displayOutput);
saleToPOIRequest.setDisplayRequest(displayRequest);

MessageHeader messageHeader = new MessageHeader();
messageHeader.setSaleID(saleID);
messageHeader.setProtocolVersion("3.0");
messageHeader.setMessageType( MessageType.REQUEST );
messageHeader.setPOIID(POIID);
messageHeader.setServiceID(serviceID);
messageHeader.setMessageClass( MessageClassType.DEVICE );
messageHeader.setMessageCategory( MessageCategoryType.DISPLAY );
messageHeader.setDeviceID("1517998573");
saleToPOIRequest.setMessageHeader(messageHeader);
terminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);

TENDER_FINAL

{
  "SaleToPOIRequest":{
    "DisplayRequest":{
      "DisplayOutput":[
        {
          "ResponseRequiredFlag":false,
          "Device":"CashierDisplay",
          "InfoQualify":"Status",
          "OutputContent":{
            "PredefinedContent":{
              "ReferenceID":"Result=Success&TimeStamp=2018-09-27T14:40:18.000Z&TransactionID=faQm001538059218000.8815380592267566&event=TENDER_FINAL"
            },
            "OutputFormat":"MessageRef"
          }
        }
      ]
    },
    "MessageHeader":{
      "SaleID":"POSSystemID12345",
      "ProtocolVersion":"3.0",
      "MessageType":"Request",
      "POIID":"V400m-324688179",
      "ServiceID":"0207111617",
      "MessageClass":"Device",
      "MessageCategory":"Display",
      "DeviceID":"1517998573"
    }
  }
}
String saleID = "YOUR_CASH_REGISTER_ID";
String POIID = "YOUR_TERMINAL_ID";
String serviceID = "YOUR_UNIQUE_ATTEMPT_ID";

SaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();
DisplayRequest displayRequest = new DisplayRequest();
DisplayOutput displayOutput = new DisplayOutput();
displayOutput.setResponseRequiredFlag( Boolean.FALSE );
displayOutput.setDevice( DeviceType.CASHIER_DISPLAY );
displayOutput.setInfoQualify( InfoQualifyType.STATUS );
OutputContent outputContent = new OutputContent();
PredefinedContent predefinedContent = new PredefinedContent();
predefinedContent.setReferenceID("Result=Success&TimeStamp=2018-09-27T14:40:18.000Z&TransactionID=faQm001538059218000.8815380592267566&event=TENDER_FINAL");
outputContent.setPredefinedContent(predefinedContent);
outputContent.setOutputFormat( OutputFormatType.MESSAGE_REF );
displayOutput.setOutputContent(outputContent);
displayRequest.setDisplayOutput(displayOutput);
saleToPOIRequest.setDisplayRequest(displayRequest);

MessageHeader messageHeader = new MessageHeader();
messageHeader.setSaleID(saleID);
messageHeader.setProtocolVersion("3.0");
messageHeader.setMessageType( MessageType.REQUEST );
messageHeader.setPOIID(POIID);
messageHeader.setServiceID(serviceID);
messageHeader.setMessageClass( MessageClassType.DEVICE );
messageHeader.setMessageCategory( MessageCategoryType.DISPLAY );
messageHeader.setDeviceID("1517998573");
saleToPOIRequest.setMessageHeader(messageHeader);
terminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);

BALANCE_QUERY_STARTED

{
  "SaleToPOIRequest":{
    "DisplayRequest":{
      "DisplayOutput":[
        {
          "ResponseRequiredFlag":false,
          "Device":"CashierDisplay",
          "InfoQualify":"Status",
          "OutputContent":{
            "PredefinedContent":{
              "ReferenceID":"event=BALANCE_QUERY_STARTED"
            },
            "OutputFormat":"MessageRef"
          }
        }
      ]
    },
    "MessageHeader":{
      "SaleID":"Ray",
      "MessageClass":"Device",
      "MessageCategory":"Display",
      "ServiceID":"S34",
      "POIID":"V400m-324688179",
      "MessageType":"Request",
      "DeviceID":"39288033"
    }
  }
}
String saleID = "YOUR_CASH_REGISTER_ID";
String serviceID = "YOUR_UNIQUE_ATTEMPT_ID";
String POIID = "YOUR_TERMINAL_ID";

SaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();
DisplayRequest displayRequest = new DisplayRequest();
DisplayOutput displayOutput = new DisplayOutput();
displayOutput.setResponseRequiredFlag( Boolean.FALSE );
displayOutput.setDevice( DeviceType.CASHIER_DISPLAY );
displayOutput.setInfoQualify( InfoQualifyType.STATUS );
OutputContent outputContent = new OutputContent();
PredefinedContent predefinedContent = new PredefinedContent();
predefinedContent.setReferenceID("event=BALANCE_QUERY_STARTED");
outputContent.setPredefinedContent(predefinedContent);
outputContent.setOutputFormat( OutputFormatType.MESSAGE_REF );
displayOutput.setOutputContent(outputContent);
displayRequest.setDisplayOutput(displayOutput);
saleToPOIRequest.setDisplayRequest(displayRequest);

MessageHeader messageHeader = new MessageHeader();
messageHeader.setSaleID(saleID);
messageHeader.setMessageClass( MessageClassType.DEVICE );
messageHeader.setMessageCategory( MessageCategoryType.DISPLAY );
messageHeader.setServiceID(serviceID);
messageHeader.setPOIID(POIID);
messageHeader.setMessageType( MessageType.REQUEST );
messageHeader.setDeviceID("39288033");
saleToPOIRequest.setMessageHeader(messageHeader);
terminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);

GRATUITY_ENTERED

{
  "SaleToPOIRequest":{
    "DisplayRequest":{
      "DisplayOutput":[
        {
          "ResponseRequiredFlag":false,
          "Device":"CashierDisplay",
          "InfoQualify":"Status",
          "OutputContent":{
            "PredefinedContent":{
              "ReferenceID":"event=GRATUITY_ENTERED"
            },
            "OutputFormat":"MessageRef"
          }
        }
      ]
    },
    "MessageHeader":{
      "SaleID":"POSSystemID12345",
      "ProtocolVersion":"3.0",
      "MessageType":"Request",
      "POIID":"V400m-324688179",
      "ServiceID":"0207111617",
      "MessageClass":"Device",
      "MessageCategory":"Display",
      "DeviceID":"1517998573"
    }
  }
}
String saleID = "YOUR_CASH_REGISTER_ID";
String POIID = "YOUR_TERMINAL_ID";
String serviceID = "YOUR_UNIQUE_ATTEMPT_ID";

SaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();
DisplayRequest displayRequest = new DisplayRequest();
DisplayOutput displayOutput = new DisplayOutput();
displayOutput.setResponseRequiredFlag( Boolean.FALSE );
displayOutput.setDevice( DeviceType.CASHIER_DISPLAY );
displayOutput.setInfoQualify( InfoQualifyType.STATUS );
OutputContent outputContent = new OutputContent();
PredefinedContent predefinedContent = new PredefinedContent();
predefinedContent.setReferenceID("event=GRATUITY_ENTERED");
outputContent.setPredefinedContent(predefinedContent);
outputContent.setOutputFormat( OutputFormatType.MESSAGE_REF );
displayOutput.setOutputContent(outputContent);
displayRequest.setDisplayOutput(displayOutput);
saleToPOIRequest.setDisplayRequest(displayRequest);

MessageHeader messageHeader = new MessageHeader();
messageHeader.setSaleID(saleID);
messageHeader.setProtocolVersion("3.0");
messageHeader.setMessageType( MessageType.REQUEST );
messageHeader.setPOIID(POIID);
messageHeader.setServiceID(serviceID);
messageHeader.setMessageClass( MessageClassType.DEVICE );
messageHeader.setMessageCategory( MessageCategoryType.DISPLAY );
messageHeader.setDeviceID("1517998573");
saleToPOIRequest.setMessageHeader(messageHeader);
terminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);

LOAD_STARTED

{
  "SaleToPOIRequest":{
    "DisplayRequest":{
      "DisplayOutput":[
        {
          "ResponseRequiredFlag":false,
          "Device":"CashierDisplay",
          "InfoQualify":"Status",
          "OutputContent":{
            "PredefinedContent":{
              "ReferenceID":"event=LOAD_STARTED"
            },
            "OutputFormat":"MessageRef"
          }
        }
      ]
    },
    "MessageHeader":{
      "SaleID":"POSSystemID12345",
      "ProtocolVersion":"3.0",
      "MessageType":"Request",
      "POIID":"V400m-324688179",
      "ServiceID":"0207111617",
      "MessageClass":"Device",
      "MessageCategory":"Display",
      "DeviceID":"1517998573"
    }
  }
}
String saleID = "YOUR_CASH_REGISTER_ID";
String POIID = "YOUR_TERMINAL_ID";
String serviceID = "YOUR_UNIQUE_ATTEMPT_ID";

SaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();
DisplayRequest displayRequest = new DisplayRequest();
DisplayOutput displayOutput = new DisplayOutput();
displayOutput.setResponseRequiredFlag( Boolean.FALSE );
displayOutput.setDevice( DeviceType.CASHIER_DISPLAY );
displayOutput.setInfoQualify( InfoQualifyType.STATUS );
OutputContent outputContent = new OutputContent();
PredefinedContent predefinedContent = new PredefinedContent();
predefinedContent.setReferenceID("event=LOAD_STARTED");
outputContent.setPredefinedContent(predefinedContent);
outputContent.setOutputFormat( OutputFormatType.MESSAGE_REF );
displayOutput.setOutputContent(outputContent);
displayRequest.setDisplayOutput(displayOutput);
saleToPOIRequest.setDisplayRequest(displayRequest);

MessageHeader messageHeader = new MessageHeader();
messageHeader.setSaleID(saleID);
messageHeader.setProtocolVersion("3.0");
messageHeader.setMessageType( MessageType.REQUEST );
messageHeader.setPOIID(POIID);
messageHeader.setServiceID(serviceID);
messageHeader.setMessageClass( MessageClassType.DEVICE );
messageHeader.setMessageCategory( MessageCategoryType.DISPLAY );
messageHeader.setDeviceID("1517998573");
saleToPOIRequest.setMessageHeader(messageHeader);
terminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);

PROVIDE_CARD_DETAILS

{
  "SaleToPOIRequest":{
    "DisplayRequest":{
      "DisplayOutput":[
        {
          "ResponseRequiredFlag":false,
          "Device":"CashierDisplay",
          "InfoQualify":"Status",
          "OutputContent":{
            "PredefinedContent":{
              "ReferenceID":"event=PROVIDE_CARD_DETAILS"
            },
            "OutputFormat":"MessageRef"
          }
        }
      ]
    },
    "MessageHeader":{
      "SaleID":"POSSystemID12345",
      "ProtocolVersion":"3.0",
      "MessageType":"Request",
      "POIID":"V400m-324688179",
      "ServiceID":"0207111617",
      "MessageClass":"Device",
      "MessageCategory":"Display",
      "DeviceID":"1517998573"
    }
  }
}
String saleID = "YOUR_CASH_REGISTER_ID";
String POIID = "YOUR_TERMINAL_ID";
String serviceID = "YOUR_UNIQUE_ATTEMPT_ID";

SaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();
DisplayRequest displayRequest = new DisplayRequest();
DisplayOutput displayOutput = new DisplayOutput();
displayOutput.setResponseRequiredFlag( Boolean.FALSE );
displayOutput.setDevice( DeviceType.CASHIER_DISPLAY );
displayOutput.setInfoQualify( InfoQualifyType.STATUS );
OutputContent outputContent = new OutputContent();
PredefinedContent predefinedContent = new PredefinedContent();
predefinedContent.setReferenceID("event=PROVIDE_CARD_DETAILS");
outputContent.setPredefinedContent(predefinedContent);
outputContent.setOutputFormat( OutputFormatType.MESSAGE_REF );
displayOutput.setOutputContent(outputContent);
displayRequest.setDisplayOutput(displayOutput);
saleToPOIRequest.setDisplayRequest(displayRequest);

MessageHeader messageHeader = new MessageHeader();
messageHeader.setSaleID(saleID);
messageHeader.setProtocolVersion("3.0");
messageHeader.setMessageType( MessageType.REQUEST );
messageHeader.setPOIID(POIID);
messageHeader.setServiceID(serviceID);
messageHeader.setMessageClass( MessageClassType.DEVICE );
messageHeader.setMessageCategory( MessageCategoryType.DISPLAY );
messageHeader.setDeviceID("1517998573");
saleToPOIRequest.setMessageHeader(messageHeader);
terminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);

Next steps