{"title":"Event notifications","category":"default","creationDate":1727766660,"content":"<p>From time to time, your payment terminal encounters an issue, or needs to perform maintenance. When this happens, the terminal generates an event notification. You can use event notifications in your POS app to inform your staff of the terminal's availability and state.<\/p>\n<div class=\"notices yellow\">\n<p>If your integration uses <a href=\"\/point-of-sale\/design-your-integration\/choose-your-architecture\/cloud#async\">asynchronous cloud communications<\/a>, you must set up event notifications. We then send the Terminal API responses to your endpoint.<\/p>\n<\/div>\n<p>Here we describe how to set up event notifications. You can do this in your <a href=\"#set-up-in-ca\">Customer Area<\/a> or by using <a href=\"#set-up-event-notifications-using-api-calls\">API calls<\/a>. You then receive webhooks that include a Terminal API <a href=\"#event-notification-types\">\n  <code>EventNotification<\/code>\n<\/a> and, if applicable, a Terminal API <a href=\"#async-response\">asynchronous <code>SaleToPOIResponse<\/code><\/a>. You can use the received information to show a message in your POS app.<\/p>\n<h2 id=\"set-up-in-ca\">Set up event notifications in the Customer Area<\/h2>\n<p>To get event notifications and, if applicable, asynchronous Terminal API responses, 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-event-notifications\">acknowledge<\/a> that your POS system successfully received an event 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>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>Log in to your <a href=\"https:\/\/ca-test.adyen.com\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">test 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>Event 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 event 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><strong>Enable encryption<\/strong>: select this if you want the message sent to this URL to be encrypted.<\/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>Event notifications will now be sent to the endpoint you specified. If you are using cloud communications with an asynchronous result, the Terminal API responses are also sent to this endpoint.<\/p>\n<h2>Set up event 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-event-notifications\">acknowledge<\/a> that your POS system successfully received an event notification from the terminal.<\/p>\n<p>To set up event notifications, you need to have the following <a href=\"\/development-resources\/api-credentials#api-permissions\">role<\/a>:<\/p>\n<ul>\n<li>Management API\u2014Terminal Advanced settings 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.eventUrls<\/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>eventLocalUrls<\/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 you 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>eventPublicUrls<\/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 you 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;eventUrls\\&quot;:{\\n            \\&quot;eventLocalUrls\\&quot;:[\\n                {\\n                    \\&quot;encrypted\\&quot;:\\&quot;true\\&quot;,\\n                    \\&quot;password\\&quot;:\\&quot;CREDENTIAL_PASSWORD\\&quot;,\\n                    \\&quot;url\\&quot;:\\&quot;https:\\\/\\\/your-event-notifications-endpoint.com\\&quot;,\\n                    \\&quot;username\\&quot;:\\&quot;CREDENTIAL_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\\\":\\\"CREDENTIAL_PASSWORD\\\",\\n                    \\\"url\\\":\\\"https:\\\/\\\/your-display-notifications-endpoint.com\\\",\\n                    \\\"username\\\":\\\"CREDENTIAL_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\\\":\\\"CREDENTIAL_PASSWORD\\\",\\n                    \\\"url\\\":\\\"https:\\\/\\\/your-event-notifications-endpoint.com\\\",\\n                    \\\"username\\\":\\\"CREDENTIAL_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 event notifications<\/h2>\n<p>We require you to acknowledge that your POS system successfully received an event 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 event notification:<\/p>\n<ol>\n<li>Store the event notification in your database.<\/li>\n<li>Acknowledge the event 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 event 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>Event notification types<\/h2>\n<p>Each notification contains a unique <code>DeviceID<\/code> and a <code>EventToNotify<\/code> value. You can use <code>EventToNotify<\/code> to show a message in your POS app informing your staff of the terminal's state.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Event<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><code><a href=\"#shutdown\">Shutdown<\/a><\/code><\/td>\n<td style=\"text-align: left;\">The terminal is shutting down.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code><a href=\"#begin-maintenance\">BeginMaintenance<\/a><\/code><\/td>\n<td style=\"text-align: left;\">Terminal maintenance is starting.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code><a href=\"#end-maintenance\">EndMaintenance<\/a><\/code><\/td>\n<td style=\"text-align: left;\">Terminal maintenance is finishing.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code><a href=\"#out-of-order\">OutOfOrder<\/a><\/code><\/td>\n<td style=\"text-align: left;\">The terminal is out of order.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code><a href=\"#initialised\">Initialised<\/a><\/code><\/td>\n<td style=\"text-align: left;\">The terminal has been initialized.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code><a href=\"#network-connected\">NetworkConnected<\/a><\/code><\/td>\n<td style=\"text-align: left;\">The terminal is connected to your POS system over the internet.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code><a href=\"#network-disconnected\">NetworkDisconnected<\/a><\/code><\/td>\n<td style=\"text-align: left;\">The terminal is disconnected from your POS system.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code><a href=\"#reject\">Reject<\/a><\/code><\/td>\n<td style=\"text-align: left;\">A request was rejected. The <code>EventDetails<\/code> element contains an explanation of the error.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code><a href=\"#sale-wake-up\">SaleWakeUp<\/a><\/code><\/td>\n<td style=\"text-align: left;\">The terminal is starting a payment request. The <code>EventDetails<\/code> element contains the reference number that was entered on the terminal.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code><a href=\"#use-another-card-for-preauth\">UseAnotherCardForPreauth<\/a><\/code><\/td>\n<td style=\"text-align: left;\">The terminal requests a different card brand that supports pre-authorisation and authorisation adjustment.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Event notification examples<\/h2>\n<h3 id=\"shutdown\">Shutdown<\/h3>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Shutdown'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n   \\\"SaleToPOIRequest\\\":{\\n      \\\"EventNotification\\\":{\\n         \\\"EventDetails\\\":\\\"newstate=IDLE&amp;oldstate=START\\\",\\n         \\\"EventToNotify\\\":\\\"Shutdown\\\",\\n         \\\"TimeStamp\\\":\\\"2019-08-07T10:16:10.000Z\\\"\\n      },\\n      \\\"MessageHeader\\\":{\\n         \\\"SaleID\\\":\\\"POSSystemID12345\\\",\\n         \\\"ProtocolVersion\\\":\\\"3.0\\\",\\n         \\\"MessageType\\\":\\\"Notification\\\",\\n         \\\"POIID\\\":\\\"V400m-324688179\\\",\\n         \\\"MessageClass\\\":\\\"Event\\\",\\n         \\\"MessageCategory\\\":\\\"Event\\\",\\n         \\\"DeviceID\\\":\\\"1517998561\\\"\\n      }\\n   }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<h3 id=\"begin-maintenance\">BeginMaintenance<\/h3>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Example notification'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n   \\\"SaleToPOIRequest\\\":{\\n      \\\"EventNotification\\\":{\\n         \\\"EventDetails\\\":\\\"newstate=IDLE&amp;oldstate=START\\\",\\n         \\\"EventToNotify\\\":\\\"BeginMaintenance\\\",\\n         \\\"TimeStamp\\\":\\\"2019-08-07T10:16:10.000Z\\\"\\n      },\\n      \\\"MessageHeader\\\":{\\n         \\\"SaleID\\\":\\\"POSSystemID12345\\\",\\n         \\\"ProtocolVersion\\\":\\\"3.0\\\",\\n         \\\"MessageType\\\":\\\"Notification\\\",\\n         \\\"POIID\\\":\\\"V400m-324688179\\\",\\n         \\\"MessageClass\\\":\\\"Event\\\",\\n         \\\"MessageCategory\\\":\\\"Event\\\",\\n         \\\"DeviceID\\\":\\\"1517998562\\\"\\n      }\\n   }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<h3 id=\"end-maintenance\">EndMaintenance<\/h3>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Example notification'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n   \\\"SaleToPOIRequest\\\":{\\n      \\\"EventNotification\\\":{\\n         \\\"EventDetails\\\":\\\"newstate=IDLE&amp;oldstate=START\\\",\\n         \\\"EventToNotify\\\":\\\"EndMaintenance\\\",\\n         \\\"TimeStamp\\\":\\\"2019-08-07T10:16:10.000Z\\\"\\n      },\\n      \\\"MessageHeader\\\":{\\n         \\\"SaleID\\\":\\\"POSSystemID12345\\\",\\n         \\\"ProtocolVersion\\\":\\\"3.0\\\",\\n         \\\"MessageType\\\":\\\"Notification\\\",\\n         \\\"POIID\\\":\\\"V400m-324688179\\\",\\n         \\\"MessageClass\\\":\\\"Event\\\",\\n         \\\"MessageCategory\\\":\\\"Event\\\",\\n         \\\"DeviceID\\\":\\\"1517998561\\\"\\n      }\\n   }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<h3 id=\"out-of-order\">OutOfOrder<\/h3>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Example notification'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n   \\\"SaleToPOIRequest\\\":{\\n      \\\"EventNotification\\\":{\\n         \\\"EventDetails\\\":\\\"newstate=IDLE&amp;oldstate=START\\\",\\n         \\\"EventToNotify\\\":\\\"OutOfOrder\\\",\\n         \\\"TimeStamp\\\":\\\"2019-08-07T10:16:10.000Z\\\"\\n      },\\n      \\\"MessageHeader\\\":{\\n         \\\"SaleID\\\":\\\"POSSystemID12345\\\",\\n         \\\"ProtocolVersion\\\":\\\"3.0\\\",\\n         \\\"MessageType\\\":\\\"Notification\\\",\\n         \\\"POIID\\\":\\\"V400m-324688179\\\",\\n         \\\"MessageClass\\\":\\\"Event\\\",\\n         \\\"MessageCategory\\\":\\\"Event\\\",\\n         \\\"DeviceID\\\":\\\"1517998563\\\"\\n      }\\n   }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<h3 id=\"initialised\">Initialised<\/h3>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Example notification'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n   \\\"SaleToPOIRequest\\\":{\\n      \\\"EventNotification\\\":{\\n         \\\"EventDetails\\\":\\\"newstate=IDLE&amp;oldstate=START\\\",\\n         \\\"EventToNotify\\\":\\\"Initialised\\\",\\n         \\\"TimeStamp\\\":\\\"2019-08-07T10:16:10.000Z\\\"\\n      },\\n      \\\"MessageHeader\\\":{\\n         \\\"SaleID\\\":\\\"POSSystemID12345\\\",\\n         \\\"ProtocolVersion\\\":\\\"3.0\\\",\\n         \\\"MessageType\\\":\\\"Notification\\\",\\n         \\\"POIID\\\":\\\"V400m-324688179\\\",\\n         \\\"MessageClass\\\":\\\"Event\\\",\\n         \\\"MessageCategory\\\":\\\"Event\\\",\\n         \\\"DeviceID\\\":\\\"1517998564\\\"\\n      }\\n   }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<h3 id=\"network-connected\">NetworkConnected<\/h3>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Example notification'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n   \\\"SaleToPOIRequest\\\":{\\n      \\\"EventNotification\\\":{\\n         \\\"EventDetails\\\":\\\"message=Terminal V400m-324688179 connected\\\",\\n         \\\"EventToNotify\\\":\\\"NetworkConnected\\\",\\n         \\\"TimeStamp\\\":\\\"2025-05-07T10:16:10.000Z\\\"\\n      },\\n      \\\"MessageHeader\\\":{\\n         \\\"SaleID\\\":\\\"POSSystemID12345\\\",\\n         \\\"ProtocolVersion\\\":\\\"3.0\\\",\\n         \\\"MessageType\\\":\\\"Notification\\\",\\n         \\\"POIID\\\":\\\"V400m-324688179\\\",\\n         \\\"MessageClass\\\":\\\"Event\\\",\\n         \\\"MessageCategory\\\":\\\"Event\\\",\\n         \\\"DeviceID\\\":\\\"1517998565\\\"\\n      }\\n   }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<h3 id=\"network-disconnected\">NetworkDisconnected<\/h3>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Example notification'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n   \\\"SaleToPOIRequest\\\":{\\n      \\\"EventNotification\\\":{\\n         \\\"EventDetails\\\":\\\"message=Terminal V400m-324688179 disconnected\\\",\\n         \\\"EventToNotify\\\":\\\"NetworkDisconnected\\\",\\n         \\\"TimeStamp\\\":\\\"2025-05-07T10:16:10.000Z\\\"\\n      },\\n      \\\"MessageHeader\\\":{\\n         \\\"SaleID\\\":\\\"POSSystemID12345\\\",\\n         \\\"ProtocolVersion\\\":\\\"3.0\\\",\\n         \\\"MessageType\\\":\\\"Notification\\\",\\n         \\\"POIID\\\":\\\"V400m-324688179\\\",\\n         \\\"MessageClass\\\":\\\"Event\\\",\\n         \\\"MessageCategory\\\":\\\"Event\\\",\\n         \\\"DeviceID\\\":\\\"1517998565\\\"\\n      }\\n   }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<h3 id=\"reject\">Reject<\/h3>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Example notification'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n   \\\"SaleToPOIRequest\\\":{\\n      \\\"EventNotification\\\":{\\n         \\\"EventDetails\\\":\\\"newstate=IDLE&amp;oldstate=START\\\",\\n         \\\"EventToNotify\\\":\\\"Reject\\\",\\n         \\\"TimeStamp\\\":\\\"2019-08-07T10:16:10.000Z\\\"\\n      },\\n      \\\"MessageHeader\\\":{\\n         \\\"SaleID\\\":\\\"POSSystemID12345\\\",\\n         \\\"ProtocolVersion\\\":\\\"3.0\\\",\\n         \\\"MessageType\\\":\\\"Notification\\\",\\n         \\\"POIID\\\":\\\"V400m-324688179\\\",\\n         \\\"MessageClass\\\":\\\"Event\\\",\\n         \\\"MessageCategory\\\":\\\"Event\\\",\\n         \\\"DeviceID\\\":\\\"1517998565\\\"\\n      }\\n   }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<h3 id=\"sale-wake-up\">SaleWakeUp<\/h3>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Example notification'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n   \\\"SaleToPOIRequest\\\":{\\n      \\\"EventNotification\\\":{\\n         \\\"EventDetails\\\":\\\"0123456789\\\",\\n         \\\"EventToNotify\\\":\\\"SaleWakeUp\\\",\\n         \\\"TimeStamp\\\":\\\"2019-11-15T10:16:10.000Z\\\"\\n      },\\n      \\\"MessageHeader\\\":{\\n         \\\"SaleID\\\":\\\"POSSystemID12345\\\",\\n         \\\"ProtocolVersion\\\":\\\"3.0\\\",\\n         \\\"MessageType\\\":\\\"Notification\\\",\\n         \\\"POIID\\\":\\\"V400m-324688179\\\",\\n         \\\"MessageClass\\\":\\\"Event\\\",\\n         \\\"MessageCategory\\\":\\\"Event\\\",\\n         \\\"DeviceID\\\":\\\"1517998561\\\"\\n      }\\n   }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<h3 id=\"use-another-card-for-preauth\">UseAnotherCardForPreauth<\/h3>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Example notification'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n   \\\"SaleToPOIRequest\\\":{\\n      \\\"EventNotification\\\":{\\n         \\\"EventDetails\\\":\\\"paymentBrand=maestro\\\",\\n         \\\"EventToNotify\\\":\\\"UseAnotherCardForPreauth\\\",\\n         \\\"MaintenanceRequiredFlag\\\":false,\\n         \\\"TimeStamp\\\":\\\"2024-08-11T00:25:16.959Z\\\"\\n      },\\n      \\\"MessageHeader\\\":{\\n         \\\"SaleID\\\":\\\"POSSystemID12345\\\",\\n         \\\"ProtocolVersion\\\":\\\"3.0\\\",\\n         \\\"MessageType\\\":\\\"Notification\\\",\\n         \\\"POIID\\\":\\\"V400m-324688179\\\",\\n         \\\"MessageClass\\\":\\\"Event\\\",\\n         \\\"MessageCategory\\\":\\\"Event\\\",\\n         \\\"DeviceID\\\":\\\"1517998561\\\"\\n      }\\n   }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<h2 id=\"async-response\">Asynchronous Terminal API responses<\/h2>\n<p>If you use cloud communications and send your Terminal API requests to an <a href=\"\/point-of-sale\/design-your-integration\/choose-your-architecture\/cloud#async\">asynchronous endpoint<\/a>, we send the Terminal API responses to your event notifications endpoint (provided you have set that up). These responses are exactly the same as the responses you'd receive in a Terminal API integration using local communications, or using cloud communications with a synchronous endpoint.<\/p>\n<p>The example below is a payment response.<\/p>\n<pre><code class=\"language-json\">{\n  \"SaleToPOIResponse\": {\n    \"MessageHeader\": {\n      \"MessageCategory\": \"Payment\",\n      \"MessageClass\": \"Service\",\n      \"MessageType\": \"Response\",\n      \"POIID\": \"V400m-324688170\",\n      \"ProtocolVersion\": \"3.0\",\n      \"SaleID\": \"POSSystemID12345\",\n      \"ServiceID\": \"200\"\n    },\n    \"PaymentResponse\": {\n      \"POIData\": {\n        \"POIReconciliationID\": \"1000\",\n        \"POITransactionID\": {\n          \"TimeStamp\": \"2021-07-13T13:18:27.000Z\",\n          \"TransactionID\": \"CWf3001626182307000.NC6HT9CRT65ZGN82\"\n        }\n      },\n      \"PaymentReceipt\": [\n        {\n          \"DocumentQualifier\": \"CashierReceipt\",\n          ...\n          \"RequiredSignatureFlag\": false\n        },\n        {\n          \"DocumentQualifier\": \"CustomerReceipt\",\n          ...\n          \"RequiredSignatureFlag\": false\n        }\n      ],\n      \"PaymentResult\": {\n        \"AmountsResp\": {\n          \"AuthorizedAmount\": 45.08,\n          \"Currency\": \"EUR\"\n        },\n        \"OnlineFlag\": true,\n        \"PaymentAcquirerData\": {...},\n        \"PaymentInstrumentData\": {\n          \"CardData\": {\n            \"CardCountryCode\": \"826\",\n            \"EntryMode\": [\n              \"Contactless\"\n            ],\n            \"MaskedPan\": \"541333 **** 9999\",\n            \"PaymentBrand\": \"mc\",\n            \"SensitiveCardData\": {\n              \"CardSeqNumb\": \"33\",\n              \"ExpiryDate\": \"0228\"\n            }\n          },\n          \"PaymentInstrumentType\": \"Card\"\n        }\n      },\n      \"Response\": {\n        \"AdditionalResponse\": \"AID=A000000004101001&amp;tid=47314497&amp;transactionType=GOODS_SERVICES&amp;...B&amp;posAuthAmountValue=4508\",\n        \"Result\": \"Success\"\n      },\n      \"SaleData\": {\n        \"SaleTransactionID\": {\n          \"TimeStamp\": \"2021-07-13T13:18:27.846Z\",\n          \"TransactionID\": \"772\"\n        }\n      }\n    }\n  }\n}<\/code><\/pre>","url":"https:\/\/docs.adyen.com\/point-of-sale\/design-your-integration\/notifications\/event-notifications","articleFields":{"description":"Receive terminal-generated event notifications in your POS app.","next_steps":[{"title":"Terminal API fundamentals","description":"Learn about our Terminal API.","url":"\/point-of-sale\/design-your-integration\/terminal-api","required":true},{"title":"Display notifications","description":"Keep your staff informed of the progress of the transaction.","url":"\/point-of-sale\/design-your-integration\/notifications\/display-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}],"feedback_component":true,"filters_component":false,"decision_tree":"[]","page_id":"19483e75-ef41-4a98-b014-15eb3e99139c","last_edit_on":"14-07-2025 16:00"},"algolia":{"url":"https:\/\/docs.adyen.com\/point-of-sale\/design-your-integration\/notifications\/event-notifications","title":"Event notifications","content":"From time to time, your payment terminal encounters an issue, or needs to perform maintenance. When this happens, the terminal generates an event notification. You can use event notifications in your POS app to inform your staff of the terminal's availability and state.\n\nIf your integration uses asynchronous cloud communications, you must set up event notifications. We then send the Terminal API responses to your endpoint.\n\nHere we describe how to set up event notifications. You can do this in your Customer Area or by using API calls. You then receive webhooks that include a Terminal API \n  EventNotification\n and, if applicable, a Terminal API asynchronous SaleToPOIResponse. You can use the received information to show a message in your POS app.\nSet up event notifications in the Customer Area\nTo get event notifications and, if applicable, asynchronous Terminal API responses, 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 an event 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.\nFor the live environment: an open TCP port for HTTPS traffic (443, 8443, or 8843) with TLSv1.2.\n\n\n\nLog in to your test 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 Event 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 event 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.\nEnable encryption: select this if you want the message sent to this URL to be encrypted.\n\n\n\nSelect Add URL.\n\n\nSelect Save.\n\n\nEvent notifications will now be sent to the endpoint you specified. If you are using cloud communications with an asynchronous result, the Terminal API responses are also sent to this endpoint.\nSet up event 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 an event notification from the terminal.\nTo set up event notifications, you need to have the following role:\n\nManagement API\u2014Terminal Advanced settings 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.eventUrls 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\neventLocalUrls: 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 you 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\neventPublicUrls: 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 you 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 event notifications\nWe require you to acknowledge that your POS system successfully received an event 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 event notification:\n\nStore the event notification in your database.\nAcknowledge the event notification with a successful HTTP response status code, for example 202.\nApply your business logic.\nMake sure that you acknowledge the event 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\nEvent notification types\nEach notification contains a unique DeviceID and a EventToNotify value. You can use EventToNotify to show a message in your POS app informing your staff of the terminal's state.\n\n\n\nEvent\nDescription\n\n\n\n\nShutdown\nThe terminal is shutting down.\n\n\nBeginMaintenance\nTerminal maintenance is starting.\n\n\nEndMaintenance\nTerminal maintenance is finishing.\n\n\nOutOfOrder\nThe terminal is out of order.\n\n\nInitialised\nThe terminal has been initialized.\n\n\nNetworkConnected\nThe terminal is connected to your POS system over the internet.\n\n\nNetworkDisconnected\nThe terminal is disconnected from your POS system.\n\n\nReject\nA request was rejected. The EventDetails element contains an explanation of the error.\n\n\nSaleWakeUp\nThe terminal is starting a payment request. The EventDetails element contains the reference number that was entered on the terminal.\n\n\nUseAnotherCardForPreauth\nThe terminal requests a different card brand that supports pre-authorisation and authorisation adjustment.\n\n\n\nEvent notification examples\nShutdown\n\n    \n\nBeginMaintenance\n\n    \n\nEndMaintenance\n\n    \n\nOutOfOrder\n\n    \n\nInitialised\n\n    \n\nNetworkConnected\n\n    \n\nNetworkDisconnected\n\n    \n\nReject\n\n    \n\nSaleWakeUp\n\n    \n\nUseAnotherCardForPreauth\n\n    \n\nAsynchronous Terminal API responses\nIf you use cloud communications and send your Terminal API requests to an asynchronous endpoint, we send the Terminal API responses to your event notifications endpoint (provided you have set that up). These responses are exactly the same as the responses you'd receive in a Terminal API integration using local communications, or using cloud communications with a synchronous endpoint.\nThe example below is a payment response.\n{\n  \"SaleToPOIResponse\": {\n    \"MessageHeader\": {\n      \"MessageCategory\": \"Payment\",\n      \"MessageClass\": \"Service\",\n      \"MessageType\": \"Response\",\n      \"POIID\": \"V400m-324688170\",\n      \"ProtocolVersion\": \"3.0\",\n      \"SaleID\": \"POSSystemID12345\",\n      \"ServiceID\": \"200\"\n    },\n    \"PaymentResponse\": {\n      \"POIData\": {\n        \"POIReconciliationID\": \"1000\",\n        \"POITransactionID\": {\n          \"TimeStamp\": \"2021-07-13T13:18:27.000Z\",\n          \"TransactionID\": \"CWf3001626182307000.NC6HT9CRT65ZGN82\"\n        }\n      },\n      \"PaymentReceipt\": [\n        {\n          \"DocumentQualifier\": \"CashierReceipt\",\n          ...\n          \"RequiredSignatureFlag\": false\n        },\n        {\n          \"DocumentQualifier\": \"CustomerReceipt\",\n          ...\n          \"RequiredSignatureFlag\": false\n        }\n      ],\n      \"PaymentResult\": {\n        \"AmountsResp\": {\n          \"AuthorizedAmount\": 45.08,\n          \"Currency\": \"EUR\"\n        },\n        \"OnlineFlag\": true,\n        \"PaymentAcquirerData\": {...},\n        \"PaymentInstrumentData\": {\n          \"CardData\": {\n            \"CardCountryCode\": \"826\",\n            \"EntryMode\": [\n              \"Contactless\"\n            ],\n            \"MaskedPan\": \"541333 **** 9999\",\n            \"PaymentBrand\": \"mc\",\n            \"SensitiveCardData\": {\n              \"CardSeqNumb\": \"33\",\n              \"ExpiryDate\": \"0228\"\n            }\n          },\n          \"PaymentInstrumentType\": \"Card\"\n        }\n      },\n      \"Response\": {\n        \"AdditionalResponse\": \"AID=A000000004101001&amp;tid=47314497&amp;transactionType=GOODS_SERVICES&amp;...B&amp;posAuthAmountValue=4508\",\n        \"Result\": \"Success\"\n      },\n      \"SaleData\": {\n        \"SaleTransactionID\": {\n          \"TimeStamp\": \"2021-07-13T13:18:27.846Z\",\n          \"TransactionID\": \"772\"\n        }\n      }\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":"Event 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\/event-notifications"},"levels":5,"category":"In-person payments","category_color":"green","tags":["Event","notifications"]}}
