{"title":"Autonomous stores","category":"default","creationDate":1776961627,"content":"<p>Autonomous stores are stores without staff or checkout. A shopper presents their card to the payment terminal before entering the store, to pre-authorize a certain amount and gain entry. The shopper then takes some items and leaves the store. The purchase amount is adjusted and charged to the card that the shopper used to enter the store.<\/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;\">A <a href=\"\/pt\/point-of-sale\/basic-tapi-integration\/\">Terminal API integration<\/a> with payment terminals.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong><a href=\"\/pt\/development-resources\/api-credentials\">API credentials<\/a><\/strong><\/td>\n<td style=\"text-align: left;\">You must have an API credential with an API key and the following <a href=\"\/pt\/development-resources\/api-credentials\/roles#roles-for-payments\">roles, which are assigned by default<\/a>: <ul><li markdown=\"1\"><strong>Merchant PAL webservice role<\/strong><\/li> <li markdown=\"1\"><strong>Checkout webservice role<\/strong><\/li><\/ul> <br>If you have a Terminal API integration with <a href=\"\/pt\/point-of-sale\/design-your-integration\/choose-your-architecture#cloud-communications\">cloud-based communications<\/a>, you can use the existing API key that you use for Terminal API requests.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong><a href=\"\/pt\/development-resources\/webhooks\">Webhooks<\/a><\/strong><\/td>\n<td style=\"text-align: left;\">Listen for <a href=\"\/pt\/development-resources\/webhooks\/webhook-types#default-event-codes\">Standard webhook messages<\/a> with the following <code>eventCode<\/code> values: <ul><li markdown=\"1\"><span translate=\"no\"><strong>AUTHORISATION_ADJUSTMENT<\/strong><\/span><\/li> <li markdown=\"1\"><span translate=\"no\"><strong>CAPTURE<\/strong><\/span><\/li> <li markdown=\"1\"><span translate=\"no\"><strong>CAPTURE_FAILED<\/strong><\/span><\/li><\/ul><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Hardware<\/strong><\/td>\n<td style=\"text-align: left;\">Use a payment terminal model that is suitable for unattended use, like the <span translate=\"no\"><strong>P400 Plus<\/strong><\/span>, <span translate=\"no\"><strong>S1U2<\/strong><\/span>, or <span translate=\"no\"><strong>UX300<\/strong><\/span>.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Limitations<\/strong><\/td>\n<td style=\"text-align: left;\">Be aware of the following: <ul><li markdown=\"1\"><a href=\"\/pt\/point-of-sale\/pre-authorisation\/#availability\">Support for authorization adjustment<\/a> is limited to specific payment methods and Merchant Category Codes (MCC). It is ultimately up to the issuing bank whether they allow it.<\/li> <li markdown=\"1\">Pre-authorizations and authorizations <a href=\"\/pt\/point-of-sale\/pre-authorisation\/#validity\">eventually expire<\/a>. The length of an authorization's validity depends on the card scheme.<\/li><\/ul><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Setup steps<\/strong><\/td>\n<td style=\"text-align: left;\">Before you begin: <ul><li markdown=\"1\">Contact our <a href=\"https:\/\/ca-test.adyen.com\/ca\/ca\/contactUs\/support.shtml?form=other\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Support Team<\/a> to configure your payment methods. If you plan to use synchronous authorization adjustment, also ask them to enable this for you.<\/li> <li markdown=\"1\">If you plan to use tokenization, <a href=\"\/pt\/point-of-sale\/card-acquisition\/identifiers#receiving-identifiers-in-responses\">enable receiving shopper identifiers<\/a> and check with our <a href=\"https:\/\/ca-test.adyen.com\/ca\/ca\/contactUs\/support.shtml?form=other\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Support Team<\/a> if your account is correctly configured for your tokenization use case.<\/li> <li markdown=\"1\"><a href=\"\/pt\/point-of-sale\/capturing-payments#enable-manual-capture\">Enable manual capture<\/a>, either for your account or for individual transactions.<\/li><\/ul><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>How it works:<\/h2>\n<ol>\n<li>You make a card acquisition request on the terminal to <a href=\"#get-card-details\">get the card details<\/a>.<\/li>\n<li>The shopper presents their card to the payment terminal.<\/li>\n<li>You use identifiers from the card acquisition response to check if you recognize the shopper. If it is a first-time shopper, you collect their details like phone number or email. You can use card identifiers to tokenize the card for future recurring payments.<\/li>\n<li>You send a payment request to <a href=\"#pre-auth-amount\">pre-authorize an amount<\/a>.<br \/>\nWe recommend that you also tokenize the card for future recurring payments. This enables you to recover the full payment in case an authorization adjustment fails.<\/li>\n<li>The shopper enters the store, takes items, and leaves the store.<\/li>\n<li>If the purchase amount is different from the pre-authorized amount, you send an <a href=\"#auth-adjustment\">authorization adjustment request<\/a>, followed by a <a href=\"#capture-purchase-amount\">capture request<\/a>.<\/li>\n<li>If the authorization adjustment fails for any reason, you can capture the pre-authorized amount. After that:\n<ul>\n<li>If you tokenized the card, you can make a recurring online payment for the remaining amount.<\/li>\n<li>If you collected the shopper's email or phone number, you can send them a payment link for the remaining amount.<\/li>\n<\/ul><\/li>\n<\/ol>\n<p>If you cannot charge the shopper for their purchase, you can put the card alias on the not-allowed list in your system to prevent the card from being used to enter the store again.<\/p>\n<p>Note that in the autonomous store flow, you need to rely on webhooks to know if the capture succeeded. If you use asynchronous authorization adjustment, you also need to rely on webhooks for the authorization adjustment result.<\/p>\n<p>Also note  that you need to implement logic on your end, for example how to trigger card acquisition requests on the terminal, open the doors, or calculate the amount when you make an authorization adjustment.<\/p>\n<h2 id=\"get-card-details\">1. Get the card details<\/h2>\n<p>In your back-end, implement a trigger for the card acquisition request on the terminal to prompt the shopper to present a card. From the response, you can take certain details such as the card alias to determine if the shopper should be let in.<\/p>\n<ol>\n<li>\n<p>Create a <code>SaleToPOIData<\/code> JSON object with:<\/p>\n<ul>\n<li><code>Operation.Type<\/code>: <span translate=\"no\"><strong>Payment<\/strong><\/span><\/li>\n<li><code>Operation.Variant<\/code>: <span translate=\"no\"><strong>PreAuthToEnterShop<\/strong><\/span>. Hides the pre-authorization amount specified in <code>CardAcquisitionTransaction.TotalAmount<\/code> from showing on the initial screen. This is to prevent shoppers from thinking they need to pay to enter the store.<\/li>\n<\/ul>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Operation JSON object'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n    \\\"Operation\\\":[\\n        {\\n            \\\"Type\\\":\\\"Payment\\\",\\n            \\\"Variant\\\":\\\"PreAuthToEnterShop\\\"\\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>Encode the <code>Operation<\/code> JSON object to Base64. You will pass the resulting string in <code>SaleData.SaleToPOIData<\/code>.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Converted to a Base64-encoded string'\" :id=\"''\" :code-data='[{\"language\":\"raw\",\"tabTitle\":\"\",\"content\":\"ewogICAiT3BlcmF0aW9uIjpbCiAgICAgIHsKICAgICAgICAgIlR5cGUiOiJQYXltZW50IiwKICAgICAgICAgIlZhcmlhbnQiOiJQcmVBdXRoVG9FbnRlclNob3AiCiAgICAgIH0KICAgXQp9\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<li>\n<p>Create a <code>SaleToAcquirerData<\/code> JSON object with:<\/p>\n<ul>\n<li><code>authorisationType<\/code>: <span translate=\"no\"><strong>PreAuth<\/strong><\/span>. Pre-authorizes the amount specified in <code>CardAcquisitionTransaction.TotalAmount<\/code>.<\/li>\n<li><code>recurringProcessingModel<\/code>: <span translate=\"no\"><strong>UnscheduledCardOnFile<\/strong><\/span>. Enforces cardholder authentication during pre-authorisation (if configured by our <a href=\"https:\/\/ca-test.adyen.com\/ca\/ca\/contactUs\/support.shtml?form=other\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Support Team<\/a>). To tokenize the card, include this field in both the card acquisition and the follow-up pre-authorization payment request.<br \/>\n<div class=\"sc-notice info\"><div> If the <a href=\"\/pt\/online-payments\/psd2-sca-compliance-and-implementation-guide#are-my-payments-affected\">PSD2 SCA compliance rules<\/a> apply to your business, we recommend enforcing cardholder authentication. To enable this, contact our <a href=\"https:\/\/ca-test.adyen.com\/ca\/ca\/contactUs\/support.shtml?form=other\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Support Team<\/a>.<\/div><\/div><\/li>\n<\/ul>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'JSON object'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n    \\\"authorisationType\\\":\\\"PreAuth\\\",\\n    \\\"recurringProcessingModel\\\":\\\"UnscheduledCardOnFile\\\"\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<li>\n<p>Encode the JSON object to Base64. You will pass the resulting string in <code>SaleData.SaleToAcquirerData<\/code>.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Converted to a Base64-encoded string'\" :id=\"''\" :code-data='[{\"language\":\"raw\",\"tabTitle\":\"\",\"content\":\"ewogICAgImF1dGhvcmlzYXRpb25UeXBlIjoiUHJlQXV0aCIsCiAgICAicmVjdXJyaW5nUHJvY2Vzc2luZ01vZGVsIjoiVW5zY2hlZHVsZWRDYXJkT25GaWxlIgp9\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<li>\n<p><a href=\"\/pt\/point-of-sale\/card-acquisition#card-acquisition-request\">Make a card acquisition request<\/a>, including:<\/p>\n<ul>\n<li>\n<p>The  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/terminal-api\/latest\/post\/cardacquisition#request-SaleData\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">CardAcquisitionRequest.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 the transaction. We recommend using a unique value.<\/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>TokenRequestedType<\/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>Customer<\/strong><\/span>. Returns the card alias in the <code>TokenValue<\/code> field of the response. Note that the card alias is always returned in the <code>AdditionalResponse<\/code>.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>SaleToPOIData<\/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 Base64-encoded <code>Operation<\/code> JSON value from step 2.<\/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 Base64-encoded JSON value from step 4.<\/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\/cardacquisition#request-CardAcquisitionTransaction\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">CardAcquisitionRequest.CardAcquisitionTransaction<\/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>TotalAmount<\/code><\/td>\n<td style=\"text-align: center;\"><\/td>\n<td style=\"text-align: left;\">The transaction amount you want to pre-authorize before entering the store. This amount needs to be equal to the <code>TotalAmount<\/code> in the pre-authorization request.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/li>\n<\/ul>\n<p>The following example shows a card acquisition request to get the card details.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Card acquisition request '\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n    \\\"SaleToPOIRequest\\\":{\\n        \\\"MessageHeader\\\":{\\n            \\\"ProtocolVersion\\\":\\\"3.0\\\",\\n            \\\"MessageClass\\\":\\\"Service\\\",\\n            \\\"MessageCategory\\\":\\\"CardAcquisition\\\",\\n            \\\"MessageType\\\":\\\"Request\\\",\\n            \\\"ServiceID\\\":\\\"1020711110\\\",\\n            \\\"SaleID\\\":\\\"POSSystemID12345\\\",\\n            \\\"POIID\\\":\\\"V400m-346403161\\\"\\n        },\\n        \\\"CardAcquisitionRequest\\\":{\\n            \\\"SaleData\\\":{\\n                \\\"SaleTransactionID\\\":{\\n                    \\\"TransactionID\\\":\\\"02072\\\",\\n                    \\\"TimeStamp\\\":\\\"2020-01-07T14:14:04+00:00\\\"\\n                },\\n                \\\"TokenRequestedType\\\": \\\"Customer\\\",\\n                \\\"SaleToPOIData\\\":\\\"ewogICAiT3BlcmF0aW9uIjpbCiAgICAgIHsKICAgICAgICAgIlR5cGUiOiJQYXltZW50IiwKICAgICAgICAgIlZhcmlhbnQiOiJQcmVBdXRoVG9FbnRlclNob3AiCiAgICAgIH0KICAgXQp9\\\",\\n                \\\"SaleToAcquirerData\\\": \\\"ewogICAgImF1dGhvcmlzYXRpb25UeXBlIjoiUHJlQXV0aCIsCiAgICAicmVjdXJyaW5nUHJvY2Vzc2luZ01vZGVsIjoiVW5zY2hlZHVsZWRDYXJkT25GaWxlIgp9\\\"\\n            },\\n            \\\"CardAcquisitionTransaction\\\":{\\n                \\\"TotalAmount\\\": 10\\n            }\\n        }\\n    }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p>The following example shows a card acquisition response with an amount of EUR 10.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Card acquisition response'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n    \\\"SaleToPOIResponse\\\": {\\n        \\\"CardAcquisitionResponse\\\": {\\n            \\\"POIData\\\": {\\n                \\\"POIReconciliationID\\\": \\\"1000\\\",\\n                \\\"POITransactionID\\\": {\\n                    \\\"TimeStamp\\\": \\\"2022-12-08T09:03:13.012Z\\\",\\n                    \\\"TransactionID\\\": \\\"i495001670490193006\\\"\\n                }\\n            },\\n            \\\"PaymentInstrumentData\\\": {\\n                \\\"CardData\\\": {\\n                    \\\"CardCountryCode\\\": \\\"056\\\",\\n                    \\\"MaskedPan\\\": \\\"541333 **** 9999\\\",\\n                    \\\"PaymentBrand\\\": \\\"mc\\\",\\n                    \\\"PaymentToken\\\": {\\n                        \\\"TokenRequestedType\\\": \\\"Customer\\\",\\n                        \\\"TokenValue\\\": \\\"F415978638738822\\\"\\n                    },\\n                    \\\"SensitiveCardData\\\": {\\n                        \\\"ExpiryDate\\\": \\\"0228\\\"\\n                    }\\n                },\\n                \\\"PaymentInstrumentType\\\": \\\"Card\\\"\\n            },\\n            \\\"Response\\\": {\\n                \\\"AdditionalResponse\\\": \\\"tid=10502371&amp;transactionType=GOODS_SERVICES&amp;backendGiftcardIndicator=false&amp;posadditionalamounts.originalAmountValue=1000&amp;expiryYear=2028&amp;alias=F415978638738822&amp;giftcardIndicator=false&amp;posAmountGratuityValue=0&amp;paymentMethodVariant=mc&amp;applicationPreferredName=mc%20en%20gbr%20gbp&amp;store=BookStore&amp;aliasType=Default&amp;cardType=mc&amp;iso8601TxDate=2022-12-08T09%3a03%3a13.012Z&amp;posOriginalAmountValue=1000&amp;txtime=10%3a03%3a13&amp;paymentMethod=mc&amp;txdate=08-12-2022&amp;applicationLabel=mc%20en%20gbr%20gbp&amp;cardSummary=9999&amp;expiryMonth=02&amp;merchantReference=203&amp;posadditionalamounts.originalAmountCurrency=EUR&amp;posAuthAmountCurrency=EUR&amp;PaymentAccountReference=fFTJzjcI35iLWvHWIYrjuUmgFMqi9&amp;message=CARD_ACQ_COMPLETED&amp;cardIssuerCountryId=056&amp;posAmountCashbackValue=0&amp;posEntryMode=CLESS_CHIP&amp;cardBin=541333&amp;cardScheme=mc&amp;issuerCountry=BE&amp;posAuthAmountValue=1000\\\",\\n                \\\"Result\\\": \\\"Success\\\"\\n            },\\n            \\\"SaleData\\\": {\\n                \\\"SaleTransactionID\\\": {\\n                    \\\"TimeStamp\\\": \\\"2022-11-17T12:30:21.725Z\\\",\\n                    \\\"TransactionID\\\": \\\"203\\\"\\n                }\\n            }\\n        },\\n        \\\"MessageHeader\\\": {...}\\n    }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<li>\n<p>From the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/terminal-api\/latest\/post\/cardacquisition#responses-200-Response\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">CardAcquisitionResponse<\/a>, save the following details :<\/p>\n<ul>\n<li><code>POIData.POITransactionID<\/code>: since you are continuing with a payment, keep the <code>TimeStamp<\/code> and the <code>TransactionID<\/code> because you need these card acquisition details in your payment request.<\/li>\n<li><code>Response.AdditionalResponse.alias<\/code>: this is a value that uniquely represents the shopper's card number (PAN), for example <strong>A37317672402294<\/strong>. With this, you can recognize the card that a shopper is using and identify if they are returning customers. You cannot use the card alias for making payments.<\/li>\n<\/ul>\n<div class=\"notices green\">\n<p>The format of the <code>AdditionalResponse<\/code> can be a Base64-encoded or URL-encoded. To always receive the <code>AdditionalResponse<\/code> in one of those formats, contact our <a href=\"https:\/\/ca-test.adyen.com\/ca\/ca\/contactUs\/support.shtml?form=other\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Support Team<\/a>.<\/p>\n<\/div>\n<\/li>\n<\/ol>\n<p>If the shopper is entering the store for the first time, we recommend you <a href=\"#get-shopper-details\">collect their details<\/a>. Otherwise, you can proceed with a <a href=\"#pre-auth-amount\">pre-authorization payment request<\/a>.<\/p>\n<h2 id=\"get-shopper-details\">2. Optional: Get the shopper's details<\/h2>\n<p>If the shopper is entering the store for the first time, you can ask them to enter their contact details, or to provide consent to tokenize their card.<\/p>\n<ol>\n<li>Ask the shopper's consent to save their details. For this, you can use <a href=\"\/pt\/point-of-sale\/shopper-engagement\/shopper-input\/confirmation\">confirmation<\/a> or <a href=\"\/pt\/point-of-sale\/shopper-engagement\/shopper-input\/signature\">signature<\/a> input requests.<\/li>\n<li>Collect the shopper's contact details. For this you can use <a href=\"\/pt\/point-of-sale\/shopper-engagement\/shopper-input\/phone-number\">phone number<\/a> or <a href=\"\/pt\/point-of-sale\/shopper-engagement\/shopper-input\/text\">text<\/a> input requests. You can then use these details when tokenizing the card or to send the shopper a <a href=\"\/pt\/unified-commerce\/pay-by-link\">payment link<\/a>.<\/li>\n<li>Save the shopper's contact details and the card alias received in the <code>Response.AdditionalResponse.alias<\/code> of the card acquisition response.<\/li>\n<\/ol>\n<p>You can use the card alias to recognize the shopper the next time they present their card to enter the store. This way, the shopper does not have to enter their details again.<\/p>\n<h2 id=\"pre-auth-amount\">3. Pre-authorize an amount<\/h2>\n<p>After you collect the card and shopper details, send a payment request to pre-authorize the amount specified in the card acquisition request.<\/p>\n<p>You can also tokenize the card with Adyen. This enables recurring payments with the shopper's card and allows you to recover failed payments in case the shopper has insufficient funds at the time of purchase.<\/p>\n<div class=\"notices green\">\n<p>If you plan to tokenize the card, make sure that you <a href=\"\/pt\/point-of-sale\/card-acquisition\/identifiers#receiving-identifiers-in-responses\">enable receiving shopper identifiers<\/a> and check with our <a href=\"https:\/\/ca-test.adyen.com\/ca\/ca\/contactUs\/support.shtml?form=other\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Support Team<\/a> if your account is correctly configured for your tokenization use case.<\/p>\n<\/div>\n<ol>\n<li>\n<p>Prepare the <code>SaleData.SaleToAcquirerData<\/code> value for the pre-authorization payment request that you will make.<br \/>\nInclude the following data elements:<\/p>\n<ul>\n<li>\n<p><code>authorisationType<\/code>: <span translate=\"no\"><strong>PreAuth<\/strong><\/span>. This indicates this is a pre-authorization request.<\/p>\n<\/li>\n<li>\n<p>To tokenize the card, also include:<\/p>\n<ul>\n<li><code>shopperReference<\/code>: Your unique reference for this shopper. Minimum length: three characters. Note that the value is case-sensitive. Do not include personally identifiable information (PII), such as name or email address.<\/li>\n<li><code>recurringProcessingModel<\/code>: <span translate=\"no\"><strong>UnscheduledCardOnFile<\/strong><\/span>. Creates a recurring contract for transactions that occur on a non-fixed schedule and\/or have variable amounts. Enforces cardholder authentication (if configured by our <a href=\"https:\/\/ca-test.adyen.com\/ca\/ca\/contactUs\/support.shtml?form=other\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Support Team<\/a>).<\/li>\n<li><code>shopperEmail<\/code>: Optional. The shopper's email address, if you collected that.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Format the <code>SaleData.SaleToAcquirerData<\/code> value in one of the following ways (refer to <a href=\"\/pt\/point-of-sale\/add-data\">Add information to a payment<\/a>):<\/p>\n<ul>\n<li>\n<p>Option 1: A JSON object converted to a Base64-encoded string. For example:<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'JSON object'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n   \\\"authorisationType\\\": \\\"PreAuth\\\",\\n    \\\"recurringProcessingModel\\\": \\\"UnscheduledCardOnFile\\\",\\n    \\\"shopperReference\\\": \\\"YOUR_UNIQUE_SHOPPER_ID\\\",\\n    \\\"shopperEmail\\\": \\\"S.Hopper@example.com\\\"\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p>Encode the Operation JSON object to Base64.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Converted to a Base64-encoded string'\" :id=\"''\" :code-data='[{\"language\":\"raw\",\"tabTitle\":\"\",\"content\":\"ewogICAgImF1dGhvcmlzYXRpb25UeXBlIjogIlByZUF1dGgiLAogICAgInJlY3VycmluZ1Byb2Nlc3NpbmdNb2RlbCI6ICJVbnNjaGVkdWxlZENhcmRPbkZpbGUiLAogICAgInNob3BwZXJSZWZlcmVuY2UiOiAiWU9VUl9VTklRVUVfU0hPUFBFUl9JRCIsCiAgICAic2hvcHBlckVtYWlsIjogIlMuSG9wcGVyQGV4YW1wbGUuY29tIgp9\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<li>\n<p>Option 2: Form-encoded key-value pairs (using <strong>&amp;<\/strong> as a separator). For example:<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Form-encoded key-value pairs'\" :id=\"''\" :code-data='[{\"language\":\"raw\",\"tabTitle\":\"\",\"content\":\"recurringProcessingModel=UnscheduledCardOnFile&amp;shopperReference=12345&amp;shopperEmail=S.Hopper@example.com\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>Make a <a href=\"\/pt\/point-of-sale\/pre-authorisation#pre-authorize\">pre-authorization 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\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">PaymentRequest<\/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>SaleData.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.<\/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>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 pre-authorized transaction amount. <div class=\"sc-notice warning\"><div> This amount must be equal to the <code>TotalAmount<\/code> in the card acquisition request.<\/div><\/div><\/li><\/ul><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>PaymentData.CardAcquisitionReference<\/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 referring to the card acquisition: <ul><li markdown=\"1\"><code>TimeStamp<\/code>: The time stamp returned in the <code>POIData.POITransactionID<\/code> of the card acquisition response.<\/li> <li markdown=\"1\"><code>TransactionID<\/code>: the transaction ID returned in the <code>POIData.POITransactionID<\/code> of the card acquisition response.<\/li><\/ul><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>SaleData.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 Base64-encoded string or form-encoded key-value pairs you prepared.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/li>\n<\/ul>\n<p>The following example shows how to pre-authorize a payment of <strong>EUR 10<\/strong>:<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Pre-authorization request with form-encoded key-value pairs'\" :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            \\\"SaleID\\\":\\\"POSSystemID12345\\\",\\n            \\\"ServiceID\\\":\\\"0207111104\\\",\\n            \\\"POIID\\\":\\\"V400m-346403161\\\"\\n        },\\n        \\\"PaymentRequest\\\":{\\n            \\\"SaleData\\\":{\\n                \\\"SaleTransactionID\\\":{\\n                    \\\"TransactionID\\\":\\\"27908\\\",\\n                    \\\"TimeStamp\\\":\\\"2019-03-07T10:11:04+00:00\\\"\\n                },\\n                \\\"SaleToAcquirerData\\\":\\\"authorisationType=PreAuth&amp;recurringProcessingModel=UnscheduledCardOnFile&amp;shopperReference=YOUR_UNIQUE_SHOPPER_ID&amp;shopperEmail=S.Hopper@example.com\\\"\\n            },\\n            \\\"PaymentTransaction\\\":{\\n                \\\"AmountsReq\\\":{\\n                    \\\"Currency\\\":\\\"EUR\\\",\\n                    \\\"RequestedAmount\\\":10.00\\n                }\\n            },\\n            \\\"PaymentData\\\":{\\n                \\\"CardAcquisitionReference\\\":{\\n                    \\\"TimeStamp\\\":\\\"2022-12-15T14:53:52.977Z\\\",\\n                    \\\"TransactionID\\\":\\\"CglQ001671116032011\\\"\\n                }\\n            }\\n        }\\n    }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p>The customer presents their card to the payment terminal. If the pre-authorization is successful, the terminals show the transaction is approved.<\/p>\n<\/li>\n<li>\n<p>From the response, save the following details:<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">To do this<\/th>\n<th style=\"text-align: left;\">Use these parameters<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\">Authorization adjustment and capture<\/td>\n<td style=\"text-align: left;\"><ul><li markdown=\"1\"><code>POIData.POITransactionID.TransactionID<\/code>: <a href=\"\/pt\/point-of-sale\/design-your-integration\/terminal-api#transaction-identifier\">transaction identifier<\/a> for the payment, in the format <strong>Tender_reference.PSP_reference<\/strong>.<\/li><li markdown=\"1\"><code>Response.AdditionalResponse.pspReference<\/code>: the PSP reference of your pre-authorization request.<\/li><\/ul><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Calculating the amount for the authorization adjustment<\/td>\n<td style=\"text-align: left;\"><ul><li markdown=\"1\"><code>PaymentResult.AmountsResp<\/code>: the <code>AuthorizedAmount<\/code> and <code>Currency<\/code> of the pre-authorized payment.<\/li><li><code>Response.AdditionalResponse.authorisedAmountValue<\/code>: the pre-authorized amount in <a href=\"\/pt\/development-resources\/currency-codes\">minor units<\/a>.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Synchronous authorization adjustment<\/td>\n<td style=\"text-align: left;\"><ul><li markdown=\"1\"><code>Response.AdditionalResponse.adjustAuthorisationData<\/code>: a blob with authorization data, if the synchronous flow is enabled for your account.<\/li><\/ul><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>For easier shopper recognition and recovering failed payments, from the <code>Response.AdditionalResponse<\/code> save the following details:<\/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>alias<\/code><\/td>\n<td style=\"text-align: left;\">The card alias. Also returned in <code>PaymentResult.PaymentInstrumentData.PaymentToken.TokenValue<\/code> if the request contains <code>TokenRequestedType<\/code>: <strong>Customer<\/strong>.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>PaymentAccountReference<\/code><\/td>\n<td style=\"text-align: left;\">A value that represents the payment account that the card and\/or NFC wallet is linked to.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>recurring.recurringDetailReference<\/code> or <code>tokenization.storedPaymentMethodId<\/code><\/td>\n<td style=\"text-align: left;\">The token representing the shopper's payment method.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>recurring.shopperReference<\/code> or <code>tokenization.shopperReference<\/code><\/td>\n<td style=\"text-align: left;\">Your unique reference for this shopper.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>shopperEmail<\/code><\/td>\n<td style=\"text-align: left;\">The shopper's email address .<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>The following example shows the response to a EUR 10.00 pre-authorization request.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Pre-authorization response'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n    \\\"SaleToPOIResponse\\\": {\\n        \\\"PaymentResponse\\\": {\\n            \\\"POIData\\\":\\n                \\\"POITransactionID\\\": {\\n                    \\\"TimeStamp\\\": \\\"2019-12-04T13:56:26.000Z\\\",\\n                    \\\"TransactionID\\\": \\\"8ha5001575467786000.KHQC5N7G84BLNK43\\\"\\n                   }\\n                {...},\\n            \\\"SaleData\\\": {...},\\n            \\\"PaymentReceipt\\\": [...],\\n            \\\"PaymentResult\\\": {\\n                \\\"AuthenticationMethod\\\": [...],\\n                \\\"OnlineFlag\\\": true,\\n                \\\"PaymentInstrumentData\\\": {\\n                    \\\"CardData\\\": {\\n                        \\\"EntryMode\\\": [\\n                            \\\"Contactless\\\"\\n                        ],\\n                    \\\"{hint:This is the card alias, not the token for future payments}PaymentToken{\\\/hint}\\\": {\\n                        \\\"TokenRequestedType\\\": \\\"Customer\\\",\\n                        \\\"TokenValue\\\": \\\"M469509594859802\\\"\\n                    },\\n                    \\\"PaymentBrand\\\": \\\"mc\\\",\\n                    \\\"MaskedPan\\\": \\\"541333 **** 9999\\\",\\n                    \\\"SensitiveCardData\\\": {\\n                        \\\"CardSeqNumb\\\": \\\"83\\\",\\n                        \\\"ExpiryDate\\\": \\\"0228\\\"\\n                    }\\n                },\\n                \\\"PaymentInstrumentData\\\": {...},\\n                \\\"AmountsResp\\\": {\\n                    \\\"AuthorizedAmount\\\": 10.00,\\n                    \\\"Currency\\\": \\\"EUR\\\"\\n                }\\n            },\\n            \\\"Response\\\": {\\n                \\\"Result\\\": \\\"Success\\\",\\n                \\\"AdditionalResponse\\\": \\\"...adjustAuthorisationData=BQABAQA+fbc==...&amp;alias=M469509594859802...recurring.recurringDetailReference=7219687191761347&amp;recurring.shopperReference=YOUR_UNIQUE_SHOPPER_ID...&amp;shopperEmail=S.Hopper%40gmail.com...tokenization.shopperReference=12345&amp;tokenization.store.operationType=alreadyExisting&amp;tokenization.storedPaymentMethodId=7219687191761347...\\\"\\n            }\\n        },\\n        \\\"MessageHeader\\\": {...}\\n    }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<div class=\"sc-notice info\"><div>\n<p>Note that the <code>PaymentToken<\/code> object contains the card alias. You cannot use this for making payments. It is intended only for recognizing the card.<\/p>\n<\/div><\/div>\n<\/li>\n<\/ol>\n<p>After a successful pre-authorization, you need to have logic implemented to open the door of the autonomous store. The shopper then enters the store, takes items, and leaves.<\/p>\n<h2 id=\"auth-adjustment\">4. Adjust the pre-authorized amount<\/h2>\n<p>If the purchase amount for items that shopper has taken differs from the pre-authorized amount, you need to send an authorization adjustment request. This is not a Terminal API request to the terminal itself or the Cloud endpoint for the terminal.<br \/>\nDepending on your infrastructure and implementation, you may want to use the asynchronous or synchronous authorization adjustment.<\/p>\n<div class=\"notices yellow\">\n<p>When building or testing the flow, make sure there is at least a 5 second delay between the pre-authorization and the authorization adjustment.<\/p>\n<\/div>\n\n<div id=\"tabc6FKq\">\n    <div data-component-wrapper=\"tabs\">\n        <tabs\n                        :items=\"[{&quot;title&quot;:&quot;Asynchronous authorization adjustment&quot;,&quot;content&quot;:&quot;\\n&lt;ol&gt;\\n&lt;li&gt;\\n&lt;p&gt;Make a POST  &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/Checkout\\\/latest\\\/post\\\/payments\\\/(paymentPspReference)\\\/amountUpdates\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;\\\/payments\\\/{paymentPspReference}\\\/amountUpdates&lt;\\\/a&gt; request, where &lt;code&gt;paymentPspReference&lt;\\\/code&gt; is the &lt;code&gt;pspReference&lt;\\\/code&gt; from the pre-authorization response. Specify:&lt;\\\/p&gt;\\n&lt;table&gt;\\n&lt;thead&gt;\\n&lt;tr&gt;\\n&lt;th style=\\&quot;text-align: left;\\&quot;&gt;Parameter&lt;\\\/th&gt;\\n&lt;th style=\\&quot;text-align: center;\\&quot;&gt;Required&lt;\\\/th&gt;\\n&lt;th style=\\&quot;text-align: left;\\&quot;&gt;Description&lt;\\\/th&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/thead&gt;\\n&lt;tbody&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;amount&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: center;\\&quot;&gt;&lt;img title=\\&quot;-white_check_mark-\\&quot; alt=\\&quot;-white_check_mark-\\&quot; class=\\&quot;smileys\\&quot; src=\\&quot;\\\/user\\\/data\\\/smileys\\\/emoji\\\/white_check_mark.png\\&quot; \\\/&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;The &lt;code&gt;currency&lt;\\\/code&gt; and &lt;code&gt;value&lt;\\\/code&gt; of the new amount &lt;strong&gt;in minor units&lt;\\\/strong&gt;. This is the sum of the pre-authorized amount and the additional amount. &lt;br&gt; If this is not the first authorization adjustment, it is the sum of the pre-authorized amount plus all additional amounts.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;merchantAccount&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: center;\\&quot;&gt;&lt;img title=\\&quot;-white_check_mark-\\&quot; alt=\\&quot;-white_check_mark-\\&quot; class=\\&quot;smileys\\&quot; src=\\&quot;\\\/user\\\/data\\\/smileys\\\/emoji\\\/white_check_mark.png\\&quot; \\\/&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;The name of your merchant account that is used to process the payment.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;industryUsage&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: center;\\&quot;&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;DelayedCharge&lt;\\\/strong&gt;&lt;\\\/span&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;reference&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: center;\\&quot;&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;Your reference to this payment modification, for use in your reconciliation process.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/tbody&gt;\\n&lt;\\\/table&gt;\\n&lt;p&gt;The following example shows how to add a charge of EUR 4.15 to a pre-authorized amount of EUR 10.00.&lt;\\\/p&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;Asynchronous authorization adjustment request&#039;\\&quot; :id=\\&quot;&#039;asynchronous-authorization-adjustment-request-2927277214&#039;\\&quot; :code-data=\\&quot;[{&amp;quot;language&amp;quot;:&amp;quot;bash&amp;quot;,&amp;quot;tabTitle&amp;quot;:&amp;quot;curl&amp;quot;,&amp;quot;content&amp;quot;:&amp;quot;curl https:\\\\\\\/\\\\\\\/checkout-test.adyen.com\\\\\\\/v72\\\\\\\/payments\\\\\\\/KHQC5N7G84BLNK43\\\\\\\/amountUpdates \\\\\\\\\\\\n-H &#039;x-API-key: ADYEN_API_KEY&#039; \\\\\\\\\\\\n-H &#039;content-type: application\\\\\\\/json&#039; \\\\\\\\\\\\n-X POST \\\\\\\\\\\\n-d &#039;{\\\\n    \\\\&amp;quot;merchantAccount\\\\&amp;quot;:\\\\&amp;quot;ADYEN_MERCHANT_ACCOUNT\\\\&amp;quot;,\\\\n    \\\\&amp;quot;amount\\\\&amp;quot;: {\\\\n        \\\\&amp;quot;currency\\\\&amp;quot;:\\\\&amp;quot;EUR\\\\&amp;quot;,\\\\n        \\\\&amp;quot;value\\\\&amp;quot;:1415\\\\n    },\\\\n    \\\\&amp;quot;industryUsage\\\\&amp;quot;:\\\\&amp;quot;DelayedCharge\\\\&amp;quot;,\\\\n    \\\\&amp;quot;reference\\\\&amp;quot;:\\\\&amp;quot;YOUR_UNIQUE_REFERENCE\\\\&amp;quot;\\\\n}&#039;&amp;quot;},{&amp;quot;language&amp;quot;:&amp;quot;java&amp;quot;,&amp;quot;tabTitle&amp;quot;:&amp;quot;Java&amp;quot;,&amp;quot;content&amp;quot;:&amp;quot;\\\\\\\/\\\\\\\/ Adyen Java API Library v25.0.0\\\\nimport com.adyen.Client;\\\\nimport com.adyen.enums.Environment;\\\\nimport com.adyen.model.checkout.*;\\\\nimport java.time.OffsetDateTime;\\\\nimport java.util.*;\\\\nimport com.adyen.model.RequestOptions;\\\\nimport com.adyen.service.checkout.*;\\\\n\\\\nClient client = new Client(\\\\&amp;quot;ADYEN_API_KEY\\\\&amp;quot;, Environment.TEST);\\\\n\\\\n\\\\\\\/\\\\\\\/ Request objects\\\\nAmount amount = new Amount()\\\\n\\\\t.currency(\\\\&amp;quot;EUR\\\\&amp;quot;)\\\\n\\\\t.value(1415L);\\\\n\\\\nPaymentAmountUpdateRequest paymentAmountUpdateRequest = new PaymentAmountUpdateRequest()\\\\n\\\\t.reference(\\\\&amp;quot;YOUR_UNIQUE_REFERENCE\\\\&amp;quot;)\\\\n    .industryUsage(\\\\&amp;quot;DelayedCharge\\\\&amp;quot;)\\\\n\\\\t.amount(amount)\\\\n\\\\t.merchantAccount(\\\\&amp;quot;ADYEN_MERCHANT_ACCOUNT\\\\&amp;quot;);\\\\n\\\\n\\\\\\\/\\\\\\\/ Make the request\\\\nModificationsApi service = new ModificationsApi(client);\\\\nPaymentAmountUpdateResponse response = service.updateAuthorisedAmount(\\\\&amp;quot;paymentPspReference\\\\&amp;quot;, paymentAmountUpdateRequest, new RequestOptions().idempotencyKey(\\\\&amp;quot;UUID\\\\&amp;quot;));&amp;quot;},{&amp;quot;language&amp;quot;:&amp;quot;php&amp;quot;,&amp;quot;tabTitle&amp;quot;:&amp;quot;PHP&amp;quot;,&amp;quot;content&amp;quot;:&amp;quot;\\\\\\\/\\\\\\\/ Adyen PHP API Library v17.4.0\\\\nuse Adyen\\\\\\\\Client;\\\\nuse Adyen\\\\\\\\Environment;\\\\nuse Adyen\\\\\\\\Model\\\\\\\\Checkout\\\\\\\\Amount;\\\\nuse Adyen\\\\\\\\Model\\\\\\\\Checkout\\\\\\\\PaymentAmountUpdateRequest;\\\\nuse Adyen\\\\\\\\Service\\\\\\\\Checkout\\\\\\\\ModificationsApi;\\\\n\\\\n$client = new Client();\\\\n$client-&amp;gt;setXApiKey(\\\\&amp;quot;ADYEN_API_KEY\\\\&amp;quot;);\\\\n$client-&amp;gt;setEnvironment(Environment::TEST);\\\\n\\\\n\\\\n\\\\\\\/\\\\\\\/ Request objects\\\\n$amount = new Amount();\\\\n$amount\\\\n\\\\t-&amp;gt;setCurrency(\\\\&amp;quot;EUR\\\\&amp;quot;)\\\\n\\\\t-&amp;gt;setValue(1415);\\\\n\\\\n$paymentAmountUpdateRequest = new PaymentAmountUpdateRequest();\\\\n$paymentAmountUpdateRequest\\\\n\\\\t-&amp;gt;setReference(\\\\&amp;quot;YOUR_UNIQUE_REFERENCE\\\\&amp;quot;)\\\\n\\\\t-&amp;gt;setIndustryUsage(\\\\&amp;quot;DelayedCharge\\\\&amp;quot;)\\\\n\\\\t-&amp;gt;setAmount($amount)\\\\n\\\\t-&amp;gt;setMerchantAccount(\\\\&amp;quot;ADYEN_MERCHANT_ACCOUNT\\\\&amp;quot;);\\\\n\\\\n$requestOptions[&#039;idempotencyKey&#039;] = &#039;UUID&#039;;\\\\n\\\\n\\\\\\\/\\\\\\\/ Make the request\\\\n$service = new ModificationsApi($client);\\\\n$response = $service-&amp;gt;updateAuthorisedAmount(&#039;paymentPspReference&#039;, $paymentAmountUpdateRequest, $requestOptions);&amp;quot;},{&amp;quot;language&amp;quot;:&amp;quot;cs&amp;quot;,&amp;quot;tabTitle&amp;quot;:&amp;quot;C#&amp;quot;,&amp;quot;content&amp;quot;:&amp;quot;\\\\\\\/\\\\\\\/ Adyen .net API Library v14.3.0\\\\nusing Adyen;\\\\nusing Environment = Adyen.Model.Environment;\\\\nusing Adyen.Model;\\\\nusing Adyen.Model.Checkout;\\\\nusing Adyen.Service.Checkout;\\\\n\\\\nvar config = new Config()\\\\n{\\\\n    XApiKey = \\\\&amp;quot;ADYEN_API_KEY\\\\&amp;quot;,\\\\n    Environment = Environment.Test\\\\n};\\\\nvar client = new Client(config);\\\\n\\\\n\\\\\\\/\\\\\\\/ Fill in your request objects\\\\nAmount amount = new Amount\\\\n{\\\\n\\\\tCurrency = \\\\&amp;quot;EUR\\\\&amp;quot;,\\\\n\\\\tValue = 1415\\\\n};\\\\n\\\\nPaymentAmountUpdateRequest paymentAmountUpdateRequest = new PaymentAmountUpdateRequest\\\\n{\\\\n\\\\tReference = \\\\&amp;quot;YOUR_UNIQUE_REFERENCE\\\\&amp;quot;,\\\\n\\\\tIndustryUsage: \\\\&amp;quot;DelayedCharge\\\\&amp;quot;,\\\\n\\\\tAmount = amount,\\\\n\\\\tMerchantAccount = \\\\&amp;quot;ADYEN_MERCHANT_ACCOUNT\\\\&amp;quot;\\\\n};\\\\n\\\\n\\\\\\\/\\\\\\\/ Make the request\\\\nvar service = new ModificationsService(client);\\\\nvar response = service.UpdateAuthorisedAmount(\\\\&amp;quot;paymentPspReference\\\\&amp;quot;, paymentAmountUpdateRequest, requestOptions: new RequestOptions { IdempotencyKey = \\\\&amp;quot;UUID\\\\&amp;quot;});&amp;quot;},{&amp;quot;language&amp;quot;:&amp;quot;js&amp;quot;,&amp;quot;tabTitle&amp;quot;:&amp;quot;NodeJS (JavaScript)&amp;quot;,&amp;quot;content&amp;quot;:&amp;quot;\\\\\\\/\\\\\\\/ Adyen Node API Library v16.2.0\\\\n\\\\\\\/\\\\\\\/ Require the parts of the module you want to use\\\\nconst { Client, CheckoutAPI } = require(&#039;@adyen\\\\\\\/api-library&#039;);\\\\n\\\\n\\\\\\\/\\\\\\\/ Initialize the client object\\\\nconst client = new Client({apiKey: \\\\&amp;quot;ADYEN_API_KEY\\\\&amp;quot;, environment: \\\\&amp;quot;TEST\\\\&amp;quot;});\\\\n\\\\n\\\\\\\/\\\\\\\/ Create the request object\\\\nconst paymentAmountUpdateRequest = {\\\\n  merchantAccount: \\\\&amp;quot;ADYEN_MERCHANT_ACCOUNT\\\\&amp;quot;,\\\\n  amount: {\\\\n    currency: \\\\&amp;quot;EUR\\\\&amp;quot;,\\\\n    value: 1415\\\\n  },\\\\n  industryUsage: \\\\&amp;quot;DelayedCharge\\\\&amp;quot;,\\\\n  reference: \\\\&amp;quot;YOUR_UNIQUE_REFERENCE\\\\&amp;quot;\\\\n}\\\\n\\\\n\\\\\\\/\\\\\\\/ Make the request\\\\nconst checkoutAPI = new CheckoutAPI(client);\\\\nconst response = checkoutAPI.ModificationsApi.updateAuthorisedAmount(\\\\&amp;quot;paymentPspReference\\\\&amp;quot;, paymentAmountUpdateRequest, { idempotencyKey: \\\\&amp;quot;UUID\\\\&amp;quot; });&amp;quot;},{&amp;quot;language&amp;quot;:&amp;quot;go&amp;quot;,&amp;quot;tabTitle&amp;quot;:&amp;quot;Go&amp;quot;,&amp;quot;content&amp;quot;:&amp;quot;\\\\\\\/\\\\\\\/ Adyen Go API Library v9.2.0\\\\nimport (\\\\n\\\\t\\\\&amp;quot;context\\\\&amp;quot;\\\\n\\\\t\\\\&amp;quot;github.com\\\\\\\/adyen\\\\\\\/adyen-go-api-library\\\\\\\/v9\\\\\\\/src\\\\\\\/common\\\\&amp;quot;\\\\n\\\\t\\\\&amp;quot;github.com\\\\\\\/adyen\\\\\\\/adyen-go-api-library\\\\\\\/v9\\\\\\\/src\\\\\\\/adyen\\\\&amp;quot;\\\\n\\\\t\\\\&amp;quot;github.com\\\\\\\/adyen\\\\\\\/adyen-go-api-library\\\\\\\/v9\\\\\\\/src\\\\\\\/checkout\\\\&amp;quot;\\\\n)\\\\n\\\\nclient := adyen.NewClient(&amp;amp;common.Config{\\\\n    ApiKey:      \\\\&amp;quot;ADYEN_API_KEY\\\\&amp;quot;,\\\\n    Environment: common.TestEnv,\\\\n})\\\\n\\\\n\\\\\\\/\\\\\\\/ Fill in your request objects\\\\namount := checkout.Amount{\\\\n\\\\tCurrency: \\\\&amp;quot;EUR\\\\&amp;quot;,\\\\n\\\\tValue: 1415,\\\\n}\\\\n\\\\npaymentAmountUpdateRequest := checkout.PaymentAmountUpdateRequest{\\\\n\\\\tReference: common.PtrString(\\\\&amp;quot;YOUR_UNIQUE_REFERENCE\\\\&amp;quot;),\\\\n\\\\tIndustryUsage: \\\\&amp;quot;DelayedCharge\\\\&amp;quot;,\\\\n\\\\tAmount: amount,\\\\n\\\\tMerchantAccount: \\\\&amp;quot;ADYEN_MERCHANT_ACCOUNT\\\\&amp;quot;,\\\\n}\\\\n\\\\n\\\\\\\/\\\\\\\/ Make the request\\\\nservice := client.Checkout()\\\\nreq := service.ModificationsApi.UpdateAuthorisedAmountInput(\\\\&amp;quot;paymentPspReference\\\\&amp;quot;).IdempotencyKey(\\\\&amp;quot;UUID\\\\&amp;quot;).PaymentAmountUpdateRequest(paymentAmountUpdateRequest)\\\\nres, httpRes, err := service.ModificationsApi.UpdateAuthorisedAmount(context.Background(), req)&amp;quot;},{&amp;quot;language&amp;quot;:&amp;quot;py&amp;quot;,&amp;quot;tabTitle&amp;quot;:&amp;quot;Python&amp;quot;,&amp;quot;content&amp;quot;:&amp;quot;# Adyen Python API Library v12.2.0\\\\nimport Adyen\\\\n\\\\nadyen = Adyen.Adyen()\\\\nadyen.client.xapikey = \\\\&amp;quot;ADYEN_API_KEY\\\\&amp;quot;\\\\nadyen.client.platform = \\\\&amp;quot;test\\\\&amp;quot; # The environment to use library in.\\\\n\\\\njson_request = {\\\\n  \\\\&amp;quot;merchantAccount\\\\&amp;quot;: \\\\&amp;quot;ADYEN_MERCHANT_ACCOUNT\\\\&amp;quot;,\\\\n  \\\\&amp;quot;amount\\\\&amp;quot;: {\\\\n    \\\\&amp;quot;currency\\\\&amp;quot;: \\\\&amp;quot;EUR\\\\&amp;quot;,\\\\n    \\\\&amp;quot;value\\\\&amp;quot;: 1415\\\\n  },\\\\n  \\\\&amp;quot;industryUsage\\\\&amp;quot;: \\\\&amp;quot;DelayedCharge\\\\&amp;quot;,\\\\n  \\\\&amp;quot;reference\\\\&amp;quot;: \\\\&amp;quot;YOUR_UNIQUE_REFERENCE\\\\&amp;quot;\\\\n}\\\\n\\\\nresult = adyen.checkout.modifications_api.update_authorised_amount(request=json_request, paymentPspReference=\\\\&amp;quot;paymentPspReference\\\\&amp;quot;, idempotency_key=\\\\&amp;quot;UUID\\\\&amp;quot;)&amp;quot;},{&amp;quot;language&amp;quot;:&amp;quot;rb&amp;quot;,&amp;quot;tabTitle&amp;quot;:&amp;quot;Ruby&amp;quot;,&amp;quot;content&amp;quot;:&amp;quot;# Adyen Ruby API Library v9.2.0\\\\nrequire \\\\&amp;quot;adyen-ruby-api-library\\\\&amp;quot;\\\\n\\\\nadyen = Adyen::Client.new\\\\nadyen.api_key = &#039;ADYEN_API_KEY&#039;\\\\nadyen.env = :test # Set to \\\\&amp;quot;live\\\\&amp;quot; for live environment\\\\n\\\\nrequest_body = {\\\\n  :merchantAccount =&amp;gt; &#039;ADYEN_MERCHANT_ACCOUNT&#039;,\\\\n  :amount =&amp;gt; {\\\\n    :currency =&amp;gt; &#039;EUR&#039;,\\\\n    :value =&amp;gt; 1415\\\\n  },\\\\n  :industryUsage =&amp;gt; &#039;DelayedCharge&#039;,\\\\n  :reference =&amp;gt; &#039;YOUR_UNIQUE_REFERENCE&#039;\\\\n}\\\\n\\\\nresult = adyen.checkout.modifications_api.update_authorised_amount(request_body, &#039;paymentPspReference&#039;, headers: { &#039;Idempotency-Key&#039; =&amp;gt; &#039;UUID&#039; })&amp;quot;},{&amp;quot;language&amp;quot;:&amp;quot;ts&amp;quot;,&amp;quot;tabTitle&amp;quot;:&amp;quot;NodeJS (TypeScript)&amp;quot;,&amp;quot;content&amp;quot;:&amp;quot;\\\\\\\/\\\\\\\/ Adyen Node API Library v16.2.0\\\\n\\\\\\\/\\\\\\\/ Require the parts of the module you want to use\\\\nimport { Client, CheckoutAPI, Types } from \\\\&amp;quot;@adyen\\\\\\\/api-library\\\\&amp;quot;;\\\\n\\\\n\\\\\\\/\\\\\\\/ Initialize the client object\\\\nconst client = new Client({apiKey: \\\\&amp;quot;ADYEN_API_KEY\\\\&amp;quot;, environment: \\\\&amp;quot;TEST\\\\&amp;quot;});\\\\n\\\\n\\\\\\\/\\\\\\\/ Create the request objects\\\\nconst amount: Types.checkout.Amount = {\\\\n\\\\tcurrency: \\\\&amp;quot;EUR\\\\&amp;quot;,\\\\n\\\\tvalue: 1415\\\\n};\\\\n\\\\nconst paymentAmountUpdateRequest: Types.checkout.PaymentAmountUpdateRequest = {\\\\n\\\\treference: \\\\&amp;quot;YOUR_UNIQUE_REFERENCE\\\\&amp;quot;,\\\\n    industryUsage: \\\\&amp;quot;DelayedCharge\\\\&amp;quot;,\\\\n\\\\tamount: amount,\\\\n\\\\tmerchantAccount: \\\\&amp;quot;ADYEN_MERCHANT_ACCOUNT\\\\&amp;quot;\\\\n};\\\\n\\\\n\\\\\\\/\\\\\\\/ Make the request\\\\nconst checkoutAPI = new CheckoutAPI(client);\\\\nconst response = checkoutAPI.ModificationsApi.updateAuthorisedAmount(\\\\&amp;quot;paymentPspReference\\\\&amp;quot;, paymentAmountUpdateRequest, { idempotencyKey: \\\\&amp;quot;UUID\\\\&amp;quot; });&amp;quot;}]\\&quot; :enable-copy-link-to-code-block=\\&quot;true\\&quot; :code-sample-card-size=\\&quot;&#039;fullsize&#039;\\&quot;&gt;&lt;\\\/code-sample&gt;\\n&lt;\\\/div&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;In the &lt;code&gt;\\\/payments\\\/{paymentPspReference}\\\/amountUpdates&lt;\\\/code&gt; response, note the following parameters:&lt;\\\/p&gt;\\n&lt;ul&gt;\\n&lt;li&gt;&lt;code&gt;pspReference&lt;\\\/code&gt;: The PSP reference associated with this &lt;code&gt;\\\/payments\\\/{paymentPspReference}\\\/amountUpdates&lt;\\\/code&gt; request. Note that this is different from the PSP reference associated with the pre-authorization request.&lt;\\\/li&gt;\\n&lt;li&gt;&lt;code&gt;status&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;received&lt;\\\/strong&gt;&lt;\\\/span&gt;&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;Asynchronous authorization adjustment response&#039;\\&quot; :id=\\&quot;&#039;&#039;\\&quot; :code-data=&#039;[{\\&quot;language\\&quot;:\\&quot;json\\&quot;,\\&quot;tabTitle\\&quot;:\\&quot;\\&quot;,\\&quot;content\\&quot;:\\&quot;{\\\\n  \\\\\\&quot;merchantAccount\\\\\\&quot;: \\\\\\&quot;ADYEN_MERCHANT_ACCOUNT\\\\\\&quot;,\\\\n  \\\\\\&quot;paymentPspReference\\\\\\&quot;: \\\\\\&quot;KHQC5N7G84BLNK43\\\\\\&quot;,\\\\n  \\\\\\&quot;pspReference\\\\\\&quot;: \\\\\\&quot;NC6HT9CRT65ZGN82\\\\\\&quot;,\\\\n  \\\\\\&quot;reference\\\\\\&quot;: \\\\\\&quot;YOUR_UNIQUE_REFERENCE\\\\\\&quot;,\\\\n  \\\\\\&quot;status\\\\\\&quot;: \\\\\\&quot;received\\\\\\&quot;,\\\\n  \\\\\\&quot;amount\\\\\\&quot;: {\\\\n      \\\\\\&quot;currency\\\\\\&quot;: \\\\\\&quot;EUR\\\\\\&quot;,\\\\n      \\\\\\&quot;value\\\\\\&quot;: 1415\\\\n  }\\\\n}\\&quot;}]&#039; :enable-copy-link-to-code-block=\\&quot;true\\&quot; :code-sample-card-size=\\&quot;&#039;fullsize&#039;\\&quot;&gt;&lt;\\\/code-sample&gt;\\n&lt;\\\/div&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;Wait for a webhook message with the &lt;code&gt;eventCode&lt;\\\/code&gt; &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;AUTHORISATION_ADJUSTMENT&lt;\\\/strong&gt;&lt;\\\/span&gt;. This informs you whether the new amount has been authorized.&lt;\\\/p&gt;\\n&quot;,&quot;altTitle&quot;:null,&quot;oldTabId&quot;:&quot;asynchronous_authorization_adjustment_0_1&quot;,&quot;relation&quot;:&quot;&quot;},{&quot;title&quot;:&quot;Synchronous authorization adjustment&quot;,&quot;content&quot;:&quot;\\n&lt;p&gt;&lt;a id=\\&quot;first-adjustment\\&quot;&gt;&lt;\\\/a&gt;&lt;\\\/p&gt;\\n&lt;ol&gt;\\n&lt;li&gt;\\n&lt;p&gt;If this is the first adjustment after the pre-authorization:&lt;\\\/p&gt;\\n&lt;ul&gt;\\n&lt;li&gt;\\n&lt;p&gt;If you received the &lt;code&gt;AdditionalResponse&lt;\\\/code&gt; in the initial Terminal API payment response as key-value pairs separated by ampersands (&lt;strong&gt;&amp;amp;&lt;\\\/strong&gt;), URL-decode the value of the &lt;code&gt;adjustAuthorisationData&lt;\\\/code&gt; key.&lt;\\\/p&gt;\\n&lt;div class=\\&quot;sc-notice info\\&quot;&gt;&lt;div&gt;\\n&lt;p&gt;To find a tool or instructions for URL-decoding, search the internet for &lt;em&gt;&amp;lt;YOUR_PROGRAMMING_LANGUAGE&gt; decode x-www-form-urlencoded&lt;\\\/em&gt;.&lt;\\\/p&gt;\\n&lt;\\\/div&gt;&lt;\\\/div&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;If you received the &lt;code&gt;AdditionalResponse&lt;\\\/code&gt; in the initial Terminal API payment response as a Base64-encoded string, Base64-decode the string and copy the value of the &lt;code&gt;adjustAuthorisationData&lt;\\\/code&gt; field.&lt;\\\/p&gt;\\n&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;div class=\\&quot;sc-notice note\\&quot;&gt;&lt;div&gt;\\n&lt;p&gt;For adjustments after the first adjustment, skip the above step.&lt;\\\/p&gt;\\n&lt;\\\/div&gt;&lt;\\\/div&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;Make a POST  &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/Payment\\\/latest\\\/post\\\/adjustAuthorisation\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;\\\/adjustAuthorisation&lt;\\\/a&gt; request, specifying:&lt;\\\/p&gt;\\n&lt;table&gt;\\n&lt;thead&gt;\\n&lt;tr&gt;\\n&lt;th style=\\&quot;text-align: left;\\&quot;&gt;Parameter&lt;\\\/th&gt;\\n&lt;th style=\\&quot;text-align: center;\\&quot;&gt;Required&lt;\\\/th&gt;\\n&lt;th style=\\&quot;text-align: left;\\&quot;&gt;Description&lt;\\\/th&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/thead&gt;\\n&lt;tbody&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;originalReference&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: center;\\&quot;&gt;&lt;img title=\\&quot;-white_check_mark-\\&quot; alt=\\&quot;-white_check_mark-\\&quot; class=\\&quot;smileys\\&quot; src=\\&quot;\\\/user\\\/data\\\/smileys\\\/emoji\\\/white_check_mark.png\\&quot; \\\/&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;The &lt;code&gt;pspReference&lt;\\\/code&gt; of the pre-authorization request. You received this in the response to your pre-authorization request.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;modificationAmount&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: center;\\&quot;&gt;&lt;img title=\\&quot;-white_check_mark-\\&quot; alt=\\&quot;-white_check_mark-\\&quot; class=\\&quot;smileys\\&quot; src=\\&quot;\\\/user\\\/data\\\/smileys\\\/emoji\\\/white_check_mark.png\\&quot; \\\/&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;The &lt;code&gt;currency&lt;\\\/code&gt; and &lt;code&gt;value&lt;\\\/code&gt; of the new amount &lt;strong&gt;in minor units&lt;\\\/strong&gt;. This is the sum of the pre-authorized amount and the additional amount. &lt;br&gt; If this is not the first authorization adjustment, it is the sum of the pre-authorized amount plus all additional amounts.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;additionalData.adjustAuthorisationData&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: center;\\&quot;&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;The previous &lt;code&gt;adjustAuthorisationData&lt;\\\/code&gt; blob. &lt;br&gt; For the &lt;strong&gt;first adjustment&lt;\\\/strong&gt;, that is the blob you received in the response to the pre-authorization request. You need to decode that first. &lt;br&gt; For the second adjustment, it is the blob you received in the response to the first adjustment, and so on. &lt;br&gt; &lt;div class=\\&quot;sc-notice note\\&quot;&gt;&lt;div&gt; Always use the latest blob. &lt;\\\/div&gt;&lt;\\\/div&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;reference&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: center;\\&quot;&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;Your reference to this payment modification, for use in your reconciliation process.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;merchantAccount&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: center;\\&quot;&gt;&lt;img title=\\&quot;-white_check_mark-\\&quot; alt=\\&quot;-white_check_mark-\\&quot; class=\\&quot;smileys\\&quot; src=\\&quot;\\\/user\\\/data\\\/smileys\\\/emoji\\\/white_check_mark.png\\&quot; \\\/&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;The name of your merchant account that is used to process the payment.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/tbody&gt;\\n&lt;\\\/table&gt;\\n&lt;p&gt;The following examples shows how to add a charge of EUR 4.15 to a pre-authorized amount of EUR 10.00.&lt;\\\/p&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;Synchronous authorization adjustment request&#039;\\&quot; :id=\\&quot;&#039;synchronous-authorization-adjustment-request-5883884180&#039;\\&quot; :code-data=\\&quot;[{&amp;quot;language&amp;quot;:&amp;quot;bash&amp;quot;,&amp;quot;tabTitle&amp;quot;:&amp;quot;curl&amp;quot;,&amp;quot;content&amp;quot;:&amp;quot;curl https:\\\\\\\/\\\\\\\/pal-test.adyen.com\\\\\\\/pal\\\\\\\/servlet\\\\\\\/Payment\\\\\\\/v68\\\\\\\/adjustAuthorisation \\\\\\\\\\\\n-H &#039;x-API-key: ADYEN_API_KEY&#039; \\\\\\\\\\\\n-H &#039;content-type: application\\\\\\\/json&#039; \\\\\\\\\\\\n-X POST \\\\\\\\\\\\n-d &#039;{\\\\n    \\\\&amp;quot;merchantAccount\\\\&amp;quot;:\\\\&amp;quot;ADYEN_MERCHANT_ACCOUNT\\\\&amp;quot;,\\\\n    \\\\&amp;quot;originalReference\\\\&amp;quot;:\\\\&amp;quot;KHQC5N7G84BLNK43\\\\&amp;quot;,\\\\n    \\\\&amp;quot;modificationAmount\\\\&amp;quot;: {\\\\n        \\\\&amp;quot;currency\\\\&amp;quot;:\\\\&amp;quot;EUR\\\\&amp;quot;,\\\\n        \\\\&amp;quot;value\\\\&amp;quot;:1415\\\\n    },\\\\n    \\\\&amp;quot;reference\\\\&amp;quot;:\\\\&amp;quot;YOUR_MODIFICATION_REFERENCE\\\\&amp;quot;,\\\\n    \\\\&amp;quot;additionalData\\\\&amp;quot;:{\\\\n        \\\\&amp;quot;adjustAuthorisationData\\\\&amp;quot;:\\\\&amp;quot;BQABAQA+fbc==...\\\\&amp;quot;\\\\n    }\\\\n}&#039;&amp;quot;},{&amp;quot;language&amp;quot;:&amp;quot;java&amp;quot;,&amp;quot;tabTitle&amp;quot;:&amp;quot;Java&amp;quot;,&amp;quot;content&amp;quot;:&amp;quot;\\\\\\\/\\\\\\\/ Adyen Java API Library v25.0.0\\\\nimport com.adyen.Client;\\\\nimport com.adyen.enums.Environment;\\\\nimport com.adyen.model.payment.*;\\\\nimport java.time.OffsetDateTime;\\\\nimport java.util.*;\\\\nimport com.adyen.service.*;\\\\n\\\\nClient client = new Client(\\\\&amp;quot;ADYEN_API_KEY\\\\&amp;quot;, Environment.TEST);\\\\n\\\\n\\\\\\\/\\\\\\\/ Request objects\\\\nAmount amount = new Amount()\\\\n\\\\t.currency(\\\\&amp;quot;EUR\\\\&amp;quot;)\\\\n\\\\t.value(1415L);\\\\n\\\\nAdjustAuthorisationRequest adjustAuthorisationRequest = new AdjustAuthorisationRequest()\\\\n\\\\t.originalReference(\\\\&amp;quot;KHQC5N7G84BLNK43\\\\&amp;quot;)\\\\n\\\\t.reference(\\\\&amp;quot;YOUR_MODIFICATION_REFERENCE\\\\&amp;quot;)\\\\n\\\\t.merchantAccount(\\\\&amp;quot;ADYEN_MERCHANT_ACCOUNT\\\\&amp;quot;)\\\\n\\\\t.modificationAmount(amount)\\\\n\\\\t.additionalData(new HashMap&amp;lt;String, String&amp;gt;(Map.of(\\\\n\\\\t\\\\t\\\\&amp;quot;adjustAuthorisationData\\\\&amp;quot;, \\\\&amp;quot;BQABAQA+fbc==...\\\\&amp;quot;\\\\n\\\\t)));\\\\n\\\\n\\\\\\\/\\\\\\\/ Make the request\\\\npaymentApi service = new paymentApi(client);\\\\nModificationResult response = service.adjustAuthorisation(adjustAuthorisationRequest, null);&amp;quot;},{&amp;quot;language&amp;quot;:&amp;quot;php&amp;quot;,&amp;quot;tabTitle&amp;quot;:&amp;quot;PHP&amp;quot;,&amp;quot;content&amp;quot;:&amp;quot;\\\\\\\/\\\\\\\/ Adyen PHP API Library v17.4.0\\\\nuse Adyen\\\\\\\\Client;\\\\nuse Adyen\\\\\\\\Environment;\\\\nuse Adyen\\\\\\\\Model\\\\\\\\Payments\\\\\\\\Amount;\\\\nuse Adyen\\\\\\\\Model\\\\\\\\Payments\\\\\\\\AdjustAuthorisationRequest;\\\\nuse Adyen\\\\\\\\Service\\\\\\\\Payments\\\\\\\\ModificationsApi;\\\\n\\\\n$client = new Client();\\\\n$client-&amp;gt;setXApiKey(\\\\&amp;quot;ADYEN_API_KEY\\\\&amp;quot;);\\\\n$client-&amp;gt;setEnvironment(Environment::TEST);\\\\n\\\\n\\\\n\\\\\\\/\\\\\\\/ Request objects\\\\n$amount = new Amount();\\\\n$amount\\\\n\\\\t-&amp;gt;setCurrency(\\\\&amp;quot;EUR\\\\&amp;quot;)\\\\n\\\\t-&amp;gt;setValue(1415);\\\\n\\\\n$adjustAuthorisationRequest = new AdjustAuthorisationRequest();\\\\n$adjustAuthorisationRequest\\\\n\\\\t-&amp;gt;setOriginalReference(\\\\&amp;quot;KHQC5N7G84BLNK43\\\\&amp;quot;)\\\\n\\\\t-&amp;gt;setReference(\\\\&amp;quot;YOUR_MODIFICATION_REFERENCE\\\\&amp;quot;)\\\\n\\\\t-&amp;gt;setMerchantAccount(\\\\&amp;quot;ADYEN_MERCHANT_ACCOUNT\\\\&amp;quot;)\\\\n\\\\t-&amp;gt;setModificationAmount($amount)\\\\n\\\\t-&amp;gt;setAdditionalData(\\\\n\\\\t\\\\tarray(\\\\n\\\\t\\\\t\\\\t\\\\&amp;quot;adjustAuthorisationData\\\\&amp;quot; =&amp;gt; \\\\&amp;quot;BQABAQA+fbc==...\\\\&amp;quot;\\\\n\\\\t\\\\t)\\\\n\\\\t);\\\\n\\\\n\\\\\\\/\\\\\\\/ Make the request\\\\n$service = new ModificationsApi($client);\\\\n$response = $service-&amp;gt;adjustAuthorisation($adjustAuthorisationRequest);&amp;quot;},{&amp;quot;language&amp;quot;:&amp;quot;cs&amp;quot;,&amp;quot;tabTitle&amp;quot;:&amp;quot;C#&amp;quot;,&amp;quot;content&amp;quot;:&amp;quot;\\\\\\\/\\\\\\\/ Adyen .net API Library v14.3.0\\\\nusing Adyen;\\\\nusing Environment = Adyen.Model.Environment;\\\\nusing Adyen.Model;\\\\nusing Adyen.Model.Payment;\\\\nusing Adyen.Service;\\\\n\\\\nvar config = new Config()\\\\n{\\\\n    XApiKey = \\\\&amp;quot;ADYEN_API_KEY\\\\&amp;quot;,\\\\n    Environment = Environment.Test\\\\n};\\\\nvar client = new Client(config);\\\\n\\\\n\\\\\\\/\\\\\\\/ Fill in your request objects\\\\nAmount amount = new Amount\\\\n{\\\\n\\\\tCurrency = \\\\&amp;quot;EUR\\\\&amp;quot;,\\\\n\\\\tValue = 1415\\\\n};\\\\n\\\\nAdjustAuthorisationRequest adjustAuthorisationRequest = new AdjustAuthorisationRequest\\\\n{\\\\n\\\\tOriginalReference = \\\\&amp;quot;KHQC5N7G84BLNK43\\\\&amp;quot;,\\\\n\\\\tReference = \\\\&amp;quot;YOUR_MODIFICATION_REFERENCE\\\\&amp;quot;,\\\\n\\\\tMerchantAccount = \\\\&amp;quot;ADYEN_MERCHANT_ACCOUNT\\\\&amp;quot;,\\\\n\\\\tModificationAmount = amount,\\\\n\\\\tAdditionalData = new Dictionary&amp;lt;string, string&amp;gt;\\\\n\\\\t{\\\\n\\\\n\\\\t\\\\t{ \\\\&amp;quot;adjustAuthorisationData\\\\&amp;quot;, \\\\&amp;quot;BQABAQA+fbc==...\\\\&amp;quot; }\\\\n\\\\t}\\\\n};\\\\n\\\\n\\\\\\\/\\\\\\\/ Make the request\\\\nvar service = new PaymentService(client);\\\\nvar response = service.AdjustAuthorisation(adjustAuthorisationRequest);&amp;quot;},{&amp;quot;language&amp;quot;:&amp;quot;js&amp;quot;,&amp;quot;tabTitle&amp;quot;:&amp;quot;NodeJS (JavaScript)&amp;quot;,&amp;quot;content&amp;quot;:&amp;quot;\\\\\\\/\\\\\\\/ Adyen Node API Library v16.2.0\\\\n\\\\\\\/\\\\\\\/ Require the parts of the module you want to use\\\\nconst { Client, PaymentAPI } = require(&#039;@adyen\\\\\\\/api-library&#039;);\\\\n\\\\n\\\\\\\/\\\\\\\/ Initialize the client object\\\\nconst client = new Client({apiKey: \\\\&amp;quot;ADYEN_API_KEY\\\\&amp;quot;, environment: \\\\&amp;quot;TEST\\\\&amp;quot;});\\\\n\\\\n\\\\\\\/\\\\\\\/ Create the request object\\\\nconst adjustAuthorisationRequest = {\\\\n  merchantAccount: \\\\&amp;quot;ADYEN_MERCHANT_ACCOUNT\\\\&amp;quot;,\\\\n  originalReference: \\\\&amp;quot;KHQC5N7G84BLNK43\\\\&amp;quot;,\\\\n  modificationAmount: {\\\\n    currency: \\\\&amp;quot;EUR\\\\&amp;quot;,\\\\n    value: 1415\\\\n  },\\\\n  reference: \\\\&amp;quot;YOUR_MODIFICATION_REFERENCE\\\\&amp;quot;,\\\\n  additionalData: {\\\\n    adjustAuthorisationData: \\\\&amp;quot;BQABAQA+fbc==...\\\\&amp;quot;\\\\n  }\\\\n}\\\\n\\\\n\\\\\\\/\\\\\\\/ Make the request\\\\nconst paymentAPI = new PaymentAPI(client);\\\\nconst response = paymentAPI.adjustAuthorisation(adjustAuthorisationRequest);&amp;quot;},{&amp;quot;language&amp;quot;:&amp;quot;go&amp;quot;,&amp;quot;tabTitle&amp;quot;:&amp;quot;Go&amp;quot;,&amp;quot;content&amp;quot;:&amp;quot;\\\\\\\/\\\\\\\/ Adyen Go API Library v9.2.0\\\\nimport (\\\\n\\\\t\\\\&amp;quot;context\\\\&amp;quot;\\\\n\\\\t\\\\&amp;quot;github.com\\\\\\\/adyen\\\\\\\/adyen-go-api-library\\\\\\\/v9\\\\\\\/src\\\\\\\/common\\\\&amp;quot;\\\\n\\\\t\\\\&amp;quot;github.com\\\\\\\/adyen\\\\\\\/adyen-go-api-library\\\\\\\/v9\\\\\\\/src\\\\\\\/adyen\\\\&amp;quot;\\\\n\\\\t\\\\&amp;quot;github.com\\\\\\\/adyen\\\\\\\/adyen-go-api-library\\\\\\\/v9\\\\\\\/src\\\\\\\/payments\\\\&amp;quot;\\\\n)\\\\n\\\\nclient := adyen.NewClient(&amp;amp;common.Config{\\\\n    ApiKey:      \\\\&amp;quot;ADYEN_API_KEY\\\\&amp;quot;,\\\\n    Environment: common.TestEnv,\\\\n})\\\\n\\\\n\\\\\\\/\\\\\\\/ Fill in your request objects\\\\namount := payments.Amount{\\\\n\\\\tCurrency: \\\\&amp;quot;EUR\\\\&amp;quot;,\\\\n\\\\tValue: 1415,\\\\n}\\\\n\\\\nadjustAuthorisationRequest := payments.AdjustAuthorisationRequest{\\\\n\\\\tOriginalReference: \\\\&amp;quot;KHQC5N7G84BLNK43\\\\&amp;quot;,\\\\n\\\\tReference: common.PtrString(\\\\&amp;quot;YOUR_MODIFICATION_REFERENCE\\\\&amp;quot;),\\\\n\\\\tMerchantAccount: \\\\&amp;quot;ADYEN_MERCHANT_ACCOUNT\\\\&amp;quot;,\\\\n\\\\tModificationAmount: amount,\\\\n\\\\tAdditionalData: &amp;amp;map[string]string{\\\\n\\\\t\\\\t\\\\&amp;quot;adjustAuthorisationData\\\\&amp;quot;: \\\\&amp;quot;BQABAQA+fbc==...\\\\&amp;quot;,\\\\n\\\\t},\\\\n}\\\\n\\\\n\\\\\\\/\\\\\\\/ Make the request\\\\nservice := client.Payments()\\\\nreq := service.ModificationsApi.AdjustAuthorisationInput().AdjustAuthorisationRequest(adjustAuthorisationRequest)\\\\nres, httpRes, err := service.ModificationsApi.AdjustAuthorisation(context.Background(), req)&amp;quot;},{&amp;quot;language&amp;quot;:&amp;quot;py&amp;quot;,&amp;quot;tabTitle&amp;quot;:&amp;quot;Python&amp;quot;,&amp;quot;content&amp;quot;:&amp;quot;# Adyen Python API Library v12.2.0\\\\nimport Adyen\\\\n\\\\nadyen = Adyen.Adyen()\\\\nadyen.client.xapikey = \\\\&amp;quot;ADYEN_API_KEY\\\\&amp;quot;\\\\nadyen.client.platform = \\\\&amp;quot;test\\\\&amp;quot; # The environment to use library in.\\\\n\\\\njson_request = {\\\\n  \\\\&amp;quot;merchantAccount\\\\&amp;quot;: \\\\&amp;quot;ADYEN_MERCHANT_ACCOUNT\\\\&amp;quot;,\\\\n  \\\\&amp;quot;originalReference\\\\&amp;quot;: \\\\&amp;quot;KHQC5N7G84BLNK43\\\\&amp;quot;,\\\\n  \\\\&amp;quot;modificationAmount\\\\&amp;quot;: {\\\\n    \\\\&amp;quot;currency\\\\&amp;quot;: \\\\&amp;quot;EUR\\\\&amp;quot;,\\\\n    \\\\&amp;quot;value\\\\&amp;quot;: 1415\\\\n  },\\\\n  \\\\&amp;quot;reference\\\\&amp;quot;: \\\\&amp;quot;YOUR_MODIFICATION_REFERENCE\\\\&amp;quot;,\\\\n  \\\\&amp;quot;additionalData\\\\&amp;quot;: {\\\\n    \\\\&amp;quot;adjustAuthorisationData\\\\&amp;quot;: \\\\&amp;quot;BQABAQA+fbc==...\\\\&amp;quot;\\\\n  }\\\\n}\\\\n\\\\nresult = adyen.payment.modifications_api.adjust_authorisation(request=json_request)&amp;quot;},{&amp;quot;language&amp;quot;:&amp;quot;rb&amp;quot;,&amp;quot;tabTitle&amp;quot;:&amp;quot;Ruby&amp;quot;,&amp;quot;content&amp;quot;:&amp;quot;# Adyen Ruby API Library v9.2.0\\\\nrequire \\\\&amp;quot;adyen-ruby-api-library\\\\&amp;quot;\\\\n\\\\nadyen = Adyen::Client.new\\\\nadyen.api_key = &#039;ADYEN_API_KEY&#039;\\\\nadyen.env = :test # Set to \\\\&amp;quot;live\\\\&amp;quot; for live environment\\\\n\\\\nrequest_body = {\\\\n  :merchantAccount =&amp;gt; &#039;ADYEN_MERCHANT_ACCOUNT&#039;,\\\\n  :originalReference =&amp;gt; &#039;KHQC5N7G84BLNK43&#039;,\\\\n  :modificationAmount =&amp;gt; {\\\\n    :currency =&amp;gt; &#039;EUR&#039;,\\\\n    :value =&amp;gt; 1415\\\\n  },\\\\n  :reference =&amp;gt; &#039;YOUR_MODIFICATION_REFERENCE&#039;,\\\\n  :additionalData =&amp;gt; {\\\\n    :adjustAuthorisationData =&amp;gt; &#039;BQABAQA+fbc==...&#039;\\\\n  }\\\\n}\\\\n\\\\nresult = adyen.payment.modifications_api.adjust_authorisation(request_body)&amp;quot;},{&amp;quot;language&amp;quot;:&amp;quot;ts&amp;quot;,&amp;quot;tabTitle&amp;quot;:&amp;quot;NodeJS (TypeScript)&amp;quot;,&amp;quot;content&amp;quot;:&amp;quot;\\\\\\\/\\\\\\\/ Adyen Node API Library v16.2.0\\\\n\\\\\\\/\\\\\\\/ Require the parts of the module you want to use\\\\nimport { Client, PaymentAPI, Types } from \\\\&amp;quot;@adyen\\\\\\\/api-library\\\\&amp;quot;;\\\\n\\\\n\\\\\\\/\\\\\\\/ Initialize the client object\\\\nconst client = new Client({apiKey: \\\\&amp;quot;ADYEN_API_KEY\\\\&amp;quot;, environment: \\\\&amp;quot;TEST\\\\&amp;quot;});\\\\n\\\\n\\\\\\\/\\\\\\\/ Create the request objects\\\\nconst amount: Types.payment.Amount = {\\\\n\\\\tcurrency: \\\\&amp;quot;EUR\\\\&amp;quot;,\\\\n\\\\tvalue: 1415\\\\n};\\\\n\\\\nconst adjustAuthorisationRequest: Types.payment.AdjustAuthorisationRequest = {\\\\n\\\\toriginalReference: \\\\&amp;quot;KHQC5N7G84BLNK43\\\\&amp;quot;,\\\\n\\\\treference: \\\\&amp;quot;YOUR_MODIFICATION_REFERENCE\\\\&amp;quot;,\\\\n\\\\tmerchantAccount: \\\\&amp;quot;ADYEN_MERCHANT_ACCOUNT\\\\&amp;quot;,\\\\n\\\\tmodificationAmount: amount,\\\\n\\\\tadditionalData: {\\\\n\\\\t\\\\t\\\\&amp;quot;adjustAuthorisationData\\\\&amp;quot;: \\\\&amp;quot;BQABAQA+fbc==...\\\\&amp;quot;\\\\n\\\\t}\\\\n};\\\\n\\\\n\\\\\\\/\\\\\\\/ Make the request\\\\nconst paymentAPI = new PaymentAPI(client);\\\\nconst response = paymentAPI.adjustAuthorisation(adjustAuthorisationRequest);&amp;quot;}]\\&quot; :enable-copy-link-to-code-block=\\&quot;true\\&quot; :code-sample-card-size=\\&quot;&#039;fullsize&#039;\\&quot;&gt;&lt;\\\/code-sample&gt;\\n&lt;\\\/div&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;In the &lt;code&gt;\\\/adjustAuthorisation&lt;\\\/code&gt; response, note the following parameters:&lt;\\\/p&gt;\\n&lt;ul&gt;\\n&lt;li&gt;&lt;code&gt;additionalData.adjustAuthorisationData&lt;\\\/code&gt;: The new blob, for the new authorized amount. This blob is not URL-encoded.&lt;\\\/li&gt;\\n&lt;li&gt;&lt;code&gt;merchantReference&lt;\\\/code&gt;: Your reference to this payment modification, for use in your reconciliation process. We recommend using the reference from the response in the previous step.&lt;\\\/li&gt;\\n&lt;li&gt;&lt;code&gt;pspReference&lt;\\\/code&gt;: The PSP reference associated with this &lt;code&gt;\\\/adjustAuthorisation&lt;\\\/code&gt; request. Note that this is different from the PSP reference associated with the pre-authorisation request.&lt;\\\/li&gt;\\n&lt;li&gt;&lt;code&gt;response&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;Authorised&lt;\\\/strong&gt;&lt;\\\/span&gt;. Indicates the new amount is authorized.&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;Synchronous authorization adjustment response&#039;\\&quot; :id=\\&quot;&#039;&#039;\\&quot; :code-data=&#039;[{\\&quot;language\\&quot;:\\&quot;json\\&quot;,\\&quot;tabTitle\\&quot;:\\&quot;\\&quot;,\\&quot;content\\&quot;:\\&quot;{\\\\n    \\\\\\&quot;additionalData\\\\\\&quot;: {\\\\n        \\\\\\&quot;adjustAuthorisationData\\\\\\&quot;: \\\\\\&quot;BQABAQArqht7L...\\\\\\&quot;,\\\\n        \\\\\\&quot;merchantReference\\\\\\&quot;: \\\\\\&quot;YOUR_MODIFICATION_REFERENCE\\\\\\&quot;\\\\n    },\\\\n    \\\\\\&quot;pspReference\\\\\\&quot;: \\\\\\&quot;NC6HT9CRT65ZGN82\\\\\\&quot;,\\\\n    \\\\\\&quot;response\\\\\\&quot;: \\\\\\&quot;Authorised\\\\\\&quot;\\\\n}\\&quot;}]&#039; :enable-copy-link-to-code-block=\\&quot;true\\&quot; :code-sample-card-size=\\&quot;&#039;fullsize&#039;\\&quot;&gt;&lt;\\\/code-sample&gt;\\n&lt;\\\/div&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;Store the &lt;code&gt;adjustAuthorisationData&lt;\\\/code&gt; blob you received in the &lt;code&gt;\\\/adjustAuthorisation&lt;\\\/code&gt; response. You will need this if you later adjust the authorization again. This blob is not URL-encoded, so you can use it as-is.&lt;\\\/p&gt;\\n&quot;,&quot;altTitle&quot;:null,&quot;oldTabId&quot;:&quot;synchronous_authorization_adjustment_1_2&quot;,&quot;relation&quot;:&quot;&quot;}]\"\n            :should-update-when-url-changes='false'>\n        <\/tabs>\n    <\/div>\n<\/div>\n\n<\/li>\n<\/ol>\n<h2 id=\"capture-purchase-amount\">5. Capture the amount<\/h2>\n<p>After you make the authorization adjustment, <a href=\"\/pt\/point-of-sale\/capturing-payments#capture-a-payment\">capture the payment manually<\/a> to ensure the reserved funds are transferred to your account. Make sure that you have <a href=\"\/pt\/point-of-sale\/capturing-payments#enable-manual-capture\">enabled manual capture<\/a>, either for your account or for an individual transaction.<\/p>\n<ol>\n<li>\n<p>Make a POST  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments\/(paymentPspReference)\/captures\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/payments\/{paymentPspReference}\/captures<\/a> request, where <code>paymentPspReference<\/code>  is the <code>pspReference<\/code> of the authorization being captured. You received this as part of the <code>transactionID<\/code> field in the response to your payment request. See <a href=\"\/pt\/point-of-sale\/design-your-integration\/terminal-api#transaction-identifier\">Transaction identifier<\/a>.<\/p>\n<p>In your request, include:<\/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>amount<\/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 <code>currency<\/code> and <code>value<\/code> of the final amount <strong>in minor units<\/strong>. This is the sum of the original, pre-authorized amount and all later adjustments.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>merchantAccount<\/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 name of your merchant account that is used to process the payment.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>reference<\/code><\/td>\n<td style=\"text-align: center;\"><\/td>\n<td style=\"text-align: left;\">Your reference to this payment modification, for use in your reconciliation process.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Capture request'\" :id=\"'capture-request-2805028945'\" :code-data=\"[{&quot;language&quot;:&quot;bash&quot;,&quot;tabTitle&quot;:&quot;curl&quot;,&quot;content&quot;:&quot;curl https:\\\/\\\/checkout-test.adyen.com\\\/v68\\\/payments\\\/KHQC5N7G84BLNK43\\\/captures \\\\\\n-H 'x-api-key: ADYEN_API_KEY' \\\\\\n-H 'content-type: application\\\/json' \\\\\\n-X POST \\\\\\n-d '{\\n   \\&quot;merchantAccount\\&quot;:\\&quot;ADYEN_MERCHANT_ACCOUNT\\&quot;,\\n   \\&quot;amount\\&quot;:{\\n      \\&quot;currency\\&quot;:\\&quot;EUR\\&quot;,\\n      \\&quot;value\\&quot;:1415\\n   },\\n   \\&quot;reference\\&quot;:\\&quot;YOUR_UNIQUE_REFERENCE\\&quot;\\n}'&quot;},{&quot;language&quot;:&quot;java&quot;,&quot;tabTitle&quot;:&quot;Java&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Java API Library v25.0.0\\nimport com.adyen.Client;\\nimport com.adyen.enums.Environment;\\nimport com.adyen.model.checkout.*;\\nimport java.time.OffsetDateTime;\\nimport java.util.*;\\nimport com.adyen.model.RequestOptions;\\nimport com.adyen.service.checkout.*;\\n\\nClient client = new Client(\\&quot;ADYEN_API_KEY\\&quot;, Environment.TEST);\\n\\n\\\/\\\/ Request objects\\nAmount amount = new Amount()\\n\\t.currency(\\&quot;EUR\\&quot;)\\n\\t.value(1415L);\\n\\nPaymentCaptureRequest paymentCaptureRequest = new PaymentCaptureRequest()\\n\\t.reference(\\&quot;YOUR_UNIQUE_REFERENCE\\&quot;)\\n\\t.amount(amount)\\n\\t.merchantAccount(\\&quot;ADYEN_MERCHANT_ACCOUNT\\&quot;);\\n\\n\\\/\\\/ Make the request\\nModificationsApi service = new ModificationsApi(client);\\nPaymentCaptureResponse response = service.captureAuthorisedPayment(\\&quot;paymentPspReference\\&quot;, paymentCaptureRequest, new RequestOptions().idempotencyKey(\\&quot;UUID\\&quot;));&quot;},{&quot;language&quot;:&quot;php&quot;,&quot;tabTitle&quot;:&quot;PHP&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen PHP API Library v17.4.0\\nuse Adyen\\\\Client;\\nuse Adyen\\\\Environment;\\nuse Adyen\\\\Model\\\\Checkout\\\\Amount;\\nuse Adyen\\\\Model\\\\Checkout\\\\PaymentCaptureRequest;\\nuse Adyen\\\\Service\\\\Checkout\\\\ModificationsApi;\\n\\n$client = new Client();\\n$client-&gt;setXApiKey(\\&quot;ADYEN_API_KEY\\&quot;);\\n$client-&gt;setEnvironment(Environment::TEST);\\n\\n\\n\\\/\\\/ Request objects\\n$amount = new Amount();\\n$amount\\n\\t-&gt;setCurrency(\\&quot;EUR\\&quot;)\\n\\t-&gt;setValue(1415);\\n\\n$paymentCaptureRequest = new PaymentCaptureRequest();\\n$paymentCaptureRequest\\n\\t-&gt;setReference(\\&quot;YOUR_UNIQUE_REFERENCE\\&quot;)\\n\\t-&gt;setAmount($amount)\\n\\t-&gt;setMerchantAccount(\\&quot;ADYEN_MERCHANT_ACCOUNT\\&quot;);\\n\\n$requestOptions['idempotencyKey'] = 'UUID';\\n\\n\\\/\\\/ Make the request\\n$service = new ModificationsApi($client);\\n$response = $service-&gt;captureAuthorisedPayment('paymentPspReference', $paymentCaptureRequest, $requestOptions);&quot;},{&quot;language&quot;:&quot;cs&quot;,&quot;tabTitle&quot;:&quot;C#&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen .net API Library v14.3.0\\nusing Adyen;\\nusing Environment = Adyen.Model.Environment;\\nusing Adyen.Model;\\nusing Adyen.Model.Checkout;\\nusing Adyen.Service.Checkout;\\n\\nvar config = new Config()\\n{\\n    XApiKey = \\&quot;ADYEN_API_KEY\\&quot;,\\n    Environment = Environment.Test\\n};\\nvar client = new Client(config);\\n\\n\\\/\\\/ Fill in your request objects\\nAmount amount = new Amount\\n{\\n\\tCurrency = \\&quot;EUR\\&quot;,\\n\\tValue = 1415\\n};\\n\\nPaymentCaptureRequest paymentCaptureRequest = new PaymentCaptureRequest\\n{\\n\\tReference = \\&quot;YOUR_UNIQUE_REFERENCE\\&quot;,\\n\\tAmount = amount,\\n\\tMerchantAccount = \\&quot;ADYEN_MERCHANT_ACCOUNT\\&quot;\\n};\\n\\n\\\/\\\/ Make the request\\nvar service = new ModificationsService(client);\\nvar response = service.CaptureAuthorisedPayment(\\&quot;paymentPspReference\\&quot;, paymentCaptureRequest, requestOptions: new RequestOptions { IdempotencyKey = \\&quot;UUID\\&quot;});&quot;},{&quot;language&quot;:&quot;js&quot;,&quot;tabTitle&quot;:&quot;NodeJS (JavaScript)&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Node API Library v16.2.0\\n\\\/\\\/ Require the parts of the module you want to use\\nconst { Client, CheckoutAPI } = require('@adyen\\\/api-library');\\n\\n\\\/\\\/ Initialize the client object\\nconst client = new Client({apiKey: \\&quot;ADYEN_API_KEY\\&quot;, environment: \\&quot;TEST\\&quot;});\\n\\n\\\/\\\/ Create the request object\\nconst paymentCaptureRequest = {\\n  merchantAccount: \\&quot;ADYEN_MERCHANT_ACCOUNT\\&quot;,\\n  amount: {\\n    currency: \\&quot;EUR\\&quot;,\\n    value: 1415\\n  },\\n  reference: \\&quot;YOUR_UNIQUE_REFERENCE\\&quot;\\n}\\n\\n\\\/\\\/ Make the request\\nconst checkoutAPI = new CheckoutAPI(client);\\nconst response = checkoutAPI.ModificationsApi.captureAuthorisedPayment(\\&quot;paymentPspReference\\&quot;, paymentCaptureRequest, { idempotencyKey: \\&quot;UUID\\&quot; });&quot;},{&quot;language&quot;:&quot;go&quot;,&quot;tabTitle&quot;:&quot;Go&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Go API Library v9.2.0\\nimport (\\n\\t\\&quot;context\\&quot;\\n\\t\\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v9\\\/src\\\/common\\&quot;\\n\\t\\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v9\\\/src\\\/adyen\\&quot;\\n\\t\\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v9\\\/src\\\/checkout\\&quot;\\n)\\n\\nclient := adyen.NewClient(&amp;common.Config{\\n    ApiKey:      \\&quot;ADYEN_API_KEY\\&quot;,\\n    Environment: common.TestEnv,\\n})\\n\\n\\\/\\\/ Fill in your request objects\\namount := checkout.Amount{\\n\\tCurrency: \\&quot;EUR\\&quot;,\\n\\tValue: 1415,\\n}\\n\\npaymentCaptureRequest := checkout.PaymentCaptureRequest{\\n\\tReference: common.PtrString(\\&quot;YOUR_UNIQUE_REFERENCE\\&quot;),\\n\\tAmount: amount,\\n\\tMerchantAccount: \\&quot;ADYEN_MERCHANT_ACCOUNT\\&quot;,\\n}\\n\\n\\\/\\\/ Make the request\\nservice := client.Checkout()\\nreq := service.ModificationsApi.CaptureAuthorisedPaymentInput(\\&quot;paymentPspReference\\&quot;).IdempotencyKey(\\&quot;UUID\\&quot;).PaymentCaptureRequest(paymentCaptureRequest)\\nres, httpRes, err := service.ModificationsApi.CaptureAuthorisedPayment(context.Background(), req)&quot;},{&quot;language&quot;:&quot;py&quot;,&quot;tabTitle&quot;:&quot;Python&quot;,&quot;content&quot;:&quot;# Adyen Python API Library v12.2.0\\nimport Adyen\\n\\nadyen = Adyen.Adyen()\\nadyen.client.xapikey = \\&quot;ADYEN_API_KEY\\&quot;\\nadyen.client.platform = \\&quot;test\\&quot; # The environment to use library in.\\n\\njson_request = {\\n  \\&quot;merchantAccount\\&quot;: \\&quot;ADYEN_MERCHANT_ACCOUNT\\&quot;,\\n  \\&quot;amount\\&quot;: {\\n    \\&quot;currency\\&quot;: \\&quot;EUR\\&quot;,\\n    \\&quot;value\\&quot;: 1415\\n  },\\n  \\&quot;reference\\&quot;: \\&quot;YOUR_UNIQUE_REFERENCE\\&quot;\\n}\\n\\nresult = adyen.checkout.modifications_api.capture_authorised_payment(request=json_request, paymentPspReference=\\&quot;paymentPspReference\\&quot;, idempotency_key=\\&quot;UUID\\&quot;)&quot;},{&quot;language&quot;:&quot;rb&quot;,&quot;tabTitle&quot;:&quot;Ruby&quot;,&quot;content&quot;:&quot;# Adyen Ruby API Library v9.2.0\\nrequire \\&quot;adyen-ruby-api-library\\&quot;\\n\\nadyen = Adyen::Client.new\\nadyen.api_key = 'ADYEN_API_KEY'\\nadyen.env = :test # Set to \\&quot;live\\&quot; for live environment\\n\\nrequest_body = {\\n  :merchantAccount =&gt; 'ADYEN_MERCHANT_ACCOUNT',\\n  :amount =&gt; {\\n    :currency =&gt; 'EUR',\\n    :value =&gt; 1415\\n  },\\n  :reference =&gt; 'YOUR_UNIQUE_REFERENCE'\\n}\\n\\nresult = adyen.checkout.modifications_api.capture_authorised_payment(request_body, 'paymentPspReference', headers: { 'Idempotency-Key' =&gt; 'UUID' })&quot;},{&quot;language&quot;:&quot;ts&quot;,&quot;tabTitle&quot;:&quot;NodeJS (TypeScript)&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Node API Library v16.2.0\\n\\\/\\\/ Require the parts of the module you want to use\\nimport { Client, CheckoutAPI, Types } from \\&quot;@adyen\\\/api-library\\&quot;;\\n\\n\\\/\\\/ Initialize the client object\\nconst client = new Client({apiKey: \\&quot;ADYEN_API_KEY\\&quot;, environment: \\&quot;TEST\\&quot;});\\n\\n\\\/\\\/ Create the request objects\\nconst amount: Types.checkout.Amount = {\\n\\tcurrency: \\&quot;EUR\\&quot;,\\n\\tvalue: 1415\\n};\\n\\nconst paymentCaptureRequest: Types.checkout.PaymentCaptureRequest = {\\n\\treference: \\&quot;YOUR_UNIQUE_REFERENCE\\&quot;,\\n\\tamount: amount,\\n\\tmerchantAccount: \\&quot;ADYEN_MERCHANT_ACCOUNT\\&quot;\\n};\\n\\n\\\/\\\/ Make the request\\nconst checkoutAPI = new CheckoutAPI(client);\\nconst response = checkoutAPI.ModificationsApi.captureAuthorisedPayment(\\&quot;paymentPspReference\\&quot;, paymentCaptureRequest, { idempotencyKey: \\&quot;UUID\\&quot; });&quot;}]\" :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<li>\n<p>In the capture response, note the following parameters:<\/p>\n<ul>\n<li><code>pspReference<\/code>: The PSP reference associated with this capture request. Note that this is different from the PSP reference associated with the pre-authorization request.<\/li>\n<li><code>status<\/code>: <span translate=\"no\"><strong>received<\/strong><\/span>.<\/li>\n<li><code>reference<\/code>: Your reference to this payment modification, for use in your reconciliation process.<\/li>\n<\/ul>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Capture response'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n    \\\"reference\\\": \\\"YOUR_MODIFICATION_REFERENCE\\\",\\n    \\\"pspReference\\\": \\\"QJ7GWQ756L2GWR86\\\",\\n    \\\"status\\\": \\\"received\\\"\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<li>\n<p>Wait for a webhook message with the <code>eventCode<\/code> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Webhooks\/latest\/post\/CAPTURE\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">CAPTURE<\/a>. This informs you whether the final amount has been captured.<br \/>\nIf <code>success<\/code> is <span translate=\"no\"><strong>false<\/strong><\/span> then your capture request failed. Review the <code>reason<\/code> you received in the webhook message, fix the issue, and submit the capture request again.<\/p>\n<\/li>\n<\/ol>\n<h2>Recover failed payments<\/h2>\n<p>If the authorization adjustment fails for any reason, for example because of a technical issue or insufficient funds on the cardholder\u2019s bank account, there are several things you can do:<\/p>\n<ul>\n<li>Send the capture request to collect the pre-authorized amount.<\/li>\n<li><a href=\"\/pt\/point-of-sale\/recurring-payments#recurring-online\">Make a recurring online payment<\/a> for the remaining amount using the token you created in the pre-authorization payment request.<\/li>\n<li>Send a <a href=\"\/pt\/unified-commerce\/pay-by-link\/create-payment-links\">payment link<\/a> for the remaining amount to the shopper's email or phone number that you collected before the shopper entered the store.<\/li>\n<\/ul>\n<p>You can also enable our <a href=\"\/pt\/online-payments\/auto-rescue\/cards\">Auto Rescue<\/a> feature that automatically retries shopper-not-present card transactions when they are refused.<\/p>\n<p>If all rescue attempts fail, you can put the card alias on the not-allowed list in your system to prevent the card from being used to enter the store again.<\/p>\n<h2>See also<\/h2>\n<div class=\"see-also-links output-inline\" id=\"see-also\">\n<ul><li><a href=\"\/point-of-sale\/card-acquisition\"\n                        target=\"_self\"\n                        >\n                    Card acquisition\n                <\/a><\/li><li><a href=\"\/point-of-sale\/pre-authorisation\"\n                        target=\"_self\"\n                        >\n                    Pre-authorization and authorization adjustment\n                <\/a><\/li><li><a href=\"\/point-of-sale\/recurring-payments\"\n                        target=\"_self\"\n                        >\n                    Recurring payments\n                <\/a><\/li><li><a href=\"\/point-of-sale\/capturing-payments#manual-capture\"\n                        target=\"_self\"\n                        >\n                    Manual capture\n                <\/a><\/li><li><a href=\"\/point-of-sale\/loyalty\"\n                        target=\"_self\"\n                        >\n                    Shopper loyalty\n                <\/a><\/li><li><a href=\"\/development-resources\/webhooks\"\n                        target=\"_self\"\n                        >\n                    Webhooks\n                <\/a><\/li><\/ul><\/div>\n","url":"https:\/\/docs.adyen.com\/pt\/point-of-sale\/autonomous-stores","articleFields":{"description":"Use Adyen payment terminals to process payments and grant access to unattended stores.","type":"page","_expandable":null,"operations":"","status":"current"},"algolia":{"url":"https:\/\/docs.adyen.com\/pt\/point-of-sale\/autonomous-stores","title":"Autonomous stores","content":"Autonomous stores are stores without staff or checkout. A shopper presents their card to the payment terminal before entering the store, to pre-authorize a certain amount and gain entry. The shopper then takes some items and leaves the store. The purchase amount is adjusted and charged to the card that the shopper used to enter the store.\nRequirements\nBefore you begin, take into account the following requirements, limitations, and preparations.\n\n\n\nRequirement\nDescription\n\n\n\n\nIntegration type\nA Terminal API integration with payment terminals.\n\n\nAPI credentials\nYou must have an API credential with an API key and the following roles, which are assigned by default: Merchant PAL webservice role Checkout webservice role If you have a Terminal API integration with cloud-based communications, you can use the existing API key that you use for Terminal API requests.\n\n\nWebhooks\nListen for Standard webhook messages with the following eventCode values: AUTHORISATION_ADJUSTMENT CAPTURE CAPTURE_FAILED\n\n\nHardware\nUse a payment terminal model that is suitable for unattended use, like the P400 Plus, S1U2, or UX300.\n\n\nLimitations\nBe aware of the following: Support for authorization adjustment is limited to specific payment methods and Merchant Category Codes (MCC). It is ultimately up to the issuing bank whether they allow it. Pre-authorizations and authorizations eventually expire. The length of an authorization's validity depends on the card scheme.\n\n\nSetup steps\nBefore you begin: Contact our Support Team to configure your payment methods. If you plan to use synchronous authorization adjustment, also ask them to enable this for you. If you plan to use tokenization, enable receiving shopper identifiers and check with our Support Team if your account is correctly configured for your tokenization use case. Enable manual capture, either for your account or for individual transactions.\n\n\n\nHow it works:\n\nYou make a card acquisition request on the terminal to get the card details.\nThe shopper presents their card to the payment terminal.\nYou use identifiers from the card acquisition response to check if you recognize the shopper. If it is a first-time shopper, you collect their details like phone number or email. You can use card identifiers to tokenize the card for future recurring payments.\nYou send a payment request to pre-authorize an amount.\nWe recommend that you also tokenize the card for future recurring payments. This enables you to recover the full payment in case an authorization adjustment fails.\nThe shopper enters the store, takes items, and leaves the store.\nIf the purchase amount is different from the pre-authorized amount, you send an authorization adjustment request, followed by a capture request.\nIf the authorization adjustment fails for any reason, you can capture the pre-authorized amount. After that:\n\nIf you tokenized the card, you can make a recurring online payment for the remaining amount.\nIf you collected the shopper's email or phone number, you can send them a payment link for the remaining amount.\n\n\nIf you cannot charge the shopper for their purchase, you can put the card alias on the not-allowed list in your system to prevent the card from being used to enter the store again.\nNote that in the autonomous store flow, you need to rely on webhooks to know if the capture succeeded. If you use asynchronous authorization adjustment, you also need to rely on webhooks for the authorization adjustment result.\nAlso note  that you need to implement logic on your end, for example how to trigger card acquisition requests on the terminal, open the doors, or calculate the amount when you make an authorization adjustment.\n1. Get the card details\nIn your back-end, implement a trigger for the card acquisition request on the terminal to prompt the shopper to present a card. From the response, you can take certain details such as the card alias to determine if the shopper should be let in.\n\n\nCreate a SaleToPOIData JSON object with:\n\nOperation.Type: Payment\nOperation.Variant: PreAuthToEnterShop. Hides the pre-authorization amount specified in CardAcquisitionTransaction.TotalAmount from showing on the initial screen. This is to prevent shoppers from thinking they need to pay to enter the store.\n\n\n\n\n\n\nEncode the Operation JSON object to Base64. You will pass the resulting string in SaleData.SaleToPOIData.\n\n\n\n\n\nCreate a SaleToAcquirerData JSON object with:\n\nauthorisationType: PreAuth. Pre-authorizes the amount specified in CardAcquisitionTransaction.TotalAmount.\nrecurringProcessingModel: UnscheduledCardOnFile. Enforces cardholder authentication during pre-authorisation (if configured by our Support Team). To tokenize the card, include this field in both the card acquisition and the follow-up pre-authorization payment request.\n If the PSD2 SCA compliance rules apply to your business, we recommend enforcing cardholder authentication. To enable this, contact our Support Team.\n\n\n\n\n\n\nEncode the JSON object to Base64. You will pass the resulting string in SaleData.SaleToAcquirerData.\n\n\n\n\n\nMake a card acquisition request, including:\n\n\nThe  CardAcquisitionRequest.SaleData object with:\n\n\n\nParameter\nRequired\nDescription\n\n\n\n\nSaleTransactionID\n\nAn object with: TransactionID: your reference to identify the transaction. We recommend using a unique value. TimeStamp: date and time of the request in UTC format.\n\n\nTokenRequestedType\n\nCustomer. Returns the card alias in the TokenValue field of the response. Note that the card alias is always returned in the AdditionalResponse.\n\n\nSaleToPOIData\n\nThe Base64-encoded Operation JSON value from step 2.\n\n\nSaleToAcquirerData\n\nThe Base64-encoded JSON value from step 4.\n\n\n\n\n\nThe  CardAcquisitionRequest.CardAcquisitionTransaction object with:\n\n\n\nParameter\nRequired\nDescription\n\n\n\n\nTotalAmount\n\nThe transaction amount you want to pre-authorize before entering the store. This amount needs to be equal to the TotalAmount in the pre-authorization request.\n\n\n\n\n\nThe following example shows a card acquisition request to get the card details.\n\n\n\nThe following example shows a card acquisition response with an amount of EUR 10.\n\n\n\n\n\nFrom the  CardAcquisitionResponse, save the following details :\n\nPOIData.POITransactionID: since you are continuing with a payment, keep the TimeStamp and the TransactionID because you need these card acquisition details in your payment request.\nResponse.AdditionalResponse.alias: this is a value that uniquely represents the shopper's card number (PAN), for example A37317672402294. With this, you can recognize the card that a shopper is using and identify if they are returning customers. You cannot use the card alias for making payments.\n\n\nThe format of the AdditionalResponse can be a Base64-encoded or URL-encoded. To always receive the AdditionalResponse in one of those formats, contact our Support Team.\n\n\n\nIf the shopper is entering the store for the first time, we recommend you collect their details. Otherwise, you can proceed with a pre-authorization payment request.\n2. Optional: Get the shopper's details\nIf the shopper is entering the store for the first time, you can ask them to enter their contact details, or to provide consent to tokenize their card.\n\nAsk the shopper's consent to save their details. For this, you can use confirmation or signature input requests.\nCollect the shopper's contact details. For this you can use phone number or text input requests. You can then use these details when tokenizing the card or to send the shopper a payment link.\nSave the shopper's contact details and the card alias received in the Response.AdditionalResponse.alias of the card acquisition response.\n\nYou can use the card alias to recognize the shopper the next time they present their card to enter the store. This way, the shopper does not have to enter their details again.\n3. Pre-authorize an amount\nAfter you collect the card and shopper details, send a payment request to pre-authorize the amount specified in the card acquisition request.\nYou can also tokenize the card with Adyen. This enables recurring payments with the shopper's card and allows you to recover failed payments in case the shopper has insufficient funds at the time of purchase.\n\nIf you plan to tokenize the card, make sure that you enable receiving shopper identifiers and check with our Support Team if your account is correctly configured for your tokenization use case.\n\n\n\nPrepare the SaleData.SaleToAcquirerData value for the pre-authorization payment request that you will make.\nInclude the following data elements:\n\n\nauthorisationType: PreAuth. This indicates this is a pre-authorization request.\n\n\nTo tokenize the card, also include:\n\nshopperReference: Your unique reference for this shopper. Minimum length: three characters. Note that the value is case-sensitive. Do not include personally identifiable information (PII), such as name or email address.\nrecurringProcessingModel: UnscheduledCardOnFile. Creates a recurring contract for transactions that occur on a non-fixed schedule and\/or have variable amounts. Enforces cardholder authentication (if configured by our Support Team).\nshopperEmail: Optional. The shopper's email address, if you collected that.\n\n\n\nFormat the SaleData.SaleToAcquirerData value in one of the following ways (refer to Add information to a payment):\n\n\nOption 1: A JSON object converted to a Base64-encoded string. For example:\n\n\n\nEncode the Operation JSON object to Base64.\n\n\n\n\n\nOption 2: Form-encoded key-value pairs (using &amp; as a separator). For example:\n\n\n\n\n\n\n\nMake a pre-authorization payment request, including:\n\n\nThe  PaymentRequest object with:\n\n\n\nParameter\nRequired\nDescription\n\n\n\n\nSaleData.SaleTransactionID\n\nAn object with: TransactionID: your reference to identify a payment. We recommend using a unique value per payment. TimeStamp: date and time of the request in UTC format.\n\n\nPaymentTransaction.AmountsReq\n\nAn object with: Currency: the transaction currency.RequestedAmount: the pre-authorized transaction amount.  This amount must be equal to the TotalAmount in the card acquisition request.\n\n\nPaymentData.CardAcquisitionReference\n\nAn object referring to the card acquisition: TimeStamp: The time stamp returned in the POIData.POITransactionID of the card acquisition response. TransactionID: the transaction ID returned in the POIData.POITransactionID of the card acquisition response.\n\n\nSaleData.SaleToAcquirerData\n\nThe Base64-encoded string or form-encoded key-value pairs you prepared.\n\n\n\n\n\nThe following example shows how to pre-authorize a payment of EUR 10:\n\n\n\nThe customer presents their card to the payment terminal. If the pre-authorization is successful, the terminals show the transaction is approved.\n\n\nFrom the response, save the following details:\n\n\n\nTo do this\nUse these parameters\n\n\n\n\nAuthorization adjustment and capture\nPOIData.POITransactionID.TransactionID: transaction identifier for the payment, in the format Tender_reference.PSP_reference.Response.AdditionalResponse.pspReference: the PSP reference of your pre-authorization request.\n\n\nCalculating the amount for the authorization adjustment\nPaymentResult.AmountsResp: the AuthorizedAmount and Currency of the pre-authorized payment.Response.AdditionalResponse.authorisedAmountValue: the pre-authorized amount in minor units.\n\n\nSynchronous authorization adjustment\nResponse.AdditionalResponse.adjustAuthorisationData: a blob with authorization data, if the synchronous flow is enabled for your account.\n\n\n\nFor easier shopper recognition and recovering failed payments, from the Response.AdditionalResponse save the following details:\n\n\n\nParameter\nDescription\n\n\n\n\nalias\nThe card alias. Also returned in PaymentResult.PaymentInstrumentData.PaymentToken.TokenValue if the request contains TokenRequestedType: Customer.\n\n\nPaymentAccountReference\nA value that represents the payment account that the card and\/or NFC wallet is linked to.\n\n\nrecurring.recurringDetailReference or tokenization.storedPaymentMethodId\nThe token representing the shopper's payment method.\n\n\nrecurring.shopperReference or tokenization.shopperReference\nYour unique reference for this shopper.\n\n\nshopperEmail\nThe shopper's email address .\n\n\n\nThe following example shows the response to a EUR 10.00 pre-authorization request.\n\n\n\n\nNote that the PaymentToken object contains the card alias. You cannot use this for making payments. It is intended only for recognizing the card.\n\n\n\nAfter a successful pre-authorization, you need to have logic implemented to open the door of the autonomous store. The shopper then enters the store, takes items, and leaves.\n4. Adjust the pre-authorized amount\nIf the purchase amount for items that shopper has taken differs from the pre-authorized amount, you need to send an authorization adjustment request. This is not a Terminal API request to the terminal itself or the Cloud endpoint for the terminal.\nDepending on your infrastructure and implementation, you may want to use the asynchronous or synchronous authorization adjustment.\n\nWhen building or testing the flow, make sure there is at least a 5 second delay between the pre-authorization and the authorization adjustment.\n\n\n\n    \n        \n        \n    \n\n\n\n\n5. Capture the amount\nAfter you make the authorization adjustment, capture the payment manually to ensure the reserved funds are transferred to your account. Make sure that you have enabled manual capture, either for your account or for an individual transaction.\n\n\nMake a POST  \/payments\/{paymentPspReference}\/captures request, where paymentPspReference  is the pspReference of the authorization being captured. You received this as part of the transactionID field in the response to your payment request. See Transaction identifier.\nIn your request, include:\n\n\n\nParameter\nRequired\nDescription\n\n\n\n\namount\n\nThe currency and value of the final amount in minor units. This is the sum of the original, pre-authorized amount and all later adjustments.\n\n\nmerchantAccount\n\nThe name of your merchant account that is used to process the payment.\n\n\nreference\n\nYour reference to this payment modification, for use in your reconciliation process.\n\n\n\n\n\n\n\n\nIn the capture response, note the following parameters:\n\npspReference: The PSP reference associated with this capture request. Note that this is different from the PSP reference associated with the pre-authorization request.\nstatus: received.\nreference: Your reference to this payment modification, for use in your reconciliation process.\n\n\n\n\n\n\nWait for a webhook message with the eventCode CAPTURE. This informs you whether the final amount has been captured.\nIf success is false then your capture request failed. Review the reason you received in the webhook message, fix the issue, and submit the capture request again.\n\n\nRecover failed payments\nIf the authorization adjustment fails for any reason, for example because of a technical issue or insufficient funds on the cardholder\u2019s bank account, there are several things you can do:\n\nSend the capture request to collect the pre-authorized amount.\nMake a recurring online payment for the remaining amount using the token you created in the pre-authorization payment request.\nSend a payment link for the remaining amount to the shopper's email or phone number that you collected before the shopper entered the store.\n\nYou can also enable our Auto Rescue feature that automatically retries shopper-not-present card transactions when they are refused.\nIf all rescue attempts fail, you can put the card alias on the not-allowed list in your system to prevent the card from being used to enter the store again.\nSee also\n\n\n                    Card acquisition\n                \n                    Pre-authorization and authorization adjustment\n                \n                    Recurring payments\n                \n                    Manual capture\n                \n                    Shopper loyalty\n                \n                    Webhooks\n                \n","type":"page","locale":"pt","boost":18,"hierarchy":{"lvl0":"Home","lvl1":"Terminais","lvl2":"Autonomous stores"},"hierarchy_url":{"lvl0":"https:\/\/docs.adyen.com\/pt","lvl1":"https:\/\/docs.adyen.com\/pt\/point-of-sale","lvl2":"\/pt\/point-of-sale\/autonomous-stores"},"levels":3,"category":"In-person payments","category_color":"green","tags":["Autonomous","stores"]},"articleFiles":{"asynchronous-authorization-adjustment-request-2927277214.js":"<p alt=\"\">asynchronous-authorization-adjustment-request-2927277214.js<\/p>","capture-request-2805028945.js":"<p alt=\"\">capture-request-2805028945.js<\/p>","synchronous-authorization-adjustment-request-5883884180.js":"<p alt=\"\">synchronous-authorization-adjustment-request-5883884180.js<\/p>"}}
