Are you looking for test card numbers?

Would you like to contact support?

Point-of-sale icon

Display notifications

Receive terminal-generated display notification webhooks on your cash register.

During a transaction or tender, the payment terminal generates display notifications. You can present these on your cash register to keep your store staff up-to-date on the progress of the tender. For example, whether the shopper has selected Dynamic Currency Conversion, or finished entering their PIN.

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. Adyen requires you to use HTTPS endpoints with TLSv1.2. To receive notifications, you need a server that has:

  • An endpoint that can receive a JSON call.
  • For live environments: An open TCP port for HTTPS traffic (443, 8443, or 8843) with TLSv1.2.
  • For testing environments: An open TCP port for HTTP traffic (80, 8080, or 8888) or HTTPS traffic (448, 8443, or 8843) with TLSv1.2.
  • A username and password for basic authentication.

Step 2: Accept notifications

To ensure that your server is properly accepting notifications, we require you to acknowledge every notification of any type with an [accepted] response.

If we don't receive this response within 10 seconds, for example because your server is down, all notifications to your endpoint will be queued and retried. For more information, refer to Queued notifications.

When your server receives a notification:

  1. Store the notification in your database.
  2. Acknowledge the notification with an HTTP 200 OK and the following response body:
    [accepted]
  3. Apply your business logic.
    Make sure that you acknowledge the notification before applying any business logic, because a breakage in your business logic could otherwise prevent important updates from reaching your system.

Step 3: Set up notifications in your Customer Area

Enter your server's details, and select additional information that you want 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 Developers > Webhooks.
  3. In the upper-right corner, select the + Webhook button.
  4. Next to Terminal API details, select Add.
  5. Under Transport, enter your server's:
    • URL. Make sure that this is a public URL.
    • SSL (TLS) Version. Select TLSv1.2.
  6. Select the Active checkbox.
  7. 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.
  8. Under Additional settings:
    • Turn on Display notification.
  9. Select Test Configuration, to test whether the notification was received at your endpoint.
  10. If your endpoint received the notification, select 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 the ReferenceID field. Use the event to present a message to your store staff, informing them of the progress of the transaction.
The main display notification types are:

Event Description
TENDER_CREATED

The tender has started.

The ReferenceID includes: The event TENDER_CREATED, and the TimeStamp and TransactionID of the transaction.

CARD_INSERTED

The shopper has inserted their card into the terminal.

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

The shopper has swiped their card.

WAIT_FOR APP_SELECTION

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

APPLICATION_SELECTED

The shopper has selected their preferred payment application.

ASK_SIGNATURE The terminal has prompted the shopper to provide their signature.
CHECK_SIGNATURE The signature is ready to be checked by store staff.
SIGNATURE_CHECKED The signature has been checked by store staff.
WAIT_FOR_PIN

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

PIN_DIGIT_ENTERED

The shopper has entered a digit of their PIN.

PIN_ENTERED

The shopper has finished entering their PIN.

PRINT_RECEIPT

The terminal is printing the receipt.

RECEIPT_PRINTED The terminal has finished printing the receipt.
CARD_REMOVED

The shopper has removed their card from the terminal.

TENDER_FINAL

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

The ReferenceID includes: The event TENDER_FINAL, and the Result, TimeStamp, and TransactionID of the transaction.

ASK_DCC The terminal is asking whether the shopper requires dynamic currency conversion.
DCC_ACCEPTED The shopper accepted the dynamic currency conversion request.
DCC_REJECTED The shopper rejected the dynamic currency conversion request.
ASK_GRATUITY The terminal is waiting for a possible tip.
GRATUITY_ENTERED

The shopper has entered a gratuity on the terminal.

BALANCE_QUERY_STARTED

Balance check started on the terminal.

BALANCE_QUERY_COMPLETED Balance check completed on the terminal.
LOAD_STARTED

Gift card load has been initiated.

LOAD_COMPLETED Gift card load has been completed.
PROVIDE_CARD_DETAILS

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

CARD_DETAILS_PROVIDED The card details have been entered.

Examples of display notifications are provided below.

Examples

TENDER_CREATED

