{"title":"Partial payments","category":"default","creationDate":1692791820,"content":"<p>To reduce the number of transactions that are declined due to insufficient funds, you can add partial payments to your Terminal API integration. With this, you ask the issuer to authorize the available amount when the card's balance is not enough for the full amount. You can then let the shopper pay the remainder with another card or in cash.<\/p>\n<h2>Requirements<\/h2>\n<p>Before you begin, take into account the following requirements, limitations, and preparations.<\/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;\">Make sure that you have built a <a href=\"\/pt\/point-of-sale\/get-started\">Terminal API integration<\/a>.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Limitations<\/strong><\/td>\n<td style=\"text-align: left;\">Be aware that there is no guarantee that all issuers support partial authorizations.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Setup steps<\/strong><\/td>\n<td style=\"text-align: left;\">Consider configuring a <a href=\"\/pt\/point-of-sale\/capturing-payments#delayed-capture\">capture delay<\/a>.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Risk with partial payments<\/h2>\n<p>When the issuer supports partial authorizations and the transaction succeeds, the terminal shows that the transaction is approved plus a warning that mentions how much was paid, out of the requested amount.<\/p>\n<div class=\"hint--right\" data-hint=\"Approved screen with warning\">\n<p><img alt=\"\" src=\"\/images\/1\/8\/4\/7\/3\/184734fac6149dc394df95a1b86ab03937fadcd1-screen-enpartial-auth.png\" \/><\/p>\n<\/div>\n<p>Because the transaction is approved, the warning may be overlooked, and the shopper may leave without having paid the full amount. Therefore, it is very important to ensure that your POS app alerts your staff to the fact that there is an amount remaining to be paid.<\/p>\n<p>Consider configuring a <a href=\"\/pt\/point-of-sale\/capturing-payments#delayed-capture\">capture delay<\/a>. If the customer has second thoughts about the transaction, this gives you time to cancel the authorization before the amount is captured. This is easier than issuing a refund.<\/p>\n<h2>How it works<\/h2>\n<p>To use partial payments, you need to:<\/p>\n<ol>\n<li>\n<p>Add the <a href=\"\/pt\/point-of-sale\/add-data\/tender-options#page-introduction\">tender option<\/a> <span translate=\"no\"><strong>AllowPartialAuthorisation<\/strong><\/span> to your payment request.<br \/>\nWhen the requested amount is higher than the amount available in the account, this tender option asks the issuer to return an authorization for the available amount instead of declining the transaction.<\/p>\n<\/li>\n<li>\n<p>Keep track of how much remains to be paid, and alert your staff.<br \/>\nThe payment response returns the authorized amount. If this is less than the requested amount, you can <a href=\"#partial-authorisation\">make another payment request to let the shopper pay the remainder<\/a> with another card or in cash.<\/p>\n<\/li>\n<li>\n<p>In your reconciliation process, connect multiple partial payments to the same transaction.<\/p>\n<\/li>\n<\/ol>\n<h2 id=\"initial-partial-payment\">Make the initial payment<\/h2>\n<p>To start a payment where partial authorization is possible:<\/p>\n<ol>\n<li>\n<p><a href=\"\/pt\/point-of-sale\/basic-tapi-integration\/make-a-payment#make-a-payment\">Make a payment request<\/a>, specifying:<\/p>\n<ul>\n<li>\n<p>The standard <a href=\"\/pt\/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>Payment<\/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>Payment<\/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\/payment#request-SaleData\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">SaleData<\/a> object with:<\/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>SaleTransactionID<\/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;\">An object with: <ul><li markdown=\"1\"><code>TransactionID<\/code>: your reference to identify a payment. We recommend using a unique value per payment. In your Customer Area and Adyen reports, this will show as the <strong>merchant reference<\/strong> for the transaction.<\/li> <li markdown=\"1\"><code>TimeStamp<\/code>: date and time of the request in <a href=\"https:\/\/en.wikipedia.org\/wiki\/ISO_8601#Coordinated_Universal_Time_(UTC)\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">UTC format<\/a>.<\/li><\/ul><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>SaleReferenceID<\/code><\/td>\n<td style=\"text-align: center;\"><\/td>\n<td style=\"text-align: left;\">Unique reference, such as your order number plus a sequence number, that lets you identify partial payments that belong together. In your <a href=\"https:\/\/ca-test.adyen.com\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Customer Area<\/a>, this will appear as the <strong>Merchant Order<\/strong> for the transaction.<br> <br>For example, if the order number is <em>Order12345<\/em>, you specify <strong>Order12345-1<\/strong> in the first partial payment request and <strong>Order12345-2<\/strong> in the second partial payment request.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>SaleToAcquirerData<\/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 <span translate=\"no\"><strong>AllowPartialAuthorisation<\/strong><\/span> tender option. <p>See the instructions below.<\/p><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>In <code>SaleData.SaleToAcquirerData<\/code>, specify the tender option in one of the following formats:<br \/>\n<a id=\"sale-to-acquirer-data\"><\/a><\/p>\n<ul>\n<li>\n<p>Option 1: a JSON object converted to a Base64 encoded string.<br \/>\nEncode <code>{\"tenderOption\": \"AllowPartialAuthorisation\"}<\/code> to Base64, and pass the resulting string:<br \/>\n<code>\"SaleToAcquirerData\": \"eyJ0ZW5kZXJPcHRpb24iOiAiQWxsb3dQYXJ0aWFsQXV0aG9yaXNhdGlvbiJ9\"<\/code><\/p>\n<\/li>\n<li>\n<p>Option 2: a key-value pair:<br \/>\n<code>\"SaleToAcquirerData\": \"tenderOption=AllowPartialAuthorisation\"<\/code><\/p>\n<\/li>\n<\/ul>\n<p>The format that you use here will also be the format of the <code>AdditionalResponse<\/code> that you receive. If there are more tender options (for example, <span translate=\"no\"><strong>ReceiptHandler<\/strong><\/span> ) or other data elements that you need to pass in the <code>SaleToAcquirerData<\/code> field, refer to <a href=\"\/pt\/point-of-sale\/add-data\">Add information to a payment<\/a>.<br \/>\n<br><\/p>\n<\/li>\n<li>\n<p>The  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/terminal-api\/latest\/post\/payment#request-PaymentTransaction\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">PaymentRequest.PaymentTransaction<\/a> object with:<\/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>AmountsReq<\/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;\">An object with: <ul><li markdown=\"1\"><code>Currency<\/code>: The transaction <a href=\"\/pt\/development-resources\/currency-codes\">currency<\/a>.<\/li><li markdown=\"1\"><code>RequestedAmount<\/code>: The purchase amount, with decimals.<\/li><\/ul><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/li>\n<\/ul>\n<p>The following example shows how to make a EUR&nbsp;25.99 payment.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Payment with partial payment tender option'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n    \\\"SaleToPOIRequest\\\":{\\n        \\\"MessageHeader\\\":{\\n            \\\"ProtocolVersion\\\":\\\"3.0\\\",\\n            \\\"MessageClass\\\":\\\"Service\\\",\\n            \\\"MessageCategory\\\":\\\"Payment\\\",\\n            \\\"MessageType\\\":\\\"Request\\\",\\n            \\\"ServiceID\\\":\\\"9267\\\",\\n            \\\"SaleID\\\":\\\"POSSystemID12345\\\",\\n            \\\"POIID\\\":\\\"V400m-324688179\\\"\\n        },\\n        \\\"PaymentRequest\\\":{\\n            \\\"SaleData\\\":{\\n                \\\"SaleTransactionID\\\":{\\n                    \\\"TransactionID\\\":\\\"44740\\\",\\n                    \\\"TimeStamp\\\":\\\"2019-03-26T09:13:41+00:00\\\"\\n                },\\n                \\\"SaleReferenceID\\\": \\\"Order12345-1\\\",\\n                \\\"SaleToAcquirerData\\\": \\\"tenderOption=AllowPartialAuthorisation\\\"\\n            },\\n            \\\"PaymentTransaction\\\":{\\n                \\\"AmountsReq\\\":{\\n                    \\\"Currency\\\":\\\"EUR\\\",\\n                    \\\"RequestedAmount\\\":25.99\\n                }\\n            }\\n        }\\n    }\\n}\"}]' :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\/payment#responses-200\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">PaymentResponse<\/a>, note the following:<\/p>\n<ul>\n<li><code>Response.Result<\/code>: If the payment was successful, <span translate=\"no\"><strong>Success<\/strong><\/span> indicates a full payment, or <span translate=\"no\"><strong>Partial<\/strong><\/span> indicates a partial payment.<\/li>\n<li><code>PaymentResult.AmountsResp.AuthorizedAmount<\/code>: The amount that was authorized. This may be less than the requested amount.<\/li>\n<li><code>AdditionalResponse<\/code>: Contains <code>posOriginalAmountValue<\/code> with the requested amount, and <code>posAuthAmountValue<\/code> with the authorized amount.<\/li>\n<li><code>SaleData.SaleReferenceID<\/code>: Your order number. If you are going to make another partial payment, the <code>SaleReferenceID<\/code> of that other payment must be based on this one.<\/li>\n<\/ul>\n<p>The example below shows that the payment was successful but that only EUR&nbsp;10.00 of the original EUR&nbsp;25.99 was authorized.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Response for a partial authorization'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n    \\\"SaleToPOIResponse\\\": {\\n        \\\"MessageHeader\\\": {...},\\n        \\\"PaymentResponse\\\": {\\n            \\\"POIData\\\": {\\n                \\\"POIReconciliationID\\\": \\\"1000\\\",\\n                \\\"POITransactionID\\\": {\\n                    \\\"TimeStamp\\\": \\\"2021-11-16T11:26:19.000Z\\\",\\n                    \\\"TransactionID\\\": \\\"CWf3001637061979001.M32P3JBKR65ZGN82\\\"\\n                }\\n            },\\n            \\\"PaymentReceipt\\\": [...],\\n            \\\"PaymentResult\\\": {\\n                \\\"AmountsResp\\\": {\\n                    \\\"AuthorizedAmount\\\": 10.00,\\n                    \\\"Currency\\\": \\\"EUR\\\"\\n                },\\n                ...,\\n                \\\"PaymentAcquirerData\\\": {...},\\n                    ...\\n                },\\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\\\": \\\"...&amp;posOriginalAmountValue=2599...&amp;posAuthAmountValue=1000\\\",\\n                \\\"Result\\\": \\\"Partial\\\"\\n            },\\n            \\\"SaleData\\\": {\\n                \\\"SaleReferenceID\\\": \\\"Order12345-1\\\",\\n                \\\"SaleTransactionID\\\": {\\n                    \\\"TimeStamp\\\": \\\"2021-11-16T11:26:15.253Z\\\",\\n                    \\\"TransactionID\\\": \\\"644\\\"\\n                }\\n            }\\n        }\\n    }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<li>\n<p>If the <code>Response.Result<\/code> is <span translate=\"no\"><strong>Partial<\/strong><\/span>, <a href=\"#partial-authorisation\">make a follow-up partial payment<\/a> or let the shopper pay the remainder in cash.<\/p>\n<\/li>\n<\/ol>\n<h2 id=\"partial-authorisation\">(Optional) Make a follow-up payment<\/h2>\n<p>If the initial partial payment did not cover the full amount, you can follow up with another partial payment for the remainder:<\/p>\n<ol>\n<li>\n<p>Calculate the remaining amount after the initial partial payment: subtract the <code>AuthorizedAmount<\/code> in the response from the <code>RequestedAmount<\/code> in the request.<br \/>\nAlternatively, you can calculate the remaining amount using <code>posAuthAmountValue<\/code> and <code>posOriginalAmountValue<\/code> from the <code>AdditionalResponse<\/code>.<\/p>\n<\/li>\n<li>\n<p><a href=\"\/pt\/point-of-sale\/basic-tapi-integration\/make-a-payment#make-a-payment\">Make a payment request<\/a>, specifying:<\/p>\n<ul>\n<li>\n<p>The standard <a href=\"\/pt\/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>Payment<\/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>Payment<\/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\/payment#request-SaleData\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">PaymentRequest.SaleData<\/a> object with:<\/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>SaleReferenceID<\/code><\/td>\n<td style=\"text-align: center;\"><\/td>\n<td style=\"text-align: left;\">Unique reference, such as your order number plus a sequence number, that lets you identify partial payments that belong together. <p>For example, if you specified <strong>Order12345-1<\/strong> in the first partial payment request with the gift card, you'd specify <strong>Order12345-2<\/strong> in this second partial payment request.<\/p><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>SaleToAcquirerData<\/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 <span translate=\"no\"><strong>AllowPartialAuthorisation<\/strong><\/span> tender option. <p>For the format, see the <a href=\"#sale-to-acquirer-data\">initial partial payment<\/a>.<\/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\/payment#request-PaymentTransaction\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">PaymentRequest.PaymentTransaction<\/a> object with:<\/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>PaymentTransaction.AmountsReq<\/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;\">An object with: <ul><li markdown=\"1\"><code>Currency<\/code>: The transaction <a href=\"\/pt\/development-resources\/currency-codes\">currency<\/a>.<\/li><li markdown=\"1\"><code>RequestedAmount<\/code>: The calculated remaining amount.<\/li><\/ul><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/li>\n<\/ul>\n<p>This example shows a payment request for the remaining EUR 15.99.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Follow-up partial payment'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n    \\\"SaleToPOIRequest\\\":{\\n        \\\"MessageHeader\\\":{\\n            \\\"ProtocolVersion\\\":\\\"3.0\\\",\\n            \\\"MessageClass\\\":\\\"Service\\\",\\n            \\\"MessageCategory\\\":\\\"Payment\\\",\\n            \\\"MessageType\\\":\\\"Request\\\",\\n            \\\"ServiceID\\\":\\\"9267\\\",\\n            \\\"SaleID\\\":\\\"POSSystemID12345\\\",\\n            \\\"POIID\\\":\\\"V400m-324688179\\\"\\n        },\\n        \\\"PaymentRequest\\\":{\\n            \\\"SaleData\\\":{\\n                \\\"SaleTransactionID\\\":{\\n                    \\\"TransactionID\\\":\\\"44740\\\",\\n                    \\\"TimeStamp\\\":\\\"2019-03-26T09:13:45+00:00\\\"\\n                },\\n                \\\"SaleReferenceID\\\": \\\"Order12345-2\\\",\\n                \\\"SaleToAcquirerData\\\": \\\"tenderOption=AllowPartialAuthorisation\\\"\\n            },\\n            \\\"PaymentTransaction\\\":{\\n                \\\"AmountsReq\\\":{\\n                    \\\"Currency\\\":\\\"EUR\\\",\\n                    \\\"RequestedAmount\\\":15.99\\n                }\\n            }\\n        }\\n    }\\n}\"}]' :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, check if the <code>Response.Result<\/code> is now <span translate=\"no\"><strong>Success<\/strong><\/span>. That means the amount due is paid in full.<\/p>\n<\/li>\n<\/ol>\n<h2>Test partial payments<\/h2>\n<p>You can test the partial payments flow using an amount ending in <strong>139<\/strong>:<\/p>\n<ol>\n<li>\n<p><a href=\"\/pt\/point-of-sale\/basic-tapi-integration\/make-a-payment#make-a-payment\">Make a payment request<\/a>, including:<\/p>\n<ul>\n<li>\n<p>The  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/terminal-api\/latest\/post\/payment#request-SaleData\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">SaleData<\/a> object with:<\/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>SaleReferenceID<\/code><\/td>\n<td style=\"text-align: center;\"><\/td>\n<td style=\"text-align: left;\">Unique reference that lets you identify partial payments that belong together.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>SaleToAcquirerData<\/code><\/td>\n<td style=\"text-align: center;\"><\/td>\n<td style=\"text-align: left;\">The <span translate=\"no\"><strong>AllowPartialAuthorisation<\/strong><\/span> tender option.<\/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\/payment#request-PaymentTransaction\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">PaymentTransaction<\/a> object with:<\/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>PaymentTransaction.AmountsReq<\/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;\">An object with: <ul><li markdown=\"1\"><code>Currency<\/code>: the transaction <a href=\"\/pt\/development-resources\/currency-codes\">currency<\/a>.<\/li><li markdown=\"1\"><code>RequestedAmount<\/code>: an amount ending in <strong>139<\/strong>. For example, <strong>41.39<\/strong>.<\/li><\/ul><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>Check that the terminal indicates the transaction is approved and shows a warning about how much out of the requested amount was paid.<br \/>\nFor example: <strong>!&nbsp;&nbsp;$ 40.39 out of $ 41.39<\/strong><\/p>\n<\/li>\n<li>\n<p>Check that the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/terminal-api\/latest\/post\/payment#responses-200\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">PaymentResponse<\/a> contains the following:<\/p>\n<ul>\n<li><code>PaymentResult.AmountsResp.AuthorizedAmount<\/code>: A value of 1 less than the requested amount. For example, <strong>40.39<\/strong> if the requested amount was <strong>41.39<\/strong>.<\/li>\n<li>\n<p><code>Response.Result<\/code>: <span translate=\"no\"><strong>Partial<\/strong><\/span>.<\/p>\n<!-- list separator -->\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>Make a second partial payment request for the remaining amount, with a <code>SaleReferenceID<\/code> that allows you to identify the two partial payments as belonging together.<\/p>\n<\/li>\n<li>\n<p>In your <a href=\"https:\/\/ca-test.adyen.com\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Customer Area<\/a> and\/or reports, find the two partial payments by their <strong>Merchant Order<\/strong>. The Merchant Order corresponds to the <code>SaleReferenceID<\/code> from the payment requests.<\/p>\n<\/li>\n<\/ol>\n<h2 id=\"see-also\">See also<\/h2>\n<div class=\"see-also-links output-inline\" id=\"see-also\">\n<ul><li><a href=\"\/point-of-sale\/add-data\/tender-options\"\n                        target=\"_self\"\n                        >\n                    Pass tender options\n                <\/a><\/li><li><a href=\"\/point-of-sale\/gift-cards-terminal-api\/payment\"\n                        target=\"_self\"\n                        >\n                    Gift card payments\n                <\/a><\/li><\/ul><\/div>\n","url":"https:\/\/docs.adyen.com\/pt\/point-of-sale\/partial-payments","articleFields":{"description":"Allow shoppers to pay the remainder with a different payment method.","feedback_component":true,"type":"page","_expandable":{"operations":""},"last_edit_on":"08-09-2023 09:19","filters_component":false},"algolia":{"url":"https:\/\/docs.adyen.com\/pt\/point-of-sale\/partial-payments","title":"Partial payments","content":"To reduce the number of transactions that are declined due to insufficient funds, you can add partial payments to your Terminal API integration. With this, you ask the issuer to authorize the available amount when the card's balance is not enough for the full amount. You can then let the shopper pay the remainder with another card or in cash.\nRequirements\nBefore you begin, take into account the following requirements, limitations, and preparations.\n\n\n\nRequirement\nDescription\n\n\n\n\nIntegration type\nMake sure that you have built a Terminal API integration.\n\n\nLimitations\nBe aware that there is no guarantee that all issuers support partial authorizations.\n\n\nSetup steps\nConsider configuring a capture delay.\n\n\n\nRisk with partial payments\nWhen the issuer supports partial authorizations and the transaction succeeds, the terminal shows that the transaction is approved plus a warning that mentions how much was paid, out of the requested amount.\n\n\n\nBecause the transaction is approved, the warning may be overlooked, and the shopper may leave without having paid the full amount. Therefore, it is very important to ensure that your POS app alerts your staff to the fact that there is an amount remaining to be paid.\nConsider configuring a capture delay. If the customer has second thoughts about the transaction, this gives you time to cancel the authorization before the amount is captured. This is easier than issuing a refund.\nHow it works\nTo use partial payments, you need to:\n\n\nAdd the tender option AllowPartialAuthorisation to your payment request.\nWhen the requested amount is higher than the amount available in the account, this tender option asks the issuer to return an authorization for the available amount instead of declining the transaction.\n\n\nKeep track of how much remains to be paid, and alert your staff.\nThe payment response returns the authorized amount. If this is less than the requested amount, you can make another payment request to let the shopper pay the remainder with another card or in cash.\n\n\nIn your reconciliation process, connect multiple partial payments to the same transaction.\n\n\nMake the initial payment\nTo start a payment where partial authorization is possible:\n\n\nMake a payment request, specifying:\n\n\nThe standard \n  SaleToPOIRequest.MessageHeader\n object, with MessageClass set to Service and MessageCategory set to Payment.\n\n\n\nParameter\nRequired\nDescription\n\n\n\n\nProtocolVersion\n\n3.0\n\n\nMessageClass\n\nService\n\n\nMessageCategory\n\nPayment\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  SaleData object with:\n\n\n\nParameter\nRequired\nDescription\n\n\n\n\nSaleTransactionID\n\nAn object with: TransactionID: your reference to identify a payment. We recommend using a unique value per payment. In your Customer Area and Adyen reports, this will show as the merchant reference for the transaction. TimeStamp: date and time of the request in UTC format.\n\n\nSaleReferenceID\n\nUnique reference, such as your order number plus a sequence number, that lets you identify partial payments that belong together. In your Customer Area, this will appear as the Merchant Order for the transaction. For example, if the order number is Order12345, you specify Order12345-1 in the first partial payment request and Order12345-2 in the second partial payment request.\n\n\nSaleToAcquirerData\n\nThe AllowPartialAuthorisation tender option. See the instructions below.\n\n\n\nIn SaleData.SaleToAcquirerData, specify the tender option in one of the following formats:\n\n\n\nOption 1: a JSON object converted to a Base64 encoded string.\nEncode {\"tenderOption\": \"AllowPartialAuthorisation\"} to Base64, and pass the resulting string:\n\"SaleToAcquirerData\": \"eyJ0ZW5kZXJPcHRpb24iOiAiQWxsb3dQYXJ0aWFsQXV0aG9yaXNhdGlvbiJ9\"\n\n\nOption 2: a key-value pair:\n\"SaleToAcquirerData\": \"tenderOption=AllowPartialAuthorisation\"\n\n\nThe format that you use here will also be the format of the AdditionalResponse that you receive. If there are more tender options (for example, ReceiptHandler ) or other data elements that you need to pass in the SaleToAcquirerData field, refer to Add information to a payment.\n\n\n\nThe  PaymentRequest.PaymentTransaction object with:\n\n\n\nParameter\nRequired\nDescription\n\n\n\n\nAmountsReq\n\nAn object with: Currency: The transaction currency.RequestedAmount: The purchase amount, with decimals.\n\n\n\n\n\nThe following example shows how to make a EUR&nbsp;25.99 payment.\n\n\n\n\n\nIn the  PaymentResponse, note the following:\n\nResponse.Result: If the payment was successful, Success indicates a full payment, or Partial indicates a partial payment.\nPaymentResult.AmountsResp.AuthorizedAmount: The amount that was authorized. This may be less than the requested amount.\nAdditionalResponse: Contains posOriginalAmountValue with the requested amount, and posAuthAmountValue with the authorized amount.\nSaleData.SaleReferenceID: Your order number. If you are going to make another partial payment, the SaleReferenceID of that other payment must be based on this one.\n\nThe example below shows that the payment was successful but that only EUR&nbsp;10.00 of the original EUR&nbsp;25.99 was authorized.\n\n\n\n\n\nIf the Response.Result is Partial, make a follow-up partial payment or let the shopper pay the remainder in cash.\n\n\n(Optional) Make a follow-up payment\nIf the initial partial payment did not cover the full amount, you can follow up with another partial payment for the remainder:\n\n\nCalculate the remaining amount after the initial partial payment: subtract the AuthorizedAmount in the response from the RequestedAmount in the request.\nAlternatively, you can calculate the remaining amount using posAuthAmountValue and posOriginalAmountValue from the AdditionalResponse.\n\n\nMake a payment request, specifying:\n\n\nThe standard \n  SaleToPOIRequest.MessageHeader\n object, with MessageClass set to Service and MessageCategory set to Payment.\n\n\n\nParameter\nRequired\nDescription\n\n\n\n\nProtocolVersion\n\n3.0\n\n\nMessageClass\n\nService\n\n\nMessageCategory\n\nPayment\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  PaymentRequest.SaleData object with:\n\n\n\nParameter\nRequired\nDescription\n\n\n\n\nSaleReferenceID\n\nUnique reference, such as your order number plus a sequence number, that lets you identify partial payments that belong together. For example, if you specified Order12345-1 in the first partial payment request with the gift card, you'd specify Order12345-2 in this second partial payment request.\n\n\nSaleToAcquirerData\n\nThe AllowPartialAuthorisation tender option. For the format, see the initial partial payment.\n\n\n\n\n\nThe  PaymentRequest.PaymentTransaction object with:\n\n\n\nParameter\nRequired\nDescription\n\n\n\n\nPaymentTransaction.AmountsReq\n\nAn object with: Currency: The transaction currency.RequestedAmount: The calculated remaining amount.\n\n\n\n\n\nThis example shows a payment request for the remaining EUR 15.99.\n\n\n\n\n\nWhen you receive the response, check if the Response.Result is now Success. That means the amount due is paid in full.\n\n\nTest partial payments\nYou can test the partial payments flow using an amount ending in 139:\n\n\nMake a payment request, including:\n\n\nThe  SaleData object with:\n\n\n\nParameter\nRequired\nDescription\n\n\n\n\nSaleReferenceID\n\nUnique reference that lets you identify partial payments that belong together.\n\n\nSaleToAcquirerData\n\nThe AllowPartialAuthorisation tender option.\n\n\n\n\n\nThe  PaymentTransaction object with:\n\n\n\nParameter\nRequired\nDescription\n\n\n\n\nPaymentTransaction.AmountsReq\n\nAn object with: Currency: the transaction currency.RequestedAmount: an amount ending in 139. For example, 41.39.\n\n\n\n\n\n\n\nCheck that the terminal indicates the transaction is approved and shows a warning about how much out of the requested amount was paid.\nFor example: !&nbsp;&nbsp;$ 40.39 out of $ 41.39\n\n\nCheck that the  PaymentResponse contains the following:\n\nPaymentResult.AmountsResp.AuthorizedAmount: A value of 1 less than the requested amount. For example, 40.39 if the requested amount was 41.39.\n\nResponse.Result: Partial.\n\n\n\n\n\nMake a second partial payment request for the remaining amount, with a SaleReferenceID that allows you to identify the two partial payments as belonging together.\n\n\nIn your Customer Area and\/or reports, find the two partial payments by their Merchant Order. The Merchant Order corresponds to the SaleReferenceID from the payment requests.\n\n\nSee also\n\n\n                    Pass tender options\n                \n                    Gift card payments\n                \n","type":"page","locale":"pt","boost":18,"hierarchy":{"lvl0":"Home","lvl1":"Terminais","lvl2":"Partial payments"},"hierarchy_url":{"lvl0":"https:\/\/docs.adyen.com\/pt","lvl1":"https:\/\/docs.adyen.com\/pt\/point-of-sale","lvl2":"\/pt\/point-of-sale\/partial-payments"},"levels":3,"category":"In-person payments","category_color":"green","tags":["Partial","payments"]},"articleFiles":{"screen-EN_partial-auth.png":"<img alt=\"\" src=\"https:\/\/docs.adyen.com\/images\/8\/0\/c\/f\/9\/80cf909d10b7f92b9547ceb133dc5851b6febe3c-screen-enpartial-auth.png\" \/>"}}
