{"title":"Cancel collecting input","category":"default","creationDate":1779796134,"content":"<p>While an input request is in progress, you can cancel it in the same way that you can cancel an in-progress payment. Here we describe how you can cancel an input request from:<\/p>\n<ul>\n<li><a href=\"#cancel-from-cash-register\">Your POS app<\/a> by sending a Terminal API abort request.<\/li>\n<li><a href=\"#cancel-from-terminal\">The terminal<\/a>.<\/li>\n<\/ul>\n<h2>Requirements<\/h2>\n<p>Before you begin, take into account the following requirement.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Requirement<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><strong>Integration type<\/strong><\/td>\n<td style=\"text-align: left;\">A <a href=\"\/point-of-sale\/get-started\">Terminal API integration<\/a> with payment terminals.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2 id=\"cancel-from-cash-register\">Cancel from POS app<\/h2>\n<p>To cancel an <a href=\"\/point-of-sale\/shopper-engagement\/shopper-input\">\n  <code>InputRequest<\/code>\n<\/a> from your POS app:<\/p>\n<ol>\n<li>\n<p>Make a <a href=\"\/point-of-sale\/design-your-integration\/terminal-api\">Terminal API<\/a> abort request, specifying:<\/p>\n<ul>\n<li>\n<p>The standard <a href=\"\/point-of-sale\/design-your-integration\/terminal-api#request-message-header\">\n  <code>SaleToPOIRequest.MessageHeader<\/code>\n<\/a> object, with <code>MessageClass<\/code> set to <span translate=\"no\"><strong>Service<\/strong><\/span> and <code>MessageCategory<\/code> set to <span translate=\"no\"><strong>Abort<\/strong><\/span>.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Parameter<\/th>\n<th style=\"text-align: center;\">Required<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><code>ProtocolVersion<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\"><strong>3.0<\/strong><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>MessageClass<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>Service<\/strong><\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>MessageCategory<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>Abort<\/strong><\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>MessageType<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>Request<\/strong><\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>ServiceID<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\">Your unique ID for this request, consisting of 1-10 alphanumeric characters. Must be unique within the last 48 hours for the terminal (<code>POIID<\/code>) being used.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>SaleID<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\">Your unique ID for the POS system component to send this request from.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>POIID<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\">The unique ID of the terminal to send this request to. Format: <em>[device model]-[serial number]<\/em>.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<p>The  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/terminal-api\/latest\/post\/abort\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">AbortRequest<\/a> object with:<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Parameter<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><code>AbortReason<\/code><\/td>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>MerchantAbort<\/strong><\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>MessageReference<\/code><\/td>\n<td style=\"text-align: left;\">An object with: <ul><li markdown=\"1\"><code>MessageCategory<\/code>: <span translate=\"no\"><strong>Input<\/strong><\/span><\/li> <li markdown=\"1\"><code>SaleID<\/code>: your unique ID of the POS app component that sent the input request.<\/li> <li markdown=\"1\"><code>ServiceID<\/code>: the <code>ServiceID<\/code> of the input request being cancelled.<\/li><\/ul><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/li>\n<\/ul>\n<p>The example shows how to cancel an in-progress input request with a <code>ServiceID<\/code> of <strong>21796<\/strong>.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Abort an in-progress input request'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n   \\\"SaleToPOIRequest\\\":{\\n      \\\"MessageHeader\\\":{\\n         \\\"ProtocolVersion\\\":\\\"3.0\\\",\\n         \\\"MessageClass\\\":\\\"Service\\\",\\n         \\\"MessageCategory\\\":\\\"Abort\\\",\\n         \\\"MessageType\\\":\\\"Request\\\",\\n         \\\"SaleID\\\":\\\"POSSystemID12345\\\",\\n         \\\"ServiceID\\\":\\\"29239\\\",\\n         \\\"POIID\\\":\\\"V400m-324688179\\\"\\n      },\\n      \\\"AbortRequest\\\":{\\n         \\\"AbortReason\\\":\\\"MerchantAbort\\\",\\n         \\\"MessageReference\\\":{\\n            \\\"MessageCategory\\\":\\\"Input\\\",\\n            \\\"SaleID\\\":\\\"POSSystemID12345\\\",\\n            \\\"ServiceID\\\":\\\"21796\\\"\\n         }\\n      }\\n   }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p>A successful <code>AbortRequest<\/code> returns a response with a <code>200 OK<\/code> HTTP status code and no body.<\/p>\n<\/li>\n<li>\n<p>Check whether the cancellation was successful:<\/p>\n<ul>\n<li>The screen generated by your <code>InputRequest<\/code> disappears from the terminal display.<\/li>\n<li>The <code>InputRequest<\/code> returns a response containing:\n<ul>\n<li><code>Result<\/code>: <span translate=\"no\"><strong>Failure<\/strong><\/span><\/li>\n<li><code>ErrorCondition<\/code>: <span translate=\"no\"><strong>Aborted<\/strong><\/span><\/li>\n<\/ul><\/li>\n<\/ul>\n<p>The following example shows the response for a confirmation input request that was cancelled.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'InputResponse after canceling the InputRequest'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n    \\\"SaleToPOIResponse\\\": {\\n        \\\"InputResponse\\\": {\\n            \\\"InputResult\\\": {\\n                \\\"Device\\\": \\\"CustomerInput\\\",\\n                \\\"InfoQualify\\\": \\\"Input\\\",\\n                \\\"Response\\\": {\\n                    \\\"Result\\\": \\\"Failure\\\",\\n                    \\\"ErrorCondition\\\": \\\"Aborted\\\"\\n                },\\n                \\\"Input\\\": {\\n                    \\\"InputCommand\\\": \\\"GetConfirmation\\\"\\n                }\\n            },\\n            \\\"OutputResult\\\": {\\n                \\\"Device\\\": \\\"CustomerDisplay\\\",\\n                \\\"InfoQualify\\\": \\\"Display\\\",\\n                \\\"Response\\\": {\\n                    \\\"Result\\\": \\\"Success\\\"\\n                }\\n            }\\n        },\\n        \\\"MessageHeader\\\": {\\n            \\\"ProtocolVersion\\\": \\\"3.0\\\",\\n            \\\"SaleID\\\": \\\"POSSystemID12345\\\",\\n            \\\"MessageClass\\\": \\\"Device\\\",\\n            \\\"MessageCategory\\\": \\\"Input\\\",\\n            \\\"ServiceID\\\": \\\"010\\\",\\n            \\\"POIID\\\": \\\"V400m-324688179\\\",\\n            \\\"MessageType\\\": \\\"Response\\\"\\n        }\\n    }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<\/ol>\n<h2 id=\"cancel-from-terminal\">Cancel from terminal<\/h2>\n<p>To cancel an in-progress input request from a terminal:<\/p>\n<ul>\n<li>Press the <strong>Cancel<\/strong> key <strong><img alt=\"\" src=\"\/images\/e\/b\/5\/8\/6\/eb5864c171bd3eac47d4a415a1f7e5dc0b075c28-cancel2x.png\" \/><\/strong> on the terminal keypad.<br \/>\nIn case of a terminal without a keypad, on the display select the <em>Cancel<\/em> icon <img style=\"width: 60px;\" alt=\"\" src=\"\/user\/pages\/reuse\/image-library\/buttons\/cancel-icon\/nav-cancel.svg?decoding=auto&amp;fetchpriority=auto\" \/><\/li>\n<\/ul>\n<p>If this is successful:<\/p>\n<ul>\n<li>The screen generated by your <code>InputRequest<\/code> disappears from the terminal display.<\/li>\n<li>\n<p>The <code>InputRequest<\/code> returns a response. Depending on the type of input, this <code>InputResponse<\/code> contains:<\/p>\n <div class=\"sticky-table-container\">\n    \n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\"><strong>Type of input<\/strong><\/th>\n<th style=\"text-align: center;\"><code>Result<\/code><\/th>\n<th style=\"text-align: center;\"><code>ConfirmedFlag<\/code><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><a href=\"\/point-of-sale\/shopper-engagement\/shopper-input\/confirmation\">Confirmation<\/a><\/td>\n<td style=\"text-align: center;\">Success<\/td>\n<td style=\"text-align: center;\">false<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><a href=\"\/point-of-sale\/shopper-engagement\/shopper-input\/signature\">Signature<\/a><\/td>\n<td style=\"text-align: center;\">Success<\/td>\n<td style=\"text-align: center;\">false<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n \n<\/div>\n\n <div class=\"sticky-table-container\">\n    \n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\"><strong>Type of input<\/strong><\/th>\n<th style=\"text-align: center;\"><code>Result<\/code><\/th>\n<th style=\"text-align: center;\"><code>ErrorCondition<\/code><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><a href=\"\/point-of-sale\/shopper-engagement\/shopper-input\/menu\">Menu<\/a><\/td>\n<td style=\"text-align: center;\">Failure<\/td>\n<td style=\"text-align: center;\">Cancel<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><a href=\"\/point-of-sale\/shopper-engagement\/shopper-input\/digit\">Digit<\/a><\/td>\n<td style=\"text-align: center;\">Failure<\/td>\n<td style=\"text-align: center;\">Cancel<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><a href=\"\/point-of-sale\/shopper-engagement\/shopper-input\/text\">Text<\/a><\/td>\n<td style=\"text-align: center;\">Failure<\/td>\n<td style=\"text-align: center;\">Cancel<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n \n<\/div>\n\n<\/li>\n<\/ul>\n<h2>See also<\/h2>\n<div class=\"see-also-links output-inline\" id=\"see-also\">\n<ul><li><a href=\"\/point-of-sale\/shopper-engagement\/shopper-input\/select-input-request\"\n                        target=\"_self\"\n                        >\n                    Make an input request\n                <\/a><\/li><li><a href=\"\/point-of-sale\/shopper-engagement\/create-session\"\n                        target=\"_self\"\n                        >\n                    Create a session\n                <\/a><\/li><li><a href=\"\/point-of-sale\/basic-tapi-integration\/cancel-a-transaction\"\n                        target=\"_self\"\n                        >\n                    Cancel an in-progress transaction\n                <\/a><\/li><\/ul><\/div>\n","url":"https:\/\/docs.adyen.com\/point-of-sale\/shopper-engagement\/shopper-input\/cancel-input","articleFields":{"description":"Learn how to cancel an in-progress input request."},"algolia":{"url":"https:\/\/docs.adyen.com\/point-of-sale\/shopper-engagement\/shopper-input\/cancel-input","title":"Cancel collecting input","content":"While an input request is in progress, you can cancel it in the same way that you can cancel an in-progress payment. Here we describe how you can cancel an input request from:\n\nYour POS app by sending a Terminal API abort request.\nThe terminal.\n\nRequirements\nBefore you begin, take into account the following requirement.\n\n\n\nRequirement\nDescription\n\n\n\n\nIntegration type\nA Terminal API integration with payment terminals.\n\n\n\nCancel from POS app\nTo cancel an \n  InputRequest\n from your POS app:\n\n\nMake a Terminal API abort request, specifying:\n\n\nThe standard \n  SaleToPOIRequest.MessageHeader\n object, with MessageClass set to Service and MessageCategory set to Abort.\n\n\n\nParameter\nRequired\nDescription\n\n\n\n\nProtocolVersion\n\n3.0\n\n\nMessageClass\n\nService\n\n\nMessageCategory\n\nAbort\n\n\nMessageType\n\nRequest\n\n\nServiceID\n\nYour unique ID for this request, consisting of 1-10 alphanumeric characters. Must be unique within the last 48 hours for the terminal (POIID) being used.\n\n\nSaleID\n\nYour unique ID for the POS system component to send this request from.\n\n\nPOIID\n\nThe unique ID of the terminal to send this request to. Format: [device model]-[serial number].\n\n\n\n\n\n\n\nThe  AbortRequest object with:\n\n\n\nParameter\nDescription\n\n\n\n\nAbortReason\nMerchantAbort\n\n\nMessageReference\nAn object with: MessageCategory: Input SaleID: your unique ID of the POS app component that sent the input request. ServiceID: the ServiceID of the input request being cancelled.\n\n\n\n\n\nThe example shows how to cancel an in-progress input request with a ServiceID of 21796.\n\n\n\nA successful AbortRequest returns a response with a 200 OK HTTP status code and no body.\n\n\nCheck whether the cancellation was successful:\n\nThe screen generated by your InputRequest disappears from the terminal display.\nThe InputRequest returns a response containing:\n\nResult: Failure\nErrorCondition: Aborted\n\n\nThe following example shows the response for a confirmation input request that was cancelled.\n\n\n\n\n\nCancel from terminal\nTo cancel an in-progress input request from a terminal:\n\nPress the Cancel key  on the terminal keypad.\nIn case of a terminal without a keypad, on the display select the Cancel icon \n\nIf this is successful:\n\nThe screen generated by your InputRequest disappears from the terminal display.\n\nThe InputRequest returns a response. Depending on the type of input, this InputResponse contains:\n \n    \n\n\n\nType of input\nResult\nConfirmedFlag\n\n\n\n\nConfirmation\nSuccess\nfalse\n\n\nSignature\nSuccess\nfalse\n\n\n\n \n\n\n \n    \n\n\n\nType of input\nResult\nErrorCondition\n\n\n\n\nMenu\nFailure\nCancel\n\n\nDigit\nFailure\nCancel\n\n\nText\nFailure\nCancel\n\n\n\n \n\n\n\n\nSee also\n\n\n                    Make an input request\n                \n                    Create a session\n                \n                    Cancel an in-progress transaction\n                \n","type":"page","locale":"en","boost":16,"hierarchy":{"lvl0":"Home","lvl1":"In-person payments","lvl2":"Shopper engagement","lvl3":"Collect input","lvl4":"Cancel collecting input"},"hierarchy_url":{"lvl0":"https:\/\/docs.adyen.com\/","lvl1":"https:\/\/docs.adyen.com\/point-of-sale","lvl2":"https:\/\/docs.adyen.com\/point-of-sale\/shopper-engagement","lvl3":"https:\/\/docs.adyen.com\/point-of-sale\/shopper-engagement\/shopper-input","lvl4":"\/point-of-sale\/shopper-engagement\/shopper-input\/cancel-input"},"levels":5,"category":"In-person payments","category_color":"green","tags":["Cancel","collecting","input"]}}