{
  "SaleToPOIRequest":{
    "DisplayRequest":{
      "DisplayOutput":[
        {
          "Device": "CashierDisplay",
          "InfoQualify": "Status",
          "OutputContent": {
            "OutputFormat": "MessageRef",
            "PredefinedContent": {
              "ReferenceID": "TransactionID=oLkO001517998574000&TimeStamp=2018-02-07T10%3a16%3a14.000Z&event=TENDER_CREATED"
            }
          },
          "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":[
        {
          "Device":"CashierDisplay",
          "InfoQualify":"Status",
          "OutputContent":{
            "OutputFormat":"MessageRef",
            "PredefinedContent":{
              "ReferenceID":"event=CARD_INSERTED"
            }
          },
          "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":[
        {
          "Device":"CashierDisplay",
          "InfoQualify":"Status",
          "OutputContent":{
            "OutputFormat":"MessageRef",
            "PredefinedContent":{
              "ReferenceID":"event=CARD_SWIPED"
            }
          },
          "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();
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":[
        {
          "Device":"CashierDisplay",
          "InfoQualify":"Status",
          "OutputContent":{
            "OutputFormat":"MessageRef",
            "PredefinedContent":{
              "ReferenceID":"event=WAIT_FOR_APP_SELECTION"
            }
          },
          "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":[
        {
          "Device":"CashierDisplay",
          "InfoQualify":"Status",
          "OutputContent":{
            "OutputFormat":"MessageRef",
            "PredefinedContent":{
              "ReferenceID":"event=APPLICATION_SELECTED"
            }
          },
          "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":[
        {
          "Device":"CashierDisplay",
          "InfoQualify":"Status",
          "OutputContent":{
            "OutputFormat":"MessageRef",
            "PredefinedContent":{
              "ReferenceID":"event=WAIT_FOR_PIN"
            }
          },
          "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":[
        {
          "Device":"CashierDisplay",
          "InfoQualify":"Status",
          "OutputContent":{
            "OutputFormat":"MessageRef",
            "PredefinedContent":{
              "ReferenceID":"event=PIN_DIGIT_ENTERED"
            }
          },
          "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":[
        {
          "Device":"CashierDisplay",
          "InfoQualify":"Status",
          "OutputContent":{
            "OutputFormat":"MessageRef",
            "PredefinedContent":{
              "ReferenceID":"event=PIN_ENTERED"
            }
          },
          "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":[
        {
          "Device":"CashierDisplay",
          "InfoQualify":"Status",
          "OutputContent":{
            "OutputFormat":"MessageRef",
            "PredefinedContent":{
              "ReferenceID":"event=PRINT_RECEIPT"
            }
          },
          "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":[
        {
          "Device":"CashierDisplay",
          "InfoQualify":"Status",
          "OutputContent":{
            "OutputFormat":"MessageRef",
            "PredefinedContent":{
              "ReferenceID":"event=CARD_REMOVED"
            }
          },
          "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":[
        {
          "Device":"CashierDisplay",
          "InfoQualify":"Status",
          "OutputContent":{
            "OutputFormat":"MessageRef",
            "PredefinedContent":{
              "ReferenceID":"Result=Success&TimeStamp=2018-09-27T14:40:18.000Z&TransactionID=faQm001538059218000.8815380592267566&event=TENDER_FINAL"
            }
          },
          "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();
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":[
        {
          "Device":"CashierDisplay",
          "InfoQualify":"Status",
          "OutputContent":{
            "OutputFormat":"MessageRef",
            "PredefinedContent":{
              "ReferenceID":"event=BALANCE_QUERY_STARTED"
            }
          },
          "ResponseRequiredFlag":false
        }
      ]
    },
    "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":[
        {
          "Device":"CashierDisplay",
          "InfoQualify":"Status",
          "OutputContent":{
            "OutputFormat":"MessageRef",
            "PredefinedContent":{
              "ReferenceID":"event=GRATUITY_ENTERED"
            }
          },
          "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();
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":[
        {
          "Device":"CashierDisplay",
          "InfoQualify":"Status",
          "OutputContent":{
            "OutputFormat":"MessageRef",
            "PredefinedContent":{
              "ReferenceID":"event=LOAD_STARTED"
            }
          },
          "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();
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":[
        {
          "Device":"CashierDisplay",
          "InfoQualify":"Status",
          "OutputContent":{
            "OutputFormat":"MessageRef",
            "PredefinedContent":{
              "ReferenceID":"event=PROVIDE_CARD_DETAILS"
            }
          },
          "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();
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