{"title":"Display notifications","category":"default","creationDate":1779620071,"content":"<p>During a transaction or <em><a href=\"\/get-started-with-adyen\/adyen-glossary\/#tender\">tender<\/a><\/em>, the payment terminal generates display notifications. You can show these in your POS app to keep your staff up-to-date on the progress of the tender. For example, whether the customer has selected Dynamic Currency Conversion, or finished entering their PIN.<\/p>\n<p>Here we describe how to set up display notifications. You can do this in your <a href=\"#set-up-in-ca\">Customer Area<\/a> or by using <a href=\"#set-up-display-notifications-using-api-calls\">API calls<\/a>. You then receive webhooks that include a Terminal API <code>DisplayRequest<\/code> from the terminal. This has an <code>event<\/code> indicating the progress of the transaction, or the <code>result<\/code> of the transaction. You can use this information to show a message in your POS app.<\/p>\n<p>We also provide an overview of <a href=\"#display-notification-types\">display notification types<\/a>, and <a href=\"#examples\">examples<\/a> of each.<\/p>\n<h2 id=\"set-up-in-ca\">Set up display notifications in the Customer Area<\/h2>\n<p>To get display notifications, you need to make sure you can receive HTTP callbacks (webhooks) on a specific endpoint. Then you need to provide the URL to that endpoint in your Customer Area. Make sure to <a href=\"#accept-display-notifications\">acknowledge<\/a> that your POS system successfully received a display notification from the terminal.<\/p>\n<ol>\n<li>\n<p>Prepare your system. It needs to have:<\/p>\n<ul>\n<li>An endpoint that can receive JSON messages.<\/li>\n<li>For the test environment: an open TCP port for HTTP traffic (80, 8080, or 8888) or HTTPS traffic (443, 8443, or 8843) with TLSv1.2.<\/li>\n<li>\n<p>For the live environment: an open TCP port for HTTPS traffic (443, 8443, or 8843) with TLSv1.2.<\/p>\n<!-- list separator -->\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>Log in to your <a href=\"https:\/\/ca-test.adyen.com\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Customer Area<\/a>.<\/p>\n<\/li>\n<li>\n<p>Switch to the merchant account, store, or terminal that you want to set up notifications for.<\/p>\n<\/li>\n<li>\n<p>Go to <strong>In-person payments<\/strong> &gt; <strong>Terminal settings<\/strong> &gt; <strong>Integrations<\/strong>.<\/p>\n<\/li>\n<li>\n<p>In the <strong>Terminal API<\/strong> section, select <strong>Decrypted<\/strong>.<\/p>\n<\/li>\n<li>\n<p>Under <strong>Display URLs<\/strong>, select <strong>Add new<\/strong>.<\/p>\n<\/li>\n<li>\n<p>Select the pencil icon <i class=\"adl-icon-edit\"><\/i> next to the field that appears.<br \/>\nThe <strong>Add URL<\/strong> dialog opens.<\/p>\n<\/li>\n<li>\n<p>Enter the details:<\/p>\n<ul>\n<li><strong>URL<\/strong>: the URL of the endpoint where you want to receive display notifications.<\/li>\n<li><strong>Username<\/strong> and <strong>Password<\/strong> (optional): the basic authentication credentials you set up on your server. We include these details in the header of the notification to authenticate with your server.<\/li>\n<li><strong>Public<\/strong>: select this option if the specified URL is on a public network.<\/li>\n<li><strong>Local<\/strong>: select this option if the specified URL is on a Local Area Network.<\/li>\n<li>\n<p><strong>Enable encryption<\/strong>: select this if you want the message sent to this URL to be encrypted.<\/p>\n<!-- list separator -->\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>Select <strong>Add URL<\/strong>.<\/p>\n<\/li>\n<li>\n<p>Select <strong>Save<\/strong>.<\/p>\n<\/li>\n<\/ol>\n<p>Display notifications will now be sent to the endpoint you specified.<\/p>\n<h2>Set up display notifications using API calls<\/h2>\n<p>Instead of <a href=\"#set-up-in-ca\">using your Customer Area<\/a>, you can use our <a href=\"\/point-of-sale\/automating-terminal-management\/configure-terminals-api\">Management API<\/a> to automate setting up display notifications. To get display notifications, make sure you can receive HTTP callbacks (webhooks) on a specific endpoint. You then need to provide the URL to that endpoint in the PATCH request. Make sure to <a href=\"#accept-display-notifications\">acknowledge<\/a> that your POS system successfully received a display notification from the terminal.<\/p>\n<p>To set up display notifications, you need to have the following <a href=\"\/development-resources\/api-credentials#api-permissions\">role<\/a>:<\/p>\n<ul>\n<li>Management API - Terminal settings Advanced read and write<\/li>\n<\/ul>\n<p>Proceed as follows:<\/p>\n<ol>\n<li>\n<p>Prepare your system. It needs to have:<\/p>\n<ul>\n<li>An endpoint that can receive JSON messages.<\/li>\n<li>For the test environment: an open TCP port for HTTP traffic (80, 8080, or 8888) or HTTPS traffic (443, 8443, or 8843) with TLSv1.2.<\/li>\n<li>For the live environment: an open TCP port for HTTPS traffic (443, 8443, or 8843) with TLSv1.2.<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>Optional. To see what display notification settings have already been configured, make a GET request to the <code>\/terminalSettings<\/code> endpoint for the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/get\/companies\/(companyId)\/terminalSettings\" class=\" external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">company account<\/a>,  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/get\/merchants\/(merchantId)\/terminalSettings\" class=\" external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">merchant account<\/a>,  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/get\/stores\/(storeId)\/terminalSettings\" class=\" external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">store<\/a> or  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/get\/terminals\/(terminalId)\/terminalSettings\" class=\" external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">terminal<\/a>, and check the <code>nexo.displayUrls<\/code> object.<\/p>\n<div class=\"notices green\">\n<p>When removing settings, you need to know the settings that will be <a href=\"\/point-of-sale\/automating-terminal-management\/configure-terminals-api#inheritance\">inherited<\/a> from the next higher level.<\/p>\n<\/div>\n<\/li>\n<li>\n<p>Make a PATCH request to the <code>\/terminalSettings<\/code> endpoint on the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/get\/companies\/(companyId)\/terminalSettings\" class=\" external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">company account<\/a>,  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/get\/merchants\/(merchantId)\/terminalSettings\" class=\" external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">merchant account<\/a>,  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/get\/stores\/(storeId)\/terminalSettings\" class=\" external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">store<\/a> or  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/get\/terminals\/(terminalId)\/terminalSettings\" class=\" external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">terminal<\/a> level.<br \/>\nIn the request body, inside the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/patch\/companies\/(companyId)\/terminalSettings#request-nexo\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">nexo<\/a> object, specify:<\/p>\n<ul>\n<li><code>localUrls<\/code>: an array with one or more local URLs. Use this if the specified URL is on a Local Area Network. This includes:<\/li>\n<\/ul>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Parameter<\/th>\n<th style=\"text-align: left;\">Data&nbsp;type<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><code>encrypted<\/code><\/td>\n<td style=\"text-align: left;\">Boolean<\/td>\n<td style=\"text-align: left;\">Indicates if the message sent to this URL should be encrypted.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>password<\/code><\/td>\n<td style=\"text-align: left;\">String<\/td>\n<td style=\"text-align: left;\">The password for authentication of the notifications.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>url<\/code><\/td>\n<td style=\"text-align: left;\">String<\/td>\n<td style=\"text-align: left;\">The URL of the endpoint where they want to receive notifications, in the format: http(s):\/\/domain.com.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>username<\/code><\/td>\n<td style=\"text-align: left;\">String<\/td>\n<td style=\"text-align: left;\">The username for authentication of the notifications.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<ul>\n<li><code>publicUrls<\/code>: an array with one or more public URLs. Use this if the specified URL is on a public network. This includes:<\/li>\n<\/ul>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Parameter<\/th>\n<th style=\"text-align: left;\">Data&nbsp;type<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><code>encrypted<\/code><\/td>\n<td style=\"text-align: left;\">Boolean<\/td>\n<td style=\"text-align: left;\">Indicates if the message sent to this URL should be encrypted.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>password<\/code><\/td>\n<td style=\"text-align: left;\">String<\/td>\n<td style=\"text-align: left;\">The password for authentication of the notifications.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>url<\/code><\/td>\n<td style=\"text-align: left;\">String<\/td>\n<td style=\"text-align: left;\">The URL of the endpoint where they want to receive notifications, in the format: http(s):\/\/domain.com.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>username<\/code><\/td>\n<td style=\"text-align: left;\">String<\/td>\n<td style=\"text-align: left;\">The username for authentication of the notifications.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Set up a local URL on a terminal level'\" :id=\"''\" :code-data=\"[{&quot;language&quot;:&quot;json&quot;,&quot;tabTitle&quot;:&quot;&quot;,&quot;content&quot;:&quot;curl https:\\\/\\\/management-test.adyen.com\\\/v3\\\/terminals\\\/{terminalId}\\\/terminalSettings \\\\\\n-H 'x-API-key: ADYEN_API_KEY' \\\\\\n-X PATCH \\\\\\n-d '{\\n    \\&quot;nexo\\&quot;: {\\n        \\&quot;displayUrls\\&quot;:{\\n            \\&quot;localUrls\\&quot;:[\\n                {\\n                    \\&quot;encrypted\\&quot;:\\&quot;true\\&quot;,\\n                    \\&quot;password\\&quot;:\\&quot;BASIC_AUTH_PASSWORD\\&quot;,\\n                    \\&quot;url\\&quot;:\\&quot;https:\\\/\\\/your-display-notifications-endpoint.com\\&quot;,\\n                    \\&quot;username\\&quot;:\\&quot;BASIC_AUTH_USERNAME\\&quot;\\n                }\\n            ]\\n        }\\n    }\\n}'&quot;}]\" :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<li>\n<p>When you receive the response, note that this returns the entire configuration at the level where you made the request.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Response with the entire configuration on a terminal level'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n    \\\"cardholderReceipt\\\":{\\n        \\\"headerForAuthorizedReceipt\\\":\\\"header1,header2,filler\\\"\\n    },\\n    \\\"gratuities\\\":[\\n        {\\n            \\\"currency\\\":\\\"EUR\\\",\\n            \\\"usePredefinedTipEntries\\\":true,\\n            \\\"predefinedTipEntries\\\":[\\n                \\\"100\\\",\\n                \\\"1%\\\",\\n                \\\"5%\\\"\\n            ],\\n            \\\"allowCustomAmount\\\":true\\n        }\\n    ],\\n    \\\"nexo\\\":{\\n        \\\"displayUrls\\\":{\\n            \\\"localUrls\\\":[\\n                {\\n                    \\\"password\\\":\\\"BASIC_AUTH_PASSWORD\\\",\\n                    \\\"url\\\":\\\"https:\\\/\\\/your-display-notifications-endpoint.com\\\",\\n                    \\\"username\\\":\\\"BASIC_AUTH_USERNAME\\\"\\n                }\\n            ]\\n        },\\n        \\\"encryptionKey\\\":{\\n            \\\"identifier\\\":\\\"KEY_IDENTIFIER\\\",\\n            \\\"passphrase\\\":\\\"KEY_PASSPHRASE\\\",\\n            \\\"version\\\":1\\n        },\\n        \\\"eventUrls\\\":{\\n            \\\"eventPublicUrls\\\":[\\n                {\\n                    \\\"password\\\":\\\"BASIC_AUTH_PASSWORD\\\",\\n                    \\\"url\\\":\\\"https:\\\/\\\/your-event-notifications-endpoint.com\\\",\\n                    \\\"username\\\":\\\"BASIC_AUTH_USERNAME\\\"\\n                }\\n            ]\\n        }\\n    },\\n    \\\"opi\\\":{\\n        \\\"enablePayAtTable\\\":true,\\n        \\\"payAtTableStoreNumber\\\":\\\"1\\\",\\n        \\\"payAtTableURL\\\":\\\"https:\\\/your-pay-at-table-endpoint.com\\\"\\n    },\\n    \\\"offlineProcessing\\\":{\\n        \\\"chipFloorLimit\\\":0\\n    },\\n    \\\"receiptOptions\\\":{\\n        \\\"qrCodeData\\\":\\\"http:\\\/\\\/www.example.com\\\/order\\\/${pspreference}\\\/${merchantreference}\\\"\\n    },\\n    \\\"receiptPrinting\\\":{\\n        \\\"shopperApproved\\\":true,\\n        \\\"shopperRefused\\\":true,\\n        \\\"shopperCancelled\\\":true,\\n        \\\"shopperRefundApproved\\\":true,\\n        \\\"shopperRefundRefused\\\":true,\\n        \\\"shopperVoid\\\":true\\n    },\\n    \\\"signature\\\":{\\n        \\\"askSignatureOnScreen\\\":true,\\n        \\\"skipSignature\\\":false,\\n        \\\"deviceName\\\":\\\"Amsterdam-236203386\\\"\\n    },\\n    \\\"wifiProfiles\\\":{\\n        \\\"profiles\\\":[\\n            {\\n                \\\"authType\\\":\\\"wpa-psk\\\",\\n                \\\"autoWifi\\\":false,\\n                \\\"bssType\\\":\\\"infra\\\",\\n                \\\"channel\\\":0,\\n                \\\"defaultProfile\\\":true,\\n                \\\"hiddenSsid\\\":false,\\n                \\\"name\\\":\\\"Guest Wi-Fi\\\",\\n                \\\"psk\\\":\\\"4R8R2R3V456X\\\",\\n                \\\"ssid\\\":\\\"G470P37660D4G\\\",\\n                \\\"wsec\\\":\\\"ccmp\\\"\\n            }\\n        ],\\n        \\\"settings\\\":{\\n            \\\"band\\\":\\\"All\\\",\\n            \\\"roaming\\\":true\\n        }\\n    },\\n    \\\"timeouts\\\":{\\n        \\\"fromActiveToSleep\\\":30\\n    },\\n    \\\"hardware\\\":{\\n        \\\"displayMaximumBackLight\\\":75\\n    },\\n    \\\"connectivity\\\":{\\n        \\\"simcardStatus\\\":\\\"INVENTORY\\\"\\n    }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<\/ol>\n<h2>Accept display notifications<\/h2>\n<p>We require you to acknowledge that your POS system successfully received a display notification from the terminal with a <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Status#successful_responses\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">successful HTTP response status code<\/a>, for example <strong>202<\/strong>. This prevents the terminal or our backend from repeatedly re-sending the same notification.<\/p>\n<p>When your POS system receives an display notification:<\/p>\n<ol>\n<li>Store the display notification in your database.<\/li>\n<li>Acknowledge the display notification with a <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Status#successful_responses\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">successful HTTP response status code<\/a>, for example <strong>202<\/strong>.<\/li>\n<li>Apply your business logic.<br \/>\nMake sure that you acknowledge the display notification before you apply any business logic, because an error in your business logic can prevent event notifications with important updates from reaching your system.<\/li>\n<\/ol>\n<h2>Display notification types<\/h2>\n<p>A display notification is a <code>DisplayRequest<\/code> sent from the terminal. It includes a <code>ReferenceID<\/code> field with either:<\/p>\n<ul>\n<li><code>event<\/code>: the interaction between the terminal and the customer.<\/li>\n<li><code>Result<\/code>: the outcome of the transaction.<\/li>\n<\/ul>\n<p>Use the <code>ReferenceID<\/code> to show a message to your staff, informing them of the progress of the transaction.<\/p>\n<p>The main display notification types are:<\/p>\n<table>\n    <colgroup>\n        <col style=\"width: 30%\"><col style=\"width: 70%\">\n    <\/colgroup>\n    <thead>\n        <tr class=\"header\">\n            <th>Event<\/th>\n            <th>Description<\/th>\n        <\/tr><\/thead>\n    <tbody>\n  <tr>\n    <td>\n<p><code><a href=\"#tender-created\">TENDER_CREATED<\/a><\/code><\/p>\n<\/td>\n      <td>\n<p>The tender has started.The <code>ReferenceID<\/code> includes: the <code>event<\/code> <span translate=\"no\"><strong>TENDER_CREATED<\/strong><\/span>, and the <code>TimeStamp<\/code> and <code><a href=\"\/point-of-sale\/design-your-integration\/terminal-api#transaction-identifier\">TransactionID<\/a><\/code> of the transaction.<\/p>\n<\/td>\n  <\/tr>\n  <tr>\n    <td>\n<p><code><a href=\"#card-inserted\">CARD_INSERTED<\/a><\/code><\/p>\n<\/td>\n      <td>\n<p>The shopper has inserted their card into the terminal.<\/p>\n<\/td>\n  <\/tr>\n  <tr>\n    <td>\n<p><code>CARD_PRESENTED<\/code><\/p>\n<\/td>\n    <td>\n<p>The shopper has presented the card to the terminal's contactless reader.<\/p>\n<\/td>\n  <\/tr>\n  <tr>\n    <td>\n<p><code><a href=\"#card-swiped\">CARD_SWIPED<\/a><\/code><\/p>\n<\/td>\n      <td>\n<p>The shopper has swiped their card.<\/p>\n<\/td>\n  <\/tr>\n  <tr>\n    <td>\n<p><code><a href=\"#wait-for-app-selection\">WAIT_FOR APP_SELECTION<\/a><\/code><\/p>\n<\/td>\n      <td>\n<p>The terminal is waiting for the shopper to select a payment application.<\/p>\n<\/td>\n  <\/tr>\n  <tr>\n    <td>\n<p><code><a href=\"#application-selected\">APPLICATION_SELECTED<\/a><\/code><\/p>\n<\/td>\n      <td>\n<p>The shopper has selected their preferred payment application.<\/p>\n<\/td>\n  <\/tr>\n  <tr>\n    <td>\n<p><code>ASK_SIGNATURE<\/code><\/p>\n<\/td>\n    <td>\n<p>The terminal has prompted the shopper to provide their signature.<\/p>\n<\/td>\n  <\/tr>\n  <tr>\n    <td>\n<p><code>CHECK_SIGNATURE<\/code><\/p>\n<\/td>\n    <td>\n<p>The signature is ready to be checked by store staff.<\/p>\n<\/td>\n  <\/tr>\n  <tr>\n    <td>\n<p><code>SIGNATURE_CHECKED<\/code><\/p>\n<\/td>\n    <td>\n<p>The signature has been checked by store staff.<\/p>\n<\/td>\n  <\/tr>\n  <tr>\n    <td>\n<p><code><a href=\"#wait-for-pin\">WAIT_FOR_PIN<\/a><\/code><\/p>\n<\/td>\n      <td>\n<p>The terminal is waiting for the shopper to enter their PIN.<\/p>\n<\/td>\n  <\/tr>\n  <tr>\n    <td>\n<p><code><a href=\"#pin-entered\">PIN_ENTERED<\/a><\/code><\/p>\n<\/td>\n      <td>\n<p>The shopper has finished entering their PIN.<\/p>\n<\/td>\n  <\/tr>\n  <tr>\n    <td>\n<p><code><a href=\"#print-receipt\">PRINT_RECEIPT<\/a><\/code><\/p>\n<\/td>\n      <td>\n<p>The terminal is printing the receipt.<\/p>\n<\/td>\n  <\/tr>\n  <tr>\n    <td>\n<p><code>RECEIPT_PRINTED<\/code><\/p>\n<\/td>\n    <td>\n<p>The terminal has finished printing the receipt.<\/p>\n<\/td>\n  <\/tr>\n  <tr>\n    <td>\n<p><code><a href=\"#card-removed\">CARD_REMOVED<\/a><\/code><\/p>\n<\/td>\n      <td>\n<p>The shopper has removed their card from the terminal.<\/p>\n<\/td>\n  <\/tr>\n  <tr>\n    <td>\n<p><code><a href=\"#tender-final\">TENDER_FINAL<\/a><\/code><\/p>\n<\/td>\n      <td><p>The tender was finished; the shopper either completed or abandoned the transaction. <\/p><p>The <code>ReferenceID<\/code> includes: the <code>event<\/code> <span translate=\"no\"><strong>TENDER_FINAL<\/strong><\/span>, and the <code>Result<\/code>, <code>TimeStamp<\/code>, and <code><a href=\"\/point-of-sale\/design-your-integration\/terminal-api#transaction-identifier\">TransactionID<\/a><\/code> of the transaction.<\/p>\n  <\/td><\/tr>\n  <tr>\n    <td>\n<p><code>ASK_DCC<\/code><\/p>\n<\/td>\n    <td>\n<p>The terminal is asking if the shopper requires dynamic currency conversion.<\/p>\n<\/td>\n  <\/tr>\n  <tr>\n    <td>\n<p><code>DCC_ACCEPTED<\/code><\/p>\n<\/td>\n    <td>\n<p>The shopper accepted the dynamic currency conversion request.<\/p>\n<\/td>\n  <\/tr>\n  <tr>\n    <td>\n<p><code>DCC_REJECTED<\/code><\/p>\n<\/td>\n    <td>\n<p>The shopper rejected the dynamic currency conversion request.<\/p>\n<\/td>\n  <\/tr>\n  <tr>\n    <td>\n<p><code>ASK_GRATUITY<\/code><\/p>\n<\/td>\n    <td>\n<p>The terminal is waiting for a possible tip.<\/p>\n<\/td>\n  <\/tr>\n  <tr>\n    <td>\n<p><code><a href=\"#gratuity-entered\">GRATUITY_ENTERED<\/a><\/code><\/p>\n<\/td>\n      <td>\n<p>The shopper has entered a gratuity on the terminal.<\/p>\n<\/td>\n  <\/tr>\n  <tr>\n    <td>\n<p><code><a href=\"#balance-query-started\">BALANCE_QUERY_STARTED<\/a><\/code><\/p>\n<\/td>\n      <td>\n<p>Balance check started on the terminal.<\/p>\n<\/td>\n  <\/tr>\n  <tr>\n    <td>\n<p><code>BALANCE_QUERY_COMPLETED<\/code><\/p>\n<\/td>\n    <td>\n<p>Balance check completed on the terminal.<\/p>\n<\/td>\n  <\/tr>\n  <tr>\n    <td>\n<p><code><a href=\"#load-started\">LOAD_STARTED<\/a><\/code><\/p>\n<\/td>\n      <td>\n<p>Gift card load has been initiated.<\/p>\n<\/td>\n  <\/tr>\n  <tr>\n    <td>\n<p><code>LOAD_COMPLETED<\/code><\/p>\n<\/td>\n    <td>\n<p>Gift card load has been completed.<\/p>\n<\/td>\n  <\/tr>\n  <tr>\n    <td>\n<p><code><a href=\"#provide-card-details\">PROVIDE_CARD_DETAILS<\/a><\/code><\/p>\n<\/td>\n      <td>\n<p>The terminal is waiting for card details to be entered manually.<\/p>\n<\/td>\n  <\/tr>\n  <tr>\n    <td>\n<p><code>CARD_DETAILS_PROVIDED<\/code><\/p>\n<\/td>\n    <td>\n<p>The card details have been entered.<\/p>\n<\/td>\n  <\/tr>\n<\/tbody><\/table>\n<p>Examples of display notifications are provided below.<\/p>\n<h2>Examples<\/h2>\n<h3 id=\"tender-created\">TENDER_CREATED<\/h3>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"''\" :id=\"'display-notifications_0'\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"JSON\",\"content\":\"{\\n  \\\"SaleToPOIRequest\\\":{\\n    \\\"DisplayRequest\\\":{\\n      \\\"DisplayOutput\\\":[\\n        {\\n          \\\"Device\\\": \\\"CashierDisplay\\\",\\n          \\\"InfoQualify\\\": \\\"Status\\\",\\n          \\\"OutputContent\\\": {\\n            \\\"OutputFormat\\\": \\\"MessageRef\\\",\\n            \\\"PredefinedContent\\\": {\\n              \\\"ReferenceID\\\": \\\"TransactionID=oLkO001517998574000&amp;TimeStamp=2018-02-07T10%3a16%3a14.000Z&amp;event=TENDER_CREATED\\\"\\n            }\\n          },\\n          \\\"ResponseRequiredFlag\\\": false\\n        }\\n      ]\\n    },\\n    \\\"MessageHeader\\\":{\\n      \\\"SaleID\\\":\\\"POSSystemID12345\\\",\\n      \\\"ProtocolVersion\\\":\\\"3.0\\\",\\n      \\\"MessageType\\\":\\\"Request\\\",\\n      \\\"POIID\\\":\\\"V400m-324688179\\\",\\n      \\\"ServiceID\\\":\\\"0207111617\\\",\\n      \\\"MessageClass\\\":\\\"Device\\\",\\n      \\\"MessageCategory\\\":\\\"Display\\\",\\n      \\\"DeviceID\\\":\\\"1517998562\\\"\\n    }\\n  }\\n}\"},{\"language\":\"java\",\"tabTitle\":\"Java\",\"content\":\"String saleID = \\\"YOUR_CASH_REGISTER_ID\\\";\\nString POIID = \\\"YOUR_TERMINAL_ID\\\";\\nString serviceID = \\\"YOUR_UNIQUE_ATTEMPT_ID\\\";\\n\\nSaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();\\nDisplayRequest displayRequest = new DisplayRequest();\\nDisplayOutput displayOutput = new DisplayOutput();\\nOutputContent outputContent = new OutputContent();\\noutputContent.setOutputFormat( OutputFormatType.MESSAGE_REF );\\nPredefinedContent predefinedContent = new PredefinedContent();\\npredefinedContent.setReferenceID(\\\"TransactionID=oLkO001517998574000&amp;TimeStamp=2018-02-07T10%3a16%3a14.000Z&amp;event=TENDER_CREATED\\\");\\noutputContent.setPredefinedContent(predefinedContent);\\ndisplayOutput.setOutputContent(outputContent);\\ndisplayOutput.setInfoQualify( InfoQualifyType.STATUS );\\ndisplayOutput.setDevice( DeviceType.CASHIER_DISPLAY );\\ndisplayOutput.setResponseRequiredFlag( Boolean.FALSE );\\ndisplayRequest.setDisplayOutput(displayOutput);\\nsaleToPOIRequest.setDisplayRequest(displayRequest);\\n\\nMessageHeader messageHeader = new MessageHeader();\\nmessageHeader.setSaleID(saleID);\\nmessageHeader.setProtocolVersion(\\\"3.0\\\");\\nmessageHeader.setMessageType( MessageType.REQUEST );\\nmessageHeader.setPOIID(POIID);\\nmessageHeader.setServiceID(serviceID);\\nmessageHeader.setMessageClass( MessageClassType.DEVICE );\\nmessageHeader.setMessageCategory( MessageCategoryType.DISPLAY );\\nmessageHeader.setDeviceID(\\\"1517998562\\\");\\nsaleToPOIRequest.setMessageHeader(messageHeader);\\nterminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<h3 id=\"card-inserted\">CARD_INSERTED<\/h3>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"''\" :id=\"'display-notifications_1'\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"JSON\",\"content\":\"{\\n  \\\"SaleToPOIRequest\\\":{\\n    \\\"DisplayRequest\\\":{\\n      \\\"DisplayOutput\\\":[\\n        {\\n          \\\"Device\\\":\\\"CashierDisplay\\\",\\n          \\\"InfoQualify\\\":\\\"Status\\\",\\n          \\\"OutputContent\\\":{\\n            \\\"OutputFormat\\\":\\\"MessageRef\\\",\\n            \\\"PredefinedContent\\\":{\\n              \\\"ReferenceID\\\":\\\"event=CARD_INSERTED\\\"\\n            }\\n          },\\n          \\\"ResponseRequiredFlag\\\":false\\n        }\\n      ]\\n    },\\n    \\\"MessageHeader\\\":{\\n      \\\"SaleID\\\":\\\"POSSystemID12345\\\",\\n      \\\"ProtocolVersion\\\":\\\"3.0\\\",\\n      \\\"MessageType\\\":\\\"Request\\\",\\n      \\\"POIID\\\":\\\"V400m-324688179\\\",\\n      \\\"ServiceID\\\":\\\"0207111617\\\",\\n      \\\"MessageClass\\\":\\\"Device\\\",\\n      \\\"MessageCategory\\\":\\\"Display\\\",\\n      \\\"DeviceID\\\":\\\"1517998563\\\"\\n    }\\n  }\\n}\"},{\"language\":\"java\",\"tabTitle\":\"Java\",\"content\":\"String saleID = \\\"YOUR_CASH_REGISTER_ID\\\";\\nString POIID = \\\"YOUR_TERMINAL_ID\\\";\\nString serviceID = \\\"YOUR_UNIQUE_ATTEMPT_ID\\\";\\n\\nSaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();\\nDisplayRequest displayRequest = new DisplayRequest();\\nDisplayOutput displayOutput = new DisplayOutput();\\nOutputContent outputContent = new OutputContent();\\noutputContent.setOutputFormat( OutputFormatType.MESSAGE_REF );\\nPredefinedContent predefinedContent = new PredefinedContent();\\npredefinedContent.setReferenceID(\\\"event=CARD_INSERTED\\\");\\noutputContent.setPredefinedContent(predefinedContent);\\ndisplayOutput.setOutputContent(outputContent);\\ndisplayOutput.setInfoQualify( InfoQualifyType.STATUS );\\ndisplayOutput.setDevice( DeviceType.CASHIER_DISPLAY );\\ndisplayOutput.setResponseRequiredFlag( Boolean.FALSE );\\ndisplayRequest.setDisplayOutput(displayOutput);\\nsaleToPOIRequest.setDisplayRequest(displayRequest);\\n\\nMessageHeader messageHeader = new MessageHeader();\\nmessageHeader.setSaleID(saleID);\\nmessageHeader.setProtocolVersion(\\\"3.0\\\");\\nmessageHeader.setMessageType( MessageType.REQUEST );\\nmessageHeader.setPOIID(POIID);\\nmessageHeader.setServiceID(serviceID);\\nmessageHeader.setMessageClass( MessageClassType.DEVICE );\\nmessageHeader.setMessageCategory( MessageCategoryType.DISPLAY );\\nmessageHeader.setDeviceID(\\\"1517998563\\\");\\nsaleToPOIRequest.setMessageHeader(messageHeader);\\nterminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<h3 id=\"card-swiped\">CARD_SWIPED<\/h3>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"''\" :id=\"'display-notifications_2'\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"JSON\",\"content\":\"{\\n  \\\"SaleToPOIRequest\\\":{\\n    \\\"DisplayRequest\\\":{\\n      \\\"DisplayOutput\\\":[\\n        {\\n          \\\"Device\\\":\\\"CashierDisplay\\\",\\n          \\\"InfoQualify\\\":\\\"Status\\\",\\n          \\\"OutputContent\\\":{\\n            \\\"OutputFormat\\\":\\\"MessageRef\\\",\\n            \\\"PredefinedContent\\\":{\\n              \\\"ReferenceID\\\":\\\"event=CARD_SWIPED\\\"\\n            }\\n          },\\n          \\\"ResponseRequiredFlag\\\":false\\n        }\\n      ]\\n    },\\n    \\\"MessageHeader\\\":{\\n      \\\"SaleID\\\":\\\"POSSystemID12345\\\",\\n      \\\"ProtocolVersion\\\":\\\"3.0\\\",\\n      \\\"MessageType\\\":\\\"Request\\\",\\n      \\\"POIID\\\":\\\"V400m-324688179\\\",\\n      \\\"ServiceID\\\":\\\"0207111617\\\",\\n      \\\"MessageClass\\\":\\\"Device\\\",\\n      \\\"MessageCategory\\\":\\\"Display\\\",\\n      \\\"DeviceID\\\":\\\"1517998573\\\"\\n    }\\n  }\\n}\"},{\"language\":\"java\",\"tabTitle\":\"Java\",\"content\":\"String saleID = \\\"YOUR_CASH_REGISTER_ID\\\";\\nString POIID = \\\"YOUR_TERMINAL_ID\\\";\\nString serviceID = \\\"YOUR_UNIQUE_ATTEMPT_ID\\\";\\n\\nSaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();\\nDisplayRequest displayRequest = new DisplayRequest();\\nDisplayOutput displayOutput = new DisplayOutput();\\ndisplayOutput.setResponseRequiredFlag( Boolean.FALSE );\\ndisplayOutput.setDevice( DeviceType.CASHIER_DISPLAY );\\ndisplayOutput.setInfoQualify( InfoQualifyType.STATUS );\\nOutputContent outputContent = new OutputContent();\\nPredefinedContent predefinedContent = new PredefinedContent();\\npredefinedContent.setReferenceID(\\\"event=CARD_SWIPED\\\");\\noutputContent.setPredefinedContent(predefinedContent);\\noutputContent.setOutputFormat( OutputFormatType.MESSAGE_REF );\\ndisplayOutput.setOutputContent(outputContent);\\ndisplayRequest.setDisplayOutput(displayOutput);\\nsaleToPOIRequest.setDisplayRequest(displayRequest);\\n\\nMessageHeader messageHeader = new MessageHeader();\\nmessageHeader.setSaleID(saleID);\\nmessageHeader.setProtocolVersion(\\\"3.0\\\");\\nmessageHeader.setMessageType( MessageType.REQUEST );\\nmessageHeader.setPOIID(POIID);\\nmessageHeader.setServiceID(serviceID);\\nmessageHeader.setMessageClass( MessageClassType.DEVICE );\\nmessageHeader.setMessageCategory( MessageCategoryType.DISPLAY );\\nmessageHeader.setDeviceID(\\\"1517998573\\\");\\nsaleToPOIRequest.setMessageHeader(messageHeader);\\nterminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<h3 id=\"wait-for-app-selection\">WAIT_FOR_APP_SELECTION<\/h3>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"''\" :id=\"'display-notifications_3'\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"JSON\",\"content\":\"{\\n  \\\"SaleToPOIRequest\\\":{\\n    \\\"DisplayRequest\\\":{\\n      \\\"DisplayOutput\\\":[\\n        {\\n          \\\"Device\\\":\\\"CashierDisplay\\\",\\n          \\\"InfoQualify\\\":\\\"Status\\\",\\n          \\\"OutputContent\\\":{\\n            \\\"OutputFormat\\\":\\\"MessageRef\\\",\\n            \\\"PredefinedContent\\\":{\\n              \\\"ReferenceID\\\":\\\"event=WAIT_FOR_APP_SELECTION\\\"\\n            }\\n          },\\n          \\\"ResponseRequiredFlag\\\":false\\n        }\\n      ]\\n    },\\n    \\\"MessageHeader\\\":{\\n      \\\"SaleID\\\":\\\"POSSystemID12345\\\",\\n      \\\"ProtocolVersion\\\":\\\"3.0\\\",\\n      \\\"MessageType\\\":\\\"Request\\\",\\n      \\\"POIID\\\":\\\"V400m-324688179\\\",\\n      \\\"ServiceID\\\":\\\"0207111617\\\",\\n      \\\"MessageClass\\\":\\\"Device\\\",\\n      \\\"MessageCategory\\\":\\\"Display\\\",\\n      \\\"DeviceID\\\":\\\"1517998564\\\"\\n    }\\n  }\\n}\"},{\"language\":\"java\",\"tabTitle\":\"Java\",\"content\":\"String saleID = \\\"YOUR_CASH_REGISTER_ID\\\";\\nString POIID = \\\"YOUR_TERMINAL_ID\\\";\\nString serviceID = \\\"YOUR_UNIQUE_ATTEMPT_ID\\\";\\n\\nSaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();\\nDisplayRequest displayRequest = new DisplayRequest();\\nDisplayOutput displayOutput = new DisplayOutput();\\nOutputContent outputContent = new OutputContent();\\noutputContent.setOutputFormat( OutputFormatType.MESSAGE_REF );\\nPredefinedContent predefinedContent = new PredefinedContent();\\npredefinedContent.setReferenceID(\\\"event=WAIT_FOR_APP_SELECTION\\\");\\noutputContent.setPredefinedContent(predefinedContent);\\ndisplayOutput.setOutputContent(outputContent);\\ndisplayOutput.setInfoQualify( InfoQualifyType.STATUS );\\ndisplayOutput.setDevice( DeviceType.CASHIER_DISPLAY );\\ndisplayOutput.setResponseRequiredFlag( Boolean.FALSE );\\ndisplayRequest.setDisplayOutput(displayOutput);\\nsaleToPOIRequest.setDisplayRequest(displayRequest);\\n\\nMessageHeader messageHeader = new MessageHeader();\\nmessageHeader.setSaleID(saleID);\\nmessageHeader.setProtocolVersion(\\\"3.0\\\");\\nmessageHeader.setMessageType( MessageType.REQUEST );\\nmessageHeader.setPOIID(POIID);\\nmessageHeader.setServiceID(serviceID);\\nmessageHeader.setMessageClass( MessageClassType.DEVICE );\\nmessageHeader.setMessageCategory( MessageCategoryType.DISPLAY );\\nmessageHeader.setDeviceID(\\\"1517998564\\\");\\nsaleToPOIRequest.setMessageHeader(messageHeader);\\nterminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<h3 id=\"application-selected\">APPLICATION_SELECTED<\/h3>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"''\" :id=\"'display-notifications_4'\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"JSON\",\"content\":\"{\\n  \\\"SaleToPOIRequest\\\":{\\n    \\\"DisplayRequest\\\":{\\n      \\\"DisplayOutput\\\":[\\n        {\\n          \\\"Device\\\":\\\"CashierDisplay\\\",\\n          \\\"InfoQualify\\\":\\\"Status\\\",\\n          \\\"OutputContent\\\":{\\n            \\\"OutputFormat\\\":\\\"MessageRef\\\",\\n            \\\"PredefinedContent\\\":{\\n              \\\"ReferenceID\\\":\\\"event=APPLICATION_SELECTED\\\"\\n            }\\n          },\\n          \\\"ResponseRequiredFlag\\\":false\\n        }\\n      ]\\n    },\\n    \\\"MessageHeader\\\":{\\n      \\\"SaleID\\\":\\\"POSSystemID12345\\\",\\n      \\\"ProtocolVersion\\\":\\\"3.0\\\",\\n      \\\"MessageType\\\":\\\"Request\\\",\\n      \\\"POIID\\\":\\\"V400m-324688179\\\",\\n      \\\"ServiceID\\\":\\\"0207111617\\\",\\n      \\\"MessageClass\\\":\\\"Device\\\",\\n      \\\"MessageCategory\\\":\\\"Display\\\",\\n      \\\"DeviceID\\\":\\\"1517998565\\\"\\n    }\\n  }\\n}\"},{\"language\":\"java\",\"tabTitle\":\"Java\",\"content\":\"String saleID = \\\"YOUR_CASH_REGISTER_ID\\\";\\nString POIID = \\\"YOUR_TERMINAL_ID\\\";\\nString serviceID = \\\"YOUR_UNIQUE_ATTEMPT_ID\\\";\\n\\nSaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();\\nDisplayRequest displayRequest = new DisplayRequest();\\nDisplayOutput displayOutput = new DisplayOutput();\\nOutputContent outputContent = new OutputContent();\\noutputContent.setOutputFormat( OutputFormatType.MESSAGE_REF );\\nPredefinedContent predefinedContent = new PredefinedContent();\\npredefinedContent.setReferenceID(\\\"event=APPLICATION_SELECTED\\\");\\noutputContent.setPredefinedContent(predefinedContent);\\ndisplayOutput.setOutputContent(outputContent);\\ndisplayOutput.setInfoQualify( InfoQualifyType.STATUS );\\ndisplayOutput.setDevice( DeviceType.CASHIER_DISPLAY );\\ndisplayOutput.setResponseRequiredFlag( Boolean.FALSE );\\ndisplayRequest.setDisplayOutput(displayOutput);\\nsaleToPOIRequest.setDisplayRequest(displayRequest);\\n\\nMessageHeader messageHeader = new MessageHeader();\\nmessageHeader.setSaleID(saleID);\\nmessageHeader.setProtocolVersion(\\\"3.0\\\");\\nmessageHeader.setMessageType( MessageType.REQUEST );\\nmessageHeader.setPOIID(POIID);\\nmessageHeader.setServiceID(serviceID);\\nmessageHeader.setMessageClass( MessageClassType.DEVICE );\\nmessageHeader.setMessageCategory( MessageCategoryType.DISPLAY );\\nmessageHeader.setDeviceID(\\\"1517998565\\\");\\nsaleToPOIRequest.setMessageHeader(messageHeader);\\nterminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<h3 id=\"wait-for-pin\">WAIT_FOR_PIN<\/h3>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"''\" :id=\"'display-notifications_5'\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"JSON\",\"content\":\"{\\n  \\\"SaleToPOIRequest\\\":{\\n    \\\"DisplayRequest\\\":{\\n      \\\"DisplayOutput\\\":[\\n        {\\n          \\\"Device\\\":\\\"CashierDisplay\\\",\\n          \\\"InfoQualify\\\":\\\"Status\\\",\\n          \\\"OutputContent\\\":{\\n            \\\"OutputFormat\\\":\\\"MessageRef\\\",\\n            \\\"PredefinedContent\\\":{\\n              \\\"ReferenceID\\\":\\\"event=WAIT_FOR_PIN\\\"\\n            }\\n          },\\n          \\\"ResponseRequiredFlag\\\":false\\n        }\\n      ]\\n    },\\n    \\\"MessageHeader\\\":{\\n      \\\"SaleID\\\":\\\"POSSystemID12345\\\",\\n      \\\"ProtocolVersion\\\":\\\"3.0\\\",\\n      \\\"MessageType\\\":\\\"Request\\\",\\n      \\\"POIID\\\":\\\"V400m-324688179\\\",\\n      \\\"ServiceID\\\":\\\"0207111617\\\",\\n      \\\"MessageClass\\\":\\\"Device\\\",\\n      \\\"MessageCategory\\\":\\\"Display\\\",\\n      \\\"DeviceID\\\":\\\"1517998566\\\"\\n    }\\n  }\\n}\"},{\"language\":\"java\",\"tabTitle\":\"Java\",\"content\":\"String saleID = \\\"YOUR_CASH_REGISTER_ID\\\";\\nString POIID = \\\"YOUR_TERMINAL_ID\\\";\\nString serviceID = \\\"YOUR_UNIQUE_ATTEMPT_ID\\\";\\n\\nSaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();\\nDisplayRequest displayRequest = new DisplayRequest();\\nDisplayOutput displayOutput = new DisplayOutput();\\nOutputContent outputContent = new OutputContent();\\noutputContent.setOutputFormat( OutputFormatType.MESSAGE_REF );\\nPredefinedContent predefinedContent = new PredefinedContent();\\npredefinedContent.setReferenceID(\\\"event=WAIT_FOR_PIN\\\");\\noutputContent.setPredefinedContent(predefinedContent);\\ndisplayOutput.setOutputContent(outputContent);\\ndisplayOutput.setInfoQualify( InfoQualifyType.STATUS );\\ndisplayOutput.setDevice( DeviceType.CASHIER_DISPLAY );\\ndisplayOutput.setResponseRequiredFlag( Boolean.FALSE );\\ndisplayRequest.setDisplayOutput(displayOutput);\\nsaleToPOIRequest.setDisplayRequest(displayRequest);\\n\\nMessageHeader messageHeader = new MessageHeader();\\nmessageHeader.setSaleID(saleID);\\nmessageHeader.setProtocolVersion(\\\"3.0\\\");\\nmessageHeader.setMessageType( MessageType.REQUEST );\\nmessageHeader.setPOIID(POIID);\\nmessageHeader.setServiceID(serviceID);\\nmessageHeader.setMessageClass( MessageClassType.DEVICE );\\nmessageHeader.setMessageCategory( MessageCategoryType.DISPLAY );\\nmessageHeader.setDeviceID(\\\"1517998566\\\");\\nsaleToPOIRequest.setMessageHeader(messageHeader);\\nterminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<h3 id=\"pin-entered\">PIN_ENTERED<\/h3>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"''\" :id=\"'display-notifications_7'\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"JSON\",\"content\":\"{\\n  \\\"SaleToPOIRequest\\\":{\\n    \\\"DisplayRequest\\\":{\\n      \\\"DisplayOutput\\\":[\\n        {\\n          \\\"Device\\\":\\\"CashierDisplay\\\",\\n          \\\"InfoQualify\\\":\\\"Status\\\",\\n          \\\"OutputContent\\\":{\\n            \\\"OutputFormat\\\":\\\"MessageRef\\\",\\n            \\\"PredefinedContent\\\":{\\n              \\\"ReferenceID\\\":\\\"event=PIN_ENTERED\\\"\\n            }\\n          },\\n          \\\"ResponseRequiredFlag\\\":false\\n        }\\n      ]\\n    },\\n    \\\"MessageHeader\\\":{\\n      \\\"SaleID\\\":\\\"POSSystemID12345\\\",\\n      \\\"ProtocolVersion\\\":\\\"3.0\\\",\\n      \\\"MessageType\\\":\\\"Request\\\",\\n      \\\"POIID\\\":\\\"V400m-324688179\\\",\\n      \\\"ServiceID\\\":\\\"0207111617\\\",\\n      \\\"MessageClass\\\":\\\"Device\\\",\\n      \\\"MessageCategory\\\":\\\"Display\\\",\\n      \\\"DeviceID\\\":\\\"1517998571\\\"\\n    }\\n  }\\n}\"},{\"language\":\"java\",\"tabTitle\":\"Java\",\"content\":\"String saleID = \\\"YOUR_CASH_REGISTER_ID\\\";\\nString POIID = \\\"YOUR_TERMINAL_ID\\\";\\nString serviceID = \\\"YOUR_UNIQUE_ATTEMPT_ID\\\";\\n\\nSaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();\\nDisplayRequest displayRequest = new DisplayRequest();\\nDisplayOutput displayOutput = new DisplayOutput();\\nOutputContent outputContent = new OutputContent();\\noutputContent.setOutputFormat( OutputFormatType.MESSAGE_REF );\\nPredefinedContent predefinedContent = new PredefinedContent();\\npredefinedContent.setReferenceID(\\\"event=PIN_ENTERED\\\");\\noutputContent.setPredefinedContent(predefinedContent);\\ndisplayOutput.setOutputContent(outputContent);\\ndisplayOutput.setInfoQualify( InfoQualifyType.STATUS );\\ndisplayOutput.setDevice( DeviceType.CASHIER_DISPLAY );\\ndisplayOutput.setResponseRequiredFlag( Boolean.FALSE );\\ndisplayRequest.setDisplayOutput(displayOutput);\\nsaleToPOIRequest.setDisplayRequest(displayRequest);\\n\\nMessageHeader messageHeader = new MessageHeader();\\nmessageHeader.setSaleID(saleID);\\nmessageHeader.setProtocolVersion(\\\"3.0\\\");\\nmessageHeader.setMessageType( MessageType.REQUEST );\\nmessageHeader.setPOIID(POIID);\\nmessageHeader.setServiceID(serviceID);\\nmessageHeader.setMessageClass( MessageClassType.DEVICE );\\nmessageHeader.setMessageCategory( MessageCategoryType.DISPLAY );\\nmessageHeader.setDeviceID(\\\"1517998571\\\");\\nsaleToPOIRequest.setMessageHeader(messageHeader);\\nterminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<h3 id=\"print-receipt\">PRINT_RECEIPT<\/h3>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"''\" :id=\"'display-notifications_8'\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"JSON\",\"content\":\"{\\n  \\\"SaleToPOIRequest\\\":{\\n    \\\"DisplayRequest\\\":{\\n      \\\"DisplayOutput\\\":[\\n        {\\n          \\\"Device\\\":\\\"CashierDisplay\\\",\\n          \\\"InfoQualify\\\":\\\"Status\\\",\\n          \\\"OutputContent\\\":{\\n            \\\"OutputFormat\\\":\\\"MessageRef\\\",\\n            \\\"PredefinedContent\\\":{\\n              \\\"ReferenceID\\\":\\\"event=PRINT_RECEIPT\\\"\\n            }\\n          },\\n          \\\"ResponseRequiredFlag\\\":false\\n        }\\n      ]\\n    },\\n    \\\"MessageHeader\\\":{\\n      \\\"SaleID\\\":\\\"POSSystemID12345\\\",\\n      \\\"ProtocolVersion\\\":\\\"3.0\\\",\\n      \\\"MessageType\\\":\\\"Request\\\",\\n      \\\"POIID\\\":\\\"V400m-324688179\\\",\\n      \\\"ServiceID\\\":\\\"0207111617\\\",\\n      \\\"MessageClass\\\":\\\"Device\\\",\\n      \\\"MessageCategory\\\":\\\"Display\\\",\\n      \\\"DeviceID\\\":\\\"1517998572\\\"\\n    }\\n  }\\n}\"},{\"language\":\"java\",\"tabTitle\":\"Java\",\"content\":\"String saleID = \\\"YOUR_CASH_REGISTER_ID\\\";\\nString POIID = \\\"YOUR_TERMINAL_ID\\\";\\nString serviceID = \\\"YOUR_UNIQUE_ATTEMPT_ID\\\";\\n\\nSaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();\\nDisplayRequest displayRequest = new DisplayRequest();\\nDisplayOutput displayOutput = new DisplayOutput();\\nOutputContent outputContent = new OutputContent();\\noutputContent.setOutputFormat( OutputFormatType.MESSAGE_REF );\\nPredefinedContent predefinedContent = new PredefinedContent();\\npredefinedContent.setReferenceID(\\\"event=PRINT_RECEIPT\\\");\\noutputContent.setPredefinedContent(predefinedContent);\\ndisplayOutput.setOutputContent(outputContent);\\ndisplayOutput.setInfoQualify( InfoQualifyType.STATUS );\\ndisplayOutput.setDevice( DeviceType.CASHIER_DISPLAY );\\ndisplayOutput.setResponseRequiredFlag( Boolean.FALSE );\\ndisplayRequest.setDisplayOutput(displayOutput);\\nsaleToPOIRequest.setDisplayRequest(displayRequest);\\n\\nMessageHeader messageHeader = new MessageHeader();\\nmessageHeader.setSaleID(saleID);\\nmessageHeader.setProtocolVersion(\\\"3.0\\\");\\nmessageHeader.setMessageType( MessageType.REQUEST );\\nmessageHeader.setPOIID(POIID);\\nmessageHeader.setServiceID(serviceID);\\nmessageHeader.setMessageClass( MessageClassType.DEVICE );\\nmessageHeader.setMessageCategory( MessageCategoryType.DISPLAY );\\nmessageHeader.setDeviceID(\\\"1517998572\\\");\\nsaleToPOIRequest.setMessageHeader(messageHeader);\\nterminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<h3 id=\"card-removed\">CARD_REMOVED<\/h3>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"''\" :id=\"'display-notifications_9'\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"JSON\",\"content\":\"{\\n  \\\"SaleToPOIRequest\\\":{\\n    \\\"DisplayRequest\\\":{\\n      \\\"DisplayOutput\\\":[\\n        {\\n          \\\"Device\\\":\\\"CashierDisplay\\\",\\n          \\\"InfoQualify\\\":\\\"Status\\\",\\n          \\\"OutputContent\\\":{\\n            \\\"OutputFormat\\\":\\\"MessageRef\\\",\\n            \\\"PredefinedContent\\\":{\\n              \\\"ReferenceID\\\":\\\"event=CARD_REMOVED\\\"\\n            }\\n          },\\n          \\\"ResponseRequiredFlag\\\":false\\n        }\\n      ]\\n    },\\n    \\\"MessageHeader\\\":{\\n      \\\"SaleID\\\":\\\"POSSystemID12345\\\",\\n      \\\"ProtocolVersion\\\":\\\"3.0\\\",\\n      \\\"MessageType\\\":\\\"Request\\\",\\n      \\\"POIID\\\":\\\"V400m-324688179\\\",\\n      \\\"ServiceID\\\":\\\"0207111617\\\",\\n      \\\"MessageClass\\\":\\\"Device\\\",\\n      \\\"MessageCategory\\\":\\\"Display\\\",\\n      \\\"DeviceID\\\":\\\"1517998573\\\"\\n    }\\n  }\\n}\"},{\"language\":\"java\",\"tabTitle\":\"Java\",\"content\":\"String saleID = \\\"YOUR_CASH_REGISTER_ID\\\";\\nString POIID = \\\"YOUR_TERMINAL_ID\\\";\\nString serviceID = \\\"YOUR_UNIQUE_ATTEMPT_ID\\\";\\n\\nSaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();\\nDisplayRequest displayRequest = new DisplayRequest();\\nDisplayOutput displayOutput = new DisplayOutput();\\nOutputContent outputContent = new OutputContent();\\noutputContent.setOutputFormat( OutputFormatType.MESSAGE_REF );\\nPredefinedContent predefinedContent = new PredefinedContent();\\npredefinedContent.setReferenceID(\\\"event=CARD_REMOVED\\\");\\noutputContent.setPredefinedContent(predefinedContent);\\ndisplayOutput.setOutputContent(outputContent);\\ndisplayOutput.setInfoQualify( InfoQualifyType.STATUS );\\ndisplayOutput.setDevice( DeviceType.CASHIER_DISPLAY );\\ndisplayOutput.setResponseRequiredFlag( Boolean.FALSE );\\ndisplayRequest.setDisplayOutput(displayOutput);\\nsaleToPOIRequest.setDisplayRequest(displayRequest);\\n\\nMessageHeader messageHeader = new MessageHeader();\\nmessageHeader.setSaleID(saleID);\\nmessageHeader.setProtocolVersion(\\\"3.0\\\");\\nmessageHeader.setMessageType( MessageType.REQUEST );\\nmessageHeader.setPOIID(POIID);\\nmessageHeader.setServiceID(serviceID);\\nmessageHeader.setMessageClass( MessageClassType.DEVICE );\\nmessageHeader.setMessageCategory( MessageCategoryType.DISPLAY );\\nmessageHeader.setDeviceID(\\\"1517998573\\\");\\nsaleToPOIRequest.setMessageHeader(messageHeader);\\nterminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<h3 id=\"tender-final\">TENDER_FINAL<\/h3>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"''\" :id=\"'display-notifications_10'\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"JSON\",\"content\":\"{\\n  \\\"SaleToPOIRequest\\\":{\\n    \\\"DisplayRequest\\\":{\\n      \\\"DisplayOutput\\\":[\\n        {\\n          \\\"Device\\\":\\\"CashierDisplay\\\",\\n          \\\"InfoQualify\\\":\\\"Status\\\",\\n          \\\"OutputContent\\\":{\\n            \\\"OutputFormat\\\":\\\"MessageRef\\\",\\n            \\\"PredefinedContent\\\":{\\n              \\\"ReferenceID\\\":\\\"Result=Success&amp;TimeStamp=2018-09-27T14:40:18.000Z&amp;TransactionID=faQm001538059218000.NC6HT9CRT65ZGN82&amp;event=TENDER_FINAL\\\"\\n            }\\n          },\\n          \\\"ResponseRequiredFlag\\\":false\\n        }\\n      ]\\n    },\\n    \\\"MessageHeader\\\":{\\n      \\\"SaleID\\\":\\\"POSSystemID12345\\\",\\n      \\\"ProtocolVersion\\\":\\\"3.0\\\",\\n      \\\"MessageType\\\":\\\"Request\\\",\\n      \\\"POIID\\\":\\\"V400m-324688179\\\",\\n      \\\"ServiceID\\\":\\\"0207111617\\\",\\n      \\\"MessageClass\\\":\\\"Device\\\",\\n      \\\"MessageCategory\\\":\\\"Display\\\",\\n      \\\"DeviceID\\\":\\\"1517998573\\\"\\n    }\\n  }\\n}\"},{\"language\":\"java\",\"tabTitle\":\"Java\",\"content\":\"String saleID = \\\"YOUR_CASH_REGISTER_ID\\\";\\nString POIID = \\\"YOUR_TERMINAL_ID\\\";\\nString serviceID = \\\"YOUR_UNIQUE_ATTEMPT_ID\\\";\\n\\nSaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();\\nDisplayRequest displayRequest = new DisplayRequest();\\nDisplayOutput displayOutput = new DisplayOutput();\\ndisplayOutput.setResponseRequiredFlag( Boolean.FALSE );\\ndisplayOutput.setDevice( DeviceType.CASHIER_DISPLAY );\\ndisplayOutput.setInfoQualify( InfoQualifyType.STATUS );\\nOutputContent outputContent = new OutputContent();\\nPredefinedContent predefinedContent = new PredefinedContent();\\npredefinedContent.setReferenceID(\\\"Result=Success&amp;TimeStamp=2018-09-27T14:40:18.000Z&amp;TransactionID=faQm001538059218000.NC6HT9CRT65ZGN82&amp;event=TENDER_FINAL\\\");\\noutputContent.setPredefinedContent(predefinedContent);\\noutputContent.setOutputFormat( OutputFormatType.MESSAGE_REF );\\ndisplayOutput.setOutputContent(outputContent);\\ndisplayRequest.setDisplayOutput(displayOutput);\\nsaleToPOIRequest.setDisplayRequest(displayRequest);\\n\\nMessageHeader messageHeader = new MessageHeader();\\nmessageHeader.setSaleID(saleID);\\nmessageHeader.setProtocolVersion(\\\"3.0\\\");\\nmessageHeader.setMessageType( MessageType.REQUEST );\\nmessageHeader.setPOIID(POIID);\\nmessageHeader.setServiceID(serviceID);\\nmessageHeader.setMessageClass( MessageClassType.DEVICE );\\nmessageHeader.setMessageCategory( MessageCategoryType.DISPLAY );\\nmessageHeader.setDeviceID(\\\"1517998573\\\");\\nsaleToPOIRequest.setMessageHeader(messageHeader);\\nterminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<h3 id=\"balance-query-started\">BALANCE_QUERY_STARTED<\/h3>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"''\" :id=\"'display-notifications_11'\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"JSON\",\"content\":\"{\\n  \\\"SaleToPOIRequest\\\":{\\n    \\\"DisplayRequest\\\":{\\n      \\\"DisplayOutput\\\":[\\n        {\\n          \\\"Device\\\":\\\"CashierDisplay\\\",\\n          \\\"InfoQualify\\\":\\\"Status\\\",\\n          \\\"OutputContent\\\":{\\n            \\\"OutputFormat\\\":\\\"MessageRef\\\",\\n            \\\"PredefinedContent\\\":{\\n              \\\"ReferenceID\\\":\\\"event=BALANCE_QUERY_STARTED\\\"\\n            }\\n          },\\n          \\\"ResponseRequiredFlag\\\":false\\n        }\\n      ]\\n    },\\n    \\\"MessageHeader\\\":{\\n      \\\"SaleID\\\":\\\"Ray\\\",\\n      \\\"MessageClass\\\":\\\"Device\\\",\\n      \\\"MessageCategory\\\":\\\"Display\\\",\\n      \\\"ServiceID\\\":\\\"S34\\\",\\n      \\\"POIID\\\":\\\"V400m-324688179\\\",\\n      \\\"MessageType\\\":\\\"Request\\\",\\n      \\\"DeviceID\\\":\\\"39288033\\\"\\n    }\\n  }\\n}\"},{\"language\":\"java\",\"tabTitle\":\"Java\",\"content\":\"String saleID = \\\"YOUR_CASH_REGISTER_ID\\\";\\nString serviceID = \\\"YOUR_UNIQUE_ATTEMPT_ID\\\";\\nString POIID = \\\"YOUR_TERMINAL_ID\\\";\\n\\nSaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();\\nDisplayRequest displayRequest = new DisplayRequest();\\nDisplayOutput displayOutput = new DisplayOutput();\\ndisplayOutput.setResponseRequiredFlag( Boolean.FALSE );\\ndisplayOutput.setDevice( DeviceType.CASHIER_DISPLAY );\\ndisplayOutput.setInfoQualify( InfoQualifyType.STATUS );\\nOutputContent outputContent = new OutputContent();\\nPredefinedContent predefinedContent = new PredefinedContent();\\npredefinedContent.setReferenceID(\\\"event=BALANCE_QUERY_STARTED\\\");\\noutputContent.setPredefinedContent(predefinedContent);\\noutputContent.setOutputFormat( OutputFormatType.MESSAGE_REF );\\ndisplayOutput.setOutputContent(outputContent);\\ndisplayRequest.setDisplayOutput(displayOutput);\\nsaleToPOIRequest.setDisplayRequest(displayRequest);\\n\\nMessageHeader messageHeader = new MessageHeader();\\nmessageHeader.setSaleID(saleID);\\nmessageHeader.setMessageClass( MessageClassType.DEVICE );\\nmessageHeader.setMessageCategory( MessageCategoryType.DISPLAY );\\nmessageHeader.setServiceID(serviceID);\\nmessageHeader.setPOIID(POIID);\\nmessageHeader.setMessageType( MessageType.REQUEST );\\nmessageHeader.setDeviceID(\\\"39288033\\\");\\nsaleToPOIRequest.setMessageHeader(messageHeader);\\nterminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<h3 id=\"gratuity-entered\">GRATUITY_ENTERED<\/h3>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"''\" :id=\"'display-notifications_12'\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"JSON\",\"content\":\"{\\n  \\\"SaleToPOIRequest\\\":{\\n    \\\"DisplayRequest\\\":{\\n      \\\"DisplayOutput\\\":[\\n        {\\n          \\\"Device\\\":\\\"CashierDisplay\\\",\\n          \\\"InfoQualify\\\":\\\"Status\\\",\\n          \\\"OutputContent\\\":{\\n            \\\"OutputFormat\\\":\\\"MessageRef\\\",\\n            \\\"PredefinedContent\\\":{\\n              \\\"ReferenceID\\\":\\\"event=GRATUITY_ENTERED\\\"\\n            }\\n          },\\n          \\\"ResponseRequiredFlag\\\":false\\n        }\\n      ]\\n    },\\n    \\\"MessageHeader\\\":{\\n      \\\"SaleID\\\":\\\"POSSystemID12345\\\",\\n      \\\"ProtocolVersion\\\":\\\"3.0\\\",\\n      \\\"MessageType\\\":\\\"Request\\\",\\n      \\\"POIID\\\":\\\"V400m-324688179\\\",\\n      \\\"ServiceID\\\":\\\"0207111617\\\",\\n      \\\"MessageClass\\\":\\\"Device\\\",\\n      \\\"MessageCategory\\\":\\\"Display\\\",\\n      \\\"DeviceID\\\":\\\"1517998573\\\"\\n    }\\n  }\\n}\"},{\"language\":\"java\",\"tabTitle\":\"Java\",\"content\":\"String saleID = \\\"YOUR_CASH_REGISTER_ID\\\";\\nString POIID = \\\"YOUR_TERMINAL_ID\\\";\\nString serviceID = \\\"YOUR_UNIQUE_ATTEMPT_ID\\\";\\n\\nSaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();\\nDisplayRequest displayRequest = new DisplayRequest();\\nDisplayOutput displayOutput = new DisplayOutput();\\ndisplayOutput.setResponseRequiredFlag( Boolean.FALSE );\\ndisplayOutput.setDevice( DeviceType.CASHIER_DISPLAY );\\ndisplayOutput.setInfoQualify( InfoQualifyType.STATUS );\\nOutputContent outputContent = new OutputContent();\\nPredefinedContent predefinedContent = new PredefinedContent();\\npredefinedContent.setReferenceID(\\\"event=GRATUITY_ENTERED\\\");\\noutputContent.setPredefinedContent(predefinedContent);\\noutputContent.setOutputFormat( OutputFormatType.MESSAGE_REF );\\ndisplayOutput.setOutputContent(outputContent);\\ndisplayRequest.setDisplayOutput(displayOutput);\\nsaleToPOIRequest.setDisplayRequest(displayRequest);\\n\\nMessageHeader messageHeader = new MessageHeader();\\nmessageHeader.setSaleID(saleID);\\nmessageHeader.setProtocolVersion(\\\"3.0\\\");\\nmessageHeader.setMessageType( MessageType.REQUEST );\\nmessageHeader.setPOIID(POIID);\\nmessageHeader.setServiceID(serviceID);\\nmessageHeader.setMessageClass( MessageClassType.DEVICE );\\nmessageHeader.setMessageCategory( MessageCategoryType.DISPLAY );\\nmessageHeader.setDeviceID(\\\"1517998573\\\");\\nsaleToPOIRequest.setMessageHeader(messageHeader);\\nterminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<h3 id=\"load-started\">LOAD_STARTED<\/h3>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"''\" :id=\"'display-notifications_13'\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"JSON\",\"content\":\"{\\n  \\\"SaleToPOIRequest\\\":{\\n    \\\"DisplayRequest\\\":{\\n      \\\"DisplayOutput\\\":[\\n        {\\n          \\\"Device\\\":\\\"CashierDisplay\\\",\\n          \\\"InfoQualify\\\":\\\"Status\\\",\\n          \\\"OutputContent\\\":{\\n            \\\"OutputFormat\\\":\\\"MessageRef\\\",\\n            \\\"PredefinedContent\\\":{\\n              \\\"ReferenceID\\\":\\\"event=LOAD_STARTED\\\"\\n            }\\n          },\\n          \\\"ResponseRequiredFlag\\\":false\\n        }\\n      ]\\n    },\\n    \\\"MessageHeader\\\":{\\n      \\\"SaleID\\\":\\\"POSSystemID12345\\\",\\n      \\\"ProtocolVersion\\\":\\\"3.0\\\",\\n      \\\"MessageType\\\":\\\"Request\\\",\\n      \\\"POIID\\\":\\\"V400m-324688179\\\",\\n      \\\"ServiceID\\\":\\\"0207111617\\\",\\n      \\\"MessageClass\\\":\\\"Device\\\",\\n      \\\"MessageCategory\\\":\\\"Display\\\",\\n      \\\"DeviceID\\\":\\\"1517998573\\\"\\n    }\\n  }\\n}\"},{\"language\":\"java\",\"tabTitle\":\"Java\",\"content\":\"String saleID = \\\"YOUR_CASH_REGISTER_ID\\\";\\nString POIID = \\\"YOUR_TERMINAL_ID\\\";\\nString serviceID = \\\"YOUR_UNIQUE_ATTEMPT_ID\\\";\\n\\nSaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();\\nDisplayRequest displayRequest = new DisplayRequest();\\nDisplayOutput displayOutput = new DisplayOutput();\\ndisplayOutput.setResponseRequiredFlag( Boolean.FALSE );\\ndisplayOutput.setDevice( DeviceType.CASHIER_DISPLAY );\\ndisplayOutput.setInfoQualify( InfoQualifyType.STATUS );\\nOutputContent outputContent = new OutputContent();\\nPredefinedContent predefinedContent = new PredefinedContent();\\npredefinedContent.setReferenceID(\\\"event=LOAD_STARTED\\\");\\noutputContent.setPredefinedContent(predefinedContent);\\noutputContent.setOutputFormat( OutputFormatType.MESSAGE_REF );\\ndisplayOutput.setOutputContent(outputContent);\\ndisplayRequest.setDisplayOutput(displayOutput);\\nsaleToPOIRequest.setDisplayRequest(displayRequest);\\n\\nMessageHeader messageHeader = new MessageHeader();\\nmessageHeader.setSaleID(saleID);\\nmessageHeader.setProtocolVersion(\\\"3.0\\\");\\nmessageHeader.setMessageType( MessageType.REQUEST );\\nmessageHeader.setPOIID(POIID);\\nmessageHeader.setServiceID(serviceID);\\nmessageHeader.setMessageClass( MessageClassType.DEVICE );\\nmessageHeader.setMessageCategory( MessageCategoryType.DISPLAY );\\nmessageHeader.setDeviceID(\\\"1517998573\\\");\\nsaleToPOIRequest.setMessageHeader(messageHeader);\\nterminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<h3 id=\"provide-card-details\">PROVIDE_CARD_DETAILS<\/h3>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"''\" :id=\"'display-notifications_14'\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"JSON\",\"content\":\"{\\n  \\\"SaleToPOIRequest\\\":{\\n    \\\"DisplayRequest\\\":{\\n      \\\"DisplayOutput\\\":[\\n        {\\n          \\\"Device\\\":\\\"CashierDisplay\\\",\\n          \\\"InfoQualify\\\":\\\"Status\\\",\\n          \\\"OutputContent\\\":{\\n            \\\"OutputFormat\\\":\\\"MessageRef\\\",\\n            \\\"PredefinedContent\\\":{\\n              \\\"ReferenceID\\\":\\\"event=PROVIDE_CARD_DETAILS\\\"\\n            }\\n          },\\n          \\\"ResponseRequiredFlag\\\":false\\n        }\\n      ]\\n    },\\n    \\\"MessageHeader\\\":{\\n      \\\"SaleID\\\":\\\"POSSystemID12345\\\",\\n      \\\"ProtocolVersion\\\":\\\"3.0\\\",\\n      \\\"MessageType\\\":\\\"Request\\\",\\n      \\\"POIID\\\":\\\"V400m-324688179\\\",\\n      \\\"ServiceID\\\":\\\"0207111617\\\",\\n      \\\"MessageClass\\\":\\\"Device\\\",\\n      \\\"MessageCategory\\\":\\\"Display\\\",\\n      \\\"DeviceID\\\":\\\"1517998573\\\"\\n    }\\n  }\\n}\"},{\"language\":\"java\",\"tabTitle\":\"Java\",\"content\":\"String saleID = \\\"YOUR_CASH_REGISTER_ID\\\";\\nString POIID = \\\"YOUR_TERMINAL_ID\\\";\\nString serviceID = \\\"YOUR_UNIQUE_ATTEMPT_ID\\\";\\n\\nSaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();\\nDisplayRequest displayRequest = new DisplayRequest();\\nDisplayOutput displayOutput = new DisplayOutput();\\ndisplayOutput.setResponseRequiredFlag( Boolean.FALSE );\\ndisplayOutput.setDevice( DeviceType.CASHIER_DISPLAY );\\ndisplayOutput.setInfoQualify( InfoQualifyType.STATUS );\\nOutputContent outputContent = new OutputContent();\\nPredefinedContent predefinedContent = new PredefinedContent();\\npredefinedContent.setReferenceID(\\\"event=PROVIDE_CARD_DETAILS\\\");\\noutputContent.setPredefinedContent(predefinedContent);\\noutputContent.setOutputFormat( OutputFormatType.MESSAGE_REF );\\ndisplayOutput.setOutputContent(outputContent);\\ndisplayRequest.setDisplayOutput(displayOutput);\\nsaleToPOIRequest.setDisplayRequest(displayRequest);\\n\\nMessageHeader messageHeader = new MessageHeader();\\nmessageHeader.setSaleID(saleID);\\nmessageHeader.setProtocolVersion(\\\"3.0\\\");\\nmessageHeader.setMessageType( MessageType.REQUEST );\\nmessageHeader.setPOIID(POIID);\\nmessageHeader.setServiceID(serviceID);\\nmessageHeader.setMessageClass( MessageClassType.DEVICE );\\nmessageHeader.setMessageCategory( MessageCategoryType.DISPLAY );\\nmessageHeader.setDeviceID(\\\"1517998573\\\");\\nsaleToPOIRequest.setMessageHeader(messageHeader);\\nterminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>","url":"https:\/\/docs.adyen.com\/point-of-sale\/design-your-integration\/notifications\/display-notifications","articleFields":{"description":"Receive terminal-generated display notifications in your POS app.","next_steps":[{"title":"Terminal API","description":"Learn about our Terminal API.","url":"\/point-of-sale\/design-your-integration\/terminal-api","required":true},{"title":"Event notifications","description":"Receive asynchronous responses and notifications of terminal events.","url":"\/point-of-sale\/design-your-integration\/notifications\/event-notifications","required":false},{"title":"Platform-generated webhooks","description":"Receive standard webhooks generated by our platform.","url":"\/point-of-sale\/design-your-integration\/notifications\/standard-notifications","required":false}]},"algolia":{"url":"https:\/\/docs.adyen.com\/point-of-sale\/design-your-integration\/notifications\/display-notifications","title":"Display notifications","content":"During a transaction or tender, the payment terminal generates display notifications. You can show these in your POS app to keep your staff up-to-date on the progress of the tender. For example, whether the customer has selected Dynamic Currency Conversion, or finished entering their PIN.\nHere we describe how to set up display notifications. You can do this in your Customer Area or by using API calls. You then receive webhooks that include a Terminal API DisplayRequest from the terminal. This has an event indicating the progress of the transaction, or the result of the transaction. You can use this information to show a message in your POS app.\nWe also provide an overview of display notification types, and examples of each.\nSet up display notifications in the Customer Area\nTo get display notifications, you need to make sure you can receive HTTP callbacks (webhooks) on a specific endpoint. Then you need to provide the URL to that endpoint in your Customer Area. Make sure to acknowledge that your POS system successfully received a display notification from the terminal.\n\n\nPrepare your system. It needs to have:\n\nAn endpoint that can receive JSON messages.\nFor the test environment: an open TCP port for HTTP traffic (80, 8080, or 8888) or HTTPS traffic (443, 8443, or 8843) with TLSv1.2.\n\nFor the live environment: an open TCP port for HTTPS traffic (443, 8443, or 8843) with TLSv1.2.\n\n\n\n\n\nLog in to your Customer Area.\n\n\nSwitch to the merchant account, store, or terminal that you want to set up notifications for.\n\n\nGo to In-person payments &gt; Terminal settings &gt; Integrations.\n\n\nIn the Terminal API section, select Decrypted.\n\n\nUnder Display URLs, select Add new.\n\n\nSelect the pencil icon  next to the field that appears.\nThe Add URL dialog opens.\n\n\nEnter the details:\n\nURL: the URL of the endpoint where you want to receive display notifications.\nUsername and Password (optional): the basic authentication credentials you set up on your server. We include these details in the header of the notification to authenticate with your server.\nPublic: select this option if the specified URL is on a public network.\nLocal: select this option if the specified URL is on a Local Area Network.\n\nEnable encryption: select this if you want the message sent to this URL to be encrypted.\n\n\n\n\n\nSelect Add URL.\n\n\nSelect Save.\n\n\nDisplay notifications will now be sent to the endpoint you specified.\nSet up display notifications using API calls\nInstead of using your Customer Area, you can use our Management API to automate setting up display notifications. To get display notifications, make sure you can receive HTTP callbacks (webhooks) on a specific endpoint. You then need to provide the URL to that endpoint in the PATCH request. Make sure to acknowledge that your POS system successfully received a display notification from the terminal.\nTo set up display notifications, you need to have the following role:\n\nManagement API - Terminal settings Advanced read and write\n\nProceed as follows:\n\n\nPrepare your system. It needs to have:\n\nAn endpoint that can receive JSON messages.\nFor the test environment: an open TCP port for HTTP traffic (80, 8080, or 8888) or HTTPS traffic (443, 8443, or 8843) with TLSv1.2.\nFor the live environment: an open TCP port for HTTPS traffic (443, 8443, or 8843) with TLSv1.2.\n\n\n\nOptional. To see what display notification settings have already been configured, make a GET request to the \/terminalSettings endpoint for the  company account,  merchant account,  store or  terminal, and check the nexo.displayUrls object.\n\nWhen removing settings, you need to know the settings that will be inherited from the next higher level.\n\n\n\nMake a PATCH request to the \/terminalSettings endpoint on the  company account,  merchant account,  store or  terminal level.\nIn the request body, inside the  nexo object, specify:\n\nlocalUrls: an array with one or more local URLs. Use this if the specified URL is on a Local Area Network. This includes:\n\n\n\n\nParameter\nData&nbsp;type\nDescription\n\n\n\n\nencrypted\nBoolean\nIndicates if the message sent to this URL should be encrypted.\n\n\npassword\nString\nThe password for authentication of the notifications.\n\n\nurl\nString\nThe URL of the endpoint where they want to receive notifications, in the format: http(s):\/\/domain.com.\n\n\nusername\nString\nThe username for authentication of the notifications.\n\n\n\n\npublicUrls: an array with one or more public URLs. Use this if the specified URL is on a public network. This includes:\n\n\n\n\nParameter\nData&nbsp;type\nDescription\n\n\n\n\nencrypted\nBoolean\nIndicates if the message sent to this URL should be encrypted.\n\n\npassword\nString\nThe password for authentication of the notifications.\n\n\nurl\nString\nThe URL of the endpoint where they want to receive notifications, in the format: http(s):\/\/domain.com.\n\n\nusername\nString\nThe username for authentication of the notifications.\n\n\n\n\n\n\n\n\nWhen you receive the response, note that this returns the entire configuration at the level where you made the request.\n\n\n\n\n\nAccept display notifications\nWe require you to acknowledge that your POS system successfully received a display notification from the terminal with a successful HTTP response status code, for example 202. This prevents the terminal or our backend from repeatedly re-sending the same notification.\nWhen your POS system receives an display notification:\n\nStore the display notification in your database.\nAcknowledge the display notification with a successful HTTP response status code, for example 202.\nApply your business logic.\nMake sure that you acknowledge the display notification before you apply any business logic, because an error in your business logic can prevent event notifications with important updates from reaching your system.\n\nDisplay notification types\nA display notification is a DisplayRequest sent from the terminal. It includes a ReferenceID field with either:\n\nevent: the interaction between the terminal and the customer.\nResult: the outcome of the transaction.\n\nUse the ReferenceID to show a message to your staff, informing them of the progress of the transaction.\nThe main display notification types are:\n\n    \n        \n    \n    \n        \n            Event\n            Description\n        \n    \n  \n    \nTENDER_CREATED\n\n      \nThe tender has started.The ReferenceID includes: the event TENDER_CREATED, and the TimeStamp and TransactionID of the transaction.\n\n  \n  \n    \nCARD_INSERTED\n\n      \nThe shopper has inserted their card into the terminal.\n\n  \n  \n    \nCARD_PRESENTED\n\n    \nThe shopper has presented the card to the terminal's contactless reader.\n\n  \n  \n    \nCARD_SWIPED\n\n      \nThe shopper has swiped their card.\n\n  \n  \n    \nWAIT_FOR APP_SELECTION\n\n      \nThe terminal is waiting for the shopper to select a payment application.\n\n  \n  \n    \nAPPLICATION_SELECTED\n\n      \nThe shopper has selected their preferred payment application.\n\n  \n  \n    \nASK_SIGNATURE\n\n    \nThe terminal has prompted the shopper to provide their signature.\n\n  \n  \n    \nCHECK_SIGNATURE\n\n    \nThe signature is ready to be checked by store staff.\n\n  \n  \n    \nSIGNATURE_CHECKED\n\n    \nThe signature has been checked by store staff.\n\n  \n  \n    \nWAIT_FOR_PIN\n\n      \nThe terminal is waiting for the shopper to enter their PIN.\n\n  \n  \n    \nPIN_ENTERED\n\n      \nThe shopper has finished entering their PIN.\n\n  \n  \n    \nPRINT_RECEIPT\n\n      \nThe terminal is printing the receipt.\n\n  \n  \n    \nRECEIPT_PRINTED\n\n    \nThe terminal has finished printing the receipt.\n\n  \n  \n    \nCARD_REMOVED\n\n      \nThe shopper has removed their card from the terminal.\n\n  \n  \n    \nTENDER_FINAL\n\n      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.\n  \n  \n    \nASK_DCC\n\n    \nThe terminal is asking if the shopper requires dynamic currency conversion.\n\n  \n  \n    \nDCC_ACCEPTED\n\n    \nThe shopper accepted the dynamic currency conversion request.\n\n  \n  \n    \nDCC_REJECTED\n\n    \nThe shopper rejected the dynamic currency conversion request.\n\n  \n  \n    \nASK_GRATUITY\n\n    \nThe terminal is waiting for a possible tip.\n\n  \n  \n    \nGRATUITY_ENTERED\n\n      \nThe shopper has entered a gratuity on the terminal.\n\n  \n  \n    \nBALANCE_QUERY_STARTED\n\n      \nBalance check started on the terminal.\n\n  \n  \n    \nBALANCE_QUERY_COMPLETED\n\n    \nBalance check completed on the terminal.\n\n  \n  \n    \nLOAD_STARTED\n\n      \nGift card load has been initiated.\n\n  \n  \n    \nLOAD_COMPLETED\n\n    \nGift card load has been completed.\n\n  \n  \n    \nPROVIDE_CARD_DETAILS\n\n      \nThe terminal is waiting for card details to be entered manually.\n\n  \n  \n    \nCARD_DETAILS_PROVIDED\n\n    \nThe card details have been entered.\n\n  \n\nExamples of display notifications are provided below.\nExamples\nTENDER_CREATED\n\n    \n\nCARD_INSERTED\n\n    \n\nCARD_SWIPED\n\n    \n\nWAIT_FOR_APP_SELECTION\n\n    \n\nAPPLICATION_SELECTED\n\n    \n\nWAIT_FOR_PIN\n\n    \n\nPIN_ENTERED\n\n    \n\nPRINT_RECEIPT\n\n    \n\nCARD_REMOVED\n\n    \n\nTENDER_FINAL\n\n    \n\nBALANCE_QUERY_STARTED\n\n    \n\nGRATUITY_ENTERED\n\n    \n\nLOAD_STARTED\n\n    \n\nPROVIDE_CARD_DETAILS\n\n    \n","type":"page","locale":"en","boost":16,"hierarchy":{"lvl0":"Home","lvl1":"In-person payments","lvl2":"Design your integration","lvl3":"Notifications and webhooks","lvl4":"Display notifications"},"hierarchy_url":{"lvl0":"https:\/\/docs.adyen.com\/","lvl1":"https:\/\/docs.adyen.com\/point-of-sale","lvl2":"https:\/\/docs.adyen.com\/point-of-sale\/design-your-integration","lvl3":"https:\/\/docs.adyen.com\/point-of-sale\/design-your-integration\/notifications","lvl4":"\/point-of-sale\/design-your-integration\/notifications\/display-notifications"},"levels":5,"category":"In-person payments","category_color":"green","tags":["Display","notifications"]},"articleFiles":{"display-notifications_0.json":"<p alt=\"\">display-notifications_0.json<\/p>","display-notifications_1.json":"<p alt=\"\">display-notifications_1.json<\/p>","display-notifications_2.json":"<p alt=\"\">display-notifications_2.json<\/p>","display-notifications_3.json":"<p alt=\"\">display-notifications_3.json<\/p>","display-notifications_4.json":"<p alt=\"\">display-notifications_4.json<\/p>","display-notifications_5.json":"<p alt=\"\">display-notifications_5.json<\/p>","display-notifications_6.json":"<p alt=\"\">display-notifications_6.json<\/p>","display-notifications_7.json":"<p alt=\"\">display-notifications_7.json<\/p>","display-notifications_8.json":"<p alt=\"\">display-notifications_8.json<\/p>","display-notifications_9.json":"<p alt=\"\">display-notifications_9.json<\/p>","display-notifications_10.json":"<p alt=\"\">display-notifications_10.json<\/p>","display-notifications_11.json":"<p alt=\"\">display-notifications_11.json<\/p>","display-notifications_12.json":"<p alt=\"\">display-notifications_12.json<\/p>","display-notifications_13.json":"<p alt=\"\">display-notifications_13.json<\/p>","display-notifications_14.json":"<p alt=\"\">display-notifications_14.json<\/p>"}}
