{"title":"Reconcile a balance mismatch","category":"default","creationDate":1779796134,"content":"<p>You may need to reconcile the balance between your payment terminal and POS app when a mismatch occurs. For example, if the connection dropped at some point and your POS app does not receive the final response.<\/p>\n<p>Use the reconciliation request to:<\/p>\n<ul>\n<li>\n<p>Get the terminal's totals of the current reconciliation period and start a new period, by setting the reconciliation type to <span translate=\"no\"><strong>SaleReconciliation<\/strong><\/span>.<\/p>\n<\/li>\n<li>\n<p>Get the terminal's report of a previous reconciliation period without starting a new period, by setting the reconciliation type to <span translate=\"no\"><strong>PreviousReconciliation<\/strong><\/span> and using <code>POIReconciliationID<\/code> <span translate=\"no\"><strong>NNN<\/strong><\/span>.<\/p>\n<\/li>\n<\/ul>\n<h2>Requirements<\/h2>\n<p>Before you begin, take into account the following requirements.<\/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\/design-your-integration\/terminal-api\">Terminal API<\/a> integration with payment terminals.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2 id=\"reconciliationrequest\">Make a reconciliation request<\/h2>\n<ol>\n<li>\n<p><a href=\"\/point-of-sale\/reconciling-totals\/log-in-and-log-out\">Log in to the terminal<\/a>.<\/p>\n<\/li>\n<li>\n<p>Make a <a href=\"\/point-of-sale\/design-your-integration\/terminal-api\">Terminal API<\/a> reconciliation 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>Reconciliation<\/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>Reconciliation<\/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<li>\n<p>The  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/terminal-api\/latest\/post\/reconciliation\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">ReconciliationRequest<\/a> object with:<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Parameter<\/th>\n<th style=\"text-align: left;\">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>ReconciliationType<\/code><\/td>\n<td style=\"text-align: left;\"><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 type of reconciliation: <ul><li><span translate=\"no\"><strong>SaleReconciliation<\/strong><\/span> to get the totals of the current reconciliation period and start a new period.<\/li> <li><span translate=\"no\"><strong>PreviousReconciliation<\/strong><\/span> to get the report of a previous reconciliation period without starting a new period. Also specify <code>POIReconciliationID<\/code> with a value of <span translate=\"no\"><strong>NNN<\/strong><\/span>. <\/li><\/ul><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>POIReconciliationID<\/code><\/td>\n<td style=\"text-align: left;\"><\/td>\n<td style=\"text-align: left;\">Include this field and set the value to <span translate=\"no\"><strong>NNN<\/strong><\/span> when using the reconciliation type <span translate=\"no\"><strong>PreviousReconciliation<\/strong><\/span>.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/li>\n<\/ul>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"''\" :id=\"'reconcile-a-balance-mismatch_0'\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"JSON\",\"content\":\"{\\n   \\\"SaleToPOIRequest\\\":{\\n      \\\"MessageHeader\\\":{\\n         \\\"ProtocolVersion\\\":\\\"3.0\\\",\\n         \\\"MessageClass\\\":\\\"Service\\\",\\n         \\\"MessageCategory\\\":\\\"Reconciliation\\\",\\n         \\\"MessageType\\\":\\\"Request\\\",\\n         \\\"ServiceID\\\":\\\"0518145303\\\",\\n         \\\"SaleID\\\":\\\"CashRegB3\\\",\\n         \\\"POIID\\\":\\\"P400Plus-275008565\\\"\\n      },\\n      \\\"ReconciliationRequest\\\":{\\n         \\\"ReconciliationType\\\":\\\"SaleReconciliation\\\"\\n      }\\n   }\\n}\"},{\"language\":\"java\",\"tabTitle\":\"Java\",\"content\":\"String serviceID = \\\"YOUR_UNIQUE_ATTEMPT_ID\\\";\\nString saleID = \\\"YOUR_CASH_REGISTER_ID\\\";\\nString POIID = \\\"YOUR_TERMINAL_ID\\\";\\n\\nSaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();\\nMessageHeader messageHeader = new MessageHeader();\\nmessageHeader.setProtocolVersion(\\\"3.0\\\");\\nmessageHeader.setMessageClass( MessageClassType.SERVICE );\\nmessageHeader.setMessageCategory( MessageCategoryType.RECONCILIATION );\\nmessageHeader.setMessageType( MessageType.REQUEST );\\nmessageHeader.setServiceID(serviceID);\\nmessageHeader.setSaleID(saleID);\\nmessageHeader.setPOIID(POIID);\\nsaleToPOIRequest.setMessageHeader(messageHeader);\\n\\nReconciliationRequest reconciliationRequest = new ReconciliationRequest();\\nreconciliationRequest.setReconciliationType( ReconciliationType.SALE_RECONCILIATION );\\nsaleToPOIRequest.setReconciliationRequest(reconciliationRequest);\\nterminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<li>\n<p>In the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/terminal-api\/latest\/post\/reconciliation#responses-200-Response\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">ReconciliationResponse<\/a>, check the <code>TransactionTotals<\/code> object.<\/p>\n<pre><code class=\"language-json\">{\n  \"SaleToPOIResponse\":{\n     \"ReconciliationResponse\":{\n        \"ReconciliationType\":\"SaleReconciliation\",\n        \"POIReconciliationID\":\"1000\",\n        \"Response\":{\n           \"Result\":\"Success\"\n        },\n        \"TransactionTotals\":[\n           {\n              \"SaleID\":\"CashRegB3\",\n              \"PaymentInstrumentType\":\"Card\",\n              \"PaymentCurrency\":\"EUR\",\n              \"PaymentTotals\":[\n                 {\n                    \"TransactionType\":\"Debit\",\n                    \"TransactionCount\":1,\n                    \"TransactionAmount\":10.99\n                 }\n              ],\n              \"OperatorID\":\"John\",\n              \"CardBrand\":\"mc\",\n              \"TotalsGroupID\":\"GroupA\",\n              \"ShiftNumber\":\"123\"\n           }\n        ]\n     },\n     \"MessageHeader\":{\n        \"ProtocolVersion\":\"3.0\",\n        \"SaleID\":\"CashRegB3\",\n        \"MessageClass\":\"Service\",\n        \"MessageCategory\":\"Reconciliation\",\n        \"ServiceID\":\"0518145303\",\n        \"POIID\":\"P400Plus-275008565\",\n        \"MessageType\":\"Response\"\n     }\n  }\n}<\/code><\/pre>\n<\/li>\n<\/ol>\n<h2>See also<\/h2>\n<div class=\"see-also-links output-inline\" id=\"see-also\">\n<ul><li><a href=\"\/point-of-sale\/reconciling-totals\/log-in-and-log-out\"\n                        target=\"_self\"\n                        >\n                    Log in and log out on a terminal\n                <\/a><\/li><li><a href=\"\/point-of-sale\/reconciling-totals\/retrieve-totals-from-the-terminal\"\n                        target=\"_self\"\n                        >\n                    Retrieve totals from a terminal\n                <\/a><\/li><\/ul><\/div>\n","url":"https:\/\/docs.adyen.com\/point-of-sale\/reconciling-totals\/reconcile-a-balance-mismatch","articleFields":{"description":"Get the totals of a reconciliation period and use them to reconcile balance mismatches between the terminal and POS app.","id":"42829680","type":"page","_expandable":{"operations":""},"status":"current","last_edit_on":"20-08-2019 11:45"},"algolia":{"url":"https:\/\/docs.adyen.com\/point-of-sale\/reconciling-totals\/reconcile-a-balance-mismatch","title":"Reconcile a balance mismatch","content":"You may need to reconcile the balance between your payment terminal and POS app when a mismatch occurs. For example, if the connection dropped at some point and your POS app does not receive the final response.\nUse the reconciliation request to:\n\n\nGet the terminal's totals of the current reconciliation period and start a new period, by setting the reconciliation type to SaleReconciliation.\n\n\nGet the terminal's report of a previous reconciliation period without starting a new period, by setting the reconciliation type to PreviousReconciliation and using POIReconciliationID NNN.\n\n\nRequirements\nBefore you begin, take into account the following requirements.\n\n\n\nRequirement\nDescription\n\n\n\n\nIntegration type\nA Terminal API integration with payment terminals.\n\n\n\nMake a reconciliation request\n\n\nLog in to the terminal.\n\n\nMake a Terminal API reconciliation request, specifying:\n\n\nThe standard \n  SaleToPOIRequest.MessageHeader\n object, with MessageClass set to Service and MessageCategory set to Reconciliation.\n\n\n\nParameter\nRequired\nDescription\n\n\n\n\nProtocolVersion\n\n3.0\n\n\nMessageClass\n\nService\n\n\nMessageCategory\n\nReconciliation\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\nThe  ReconciliationRequest object with:\n\n\n\nParameter\nRequired\nDescription\n\n\n\n\nReconciliationType\n\nThe type of reconciliation: SaleReconciliation to get the totals of the current reconciliation period and start a new period. PreviousReconciliation to get the report of a previous reconciliation period without starting a new period. Also specify POIReconciliationID with a value of NNN. \n\n\nPOIReconciliationID\n\nInclude this field and set the value to NNN when using the reconciliation type PreviousReconciliation.\n\n\n\n\n\n\n\n\n\n\nIn the  ReconciliationResponse, check the TransactionTotals object.\n{\n  \"SaleToPOIResponse\":{\n     \"ReconciliationResponse\":{\n        \"ReconciliationType\":\"SaleReconciliation\",\n        \"POIReconciliationID\":\"1000\",\n        \"Response\":{\n           \"Result\":\"Success\"\n        },\n        \"TransactionTotals\":[\n           {\n              \"SaleID\":\"CashRegB3\",\n              \"PaymentInstrumentType\":\"Card\",\n              \"PaymentCurrency\":\"EUR\",\n              \"PaymentTotals\":[\n                 {\n                    \"TransactionType\":\"Debit\",\n                    \"TransactionCount\":1,\n                    \"TransactionAmount\":10.99\n                 }\n              ],\n              \"OperatorID\":\"John\",\n              \"CardBrand\":\"mc\",\n              \"TotalsGroupID\":\"GroupA\",\n              \"ShiftNumber\":\"123\"\n           }\n        ]\n     },\n     \"MessageHeader\":{\n        \"ProtocolVersion\":\"3.0\",\n        \"SaleID\":\"CashRegB3\",\n        \"MessageClass\":\"Service\",\n        \"MessageCategory\":\"Reconciliation\",\n        \"ServiceID\":\"0518145303\",\n        \"POIID\":\"P400Plus-275008565\",\n        \"MessageType\":\"Response\"\n     }\n  }\n}\n\n\nSee also\n\n\n                    Log in and log out on a terminal\n                \n                    Retrieve totals from a terminal\n                \n","type":"page","locale":"en","boost":17,"hierarchy":{"lvl0":"Home","lvl1":"In-person payments","lvl2":"Reconciling totals","lvl3":"Reconcile a balance mismatch"},"hierarchy_url":{"lvl0":"https:\/\/docs.adyen.com\/","lvl1":"https:\/\/docs.adyen.com\/point-of-sale","lvl2":"https:\/\/docs.adyen.com\/point-of-sale\/reconciling-totals","lvl3":"\/point-of-sale\/reconciling-totals\/reconcile-a-balance-mismatch"},"levels":4,"category":"In-person payments","category_color":"green","tags":["Reconcile","balance","mismatch"]},"articleFiles":{"reconcile-a-balance-mismatch_0.json":"<p alt=\"\">reconcile-a-balance-mismatch_0.json<\/p>"}}
