{"title":"Order in store, pick up in store","category":"default","creationDate":1788778638,"content":"<p>In this Endless Aisle retail use case, online items are ordered in a store, and authorized using a payment terminal. The order is then picked up at the shopper's preferred store. The payment is captured upon pickup. If not all ordered items become available for pickup at the same time, the shopper has to make several trips to the store and there will be corresponding partial captures.<\/p>\n<p>This use case also covers a \"mixed basket\", where the shopper adds items that are available at the store to the ordered online items. This is possible both when ordering the online items, and when picking up the order. The payment for the in-store items is captured on the spot.<\/p>\n<h2>Requirements<\/h2>\n<p>Before you begin, take into account the following information.<\/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;\">You must have both an ecommerce integration and a point-of-sale integration with Adyen.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Your systems<\/strong><\/td>\n<td style=\"text-align: left;\">It is essential to have (or create) a consolidated order\/inventory management or ERP system. Or alternatively, you must have an orchestration layer that communicates with your various sub-systems and can consume webhook messages. This is because shoppers may return items to the store or to the warehouse, and both systems need to be able to update the inventory in case of a return.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Preparation<\/strong><\/td>\n<td style=\"text-align: left;\">We recommend familiarizing yourself with specific concepts so that you can make informed decisions about integration choices. See <a href=\"#considerations\">Considerations<\/a> for details.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Shopper journey<\/h2>\n<p>From the shopper's perspective, this Endless Aisle retail use case is as follows.<\/p>\n<p>In the store, it turns out that items that the shopper wants to purchase are not available at the location. Store staff helps the shopper to order the items online, and select the store where they want to pick up the order. If desired, the shopper can combine the online order with purchasing items from the store that do not need to be ordered. The shopper presents their card on the payment terminal.<\/p>\n<p>When the order arrives at the selected store, the shopper is notified. The shopper goes to the store for pickup, and identifies by presenting their card on the payment terminal. The shopper is then handed the ordered goods. If desired, the shopper can combine picking up the online order with purchasing items that are available in the store.<\/p>\n<p>The following diagram illustrates this shopper journey.<\/p>\n<div id=\"mermaid-6a9e9a67a996d-wrapper\"><div id=\"mermaid-6a9e9a67a996d\" class=\"mermaid-shortcode loading\">CmdyYXBoIExSCiAgICBBKChPcmRlcjxicj5pbiBzdG9yZSkpOjo6c3RlcFN0eWxlIC0tPiBCe0FkZDxicj5pdGVtcz99Ojo6c3RlcFN0eWxlCiAgICBCIC0tIFllcyAtLT4gQ1tQcmVzZW50PGJyPmNhcmQgb248YnI+dGVybWluYWxdOjo6c3RlcFN0eWxlCiAgICBCIC0tIE5vIC0tPiBDW1ByZXNlbnQ8YnI+Y2FyZCBvbjxicj50ZXJtaW5hbF06OjpzdGVwU3R5bGUKICAgIEMgLS0+IERbUmVjZWl2ZTxicj5ub3RpZmljYXRpb25dOjo6c3RlcFN0eWxlCiAgICBEIC0tPiBFW0dvIHRvIHN0b3JlPGJyPmZvciBwaWNrdXBdOjo6c3RlcFN0eWxlCiAgICBFIC0tPiBGe0FkZDxicj5pdGVtcz99Ojo6c3RlcFN0eWxlCiAgICBGIC0tIFllcyAtLT4gR1tQcmVzZW50PGJyPmNhcmQgb248YnI+dGVybWluYWxdOjo6c3RlcFN0eWxlCiAgICBGIC0tIE5vIC0tPiBHW1ByZXNlbnQ8YnI+Y2FyZCBvbjxicj50ZXJtaW5hbF06OjpzdGVwU3R5bGUKICAgIEcgLS0+IEgoKFJlY2VpdmUgaXRlbXM8YnI+YXQgcGlja3VwKSk6OjpmaW5hbFN0eWxlCgolJSBTdHlsZXMKICAgIGNsYXNzRGVmIHRvcFN0eWxlIGZpbGw6IzAwMCxzdHJva2U6IzAwMCxjb2xvcjojZmZmCiAgICBjbGFzc0RlZiBjYXRlZ29yeVN0eWxlIGZpbGw6IzQ0NCxzdHJva2U6IzMzMyxjb2xvcjojZmZmCiAgICBjbGFzc0RlZiBzdGVwU3R5bGUgZmlsbDojZmZmLHN0cm9rZTojMGFiZjUzLHN0cm9rZS13aWR0aDoycHgsY29sb3I6IzAwMAogICAgY2xhc3NEZWYgZmluYWxTdHlsZSBmaWxsOiMwYWJmNTMsc3Ryb2tlOiMwNzhkM2UsY29sb3I6IzAwMAo=<\/div><\/div>\n<h2 id=\"considerations\">Considerations<\/h2>\n<p>Before you set up a flow for this use case, there are a couple of points that you must be aware of or make a decision on.<\/p>\n<h3>Legal entity and location<\/h3>\n<p>In this use case, you use the payment terminal to authorize the online order.<\/p>\n<p>If you want to process your Endless Aisle online transactions over a different merchant account than the regular in-person transactions, ask your Ayden Account Manager or Implementation Engineer about <em>Merchant Account Sharing<\/em>. With this, orders for both merchant accounts are processed on the same terminal, but kept separate. Enabling Merchant Account Sharing is subject to compliance approval. Terminals require a local legal entity.<\/p>\n<p>If compliance approval is not given, you have other options to keep the transactions separate:<\/p>\n<ul>\n<li>You can use separate terminals for regular in-store transactions and Endless Aisle transactions.<\/li>\n<li>Or you can set up multiple stores under the same merchant account. This keeps the reporting simple.<\/li>\n<li>Alternatively, instead of authorizing Endless Aisle online orders on a payment terminal, you can use Pay by Link payment links.<\/li>\n<\/ul>\n<p><div data-component-wrapper=\"tag\">\n    <tag :variant=&quot;success&quot;>\n        Reference:\n    <\/tag>\n<\/div>\n <a href=\"\/unified-commerce\/pay-by-link\" target=\"_blank\">Pay by Link<\/a><\/p>\n<h3>Capture settings<\/h3>\n<p>This use case requires specific procedures to capture the payment. You must enable and use manual capture, and 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 enable multiple partial captures.<\/p>\n<p>For the ordered items, the amount is initially authorized, but not captured. When the shopper picks up the items in the store, you make a manual capture request. If all items are picked up at the same time, you capture the full amount. If items are picked up at different times, you make a partial capture request for each pickup. If the shopper drops online items when picking up the order, you make a partial capture request for the reduced amount.<\/p>\n<p>It depends on your other use cases whether it is best to enable manual capture for every payment, or in the API request for an individual payment.<\/p>\n<p><div data-component-wrapper=\"tag\">\n    <tag :variant=&quot;success&quot;>\n        Reference:\n    <\/tag>\n<\/div>\n <a href=\"\/online-payments\/capture#enable-manual-capture\" target=\"_blank\">Enable manual capture<\/a>, <a href=\"\/online-payments\/capture#partial-capture\" target=\"_blank\">Partial manual capture<\/a>, <a href=\"\/online-payments\/capture#capture-a-payment\" target=\"_blank\">Capture a payment<\/a><\/p>\n<h3 id=\"auth-expiry-late-capture\">Authorization expiry and late capture<\/h3>\n<p>After sending a notification that the order is ready for pickup and waiting for the shopper to collect the order, it is possible that the authorization has expired when you try to capture the payment. To deal with that, you have several options:<\/p>\n<ul>\n<li>\n<p>Implement <strong>authorization adjustments<\/strong>.<br \/>\nYou pre-authorize the order, and after a while send a <code>\/payments\/{paymentPspReference}\/amountUpdates<\/code> request with the amount due, to renew the authorization. You can repeat this several times as needed, but each adjustment incurs costs.<\/p>\n<p>You need to choose between a synchronous flow or an asynchronous flow. In the synchronous flow you keep track of an <code>adjustAuthorisationData<\/code> blob that you pass from request to request. In the asynchronous flow you rely on webhooks to learn if the authorization adjustment succeeded.<\/p>\n<p>Authorization adjustment is also useful for:<\/p>\n<ul>\n<li>Partial capture scenarios where only part of the order is picked up: after the partial capture you renew the authorization for a partial amount, to cover the items that will be picked up later.<\/li>\n<li>Added in-store items at pickup, if you treat mixed baskets as one transaction: if the amount due increases substantially, you adjust the authorized amount upwards and then make a single capture request. Note that if the shopper drops online items when picking up the order you could adjust the amount down, but a partial capture request for a reduced amount is simpler and more cost-effective.<\/li>\n<\/ul>\n<p><div data-component-wrapper=\"tag\">\n    <tag :variant=&quot;success&quot;>\n        Reference:\n    <\/tag>\n<\/div>\n <a href=\"\/point-of-sale\/pre-authorisation\" target=\"_blank\">Pre-authorization and authorization adjustment<\/a>, <a href=\"\/point-of-sale\/pre-authorisation#validity\" target=\"_blank\">Expiration of pre-authorizations<\/a><\/p>\n<\/li>\n<li>\n<p>Use the <strong>Extend on capture<\/strong> feature.<br \/>\nWhen you capture the payment, Adyen checks the status of the initial authorization. If the authorization has expired, we perform a new authorization request. This feature is supported for American Express, Mastercard, and Visa.<\/p>\n<\/li>\n<li>\n<p>Implement <strong>tokenization<\/strong>.<br \/>\nIn your Terminal API payment request for the online items, you include tokenization parameters so that you receive a token and a shopper reference in the response. If at capture it turns out the initial authorization has expired, you make a new payment request to the Checkout API  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/payments<\/a> endpoint. This request includes the token and shopper reference.<\/p>\n<p><div data-component-wrapper=\"tag\">\n    <tag :variant=&quot;success&quot;>\n        Reference:\n    <\/tag>\n<\/div>\n <a href=\"\/point-of-sale\/recurring-payments\" target=\"_blank\">Tokenization<\/a> at the point of sale, <a href=\"\/online-payments\/tokenization\/make-token-payments?tab=1#make-a-subscription-or-unscheduled-card-on-file-payment\" target=\"_blank\">Make an unscheduled card-on-file payment<\/a><\/p>\n<\/li>\n<\/ul>\n<h3>Mixed baskets<\/h3>\n<p>If you want to support mixed baskets, where the shopper combines an online order with items that are available in the store, we recommend discussing your Adyen account structure and capture strategy with your Adyen implementation engineer or account manager.<\/p>\n<p>You have the following options for capturing the payment:<\/p>\n<ul>\n<li>\n<p>One transaction with multiple partial captures: this option requires that online and in-store items are processed under the same merchant account.<\/p>\n<ul>\n<li>For a mixed basket when the shopper places the order, you authorize the full amount of both the online order and the point-of-sale items, and make a partial capture request for the in-store items. Later, you make one or more partial captures as the ordered items are picked up.<\/li>\n<li>For a mixed basket when the shopper picks up the order, you adjust the authorized amount upwards for the added in-store items and then make a single capture request. This option requires that you used pre-authorization on the initial payment request.<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>Two separate transactions: you authorize the online order and capture the amount later as ordered items are picked up. For the in-store items, you make a separate payment request and capture the amount automatically, immediately or with a capture delay. This approach applies for mixed baskets both when the shopper places the order, and when the shopper picks up the order.<\/p>\n<\/li>\n<\/ul>\n<p><div data-component-wrapper=\"tag\">\n    <tag :variant=&quot;success&quot;>\n        Reference:\n    <\/tag>\n<\/div>\n <a href=\"\/unified-commerce\/retail-use-cases\/mixed-baskets-accounts\">Account structures for mixed baskets<\/a>, <a href=\"\/point-of-sale\/capturing-payments#delayed-automatic-capture\" target=\"_blank\">Delayed automatic capture<\/a>. Also see the references under \"Capture\" above.<\/p>\n<h3>Card recognition<\/h3>\n<p>At order pickup, you use a <em>card acquisition<\/em> request to find the shopper's order: the shopper presents their card or other payment instrument to the payment terminal. You then use the card alias or PAR from the response to look up the shopper and the order in your CRM system.<\/p>\n<p>To use card acquisition in this way, you must enable receiving shopper identifying data in API responses, and you must store the card alias and\/or the Payment Account Reference (PAR) in the shopper's profile.<\/p>\n<p>If the shopper does not have a record in your CRM system yet at the time of ordering, the CRM must also support manual entry of shopper details and creation of a new CRM record.<\/p>\n<p><div data-component-wrapper=\"tag\">\n    <tag :variant=&quot;success&quot;>\n        Reference:\n    <\/tag>\n<\/div>\n <a href=\"\/point-of-sale\/card-acquisition\" target=\"_blank\">Card acquisition<\/a>, <a href=\"\/point-of-sale\/card-acquisition\/identifiers#receiving-identifiers-in-responses\" target=\"_blank\">Receive card and shopper identifiers<\/a>, <a href=\"\/point-of-sale\/shopper-recognition\" target=\"_blank\">Card recognition<\/a>.<\/p>\n<h3>Sale attribution<\/h3>\n<p>You need to decide beforehand on how you will attribute the sale: if items are online items but ordered and paid for in-store, is this an in-store sale or an ecommerce sale?<\/p>\n<h3>Refunds and discounts<\/h3>\n<p>If the shopper does not want an ordered item, the item may be returned to the store (during pickup or later), or to the warehouse. Both systems must be able to look up the PSP reference for the order and issue a (partial) referenced refund. You need to support both:<\/p>\n<ul>\n<li><strong>Terminal API<\/strong> referenced refunds from the POS to the terminal for returns brought to the store.<\/li>\n<li><strong>Checkout API<\/strong> referenced refunds for returns sent to the warehouse.<\/li>\n<\/ul>\n<p>If discounts are offered over the phone or chat, customer service agents must be able to trigger partial referenced refunds as well.<\/p>\n<p><div data-component-wrapper=\"tag\">\n    <tag :variant=&quot;success&quot;>\n        Reference:\n    <\/tag>\n<\/div>\n <a href=\"\/point-of-sale\/basic-tapi-integration\/refund-payment\/referenced\" target=\"_blank\">Terminal API partial referenced refund<\/a>, <a href=\"\/online-payments\/refund\" target=\"_blank\">Checkout API refund<\/a><\/p>\n<h2>API flow<\/h2>\n<p>There are several Adyen API requests involved in the described shopper journey, as shown in the following diagrams for:<\/p>\n<ul>\n<li>The flow without mixed baskets and the flow with mixed baskets as a single transaction. These flows are very similar.<\/li>\n<li>The flow with mixed baskets as separate transactions.<\/li>\n<\/ul>\n<p>The next section, \"Instructions\", provides more details about the API flow.<\/p>\n<h3>No mixed basket or mixed basket as one transaction<\/h3>\n<div id=\"mermaid-6a9e9a67a9973-wrapper\"><div id=\"mermaid-6a9e9a67a9973\" class=\"mermaid-shortcode loading\">CnNlcXVlbmNlRGlhZ3JhbQogICAgcGFydGljaXBhbnQgU2hvcHBlcgogICAgcGFydGljaXBhbnQgRVJQCiAgICBwYXJ0aWNpcGFudCBQT1MKICAgIHBhcnRpY2lwYW50IEFkeWVuCgogICAgU2hvcHBlci0+PkVSUDogT3JkZXIgb25saW5lIGl0ZW1zCiAgICBvcHQgTWl4ZWQgYmFza2V0CiAgICAgICAgU2hvcHBlci0+PlBPUzogQWRkIGluLXN0b3JlIGl0ZW1zCiAgICBlbmQKICAgIFNob3BwZXItPj5QT1M6IEF1dGhvcml6ZSB0aGUgdHJhbnNhY3Rpb24KICAgIFBPUy0+PkFkeWVuOiBDYXJkIGFjcXVpc2l0aW9uIHJlcXVlc3QgZm9yIHdob2xlIGJhc2tldAogICAgQWR5ZW4tPj5QT1M6IENhcmQgYWNxdWlzaXRpb24gcmVzcG9uc2UKICAgIFBPUy0+PkVSUDogQWRkIHBpY2t1cCBzdG9yZSBhbmQgY29udGFjdCBkZXRhaWxzIHRvIG9yZGVyCiAgICBQT1MtPj5BZHllbjogVGVybWluYWwgQVBJIHBheW1lbnQgcmVxdWVzdCB3aXRoIG1hbnVhbCBjYXB0dXJlPGJyPk9wdGlvbmFsOiBwcmUtYXV0aG9yaXphdGlvbiBvciB0b2tlbml6YXRpb24KICAgIEFkeWVuLT4+UE9TOiBQYXltZW50IHJlc3BvbnNlCiAgICBvcHQgTWl4ZWQgYmFza2V0OiBJbi1zdG9yZSBpdGVtcyBhZGRlZAogICAgICAgIFBPUy0+PkFkeWVuOiBQYXJ0aWFsIG1hbnVhbCBjYXB0dXJlIG9mIGluLXN0b3JlIGl0ZW1zCiAgICAgICAgQWR5ZW4tPj5QT1M6IENhcHR1cmUgcmVzcG9uc2UKICAgIGVuZAogICAgRVJQLT4+U2hvcHBlcjogTm90aWZ5IG9yZGVyIHJlYWR5CiAgICBvcHQgRXh0ZW5kIGF1dGhvcml6YXRpb24gZm9yIG9ubGluZSBpdGVtcywgaWYgcHJlLWF1dGggd2FzIHVzZWQKICAgICAgICBFUlAtPj5BZHllbjogL3BheW1lbnRzL3twYXltZW50UHNwUmVmZXJlbmNlfS9hbW91bnRVcGRhdGVzIHJlcXVlc3QKICAgICAgICBBZHllbi0+PkVSUDogL2Ftb3VudFVwZGF0ZXMgcmVzcG9uc2UKICAgIGVuZAogICAgU2hvcHBlci0+PlBPUzogSWRlbnRpZnkgYXQgcGlja3VwCiAgICBQT1MtPj5BZHllbjogQ2FyZCBhY3F1aXNpdGlvbiByZXF1ZXN0CiAgICBBZHllbi0+PlBPUzogQ2FyZCBhY3F1aXNpdGlvbiByZXNwb25zZQogICAgUE9TLT4+QWR5ZW46IEVuYWJsZSBzZXJ2aWNlIHJlcXVlc3QgdG8gc3RvcCBjYXJkIGFjcXVpc2l0aW9uCiAgICBBZHllbi0+PlBPUzogRW5hYmxlIHNlcnZpY2UgcmVzcG9uc2UKICAgIG9wdCBNaXhlZCBiYXNrZXQ6IGFkanVzdCBhdXRob3JpemF0aW9uIGZvciBhZGRlZCBpbi1zdG9yZSBpdGVtcywgaWYgcHJlLWF1dGggd2FzIHVzZWQKICAgICAgICBTaG9wcGVyLS0+PlBPUzogQWRkIGluLXN0b3JlIGl0ZW1zCiAgICAgICAgUE9TLT4+QWR5ZW46IC9wYXltZW50cy97cGF5bWVudFBzcFJlZmVyZW5jZX0vYW1vdW50VXBkYXRlcyByZXF1ZXN0CiAgICAgICAgQWR5ZW4tPj5QT1M6IC9hbW91bnRVcGRhdGVzIHJlc3BvbnNlCiAgICBlbmQKICAgIFBPUy0+PkFkeWVuOiBNYW51YWwgY2FwdHVyZSBvZiB0aGUgZmluYWwgYW1vdW50IGR1ZQogICAgQWR5ZW4tPj5QT1M6IENhcHR1cmUgcmVzcG9uc2UKICAgIG9wdCBJZiBhdXRoIGV4cGlyZWQgYW5kIHBheW1lbnQgd2FzIHRva2VuaXplZCwgbWFrZSBwYXltZW50IHdpdGggdG9rZW4KICAgICAgICBQT1MtPj5BZHllbjogL3BheW1lbnRzIHJlcXVlc3QKICAgICAgICBBZHllbi0+PlBPUzogL3BheW1lbnRzIHJlc3BvbnNlCiAgICBlbmQKICAgIG9wdCBSZXR1cm4gdG8gc3RvcmUgbGF0ZXIsIGFmdGVyIHBpY2t1cAogICAgICAgIFNob3BwZXItLT4+UE9TOiBSZXR1cm4gaXRlbXMKICAgICAgICBQT1MtPj5BZHllbjogVGVybWluYWwgQVBJIHJlZnVuZCByZXF1ZXN0CiAgICAgICAgQWR5ZW4tPj5QT1M6IFJlZnVuZCByZXNwb25zZQogICAgZW5kCiAgICBvcHQgUmV0dXJuIHRvIHdhcmVob3VzZQogICAgICAgIFNob3BwZXItLT4+RVJQOiBSZXR1cm4gaXRlbXMKICAgICAgICBFUlAtPj5BZHllbjogQ2hlY2tvdXQgQVBJIHJlZnVuZCByZXF1ZXN0CiAgICAgICAgQWR5ZW4tPj5FUlA6IFJlZnVuZCByZXNwb25zZQogICAgZW5kCg==<\/div><\/div>\n<h3>Mixed basket as two transactions<\/h3>\n<p>We usually recommend delayed automatic capture for point-of-sale transactions. That is why the diagram shows automatic capture for the separate payment request related to the in-store items.<\/p>\n<div id=\"mermaid-6a9e9a67a9977-wrapper\"><div id=\"mermaid-6a9e9a67a9977\" class=\"mermaid-shortcode loading\">CnNlcXVlbmNlRGlhZ3JhbQogICAgcGFydGljaXBhbnQgU2hvcHBlcgogICAgcGFydGljaXBhbnQgRVJQCiAgICBwYXJ0aWNpcGFudCBQT1MKICAgIHBhcnRpY2lwYW50IEFkeWVuCgogICAgU2hvcHBlci0+PkVSUDogT3JkZXIgb25saW5lIGl0ZW1zCiAgICBub3RlIG92ZXIgU2hvcHBlciwgUE9TOiBNaXhlZCBiYXNrZXQKICAgIFNob3BwZXItPj5QT1M6IEFkZCBpbi1zdG9yZSBpdGVtcwogICAgU2hvcHBlci0+PlBPUzogQXV0aG9yaXplIHRyYW5zYWN0aW9uCiAgICBQT1MtPj5BZHllbjogQ2FyZCBhY3F1aXNpdGlvbiByZXF1ZXN0CiAgICBBZHllbi0+PlBPUzogQ2FyZCBhY3F1aXNpdGlvbiByZXNwb25zZQogICAgUE9TLT4+RVJQOiBBZGQgcGlja3VwIHN0b3JlIGFuZCBjb250YWN0IGRldGFpbHMgdG8gb3JkZXIKICAgIG5vdGUgb3ZlciBQT1MsIEFkeWVuOiBObyBjYXB0dXJlIHlldCBvZiBvbmxpbmUgaXRlbXMKICAgIFBPUy0+PkFkeWVuOiBUZXJtaW5hbCBBUEkgcGF5bWVudCByZXF1ZXN0IDEgZm9yIG9ubGluZSBpdGVtcyB3aXRoIG1hbnVhbCBjYXB0dXJlPGJyPk9wdGlvbmFsOiBwcmUtYXV0aG9yaXNhdGlvbiBvciB0b2tlbml6YXRpb24KICAgIEFkeWVuLT4+UE9TOiBQYXltZW50IHJlc3BvbnNlIDEKICAgIG5vdGUgb3ZlciBQT1MsIEFkeWVuOiBJbW1lZGlhdGUgb3IgZGVsYXllZCBhdXRvbWF0aWMgY2FwdHVyZSBvZiBpbi1zdG9yZSBpdGVtcwogICAgUE9TLT4+QWR5ZW46IFRlcm1pbmFsIEFQSSBQYXltZW50IHJlcXVlc3QgMiBmb3IgaW4tc3RvcmUgaXRlbXMKICAgIEFkeWVuLT4+UE9TOiBQYXltZW50IHJlc3BvbnNlIDIgd2l0aCBhdXRvbWF0aWMgY2FwdHVyZQogICAgRVJQLT4+U2hvcHBlcjogTm90aWZ5IG9yZGVyIHJlYWR5CiAgICBvcHQgRXh0ZW5kIGF1dGhvcml6YXRpb24gZm9yIG9ubGluZSBpdGVtcywgaWYgcHJlLWF1dGhvcml6YXRpb24gd2FzIHVzZWQKICAgICAgICBFUlAtPj5BZHllbjogL3BheW1lbnRzL3twYXltZW50UHNwUmVmZXJlbmNlfS9hbW91bnRVcGRhdGVzIHJlcXVlc3QKICAgICAgICBBZHllbi0+PkVSUDogL2Ftb3VudFVwZGF0ZXMgcmVzcG9uc2UKICAgIGVuZAogICAgU2hvcHBlci0+PlBPUzogSWRlbnRpZnkgYXQgcGlja3VwCiAgICBQT1MtPj5BZHllbjogQ2FyZCBhY3F1aXNpdGlvbiByZXF1ZXN0CiAgICBBZHllbi0+PlBPUzogQ2FyZCBhY3F1aXNpdGlvbiByZXNwb25zZQogICAgUE9TLT4+QWR5ZW46IEVuYWJsZSBzZXJ2aWNlIHJlcXVlc3QgdG8gc3RvcCBjYXJkIGFjcXVpc2l0aW9uCiAgICBBZHllbi0+PlBPUzogRW5hYmxlIHNlcnZpY2UgcmVzcG9uc2UKICAgIG5vdGUgb3ZlciBQT1MsIEFkeWVuOiBNYW51YWwgY2FwdHVyZSBvZiBvbmxpbmUgaXRlbXMKICAgIFBPUy0+PkFkeWVuOiBNYW51YWwgY2FwdHVyZSwgcGFydGlhbCBpZiBpdGVtcyBhcmUgZHJvcHBlZAogICAgQWR5ZW4tPj5QT1M6IENhcHR1cmUgcmVzcG9uc2UKICAgIG9wdCBJZiBhdXRoIGV4cGlyZWQgYW5kIHBheW1lbnQgd2FzIHRva2VuaXplZCwgbWFrZSBwYXltZW50IHdpdGggdG9rZW4KICAgICAgICBQT1MtPj5BZHllbjogL3BheW1lbnRzIHJlcXVlc3QKICAgICAgICBBZHllbi0+PlBPUzogL3BheW1lbnRzIHJlc3BvbnNlCiAgICBlbmQKICAgIFNob3BwZXItLT4+UE9TOiBBZGQgaW4tc3RvcmUgaXRlbXMgYXQgcGlja3VwCiAgICBub3RlIG92ZXIgUE9TLCBBZHllbjogSW1tZWRpYXRlIG9yIGRlbGF5ZWQgYXV0b21hdGljIGNhcHR1cmUgb2YgaW4tc3RvcmUgaXRlbXMKICAgIFBPUy0+PkFkeWVuOiBUZXJtaW5hbCBBUEkgUGF5bWVudCByZXF1ZXN0IGZvciBpbi1zdG9yZSBpdGVtcwogICAgQWR5ZW4tPj5QT1M6IFBheW1lbnQgcmVzcG9uc2Ugd2l0aCBhdXRvbWF0aWMgY2FwdHVyZQogICAgb3B0IFJldHVybiB0byBzdG9yZSBsYXRlciwgYWZ0ZXIgaW5pdGlhbCBwaWNrdXAKICAgICAgICBTaG9wcGVyLS0+PlBPUzogUmV0dXJuIGl0ZW1zCiAgICAgICAgUE9TLT4+QWR5ZW46IFRlcm1pbmFsIEFQSSByZWZ1bmQgcmVxdWVzdAogICAgICAgIEFkeWVuLT4+UE9TOiBSZWZ1bmQgcmVzcG9uc2UKICAgIGVuZAogICAgb3B0IFJldHVybiB0byB3YXJlaG91c2UKICAgICAgICBTaG9wcGVyLS0+PkVSUDogUmV0dXJuIGl0ZW1zCiAgICAgICAgRVJQLT4+QWR5ZW46IENoZWNrb3V0IEFQSSByZWZ1bmQgcmVxdWVzdAogICAgICAgIEFkeWVuLT4+RVJQOiBSZWZ1bmQgcmVzcG9uc2UKICAgIGVuZAo=<\/div><\/div>\n<h2>Instructions<\/h2>\n<p>This section provides high-level instructions focusing on how to use the Adyen APIs and webhooks in the described shopper journey.<\/p>\n<div class=\"notices green\">\n<p>The code samples show the minimally required parameters. You can add more parameters.<\/p>\n<\/div>\n<h4>Contact details<\/h4>\n<p>After the shopper has ordered the online items and selected a pickup store:<\/p>\n<ol>\n<li>\n<p>Make a Terminal API  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/terminal-api\/latest\/post\/cardacquisition\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">CardAcquisitionRequest<\/a> where the <code>CardAcquisitionTransaction<\/code> object contains the <code>TotalAmount<\/code> field with the purchase amount for the ordered items.<\/p>\n<p>If you support mixed baskets as a single transaction, use the total amount of the basket: the purchase amount for the ordered online items and any items from the store.<br \/>\nIf you support mixed baskets as two separate transactions, use only the amount of the ordered online items.<\/p>\n<p><div data-component-wrapper=\"tag\">\n    <tag :variant=&quot;success&quot;>\n        Reference:\n    <\/tag>\n<\/div>\n<a href=\"\/point-of-sale\/card-acquisition\" target=\"_blank\">Card acquisition<\/a><\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Card acquisition'\" :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\\\": \\\"282\\\",\\n            \\\"SaleID\\\": \\\"POSSystemID12345\\\",\\n            \\\"POIID\\\": \\\"AMS1-324688179\\\"\\n        },\\n        \\\"CardAcquisitionRequest\\\": {\\n            \\\"SaleData\\\": {\\n                \\\"SaleTransactionID\\\": {\\n                    \\\"TransactionID\\\": \\\"869\\\",\\n                    \\\"TimeStamp\\\": \\\"2026-02-10T12:30:00.134-06:00\\\"\\n                }\\n            },\\n            \\\"CardAcquisitionTransaction\\\": {\\n               \\\"TotalAmount\\\": 124.66\\n            }\\n        }\\n    }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<li>\n<p>When you receive the  <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 information:<\/p>\n<ul>\n<li><code>AdditionalResponse.PaymentAccountReference<\/code>: the PAR, if present.<\/li>\n<li><code>AdditionalResponse.alias<\/code>: the card alias.<\/li>\n<li>The <code>TimeStamp<\/code> and <code>TransactionID<\/code> from the <code>POIData.POITransactionID<\/code> object. You need these values later, when you (pre-)authorize the transaction.<\/li>\n<\/ul>\n<p>The following example shows the <code>AdditionalResponse<\/code> as a string of key-value pairs concatenated with an ampersand (<strong>&amp;<\/strong>). It is possible you receive a Base64-encoded string instead, which you need to Base64 decode first.<\/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\\\": \\\"2026-02-10T12:30:01.399-06:00\\\",\\n                    \\\"TransactionID\\\": \\\"BV0q001770726600000\\\"\\n                }\\n            },\\n            \\\"PaymentInstrumentData\\\": {\\n                \\\"CardData\\\": {\\n                    \\\"CardCountryCode\\\": \\\"840\\\",\\n                    \\\"MaskedPan\\\": \\\"510006 **** 0002\\\",\\n                    \\\"PaymentBrand\\\": \\\"mc\\\",\\n                    \\\"SensitiveCardData\\\": {\\n                        \\\"ExpiryDate\\\": \\\"1229\\\"\\n                    }\\n                },\\n                \\\"PaymentInstrumentType\\\": \\\"Card\\\"\\n            },\\n            \\\"Response\\\": {\\n                \\\"AdditionalResponse\\\": \\\"PaymentAccountReference=nmHL7QIKrz2cae0gjLTByTxIk76OX&amp;alias=P692729067643981&amp;...message=CARD_ACQ_COMPLETED...\\\",\\n                \\\"Result\\\": \\\"Success\\\"\\n            },\\n            \\\"SaleData\\\": {\\n                \\\"SaleTransactionID\\\": {\\n                    \\\"TimeStamp\\\": \\\"2026-02-10T12:29:58.765-06:00\\\",\\n                    \\\"TransactionID\\\": \\\"869\\\"\\n                }\\n            }\\n        },\\n        \\\"MessageHeader\\\": {\\n            \\\"MessageCategory\\\": \\\"CardAcquisition\\\",\\n            \\\"MessageClass\\\": \\\"Service\\\",\\n            \\\"MessageType\\\": \\\"Response\\\",\\n            \\\"POIID\\\": \\\"AMS1-324688179\\\",\\n            \\\"ProtocolVersion\\\": \\\"3.0\\\",\\n            \\\"SaleID\\\": \\\"POSSystemID12345\\\",\\n            \\\"ServiceID\\\": \\\"981\\\"\\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>Use the card alias and\/or PAR from the card acquisition response to look up the shopper's contact details in your ERP system. You need the contact details later, to send a notification when the order is ready for pickup.<\/p>\n<\/li>\n<li>\n<p>If the shopper is found in the ERP system, let the shop assistant verify the contact details with the shopper.<br \/>\nEnsure the shop assistant can update this information in the ERP system, if needed.<\/p>\n<\/li>\n<li>\n<p>If the shopper is not found in the ERP system, add a record for the shopper to the ERP system with the card alias and\/or PAR from the card acquisition response, and the other details that you need, specifically the contact details and the name of the shopper. You can collect those other details in various ways, for example:<\/p>\n<ul>\n<li>The shop assistant asks the shopper for the details.<\/li>\n<li>You collect the shopper's details on a secondary screen, for instance a tablet.<\/li>\n<li>You use <a href=\"\/point-of-sale\/shopper-engagement\/shopper-input\/\" target=\"_blank\">input requests<\/a> to collect the shopper's details on the payment terminal.<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>Make sure the pickup store location is included on the order.<\/p>\n<\/li>\n<\/ol>\n<h4>(Pre-)authorization<\/h4>\n<ol>\n<li>\n<p>Make a Terminal API  <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> with:<\/p>\n<ul>\n<li>\n<p><code>PaymentData.CardAcquisitionReference<\/code>: an object with the <code>TimeStamp<\/code> and <code>TransactionID<\/code> returned in the <code>POIData.POITransactionID<\/code> object of the card acquisition response.<\/p>\n<\/li>\n<li>\n<p><code>PaymentTransaction.AmountsReq<\/code>: an object with the <code>Currency<\/code> and the <code>RequestedAmount<\/code>.<br \/>\nIf you support mixed baskets as a single transaction, use the total amount of the basket.<br \/>\nIf you support mixed baskets as two separate transactions, use only the amount of the ordered online items.<\/p>\n<\/li>\n<li>\n<p><code>SaleToAcquirerData<\/code>: a parameter with <span translate=\"no\"><strong>manualCapture<\/strong><\/span> set to <span translate=\"no\"><strong>true<\/strong><\/span>. Optionally you can add <code>SaleToAcquirerData<\/code> parameters to pre-authorize or tokenize the transactions, as a method to handle <a href=\"#auth-expiry-late-capture\">authorization expiry and late captures<\/a>.<\/p>\n<p>Use one of the following formats to provide the <code>SaleToAcquirerData<\/code> value:<\/p>\n<ul>\n<li>Option 1: A JSON object converted to a Base64-encoded string.<\/li>\n<li>Option 2: Key-value pairs.<\/li>\n<\/ul>\n<p><div data-component-wrapper=\"tag\">\n    <tag :variant=&quot;success&quot;>\n        Reference:\n    <\/tag>\n<\/div>\n<a href=\"\/point-of-sale\/capturing-payments?tab=manual-individual-pos_2\" target=\"_blank\">Enable manual capture for a payment<\/a><\/p>\n<\/li>\n<\/ul>\n\n<div id=\"tabkxyYu\">\n    <div data-component-wrapper=\"tabs\">\n        <tabs\n                        :items=\"[{&quot;title&quot;:&quot;Payment setting capture to manual&quot;,&quot;content&quot;:&quot;\\n&lt;p&gt;The example shows setting manual capture using a key-value pair.&lt;\\\/p&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;Terminal API payment with manual capture&#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;SaleToPOIRequest\\\\\\&quot;:{\\\\n      \\\\\\&quot;MessageHeader\\\\\\&quot;:{\\\\n         \\\\\\&quot;ProtocolVersion\\\\\\&quot;: \\\\\\&quot;3.0\\\\\\&quot;,\\\\n         \\\\\\&quot;MessageClass\\\\\\&quot;: \\\\\\&quot;Service\\\\\\&quot;,\\\\n         \\\\\\&quot;MessageCategory\\\\\\&quot;: \\\\\\&quot;Payment\\\\\\&quot;,\\\\n         \\\\\\&quot;MessageType\\\\\\&quot;: \\\\\\&quot;Request\\\\\\&quot;,\\\\n         \\\\\\&quot;SaleID\\\\\\&quot;: \\\\\\&quot;POSSystemID12345\\\\\\&quot;,\\\\n         \\\\\\&quot;ServiceID\\\\\\&quot;:\\\\\\&quot;0207111104\\\\\\&quot;,\\\\n         \\\\\\&quot;POIID\\\\\\&quot;: \\\\\\&quot;AMS1-324688179\\\\\\&quot;\\\\n      },\\\\n      \\\\\\&quot;PaymentRequest\\\\\\&quot;: {\\\\n         \\\\\\&quot;SaleData\\\\\\&quot;: {\\\\n            \\\\\\&quot;SaleTransactionID\\\\\\&quot;: {\\\\n               \\\\\\&quot;TransactionID\\\\\\&quot;: \\\\\\&quot;27908\\\\\\&quot;,\\\\n               \\\\\\&quot;TimeStamp\\\\\\&quot;: \\\\\\&quot;2026-02-10T12:30:03.122-06:00\\\\\\&quot;\\\\n            },\\\\n            \\\\\\&quot;SaleToAcquirerData\\\\\\&quot;: \\\\\\&quot;manualCapture=true\\\\\\&quot;\\\\n         },\\\\n         \\\\\\&quot;PaymentTransaction\\\\\\&quot;: {\\\\n            \\\\\\&quot;AmountsReq\\\\\\&quot;: {\\\\n               \\\\\\&quot;Currency\\\\\\&quot;: \\\\\\&quot;USD\\\\\\&quot;,\\\\n               \\\\\\&quot;RequestedAmount\\\\\\&quot;: 124.66\\\\n            }\\\\n         },\\\\n         \\\\\\&quot;PaymentData\\\\\\&quot;: {\\\\n            \\\\\\&quot;CardAcquisitionReference\\\\\\&quot;: {\\\\n               \\\\\\&quot;TimeStamp\\\\\\&quot;: \\\\\\&quot;2026-02-10T12:30:01.399-06:00\\\\\\&quot;,\\\\n               \\\\\\&quot;TransactionID\\\\\\&quot;: \\\\\\&quot;BV0q001770726600000\\\\\\&quot;\\\\n            }\\\\n         }\\\\n      }\\\\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&quot;,&quot;altTitle&quot;:null,&quot;oldTabId&quot;:1,&quot;relation&quot;:&quot;&quot;},{&quot;title&quot;:&quot;Pre-authorization (optional)&quot;,&quot;content&quot;:&quot;\\n&lt;p&gt;If you expect a need to extend or adjust the authorization later, in &lt;code&gt;SaleToAcquirerData&lt;\\\/code&gt; include &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;authorizationType&lt;\\\/strong&gt;&lt;\\\/span&gt; set to &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;PreAuth&lt;\\\/strong&gt;&lt;\\\/span&gt;. This is in addition to setting the capture method to manual.&lt;\\\/p&gt;\\n&lt;p&gt;&lt;div data-component-wrapper=\\&quot;tag\\&quot;&gt;\\n    &lt;tag :variant=&amp;quot;success&amp;quot;&gt;\\n        Reference:\\n    &lt;\\\/tag&gt;\\n&lt;\\\/div&gt;\\n&lt;a href=\\&quot;\\\/point-of-sale\\\/pre-authorisation#pre-authorize\\&quot; target=\\&quot;_blank\\&quot;&gt;Pre-authorize a payment&lt;\\\/a&gt;&lt;\\\/p&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;Terminal API payment with manual capture and pre-authorization&#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;SaleToPOIRequest\\\\\\&quot;:{\\\\n      \\\\\\&quot;MessageHeader\\\\\\&quot;:{\\\\n         \\\\\\&quot;ProtocolVersion\\\\\\&quot;: \\\\\\&quot;3.0\\\\\\&quot;,\\\\n         \\\\\\&quot;MessageClass\\\\\\&quot;: \\\\\\&quot;Service\\\\\\&quot;,\\\\n         \\\\\\&quot;MessageCategory\\\\\\&quot;: \\\\\\&quot;Payment\\\\\\&quot;,\\\\n         \\\\\\&quot;MessageType\\\\\\&quot;: \\\\\\&quot;Request\\\\\\&quot;,\\\\n         \\\\\\&quot;SaleID\\\\\\&quot;: \\\\\\&quot;POSSystemID12345\\\\\\&quot;,\\\\n         \\\\\\&quot;ServiceID\\\\\\&quot;:\\\\\\&quot;0207111104\\\\\\&quot;,\\\\n         \\\\\\&quot;POIID\\\\\\&quot;: \\\\\\&quot;AMS1-324688179\\\\\\&quot;\\\\n      },\\\\n      \\\\\\&quot;PaymentRequest\\\\\\&quot;: {\\\\n         \\\\\\&quot;SaleData\\\\\\&quot;: {\\\\n            \\\\\\&quot;SaleTransactionID\\\\\\&quot;: {\\\\n               \\\\\\&quot;TransactionID\\\\\\&quot;: \\\\\\&quot;27908\\\\\\&quot;,\\\\n               \\\\\\&quot;TimeStamp\\\\\\&quot;: \\\\\\&quot;2026-02-10T12:30:03.122-06:00\\\\\\&quot;\\\\n            },\\\\n            \\\\\\&quot;SaleToAcquirerData\\\\\\&quot;: \\\\\\&quot;manualCapture=true&amp;amp;authorisationType=PreAuth\\\\\\&quot;\\\\n         },\\\\n         \\\\\\&quot;PaymentTransaction\\\\\\&quot;: {\\\\n            \\\\\\&quot;AmountsReq\\\\\\&quot;: {\\\\n               \\\\\\&quot;Currency\\\\\\&quot;: \\\\\\&quot;USD\\\\\\&quot;,\\\\n               \\\\\\&quot;RequestedAmount\\\\\\&quot;: 124.66\\\\n            }\\\\n         },\\\\n         \\\\\\&quot;PaymentData\\\\\\&quot;: {\\\\n            \\\\\\&quot;CardAcquisitionReference\\\\\\&quot;: {\\\\n               \\\\\\&quot;TimeStamp\\\\\\&quot;: \\\\\\&quot;2026-02-10T12:30:01.399-06:00\\\\\\&quot;,\\\\n               \\\\\\&quot;TransactionID\\\\\\&quot;: \\\\\\&quot;BV0q001770726600000\\\\\\&quot;\\\\n            }\\\\n         }\\\\n      }\\\\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&quot;,&quot;altTitle&quot;:null,&quot;oldTabId&quot;:1,&quot;relation&quot;:&quot;&quot;},{&quot;title&quot;:&quot;Tokenization (optional)&quot;,&quot;content&quot;:&quot;\\n&lt;p&gt;If you plan to use tokenization to deal with expired authorizations, in &lt;code&gt;SaleToAcquirerData&lt;\\\/code&gt; include:&lt;\\\/p&gt;\\n&lt;ul&gt;\\n&lt;li&gt;&lt;code&gt;shopperReference&lt;\\\/code&gt;: Your unique reference for this shopper.&lt;\\\/li&gt;\\n&lt;li&gt;&lt;code&gt;recurringProcessingModel&lt;\\\/code&gt;: Set this field to &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;UnscheduledCardOnFile&lt;\\\/strong&gt;&lt;\\\/span&gt;.&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;p&gt;This is in addition to setting the capture method to manual.&lt;\\\/p&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;Terminal API payment with manual capture and tokenization&#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;SaleToPOIRequest\\\\\\&quot;:{\\\\n      \\\\\\&quot;MessageHeader\\\\\\&quot;:{\\\\n         \\\\\\&quot;ProtocolVersion\\\\\\&quot;: \\\\\\&quot;3.0\\\\\\&quot;,\\\\n         \\\\\\&quot;MessageClass\\\\\\&quot;: \\\\\\&quot;Service\\\\\\&quot;,\\\\n         \\\\\\&quot;MessageCategory\\\\\\&quot;: \\\\\\&quot;Payment\\\\\\&quot;,\\\\n         \\\\\\&quot;MessageType\\\\\\&quot;: \\\\\\&quot;Request\\\\\\&quot;,\\\\n         \\\\\\&quot;SaleID\\\\\\&quot;: \\\\\\&quot;POSSystemID12345\\\\\\&quot;,\\\\n         \\\\\\&quot;ServiceID\\\\\\&quot;:\\\\\\&quot;0207111104\\\\\\&quot;,\\\\n         \\\\\\&quot;POIID\\\\\\&quot;: \\\\\\&quot;AMS1-324688179\\\\\\&quot;\\\\n      },\\\\n      \\\\\\&quot;PaymentRequest\\\\\\&quot;: {\\\\n         \\\\\\&quot;SaleData\\\\\\&quot;: {\\\\n            \\\\\\&quot;SaleTransactionID\\\\\\&quot;: {\\\\n               \\\\\\&quot;TransactionID\\\\\\&quot;: \\\\\\&quot;27908\\\\\\&quot;,\\\\n               \\\\\\&quot;TimeStamp\\\\\\&quot;: \\\\\\&quot;2026-02-10T12:30:03.122-06:00\\\\\\&quot;\\\\n            },\\\\n            \\\\\\&quot;SaleToAcquirerData\\\\\\&quot;: \\\\\\&quot;manualCapture=true&amp;amp;recurringProcessingModel=UnscheduledCardOnFile&amp;amp;shopperReference=12345\\\\\\&quot;\\\\n         },\\\\n         \\\\\\&quot;PaymentTransaction\\\\\\&quot;: {\\\\n            \\\\\\&quot;AmountsReq\\\\\\&quot;: {\\\\n               \\\\\\&quot;Currency\\\\\\&quot;: \\\\\\&quot;USD\\\\\\&quot;,\\\\n               \\\\\\&quot;RequestedAmount\\\\\\&quot;: 124.66\\\\n            }\\\\n         },\\\\n         \\\\\\&quot;PaymentData\\\\\\&quot;: {\\\\n            \\\\\\&quot;CardAcquisitionReference\\\\\\&quot;: {\\\\n               \\\\\\&quot;TimeStamp\\\\\\&quot;: \\\\\\&quot;2026-02-10T12:30:01.399-06:00\\\\\\&quot;,\\\\n               \\\\\\&quot;TransactionID\\\\\\&quot;: \\\\\\&quot;BV0q001770726600000\\\\\\&quot;\\\\n            }\\\\n         }\\\\n      }\\\\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;p&gt;&lt;div data-component-wrapper=\\&quot;tag\\&quot;&gt;\\n    &lt;tag :variant=&amp;quot;success&amp;quot;&gt;\\n        Reference:\\n    &lt;\\\/tag&gt;\\n&lt;\\\/div&gt;\\n &lt;a href=\\&quot;\\\/point-of-sale\\\/recurring-payments#make-initial-payment\\&quot; target=\\&quot;_blank\\&quot;&gt;Tokenize the initial payment&lt;\\\/a&gt;&lt;\\\/p&gt;\\n&quot;,&quot;altTitle&quot;:null,&quot;oldTabId&quot;:1,&quot;relation&quot;:&quot;&quot;}]\"\n            :should-update-when-url-changes='false'>\n        <\/tabs>\n    <\/div>\n<\/div>\n\n<\/li>\n<li>\n<p>When you receive the payment response, save details from the following fields:<\/p>\n<ul>\n<li>\n<p><code>POITransactionID.TransactionID<\/code>: save the transaction ID. This is provided in the format <code>tenderReference.pspReference<\/code>, for example, <strong>CW1r112876209163113.DXCD52AY3WUGXS93<\/strong>. The PSP reference is also provided in the <code>AdditionalResponse<\/code>.<br \/>\nYou need the PSP reference later, to extend or adjust the authorization, and to capture the payment. You also need the PSP reference if the shopper returns items to the warehouse.<br \/>\nYou need the full transaction ID if the shopper returns items to the store.<\/p>\n<\/li>\n<li>\n<p><code>AdditionalResponse<\/code>:<\/p>\n<ul>\n<li>\n<p>If you use synchronous authorization adjustment, save the <code>adjustAuthorisationData<\/code>. You need this data blob later, to extend or adjust the authorization.<\/p>\n<\/li>\n<li>\n<p>If you use tokenization, save the token (<code>recurring.recurringDetailReference<\/code> or <code>tokenization.storedPaymenMethodId<\/code>) and the shopper reference (<code>recurring.shopperReference<\/code> or <code>tokenization.shopperReferece<\/code>).<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><code>POITransactionID.TimeStamp<\/code>: save the payment date and time. You need the timestamp if the shopper returns items to the store.<\/p>\n<\/li>\n<\/ul>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Payment response'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n \\\"SaleToPOIResponse\\\": {\\n   \\\"MessageHeader\\\": {...},\\n   \\\"PaymentResponse\\\": {\\n     \\\"POIData\\\": {\\n       \\\"POITransactionID\\\": {\\n         \\\"TimeStamp\\\": \\\"2026-02-10T12:30:05.314-06:00\\\",\\n         \\\"TransactionID\\\":\\\"CW1r112876209163113.DXCD52AY3WUGXS93\\\"\\n       }\\n     },\\n     \\\"PaymentReceipt\\\": [...],\\n     \\\"PaymentResult\\\": {...},\\n     \\\"Response\\\": {\\n       \\\"AdditionalResponse\\\": \\\"...posAuthAmountCurrency=USD&amp;posAuthAmountValue=12466&amp;...pspReference=DXCD52AY3WUGXS93&amp;...adjustAuthorisationData=BQABAQA+fbc==...\\\",\\n       \\\"Result\\\": \\\"Success\\\"\\n     },\\n     \\\"SaleData\\\": {...}\\n   }\\n }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<li>\n<p>If you support mixed baskets as a single transaction, make a partial manual capture request for the in-store items. See the <a href=\"#manual-capture\">example<\/a> below, under \"In-store pickup\".<\/p>\n<\/li>\n<li>\n<p>If you support mixed baskets as two separate transactions, make another Terminal API payment request for the in-store items.<br \/>\nIf your point-of-sale merchant account uses immediate or delayed capture by default (which we usually recommend), do not set manual capture in this payment request. Otherwise, see the <a href=\"#manual-capture\">example<\/a>under \"In-store pickup\", and make a separate manual capture request for the in-store items.<\/p>\n<\/li>\n<\/ol>\n<h4>Authorization extension (optional)<\/h4>\n<p>At one or more moments before or after you notify the shopper that the order is ready for pickup, you may need to extend the authorization. This ensures you can still capture the payment later, when the shopper arrives at the store to pick up the order.<br \/>\n<div data-component-wrapper=\"tag\">\n    <tag :variant=&quot;success&quot;>\n        Reference:\n    <\/tag>\n<\/div>\n <a href=\"\/point-of-sale\/pre-authorisation#validity\" target=\"_blank\">Expiration of pre-authorizations<\/a>,<br \/>\n<a href=\"\/point-of-sale\/pre-authorisation#adjust-authn\" target=\"_blank\">Authorization adjustment<\/a><\/p>\n\n<div id=\"tabY0j2F\">\n    <div data-component-wrapper=\"tabs\">\n        <tabs\n                        :items=\"[{&quot;title&quot;:&quot;Asynchronous authorization extension&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, including the following:&lt;\\\/p&gt;\\n&lt;p&gt;Path parameters:&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;paymentPspReference&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: center;\\&quot;&gt;&lt;span class=\\&quot;hint--bottom\\&quot; data-hint=\\&quot;Required\\&quot; markdown=\\&quot;1\\&quot;&gt;&lt;img style=\\&quot;width: 25px;\\&quot; alt=\\&quot;Required\\&quot; src=\\&quot;\\\/user\\\/pages\\\/reuse\\\/image-library\\\/01.icons\\\/required\\\/required.svg?decoding=auto&amp;amp;fetchpriority=auto\\&quot; \\\/&gt;&lt;\\\/span&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;The PSP reference from the pre-authorization response.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/tbody&gt;\\n&lt;\\\/table&gt;\\n&lt;p&gt;Body parameters:&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;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/Checkout\\\/latest\\\/post\\\/payments\\\/(paymentPspReference)\\\/amountUpdates#request-merchantAccount\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;merchantAccount&lt;\\\/a&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: center;\\&quot;&gt;&lt;span class=\\&quot;hint--bottom\\&quot; data-hint=\\&quot;Required\\&quot; markdown=\\&quot;1\\&quot;&gt;&lt;img style=\\&quot;width: 25px;\\&quot; alt=\\&quot;Required\\&quot; src=\\&quot;\\\/user\\\/pages\\\/reuse\\\/image-library\\\/01.icons\\\/required\\\/required.svg?decoding=auto&amp;amp;fetchpriority=auto\\&quot; \\\/&gt;&lt;\\\/span&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;The name of the merchant account that is used to process the payment. This depends on how you &lt;a href=\\&quot;#sale-attribution\\&quot;&gt;attribute the sale&lt;\\\/a&gt;.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt; &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/Checkout\\\/latest\\\/post\\\/payments\\\/(paymentPspReference)\\\/amountUpdates#request-amount\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;amount&lt;\\\/a&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: center;\\&quot;&gt;&lt;span class=\\&quot;hint--bottom\\&quot; data-hint=\\&quot;Required\\&quot; markdown=\\&quot;1\\&quot;&gt;&lt;img style=\\&quot;width: 25px;\\&quot; alt=\\&quot;Required\\&quot; src=\\&quot;\\\/user\\\/pages\\\/reuse\\\/image-library\\\/01.icons\\\/required\\\/required.svg?decoding=auto&amp;amp;fetchpriority=auto\\&quot; \\\/&gt;&lt;\\\/span&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 amount &lt;strong&gt;in minor units&lt;\\\/strong&gt; (without a decimal point) for which you want to extend the pre-authorization.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt; &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/Checkout\\\/latest\\\/post\\\/payments\\\/(paymentPspReference)\\\/amountUpdates#request-industryUsage\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;industryUsage&lt;\\\/a&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;Use the &lt;strong&gt;delayedCharge&lt;\\\/strong&gt; value.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt; &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/Checkout\\\/latest\\\/post\\\/payments\\\/(paymentPspReference)\\\/amountUpdates#request-reference\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;reference&lt;\\\/a&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 extend the USD&amp;nbsp;124.66 authorization with PSP reference DXCD52AY3WUGXS93.&lt;\\\/p&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;Asynchronous authorization extension&#039;\\&quot; :id=\\&quot;&#039;&#039;\\&quot; :code-data=\\&quot;[{&amp;quot;language&amp;quot;:&amp;quot;bash&amp;quot;,&amp;quot;tabTitle&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;content&amp;quot;:&amp;quot;curl https:\\\\\\\/\\\\\\\/checkout-test.adyen.com\\\\\\\/v72\\\\\\\/payments\\\\\\\/DXCD52AY3WUGXS93\\\\\\\/amountUpdates \\\\\\\\\\\\n-H &#039;x-api-key: ADYEN_API_KEY&#039; \\\\\\\\\\\\n-H &#039;content-type: application\\\\\\\/json&#039; \\\\\\\\\\\\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;USD\\\\&amp;quot;,\\\\n      \\\\&amp;quot;value\\\\&amp;quot;: 12466\\\\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;}]\\&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;After you receive the  &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;\\\/amountUpdates&lt;\\\/a&gt; response, wait for a webhook message with the &lt;code&gt;eventCode&lt;\\\/code&gt;  &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/Webhooks\\\/latest\\\/post\\\/AUTHORISATION_ADJUSTMENT\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;AUTHORISATION_ADJUSTMENT&lt;\\\/a&gt;. This informs you whether the authorization extension succeeded.&lt;\\\/p&gt;\\n&quot;,&quot;altTitle&quot;:&quot;asynchronous-method&quot;,&quot;oldTabId&quot;:1,&quot;relation&quot;:&quot;asynchronous-method&quot;},{&quot;title&quot;:&quot;Synchronous authorization extension&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;Get the &lt;code&gt;adjustAuthorisationData&lt;\\\/code&gt; value from the pre-authorization response:&lt;\\\/p&gt;\\n&lt;ul&gt;\\n&lt;li&gt;If you received the &lt;code&gt;AdditionalResponse&lt;\\\/code&gt; 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;\\\/li&gt;\\n&lt;li&gt;If you received the &lt;code&gt;AdditionalResponse&lt;\\\/code&gt; as a Base64-encoded string, Base64-decode the string and copy the value of the &lt;code&gt;adjustAuthorisationData&lt;\\\/code&gt; field.&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;div class=\\&quot;sc-notice note\\&quot;&gt;&lt;div&gt;\\n&lt;p&gt;This step is only needed for the first &lt;code&gt;\\\/amountUpdates&lt;\\\/code&gt; request for a specific authorization.&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\\\/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, including the following:&lt;\\\/p&gt;\\n&lt;p&gt;Path parameters:&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;paymentPspReference&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: center;\\&quot;&gt;&lt;span class=\\&quot;hint--bottom\\&quot; data-hint=\\&quot;Required\\&quot; markdown=\\&quot;1\\&quot;&gt;&lt;img style=\\&quot;width: 25px;\\&quot; alt=\\&quot;Required\\&quot; src=\\&quot;\\\/user\\\/pages\\\/reuse\\\/image-library\\\/01.icons\\\/required\\\/required.svg?decoding=auto&amp;amp;fetchpriority=auto\\&quot; \\\/&gt;&lt;\\\/span&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;The PSP reference from the pre-authorization response.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/tbody&gt;\\n&lt;\\\/table&gt;\\n&lt;p&gt;Body parameters:&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;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/Checkout\\\/latest\\\/post\\\/payments\\\/(paymentPspReference)\\\/amountUpdates#request-merchantAccount\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;merchantAccount&lt;\\\/a&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: center;\\&quot;&gt;&lt;span class=\\&quot;hint--bottom\\&quot; data-hint=\\&quot;Required\\&quot; markdown=\\&quot;1\\&quot;&gt;&lt;img style=\\&quot;width: 25px;\\&quot; alt=\\&quot;Required\\&quot; src=\\&quot;\\\/user\\\/pages\\\/reuse\\\/image-library\\\/01.icons\\\/required\\\/required.svg?decoding=auto&amp;amp;fetchpriority=auto\\&quot; \\\/&gt;&lt;\\\/span&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;The name of the merchant account that is used to process the payment. This depends on how you &lt;a href=\\&quot;#sale-attribution\\&quot;&gt;attribute the sale&lt;\\\/a&gt;.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt; &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/Checkout\\\/latest\\\/post\\\/payments\\\/(paymentPspReference)\\\/amountUpdates#request-amount\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;amount&lt;\\\/a&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: center;\\&quot;&gt;&lt;span class=\\&quot;hint--bottom\\&quot; data-hint=\\&quot;Required\\&quot; markdown=\\&quot;1\\&quot;&gt;&lt;img style=\\&quot;width: 25px;\\&quot; alt=\\&quot;Required\\&quot; src=\\&quot;\\\/user\\\/pages\\\/reuse\\\/image-library\\\/01.icons\\\/required\\\/required.svg?decoding=auto&amp;amp;fetchpriority=auto\\&quot; \\\/&gt;&lt;\\\/span&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 amount &lt;strong&gt;in minor units&lt;\\\/strong&gt; (without a decimal point) for which you want to extend the pre-authorization.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;adjustAuthorisationData&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: center;\\&quot;&gt;&lt;span class=\\&quot;hint--bottom\\&quot; data-hint=\\&quot;Required\\&quot; markdown=\\&quot;1\\&quot;&gt;&lt;img style=\\&quot;width: 25px;\\&quot; alt=\\&quot;Required\\&quot; src=\\&quot;\\\/user\\\/pages\\\/reuse\\\/image-library\\\/01.icons\\\/required\\\/required.svg?decoding=auto&amp;amp;fetchpriority=auto\\&quot; \\\/&gt;&lt;\\\/span&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;The &lt;code&gt;adjustAuthorisationData&lt;\\\/code&gt; value from the pre-authorization response. &lt;div class=\\&quot;sc-notice note\\&quot;&gt;&lt;div&gt;If you later extend the authorisation again, use the value from the preceding extension response.&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;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/Checkout\\\/latest\\\/post\\\/payments\\\/(paymentPspReference)\\\/amountUpdates#request-reference\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;reference&lt;\\\/a&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 extend the USD&amp;nbsp;124.66 authorization with PSP reference DXCD52AY3WUGXS93.&lt;\\\/p&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;Synchronous authorization extension&#039;\\&quot; :id=\\&quot;&#039;&#039;\\&quot; :code-data=\\&quot;[{&amp;quot;language&amp;quot;:&amp;quot;bash&amp;quot;,&amp;quot;tabTitle&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;content&amp;quot;:&amp;quot;curl -X POST https:\\\\\\\/\\\\\\\/checkout-test.adyen.com\\\\\\\/v72\\\\\\\/payments\\\\\\\/DXCD52AY3WUGXS93}\\\\\\\/amountUpdates \\\\\\\\\\\\n-H &#039;x-api-key: ADYEN_API_KEY&#039; \\\\\\\\\\\\n-H &#039;idempotency-key: YOUR_IDEMPOTENCY_KEY&#039; \\\\\\\\\\\\n-H &#039;content-type: application\\\\\\\/json&#039; \\\\\\\\\\\\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;USD\\\\&amp;quot;,\\\\n      \\\\&amp;quot;value\\\\&amp;quot;: 12466\\\\n  },\\\\n  \\\\&amp;quot;reference\\\\&amp;quot;: \\\\&amp;quot;YOUR_UNIQUE_REFERENCE\\\\&amp;quot;,\\\\n  \\\\&amp;quot;adjustAuthorisationData\\\\&amp;quot;: \\\\&amp;quot;BQABAQA+fbc==...\\\\&amp;quot;\\\\n}&#039;&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;When you receive the  &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;\\\/amountUpdates&lt;\\\/a&gt; response, save the &lt;code&gt;adjustAuthorisationData&lt;\\\/code&gt; blob. You will need this later if you extend the authorization again, or if you adjust the authorization amount at pickup.&lt;\\\/p&gt;\\n&lt;\\\/li&gt;\\n&lt;\\\/ol&gt;\\n&quot;,&quot;altTitle&quot;:&quot;synchronous-method&quot;,&quot;oldTabId&quot;:1,&quot;relation&quot;:&quot;synchronous-method&quot;}]\"\n            :should-update-when-url-changes='true'>\n        <\/tabs>\n    <\/div>\n<\/div>\n\n<h4>In-store pickup<\/h4>\n<p>When the shopper arrives at the pickup location to collect the order:<\/p>\n<ol>\n<li>\n<p>To find the shopper's order based on the card that was used to authorize the order:<\/p>\n<ol>\n<li>\n<p>Make a Terminal API  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/terminal-api\/latest\/post\/cardacquisition\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">CardAcquisitionRequest<\/a> with an empty <code>CardAcquisitionTransaction<\/code> object.<br \/>\n<div data-component-wrapper=\"tag\">\n    <tag :variant=&quot;success&quot;>\n        Reference:\n    <\/tag>\n<\/div>\n<a href=\"\/point-of-sale\/card-acquisition\" target=\"_blank\">Card acquisition<\/a><\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Card acquisition to recognize the card'\" :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\\\": \\\"282\\\",\\n            \\\"SaleID\\\": \\\"POSSystemID12345\\\",\\n            \\\"POIID\\\": \\\"AMS1-324688179\\\"\\n        },\\n        \\\"CardAcquisitionRequest\\\": {\\n            \\\"SaleData\\\": {\\n                \\\"SaleTransactionID\\\": {\\n                    \\\"TransactionID\\\": \\\"869\\\",\\n                    \\\"TimeStamp\\\": \\\"2026-02-10T12:30:00.134-06:00\\\"\\n                }\\n            },\\n            \\\"CardAcquisitionTransaction\\\": {}\\n        }\\n    }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<li>\n<p>When you receive the  <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>, find the shopper's order in your ERP system using the following information from the <code>response.AdditionalResponse<\/code>:<\/p>\n<ul>\n<li><code>PaymentAccountReference<\/code>: the PAR, if present.<\/li>\n<li><code>alias<\/code>: the card alias<\/li>\n<\/ul>\n<p>The following example shows the <code>AdditionalResponse<\/code> as a string of key-value pairs concatenated with an ampersand (<strong>&amp;<\/strong>). It is possible you receive a Base64-encoded string instead, which you need to Base64 decode first.<\/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\\\": \\\"2026-02-10T12:30:01.399-06:00\\\",\\n                    \\\"TransactionID\\\": \\\"BV0q001770726600000\\\"\\n                }\\n            },\\n            \\\"PaymentInstrumentData\\\": {\\n                \\\"CardData\\\": {\\n                    \\\"CardCountryCode\\\": \\\"840\\\",\\n                    \\\"MaskedPan\\\": \\\"510006 **** 0002\\\",\\n                    \\\"PaymentBrand\\\": \\\"mc\\\",\\n                    \\\"SensitiveCardData\\\": {\\n                        \\\"ExpiryDate\\\": \\\"1229\\\"\\n                    }\\n                },\\n                \\\"PaymentInstrumentType\\\": \\\"Card\\\"\\n            },\\n            \\\"Response\\\": {\\n                \\\"AdditionalResponse\\\": \\\"PaymentAccountReference=nmHL7QIKrz2cae0gjLTByTxIk76OX&amp;alias=P692729067643981&amp;...message=CARD_ACQ_COMPLETED...\\\",\\n                \\\"Result\\\": \\\"Success\\\"\\n            },\\n            \\\"SaleData\\\": {\\n                \\\"SaleTransactionID\\\": {\\n                    \\\"TimeStamp\\\": \\\"2026-02-10T12:29:58.765-06:00\\\",\\n                    \\\"TransactionID\\\": \\\"869\\\"\\n                }\\n            }\\n        },\\n        \\\"MessageHeader\\\": {\\n            \\\"MessageCategory\\\": \\\"CardAcquisition\\\",\\n            \\\"MessageClass\\\": \\\"Service\\\",\\n            \\\"MessageType\\\": \\\"Response\\\",\\n            \\\"POIID\\\": \\\"AMS1-324688179\\\",\\n            \\\"ProtocolVersion\\\": \\\"3.0\\\",\\n            \\\"SaleID\\\": \\\"POSSystemID12345\\\",\\n            \\\"ServiceID\\\": \\\"981\\\"\\n        }\\n    }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<li>\n<p>When you have found the order, finish the card acquisition by making an  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/terminal-api\/latest\/post\/enableservice\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">EnableServiceRequest<\/a> to stop the flow.<br \/>\nConsider including a <code>DisplayOutput<\/code> object with an explanatory message for the shopper, as shown in the following example.<br \/>\n<div data-component-wrapper=\"tag\">\n    <tag :variant=&quot;success&quot;>\n        Reference:\n    <\/tag>\n<\/div>\n<a href=\"\/point-of-sale\/card-acquisition#cancel-completed\" target=\"_blank\">Finish with a cancellation<\/a><\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Stop the card acquisition flow'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n   \\\"SaleToPOIRequest\\\": {\\n      \\\"MessageHeader\\\": {\\n         \\\"ProtocolVersion\\\": \\\"3.0\\\",\\n         \\\"MessageClass\\\": \\\"Service\\\",\\n         \\\"MessageCategory\\\": \\\"EnableService\\\",\\n         \\\"MessageType\\\": \\\"Request\\\",\\n         \\\"ServiceID\\\":\\\"3020711110\\\",\\n         \\\"SaleID\\\":\\\"POSSystemID12345\\\",\\n         \\\"POIID\\\":\\\"AMS1-324688179\\\"\\n      },\\n      \\\"EnableServiceRequest\\\": {\\n         \\\"TransactionAction\\\": \\\"AbortTransaction\\\",\\n         \\\"DisplayOutput\\\": {\\n            \\\"Device\\\": \\\"CustomerDisplay\\\",\\n            \\\"InfoQualify\\\": \\\"Display\\\",\\n            \\\"OutputContent\\\": {\\n               \\\"PredefinedContent\\\": {\\n                  \\\"ReferenceID\\\": \\\"AcceptedAnimated\\\"\\n               },\\n               \\\"OutputFormat\\\": \\\"Text\\\",\\n               \\\"OutputText\\\": [\\n                  {\\n                     \\\"Text\\\": \\\"Thank you!\\\"\\n                  },\\n                  {\\n                     \\\"Text\\\": \\\"We will get your order.\\\"\\n                  }\\n               ]\\n            }\\n         }\\n      }\\n   }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<\/ol>\n<\/li>\n<li>\n<p>Optional, if you used pre-authorization and you support mixed baskets as one transaction:<\/p>\n<p>If the shopper adds in-store items that significantly increase the amount due, make a POST  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments\/(paymentPspReference)\/amountUpdates\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/payments\/{paymentPspReference}\/amountUpdates<\/a> request to adjust the authorization amount.<\/p>\n<p>The following examples show how to adjust the amount for the authorization with PSP reference DXCD52AY3WUGXS93 up from USD&nbsp;124.66 to USD&nbsp;214.03 for added in-store items with a value of USD&nbsp;89.37.<\/p>\n\n<div id=\"tabQuVxW\">\n    <div data-component-wrapper=\"tabs\">\n        <tabs\n                        :items=\"[{&quot;title&quot;:&quot;Asynchronous amount update&quot;,&quot;content&quot;:&quot;\\n&lt;pre&gt;&lt;code class=\\&quot;language-bash\\&quot;&gt;curl https:\\\/\\\/checkout-test.adyen.com\\\/v72\\\/payments\\\/DXCD52AY3WUGXS93\\\/amountUpdates \\\\\\n-H &#039;x-api-key: ADYEN_API_KEY&#039; \\\\\\n-H &#039;content-type: application\\\/json&#039; \\\\\\n-d &#039;{\\n \\&quot;merchantAccount\\&quot;: \\&quot;ADYEN_MERCHANT_ACCOUNT\\&quot;,\\n \\&quot;amount\\&quot;: {\\n     \\&quot;currency\\&quot;: \\&quot;USD\\&quot;,\\n     \\&quot;value\\&quot;: 21403\\n },\\n \\&quot;industryUsage\\&quot;: \\&quot;delayedCharge\\&quot;,\\n \\&quot;reference\\&quot;: \\&quot;YOUR_UNIQUE_REFERENCE\\&quot;\\n}&#039;&lt;\\\/code&gt;&lt;\\\/pre&gt;\\n&quot;,&quot;altTitle&quot;:&quot;asynchronous-method&quot;,&quot;oldTabId&quot;:1,&quot;relation&quot;:&quot;asynchronous-method&quot;},{&quot;title&quot;:&quot;Synchronous authorization adjustment&quot;,&quot;content&quot;:&quot;\\n&lt;p&gt;Regarding the &lt;code&gt;adjustAuthorisationData&lt;\\\/code&gt; value in the request, note the following:&lt;\\\/p&gt;\\n&lt;ul&gt;\\n&lt;li&gt;\\n&lt;p&gt;If you previously extended the authorization, use the &lt;code&gt;adjustAuthorisationData&lt;\\\/code&gt; value received in the response to the last &lt;code&gt;\\\/amountUpdates&lt;\\\/code&gt; extension request that you made for this authorization.&lt;\\\/p&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;If you did not previously extend the authorization, use the &lt;code&gt;adjustAuthorisationData&lt;\\\/code&gt; from the &lt;code&gt;AdditionalResponse&lt;\\\/code&gt; received in the pre-authorization response:&lt;\\\/p&gt;\\n&lt;ul&gt;\\n&lt;li&gt;If you received 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;\\\/li&gt;\\n&lt;li&gt;If you received a Base64-encoded string, Base64-decode the string and copy the value of the &lt;code&gt;adjustAuthorisationData&lt;\\\/code&gt; field.&lt;br \\\/&gt;\\n&lt;br&gt;&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&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 amount update&#039;\\&quot; :id=\\&quot;&#039;&#039;\\&quot; :code-data=\\&quot;[{&amp;quot;language&amp;quot;:&amp;quot;bash&amp;quot;,&amp;quot;tabTitle&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;content&amp;quot;:&amp;quot;curl -X POST https:\\\\\\\/\\\\\\\/checkout-test.adyen.com\\\\\\\/v72\\\\\\\/payments\\\\\\\/DXCD52AY3WUGXS93}\\\\\\\/amountUpdates \\\\\\\\\\\\n-H &#039;x-api-key: ADYEN_API_KEY&#039; \\\\\\\\\\\\n-H &#039;idempotency-key: YOUR_IDEMPOTENCY_KEY&#039; \\\\\\\\\\\\n-H &#039;content-type: application\\\\\\\/json&#039; \\\\\\\\\\\\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;USD\\\\&amp;quot;,\\\\n      \\\\&amp;quot;value\\\\&amp;quot;: 10463\\\\n  },\\\\n  \\\\&amp;quot;reference\\\\&amp;quot;: \\\\&amp;quot;YOUR_UNIQUE_REFERENCE\\\\&amp;quot;,\\\\n  \\\\&amp;quot;adjustAuthorisationData\\\\&amp;quot;: \\\\&amp;quot;CRBCBRN+gcd==...\\\\&amp;quot;\\\\n}&#039;&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&quot;,&quot;altTitle&quot;:&quot;synchronous-method&quot;,&quot;oldTabId&quot;:1,&quot;relation&quot;:&quot;synchronous-method&quot;}]\"\n            :should-update-when-url-changes='true'>\n        <\/tabs>\n    <\/div>\n<\/div>\n\n<\/li>\n<li>\n<p>Make a manual capture request for the amount due:<br \/>\n<a id=\"manual-capture\"><\/a><br \/>\nSend a POST request to the  <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> endpoint, where <code>paymentPspReference<\/code> is the PSP reference from the (pre-)authorization response.<br><\/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>merchantAccount<\/code><\/td>\n<td style=\"text-align: center;\"><span class=\"hint--bottom\" data-hint=\"Required\" markdown=\"1\"><img style=\"width: 25px;\" alt=\"Required\" src=\"\/user\/pages\/reuse\/image-library\/01.icons\/required\/required.svg?decoding=auto&amp;fetchpriority=auto\" \/><\/span><\/td>\n<td style=\"text-align: left;\">The name of your merchant account that is used to process the payment. This depends on how you <a href=\"#sale-attribution\">attribute the sale<\/a>.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>amount.value<\/code><\/td>\n<td style=\"text-align: center;\"><span class=\"hint--bottom\" data-hint=\"Required\" markdown=\"1\"><img style=\"width: 25px;\" alt=\"Required\" src=\"\/user\/pages\/reuse\/image-library\/01.icons\/required\/required.svg?decoding=auto&amp;fetchpriority=auto\" \/><\/span><\/td>\n<td style=\"text-align: left;\">The amount in <a href=\"\/development-resources\/currency-codes\" target=\"_blank\">minor units<\/a> (without a decimal point) being captured. If you made any <code>\/amountUpdates<\/code> requests, this is the amount from your last authorization update.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"sc-notice info\"><div>\n<p>You need to make a partial capture for a smaller amount in these cases:<\/p>\n<ul>\n<li>The whole order is available at pickup but the shopper does not want some of the ordered items.<\/li>\n<li>Only part of the order is available and being picked. If you used pre-authorization: after the partial capture, you can adjust the authorization to a partial amount that covers the items that will be picked up at a later time.\n<\/div><\/div><\/li>\n<\/ul>\n<p>The following example shows a capture request for the authorization with PSP reference DXCD52AY3WUGXS93 for USD&nbsp;124.66.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Checkout API - Manual capture'\" :id=\"''\" :code-data=\"[{&quot;language&quot;:&quot;bash&quot;,&quot;tabTitle&quot;:&quot;&quot;,&quot;content&quot;:&quot;curl https:\\\/\\\/checkout-test.adyen.com\\\/v72\\\/payments\\\/DXCD52AY3WUGXS93\\\/captures \\\\\\n-H 'x-api-key: ADYEN_API_KEY' \\\\\\n-H 'content-type: application\\\/json' \\\\\\n-d '{\\n       \\&quot;merchantAccount\\&quot;: \\&quot;ADYEN_MERCHANT_ACCOUNT\\&quot;,\\n       \\&quot;amount\\&quot;: {\\n          \\&quot;currency\\&quot;: \\&quot;USD\\&quot;,\\n          \\&quot;value\\&quot;: 12466\\n       },\\n       \\&quot;reference\\&quot;: \\&quot;YOUR_ORDER_REFERENCE\\&quot;\\n}'&quot;}]\" :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<li>\n<p>Check the  <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> webhook event message for any issue with the capture.<\/p>\n<p>A response with <code>success<\/code> <span translate=\"no\"><strong>false<\/strong><\/span> and <code>reason<\/code> <span translate=\"no\"><strong>Transaction is expired<\/strong><\/span> means the authorization expired. If you tokenized the original Terminal API payment request, you can make a Checkout API  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/payments<\/a> request with the token.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'If capture failed and the payment was tokenized'\" :id=\"''\" :code-data=\"[{&quot;language&quot;:&quot;json&quot;,&quot;tabTitle&quot;:&quot;&quot;,&quot;content&quot;:&quot;curl https:\\\/\\\/checkout-test.adyen.com\\\/v72\\\/payments \\\\\\n-H 'x-api-key: ADYEN_API_KEY' \\\\\\n-H 'content-type: application\\\/json' \\\\\\n-d '{\\n   \\&quot;amount\\&quot;:{\\n      \\&quot;value\\&quot;:12466,\\n      \\&quot;currency\\&quot;:\\&quot;USD\\&quot;\\n   },\\n   \\&quot;paymentMethod\\&quot;:{\\n      \\&quot;type\\&quot;:\\&quot;scheme\\&quot;,\\n      \\&quot;{hint:The storedPaymentMethodId you received}storedPaymentMethodId{\\\/hint}\\&quot;:\\&quot;M5N7TQ4TG5PFWR50\\&quot;\\n   },\\n   \\&quot;reference\\&quot;:\\&quot;YOUR_ORDER_REFERENCE\\&quot;,\\n   \\&quot;shopperInteraction\\&quot;: \\&quot;ContAuth\\&quot;,\\n   \\&quot;recurringProcessingModel\\&quot;: \\&quot;UnscheduledCardOnFile\\&quot;,\\n   \\&quot;merchantAccount\\&quot;:\\&quot;ADYEN_MERCHANT_ACCOUNT\\&quot;,\\n   \\&quot;shopperReference\\&quot;:\\&quot;YOUR_SHOPPER_REFERENCE\\&quot;\\n}'&quot;}]\" :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<li>\n<p>If you treat mixed baskets as two separate transactions, make a separate Terminal API payment request for the in-store items that the shopper wants to purchase.<\/p>\n<\/li>\n<\/ol>\n<h4>Later returns, after pickup<\/h4>\n<ol>\n<li>\n<p>If the shopper returns one or more of the delivered items, issue a refund using the Terminal API if the items are returned in-store, or using the Checkout API if the items returned to the warehouse.<\/p>\n\n<div id=\"tab9CFBt\">\n    <div data-component-wrapper=\"tabs\">\n        <tabs\n                        :items=\"[{&quot;title&quot;:&quot;Terminal API&quot;,&quot;content&quot;:&quot;\\n&lt;p&gt;Send a Terminal API  &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/terminal-api\\\/latest\\\/post\\\/reversal\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;ReversalRequest&lt;\\\/a&gt; specifying the following details from the Terminal API payment response:&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;OriginalPOITransaction.POITransactionID&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: center;\\&quot;&gt;&lt;span class=\\&quot;hint--bottom\\&quot; data-hint=\\&quot;Required\\&quot; markdown=\\&quot;1\\&quot;&gt;&lt;img style=\\&quot;width: 25px;\\&quot; alt=\\&quot;Required\\&quot; src=\\&quot;\\\/user\\\/pages\\\/reuse\\\/image-library\\\/01.icons\\\/required\\\/required.svg?decoding=auto&amp;amp;fetchpriority=auto\\&quot; \\\/&gt;&lt;\\\/span&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;An object with: &lt;ul&gt;&lt;li markdown=\\&quot;1\\&quot;&gt;&lt;code&gt;TransactionID&lt;\\\/code&gt;: transaction identifier of the payment authorization in the format &lt;code&gt;tenderReference.pspReference&lt;\\\/code&gt;.&lt;\\\/li&gt; &lt;li markdown=\\&quot;1\\&quot;&gt;&lt;code&gt;TimeStamp&lt;\\\/code&gt;: date and time in &lt;a href=\\&quot;https:\\\/\\\/en.wikipedia.org\\\/wiki\\\/ISO_8601#Coordinated_Universal_Time_(UTC)\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;UTC format&lt;\\\/a&gt; of the payment authorization.&lt;\\\/li&gt;&lt;\\\/ul&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;ReversalReason&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: center;\\&quot;&gt;&lt;span class=\\&quot;hint--bottom\\&quot; data-hint=\\&quot;Required\\&quot; markdown=\\&quot;1\\&quot;&gt;&lt;img style=\\&quot;width: 25px;\\&quot; alt=\\&quot;Required\\&quot; src=\\&quot;\\\/user\\\/pages\\\/reuse\\\/image-library\\\/01.icons\\\/required\\\/required.svg?decoding=auto&amp;amp;fetchpriority=auto\\&quot; \\\/&gt;&lt;\\\/span&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;Set to &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;MerchantCancel&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;ReversedAmount&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: center;\\&quot;&gt;&lt;span class=\\&quot;hint--bottom\\&quot; data-hint=\\&quot;Conditionally required\\&quot; markdown=\\&quot;1\\&quot;&gt;&lt;img style=\\&quot;width: 25px;\\&quot; alt=\\&quot;Conditionally required\\&quot; src=\\&quot;\\\/user\\\/pages\\\/reuse\\\/image-library\\\/01.icons\\\/conditionally-required\\\/conditionally-required.svg?decoding=auto&amp;amp;fetchpriority=auto\\&quot; \\\/&gt;&lt;\\\/span&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;Required for partial refunds. &lt;br&gt;The amount (provided as a number, not a string) being returned to the shopper in the partial refund. Must be smaller than or equal to the authorized amount.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;SaleData.SaleToAcquirerData&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: center;\\&quot;&gt;&lt;span class=\\&quot;hint--bottom\\&quot; data-hint=\\&quot;Conditionally required\\&quot; markdown=\\&quot;1\\&quot;&gt;&lt;img style=\\&quot;width: 25px;\\&quot; alt=\\&quot;Conditionally required\\&quot; src=\\&quot;\\\/user\\\/pages\\\/reuse\\\/image-library\\\/01.icons\\\/conditionally-required\\\/conditionally-required.svg?decoding=auto&amp;amp;fetchpriority=auto\\&quot; \\\/&gt;&lt;\\\/span&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;Required for partial refunds. &lt;br&gt; The currency of the refund, in the format &lt;code&gt;currency=ABC&lt;\\\/code&gt; where &lt;code&gt;ABC&lt;\\\/code&gt; is the three-letter &lt;a href=\\&quot;\\\/development-resources\\\/currency-codes\\&quot; target=\\&quot;_blank\\&quot;&gt;currency code&lt;\\\/a&gt; of the payment authorization.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;SaleData.SaleTransactionID&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;An object with: &lt;ul&gt;&lt;li markdown=\\&quot;1\\&quot;&gt;&lt;code&gt;TransactionID&lt;\\\/code&gt;: your reference for the refund. In your Customer Area and Adyen reports, this will show as the &lt;strong&gt;merchant reference&lt;\\\/strong&gt;.&lt;\\\/li&gt; &lt;li markdown=\\&quot;1\\&quot;&gt;&lt;code&gt;TimeStamp&lt;\\\/code&gt;: date and time in &lt;a href=\\&quot;https:\\\/\\\/en.wikipedia.org\\\/wiki\\\/ISO_8601#Coordinated_Universal_Time_(UTC)\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;UTC format&lt;\\\/a&gt; of the refund.&lt;\\\/li&gt;&lt;\\\/ul&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/tbody&gt;\\n&lt;\\\/table&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;Terminal API - Partial referenced refund of USD 30.53&#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;SaleToPOIRequest\\\\\\&quot;: {\\\\n      \\\\\\&quot;MessageHeader\\\\\\&quot;: {\\\\n         \\\\\\&quot;ProtocolVersion\\\\\\&quot;: \\\\\\&quot;3.0\\\\\\&quot;,\\\\n         \\\\\\&quot;MessageClass\\\\\\&quot;: \\\\\\&quot;Service\\\\\\&quot;,\\\\n         \\\\\\&quot;MessageCategory\\\\\\&quot;: \\\\\\&quot;Reversal\\\\\\&quot;,\\\\n         \\\\\\&quot;MessageType\\\\\\&quot;: \\\\\\&quot;Request\\\\\\&quot;,\\\\n         \\\\\\&quot;SaleID\\\\\\&quot;: \\\\\\&quot;POSSystemID12345\\\\\\&quot;,\\\\n         \\\\\\&quot;ServiceID\\\\\\&quot;: \\\\\\&quot;207111108\\\\\\&quot;,\\\\n         \\\\\\&quot;POIID\\\\\\&quot;: \\\\\\&quot;AMS1-324688179\\\\\\&quot;\\\\n      },\\\\n      \\\\\\&quot;ReversalRequest\\\\\\&quot;: {\\\\n         \\\\\\&quot;OriginalPOITransaction\\\\\\&quot;: {\\\\n            \\\\\\&quot;POITransactionID\\\\\\&quot;: {\\\\n               \\\\\\&quot;TransactionID\\\\\\&quot;: \\\\\\&quot;CW1r112876209163113.DXCD52AY3WUGXS93\\\\\\&quot;,\\\\n               \\\\\\&quot;TimeStamp\\\\\\&quot;: \\\\\\&quot;2026-02-10T12:30:05.314-06:00\\\\\\&quot;\\\\n            }\\\\n         },\\\\n         \\\\\\&quot;ReversalReason\\\\\\&quot;: \\\\\\&quot;MerchantCancel\\\\\\&quot;,\\\\n         \\\\\\&quot;ReversedAmount\\\\\\&quot;: 30.53,\\\\n         \\\\\\&quot;SaleData\\\\\\&quot;: {\\\\n            \\\\\\&quot;SaleToAcquirerData\\\\\\&quot;: \\\\\\&quot;currency=USD\\\\\\&quot;,\\\\n            \\\\\\&quot;SaleTransactionID\\\\\\&quot;: {\\\\n               \\\\\\&quot;TimeStamp\\\\\\&quot;: \\\\\\&quot;2026-02-12T11:04:12.159-06:00\\\\\\&quot;,\\\\n               \\\\\\&quot;TransactionID\\\\\\&quot;: \\\\\\&quot;YOUR_UNIQUE_REFERENCE\\\\\\&quot;\\\\n            }\\\\n         }\\\\n      }\\\\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;p&gt;&lt;div data-component-wrapper=\\&quot;tag\\&quot;&gt;\\n    &lt;tag :variant=&amp;quot;success&amp;quot;&gt;\\n        Reference:\\n    &lt;\\\/tag&gt;\\n&lt;\\\/div&gt;\\n&lt;a href=\\&quot;\\\/point-of-sale\\\/basic-tapi-integration\\\/refund-payment\\\/referenced#refund-ecommerce-payment\\&quot; target=\\&quot;_blank\\&quot;&gt;Make a referenced refund&lt;\\\/a&gt;&lt;\\\/p&gt;\\n&quot;,&quot;altTitle&quot;:null,&quot;oldTabId&quot;:1,&quot;relation&quot;:&quot;&quot;},{&quot;title&quot;:&quot;Checkout API&quot;,&quot;content&quot;:&quot;\\n&lt;p&gt;Send a POST request to the  &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/Checkout\\\/latest\\\/post\\\/payments\\\/(paymentPspReference)\\\/refunds\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;\\\/payments\\\/{paymentPspReference}\\\/refunds&lt;\\\/a&gt; endpoint, specifying the PSP reference of the authorization in the path.&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;merchantAccount&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: center;\\&quot;&gt;&lt;span class=\\&quot;hint--bottom\\&quot; data-hint=\\&quot;Required\\&quot; markdown=\\&quot;1\\&quot;&gt;&lt;img style=\\&quot;width: 25px;\\&quot; alt=\\&quot;Required\\&quot; src=\\&quot;\\\/user\\\/pages\\\/reuse\\\/image-library\\\/01.icons\\\/required\\\/required.svg?decoding=auto&amp;amp;fetchpriority=auto\\&quot; \\\/&gt;&lt;\\\/span&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. This depends on how you &lt;a href=\\&quot;#sale-attribution\\&quot;&gt;attribute the sale&lt;\\\/a&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;amount&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: center;\\&quot;&gt;&lt;span class=\\&quot;hint--bottom\\&quot; data-hint=\\&quot;Required\\&quot; markdown=\\&quot;1\\&quot;&gt;&lt;img style=\\&quot;width: 25px;\\&quot; alt=\\&quot;Required\\&quot; src=\\&quot;\\\/user\\\/pages\\\/reuse\\\/image-library\\\/01.icons\\\/required\\\/required.svg?decoding=auto&amp;amp;fetchpriority=auto\\&quot; \\\/&gt;&lt;\\\/span&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;The amount that you want to refund. The &lt;code&gt;value&lt;\\\/code&gt; must be the same or less than the captured amount. The &lt;code&gt;currency&lt;\\\/code&gt; must match the currency used in the authorization.&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 for the refund, for example to tag a partial refund for future reconciliation.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/tbody&gt;\\n&lt;\\\/table&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;Checkout API - Partial referenced refund of USD 30.53&#039;\\&quot; :id=\\&quot;&#039;&#039;\\&quot; :code-data=\\&quot;[{&amp;quot;language&amp;quot;:&amp;quot;bash&amp;quot;,&amp;quot;tabTitle&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;content&amp;quot;:&amp;quot;curl https:\\\\\\\/\\\\\\\/checkout-test.adyen.com\\\\\\\/v72\\\\\\\/payments\\\\\\\/DXCD52AY3WUGXS93\\\\\\\/refunds \\\\\\\\\\\\n-H &#039;x-api-key: ADYEN_API_KEY&#039; \\\\\\\\\\\\n-H &#039;content-type: application\\\\\\\/json&#039; \\\\\\\\\\\\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;USD\\\\&amp;quot;,\\\\n         \\\\&amp;quot;value\\\\&amp;quot;: 3053\\\\n      },\\\\n      \\\\&amp;quot;reference\\\\&amp;quot;: \\\\&amp;quot;YOUR_UNIQUE_REFERENCE\\\\&amp;quot;\\\\n}&#039;&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;p&gt;&lt;div data-component-wrapper=\\&quot;tag\\&quot;&gt;\\n    &lt;tag :variant=&amp;quot;success&amp;quot;&gt;\\n        Reference:\\n    &lt;\\\/tag&gt;\\n&lt;\\\/div&gt;\\n&lt;a href=\\&quot;\\\/online-payments\\\/refund\\&quot; target=\\&quot;_blank\\&quot;&gt;Refund a payment&lt;\\\/a&gt;&lt;\\\/p&gt;\\n&quot;,&quot;altTitle&quot;:null,&quot;oldTabId&quot;:1,&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>See also<\/h2>\n<div class=\"see-also-links output-inline\" id=\"see-also\">\n<ul><li><a href=\"\/industries\/feature-packs?industry=retail&amp;channel=omni&amp;target=_blank\"\n                        target=\"_self\"\n                        >\n                    Features per industry: Retail omnichannel\n                <\/a><\/li><li><a href=\"\/unified-commerce\/retail-use-cases\"\n                        target=\"_self\"\n                        >\n                    Other retail omnichannel use cases\n                <\/a><\/li><\/ul><\/div>\n","url":"https:\/\/docs.adyen.com\/unified-commerce\/retail-use-cases\/endless-aisle\/e-a-store-pickup","articleFields":{"description":"Endless aisle: Order in store and pick up in store.","type":"page","_expandable":{"operations":""}},"algolia":{"url":"https:\/\/docs.adyen.com\/unified-commerce\/retail-use-cases\/endless-aisle\/e-a-store-pickup","title":"Order in store, pick up in store","content":"In this Endless Aisle retail use case, online items are ordered in a store, and authorized using a payment terminal. The order is then picked up at the shopper's preferred store. The payment is captured upon pickup. If not all ordered items become available for pickup at the same time, the shopper has to make several trips to the store and there will be corresponding partial captures.\nThis use case also covers a \"mixed basket\", where the shopper adds items that are available at the store to the ordered online items. This is possible both when ordering the online items, and when picking up the order. The payment for the in-store items is captured on the spot.\nRequirements\nBefore you begin, take into account the following information.\n\n\n\nRequirement\nDescription\n\n\n\n\nIntegration type\nYou must have both an ecommerce integration and a point-of-sale integration with Adyen.\n\n\nYour systems\nIt is essential to have (or create) a consolidated order\/inventory management or ERP system. Or alternatively, you must have an orchestration layer that communicates with your various sub-systems and can consume webhook messages. This is because shoppers may return items to the store or to the warehouse, and both systems need to be able to update the inventory in case of a return.\n\n\nPreparation\nWe recommend familiarizing yourself with specific concepts so that you can make informed decisions about integration choices. See Considerations for details.\n\n\n\nShopper journey\nFrom the shopper's perspective, this Endless Aisle retail use case is as follows.\nIn the store, it turns out that items that the shopper wants to purchase are not available at the location. Store staff helps the shopper to order the items online, and select the store where they want to pick up the order. If desired, the shopper can combine the online order with purchasing items from the store that do not need to be ordered. The shopper presents their card on the payment terminal.\nWhen the order arrives at the selected store, the shopper is notified. The shopper goes to the store for pickup, and identifies by presenting their card on the payment terminal. The shopper is then handed the ordered goods. If desired, the shopper can combine picking up the online order with purchasing items that are available in the store.\nThe following diagram illustrates this shopper journey.\nCmdyYXBoIExSCiAgICBBKChPcmRlcjxicj5pbiBzdG9yZSkpOjo6c3RlcFN0eWxlIC0tPiBCe0FkZDxicj5pdGVtcz99Ojo6c3RlcFN0eWxlCiAgICBCIC0tIFllcyAtLT4gQ1tQcmVzZW50PGJyPmNhcmQgb248YnI+dGVybWluYWxdOjo6c3RlcFN0eWxlCiAgICBCIC0tIE5vIC0tPiBDW1ByZXNlbnQ8YnI+Y2FyZCBvbjxicj50ZXJtaW5hbF06OjpzdGVwU3R5bGUKICAgIEMgLS0+IERbUmVjZWl2ZTxicj5ub3RpZmljYXRpb25dOjo6c3RlcFN0eWxlCiAgICBEIC0tPiBFW0dvIHRvIHN0b3JlPGJyPmZvciBwaWNrdXBdOjo6c3RlcFN0eWxlCiAgICBFIC0tPiBGe0FkZDxicj5pdGVtcz99Ojo6c3RlcFN0eWxlCiAgICBGIC0tIFllcyAtLT4gR1tQcmVzZW50PGJyPmNhcmQgb248YnI+dGVybWluYWxdOjo6c3RlcFN0eWxlCiAgICBGIC0tIE5vIC0tPiBHW1ByZXNlbnQ8YnI+Y2FyZCBvbjxicj50ZXJtaW5hbF06OjpzdGVwU3R5bGUKICAgIEcgLS0+IEgoKFJlY2VpdmUgaXRlbXM8YnI+YXQgcGlja3VwKSk6OjpmaW5hbFN0eWxlCgolJSBTdHlsZXMKICAgIGNsYXNzRGVmIHRvcFN0eWxlIGZpbGw6IzAwMCxzdHJva2U6IzAwMCxjb2xvcjojZmZmCiAgICBjbGFzc0RlZiBjYXRlZ29yeVN0eWxlIGZpbGw6IzQ0NCxzdHJva2U6IzMzMyxjb2xvcjojZmZmCiAgICBjbGFzc0RlZiBzdGVwU3R5bGUgZmlsbDojZmZmLHN0cm9rZTojMGFiZjUzLHN0cm9rZS13aWR0aDoycHgsY29sb3I6IzAwMAogICAgY2xhc3NEZWYgZmluYWxTdHlsZSBmaWxsOiMwYWJmNTMsc3Ryb2tlOiMwNzhkM2UsY29sb3I6IzAwMAo=\nConsiderations\nBefore you set up a flow for this use case, there are a couple of points that you must be aware of or make a decision on.\nLegal entity and location\nIn this use case, you use the payment terminal to authorize the online order.\nIf you want to process your Endless Aisle online transactions over a different merchant account than the regular in-person transactions, ask your Ayden Account Manager or Implementation Engineer about Merchant Account Sharing. With this, orders for both merchant accounts are processed on the same terminal, but kept separate. Enabling Merchant Account Sharing is subject to compliance approval. Terminals require a local legal entity.\nIf compliance approval is not given, you have other options to keep the transactions separate:\n\nYou can use separate terminals for regular in-store transactions and Endless Aisle transactions.\nOr you can set up multiple stores under the same merchant account. This keeps the reporting simple.\nAlternatively, instead of authorizing Endless Aisle online orders on a payment terminal, you can use Pay by Link payment links.\n\n\n    \n        Reference:\n    \n\n Pay by Link\nCapture settings\nThis use case requires specific procedures to capture the payment. You must enable and use manual capture, and contact our Support Team to enable multiple partial captures.\nFor the ordered items, the amount is initially authorized, but not captured. When the shopper picks up the items in the store, you make a manual capture request. If all items are picked up at the same time, you capture the full amount. If items are picked up at different times, you make a partial capture request for each pickup. If the shopper drops online items when picking up the order, you make a partial capture request for the reduced amount.\nIt depends on your other use cases whether it is best to enable manual capture for every payment, or in the API request for an individual payment.\n\n    \n        Reference:\n    \n\n Enable manual capture, Partial manual capture, Capture a payment\nAuthorization expiry and late capture\nAfter sending a notification that the order is ready for pickup and waiting for the shopper to collect the order, it is possible that the authorization has expired when you try to capture the payment. To deal with that, you have several options:\n\n\nImplement authorization adjustments.\nYou pre-authorize the order, and after a while send a \/payments\/{paymentPspReference}\/amountUpdates request with the amount due, to renew the authorization. You can repeat this several times as needed, but each adjustment incurs costs.\nYou need to choose between a synchronous flow or an asynchronous flow. In the synchronous flow you keep track of an adjustAuthorisationData blob that you pass from request to request. In the asynchronous flow you rely on webhooks to learn if the authorization adjustment succeeded.\nAuthorization adjustment is also useful for:\n\nPartial capture scenarios where only part of the order is picked up: after the partial capture you renew the authorization for a partial amount, to cover the items that will be picked up later.\nAdded in-store items at pickup, if you treat mixed baskets as one transaction: if the amount due increases substantially, you adjust the authorized amount upwards and then make a single capture request. Note that if the shopper drops online items when picking up the order you could adjust the amount down, but a partial capture request for a reduced amount is simpler and more cost-effective.\n\n\n    \n        Reference:\n    \n\n Pre-authorization and authorization adjustment, Expiration of pre-authorizations\n\n\nUse the Extend on capture feature.\nWhen you capture the payment, Adyen checks the status of the initial authorization. If the authorization has expired, we perform a new authorization request. This feature is supported for American Express, Mastercard, and Visa.\n\n\nImplement tokenization.\nIn your Terminal API payment request for the online items, you include tokenization parameters so that you receive a token and a shopper reference in the response. If at capture it turns out the initial authorization has expired, you make a new payment request to the Checkout API  \/payments endpoint. This request includes the token and shopper reference.\n\n    \n        Reference:\n    \n\n Tokenization at the point of sale, Make an unscheduled card-on-file payment\n\n\nMixed baskets\nIf you want to support mixed baskets, where the shopper combines an online order with items that are available in the store, we recommend discussing your Adyen account structure and capture strategy with your Adyen implementation engineer or account manager.\nYou have the following options for capturing the payment:\n\n\nOne transaction with multiple partial captures: this option requires that online and in-store items are processed under the same merchant account.\n\nFor a mixed basket when the shopper places the order, you authorize the full amount of both the online order and the point-of-sale items, and make a partial capture request for the in-store items. Later, you make one or more partial captures as the ordered items are picked up.\nFor a mixed basket when the shopper picks up the order, you adjust the authorized amount upwards for the added in-store items and then make a single capture request. This option requires that you used pre-authorization on the initial payment request.\n\n\n\nTwo separate transactions: you authorize the online order and capture the amount later as ordered items are picked up. For the in-store items, you make a separate payment request and capture the amount automatically, immediately or with a capture delay. This approach applies for mixed baskets both when the shopper places the order, and when the shopper picks up the order.\n\n\n\n    \n        Reference:\n    \n\n Account structures for mixed baskets, Delayed automatic capture. Also see the references under \"Capture\" above.\nCard recognition\nAt order pickup, you use a card acquisition request to find the shopper's order: the shopper presents their card or other payment instrument to the payment terminal. You then use the card alias or PAR from the response to look up the shopper and the order in your CRM system.\nTo use card acquisition in this way, you must enable receiving shopper identifying data in API responses, and you must store the card alias and\/or the Payment Account Reference (PAR) in the shopper's profile.\nIf the shopper does not have a record in your CRM system yet at the time of ordering, the CRM must also support manual entry of shopper details and creation of a new CRM record.\n\n    \n        Reference:\n    \n\n Card acquisition, Receive card and shopper identifiers, Card recognition.\nSale attribution\nYou need to decide beforehand on how you will attribute the sale: if items are online items but ordered and paid for in-store, is this an in-store sale or an ecommerce sale?\nRefunds and discounts\nIf the shopper does not want an ordered item, the item may be returned to the store (during pickup or later), or to the warehouse. Both systems must be able to look up the PSP reference for the order and issue a (partial) referenced refund. You need to support both:\n\nTerminal API referenced refunds from the POS to the terminal for returns brought to the store.\nCheckout API referenced refunds for returns sent to the warehouse.\n\nIf discounts are offered over the phone or chat, customer service agents must be able to trigger partial referenced refunds as well.\n\n    \n        Reference:\n    \n\n Terminal API partial referenced refund, Checkout API refund\nAPI flow\nThere are several Adyen API requests involved in the described shopper journey, as shown in the following diagrams for:\n\nThe flow without mixed baskets and the flow with mixed baskets as a single transaction. These flows are very similar.\nThe flow with mixed baskets as separate transactions.\n\nThe next section, \"Instructions\", provides more details about the API flow.\nNo mixed basket or mixed basket as one transaction\nCnNlcXVlbmNlRGlhZ3JhbQogICAgcGFydGljaXBhbnQgU2hvcHBlcgogICAgcGFydGljaXBhbnQgRVJQCiAgICBwYXJ0aWNpcGFudCBQT1MKICAgIHBhcnRpY2lwYW50IEFkeWVuCgogICAgU2hvcHBlci0+PkVSUDogT3JkZXIgb25saW5lIGl0ZW1zCiAgICBvcHQgTWl4ZWQgYmFza2V0CiAgICAgICAgU2hvcHBlci0+PlBPUzogQWRkIGluLXN0b3JlIGl0ZW1zCiAgICBlbmQKICAgIFNob3BwZXItPj5QT1M6IEF1dGhvcml6ZSB0aGUgdHJhbnNhY3Rpb24KICAgIFBPUy0+PkFkeWVuOiBDYXJkIGFjcXVpc2l0aW9uIHJlcXVlc3QgZm9yIHdob2xlIGJhc2tldAogICAgQWR5ZW4tPj5QT1M6IENhcmQgYWNxdWlzaXRpb24gcmVzcG9uc2UKICAgIFBPUy0+PkVSUDogQWRkIHBpY2t1cCBzdG9yZSBhbmQgY29udGFjdCBkZXRhaWxzIHRvIG9yZGVyCiAgICBQT1MtPj5BZHllbjogVGVybWluYWwgQVBJIHBheW1lbnQgcmVxdWVzdCB3aXRoIG1hbnVhbCBjYXB0dXJlPGJyPk9wdGlvbmFsOiBwcmUtYXV0aG9yaXphdGlvbiBvciB0b2tlbml6YXRpb24KICAgIEFkeWVuLT4+UE9TOiBQYXltZW50IHJlc3BvbnNlCiAgICBvcHQgTWl4ZWQgYmFza2V0OiBJbi1zdG9yZSBpdGVtcyBhZGRlZAogICAgICAgIFBPUy0+PkFkeWVuOiBQYXJ0aWFsIG1hbnVhbCBjYXB0dXJlIG9mIGluLXN0b3JlIGl0ZW1zCiAgICAgICAgQWR5ZW4tPj5QT1M6IENhcHR1cmUgcmVzcG9uc2UKICAgIGVuZAogICAgRVJQLT4+U2hvcHBlcjogTm90aWZ5IG9yZGVyIHJlYWR5CiAgICBvcHQgRXh0ZW5kIGF1dGhvcml6YXRpb24gZm9yIG9ubGluZSBpdGVtcywgaWYgcHJlLWF1dGggd2FzIHVzZWQKICAgICAgICBFUlAtPj5BZHllbjogL3BheW1lbnRzL3twYXltZW50UHNwUmVmZXJlbmNlfS9hbW91bnRVcGRhdGVzIHJlcXVlc3QKICAgICAgICBBZHllbi0+PkVSUDogL2Ftb3VudFVwZGF0ZXMgcmVzcG9uc2UKICAgIGVuZAogICAgU2hvcHBlci0+PlBPUzogSWRlbnRpZnkgYXQgcGlja3VwCiAgICBQT1MtPj5BZHllbjogQ2FyZCBhY3F1aXNpdGlvbiByZXF1ZXN0CiAgICBBZHllbi0+PlBPUzogQ2FyZCBhY3F1aXNpdGlvbiByZXNwb25zZQogICAgUE9TLT4+QWR5ZW46IEVuYWJsZSBzZXJ2aWNlIHJlcXVlc3QgdG8gc3RvcCBjYXJkIGFjcXVpc2l0aW9uCiAgICBBZHllbi0+PlBPUzogRW5hYmxlIHNlcnZpY2UgcmVzcG9uc2UKICAgIG9wdCBNaXhlZCBiYXNrZXQ6IGFkanVzdCBhdXRob3JpemF0aW9uIGZvciBhZGRlZCBpbi1zdG9yZSBpdGVtcywgaWYgcHJlLWF1dGggd2FzIHVzZWQKICAgICAgICBTaG9wcGVyLS0+PlBPUzogQWRkIGluLXN0b3JlIGl0ZW1zCiAgICAgICAgUE9TLT4+QWR5ZW46IC9wYXltZW50cy97cGF5bWVudFBzcFJlZmVyZW5jZX0vYW1vdW50VXBkYXRlcyByZXF1ZXN0CiAgICAgICAgQWR5ZW4tPj5QT1M6IC9hbW91bnRVcGRhdGVzIHJlc3BvbnNlCiAgICBlbmQKICAgIFBPUy0+PkFkeWVuOiBNYW51YWwgY2FwdHVyZSBvZiB0aGUgZmluYWwgYW1vdW50IGR1ZQogICAgQWR5ZW4tPj5QT1M6IENhcHR1cmUgcmVzcG9uc2UKICAgIG9wdCBJZiBhdXRoIGV4cGlyZWQgYW5kIHBheW1lbnQgd2FzIHRva2VuaXplZCwgbWFrZSBwYXltZW50IHdpdGggdG9rZW4KICAgICAgICBQT1MtPj5BZHllbjogL3BheW1lbnRzIHJlcXVlc3QKICAgICAgICBBZHllbi0+PlBPUzogL3BheW1lbnRzIHJlc3BvbnNlCiAgICBlbmQKICAgIG9wdCBSZXR1cm4gdG8gc3RvcmUgbGF0ZXIsIGFmdGVyIHBpY2t1cAogICAgICAgIFNob3BwZXItLT4+UE9TOiBSZXR1cm4gaXRlbXMKICAgICAgICBQT1MtPj5BZHllbjogVGVybWluYWwgQVBJIHJlZnVuZCByZXF1ZXN0CiAgICAgICAgQWR5ZW4tPj5QT1M6IFJlZnVuZCByZXNwb25zZQogICAgZW5kCiAgICBvcHQgUmV0dXJuIHRvIHdhcmVob3VzZQogICAgICAgIFNob3BwZXItLT4+RVJQOiBSZXR1cm4gaXRlbXMKICAgICAgICBFUlAtPj5BZHllbjogQ2hlY2tvdXQgQVBJIHJlZnVuZCByZXF1ZXN0CiAgICAgICAgQWR5ZW4tPj5FUlA6IFJlZnVuZCByZXNwb25zZQogICAgZW5kCg==\nMixed basket as two transactions\nWe usually recommend delayed automatic capture for point-of-sale transactions. That is why the diagram shows automatic capture for the separate payment request related to the in-store items.\nCnNlcXVlbmNlRGlhZ3JhbQogICAgcGFydGljaXBhbnQgU2hvcHBlcgogICAgcGFydGljaXBhbnQgRVJQCiAgICBwYXJ0aWNpcGFudCBQT1MKICAgIHBhcnRpY2lwYW50IEFkeWVuCgogICAgU2hvcHBlci0+PkVSUDogT3JkZXIgb25saW5lIGl0ZW1zCiAgICBub3RlIG92ZXIgU2hvcHBlciwgUE9TOiBNaXhlZCBiYXNrZXQKICAgIFNob3BwZXItPj5QT1M6IEFkZCBpbi1zdG9yZSBpdGVtcwogICAgU2hvcHBlci0+PlBPUzogQXV0aG9yaXplIHRyYW5zYWN0aW9uCiAgICBQT1MtPj5BZHllbjogQ2FyZCBhY3F1aXNpdGlvbiByZXF1ZXN0CiAgICBBZHllbi0+PlBPUzogQ2FyZCBhY3F1aXNpdGlvbiByZXNwb25zZQogICAgUE9TLT4+RVJQOiBBZGQgcGlja3VwIHN0b3JlIGFuZCBjb250YWN0IGRldGFpbHMgdG8gb3JkZXIKICAgIG5vdGUgb3ZlciBQT1MsIEFkeWVuOiBObyBjYXB0dXJlIHlldCBvZiBvbmxpbmUgaXRlbXMKICAgIFBPUy0+PkFkeWVuOiBUZXJtaW5hbCBBUEkgcGF5bWVudCByZXF1ZXN0IDEgZm9yIG9ubGluZSBpdGVtcyB3aXRoIG1hbnVhbCBjYXB0dXJlPGJyPk9wdGlvbmFsOiBwcmUtYXV0aG9yaXNhdGlvbiBvciB0b2tlbml6YXRpb24KICAgIEFkeWVuLT4+UE9TOiBQYXltZW50IHJlc3BvbnNlIDEKICAgIG5vdGUgb3ZlciBQT1MsIEFkeWVuOiBJbW1lZGlhdGUgb3IgZGVsYXllZCBhdXRvbWF0aWMgY2FwdHVyZSBvZiBpbi1zdG9yZSBpdGVtcwogICAgUE9TLT4+QWR5ZW46IFRlcm1pbmFsIEFQSSBQYXltZW50IHJlcXVlc3QgMiBmb3IgaW4tc3RvcmUgaXRlbXMKICAgIEFkeWVuLT4+UE9TOiBQYXltZW50IHJlc3BvbnNlIDIgd2l0aCBhdXRvbWF0aWMgY2FwdHVyZQogICAgRVJQLT4+U2hvcHBlcjogTm90aWZ5IG9yZGVyIHJlYWR5CiAgICBvcHQgRXh0ZW5kIGF1dGhvcml6YXRpb24gZm9yIG9ubGluZSBpdGVtcywgaWYgcHJlLWF1dGhvcml6YXRpb24gd2FzIHVzZWQKICAgICAgICBFUlAtPj5BZHllbjogL3BheW1lbnRzL3twYXltZW50UHNwUmVmZXJlbmNlfS9hbW91bnRVcGRhdGVzIHJlcXVlc3QKICAgICAgICBBZHllbi0+PkVSUDogL2Ftb3VudFVwZGF0ZXMgcmVzcG9uc2UKICAgIGVuZAogICAgU2hvcHBlci0+PlBPUzogSWRlbnRpZnkgYXQgcGlja3VwCiAgICBQT1MtPj5BZHllbjogQ2FyZCBhY3F1aXNpdGlvbiByZXF1ZXN0CiAgICBBZHllbi0+PlBPUzogQ2FyZCBhY3F1aXNpdGlvbiByZXNwb25zZQogICAgUE9TLT4+QWR5ZW46IEVuYWJsZSBzZXJ2aWNlIHJlcXVlc3QgdG8gc3RvcCBjYXJkIGFjcXVpc2l0aW9uCiAgICBBZHllbi0+PlBPUzogRW5hYmxlIHNlcnZpY2UgcmVzcG9uc2UKICAgIG5vdGUgb3ZlciBQT1MsIEFkeWVuOiBNYW51YWwgY2FwdHVyZSBvZiBvbmxpbmUgaXRlbXMKICAgIFBPUy0+PkFkeWVuOiBNYW51YWwgY2FwdHVyZSwgcGFydGlhbCBpZiBpdGVtcyBhcmUgZHJvcHBlZAogICAgQWR5ZW4tPj5QT1M6IENhcHR1cmUgcmVzcG9uc2UKICAgIG9wdCBJZiBhdXRoIGV4cGlyZWQgYW5kIHBheW1lbnQgd2FzIHRva2VuaXplZCwgbWFrZSBwYXltZW50IHdpdGggdG9rZW4KICAgICAgICBQT1MtPj5BZHllbjogL3BheW1lbnRzIHJlcXVlc3QKICAgICAgICBBZHllbi0+PlBPUzogL3BheW1lbnRzIHJlc3BvbnNlCiAgICBlbmQKICAgIFNob3BwZXItLT4+UE9TOiBBZGQgaW4tc3RvcmUgaXRlbXMgYXQgcGlja3VwCiAgICBub3RlIG92ZXIgUE9TLCBBZHllbjogSW1tZWRpYXRlIG9yIGRlbGF5ZWQgYXV0b21hdGljIGNhcHR1cmUgb2YgaW4tc3RvcmUgaXRlbXMKICAgIFBPUy0+PkFkeWVuOiBUZXJtaW5hbCBBUEkgUGF5bWVudCByZXF1ZXN0IGZvciBpbi1zdG9yZSBpdGVtcwogICAgQWR5ZW4tPj5QT1M6IFBheW1lbnQgcmVzcG9uc2Ugd2l0aCBhdXRvbWF0aWMgY2FwdHVyZQogICAgb3B0IFJldHVybiB0byBzdG9yZSBsYXRlciwgYWZ0ZXIgaW5pdGlhbCBwaWNrdXAKICAgICAgICBTaG9wcGVyLS0+PlBPUzogUmV0dXJuIGl0ZW1zCiAgICAgICAgUE9TLT4+QWR5ZW46IFRlcm1pbmFsIEFQSSByZWZ1bmQgcmVxdWVzdAogICAgICAgIEFkeWVuLT4+UE9TOiBSZWZ1bmQgcmVzcG9uc2UKICAgIGVuZAogICAgb3B0IFJldHVybiB0byB3YXJlaG91c2UKICAgICAgICBTaG9wcGVyLS0+PkVSUDogUmV0dXJuIGl0ZW1zCiAgICAgICAgRVJQLT4+QWR5ZW46IENoZWNrb3V0IEFQSSByZWZ1bmQgcmVxdWVzdAogICAgICAgIEFkeWVuLT4+RVJQOiBSZWZ1bmQgcmVzcG9uc2UKICAgIGVuZAo=\nInstructions\nThis section provides high-level instructions focusing on how to use the Adyen APIs and webhooks in the described shopper journey.\n\nThe code samples show the minimally required parameters. You can add more parameters.\n\nContact details\nAfter the shopper has ordered the online items and selected a pickup store:\n\n\nMake a Terminal API  CardAcquisitionRequest where the CardAcquisitionTransaction object contains the TotalAmount field with the purchase amount for the ordered items.\nIf you support mixed baskets as a single transaction, use the total amount of the basket: the purchase amount for the ordered online items and any items from the store.\nIf you support mixed baskets as two separate transactions, use only the amount of the ordered online items.\n\n    \n        Reference:\n    \n\nCard acquisition\n\n\n\n\n\nWhen you receive the  CardAcquisitionResponse, save the following information:\n\nAdditionalResponse.PaymentAccountReference: the PAR, if present.\nAdditionalResponse.alias: the card alias.\nThe TimeStamp and TransactionID from the POIData.POITransactionID object. You need these values later, when you (pre-)authorize the transaction.\n\nThe following example shows the AdditionalResponse as a string of key-value pairs concatenated with an ampersand (&amp;). It is possible you receive a Base64-encoded string instead, which you need to Base64 decode first.\n\n\n\n\n\nUse the card alias and\/or PAR from the card acquisition response to look up the shopper's contact details in your ERP system. You need the contact details later, to send a notification when the order is ready for pickup.\n\n\nIf the shopper is found in the ERP system, let the shop assistant verify the contact details with the shopper.\nEnsure the shop assistant can update this information in the ERP system, if needed.\n\n\nIf the shopper is not found in the ERP system, add a record for the shopper to the ERP system with the card alias and\/or PAR from the card acquisition response, and the other details that you need, specifically the contact details and the name of the shopper. You can collect those other details in various ways, for example:\n\nThe shop assistant asks the shopper for the details.\nYou collect the shopper's details on a secondary screen, for instance a tablet.\nYou use input requests to collect the shopper's details on the payment terminal.\n\n\n\nMake sure the pickup store location is included on the order.\n\n\n(Pre-)authorization\n\n\nMake a Terminal API  PaymentRequest with:\n\n\nPaymentData.CardAcquisitionReference: an object with the TimeStamp and TransactionID returned in the POIData.POITransactionID object of the card acquisition response.\n\n\nPaymentTransaction.AmountsReq: an object with the Currency and the RequestedAmount.\nIf you support mixed baskets as a single transaction, use the total amount of the basket.\nIf you support mixed baskets as two separate transactions, use only the amount of the ordered online items.\n\n\nSaleToAcquirerData: a parameter with manualCapture set to true. Optionally you can add SaleToAcquirerData parameters to pre-authorize or tokenize the transactions, as a method to handle authorization expiry and late captures.\nUse one of the following formats to provide the SaleToAcquirerData value:\n\nOption 1: A JSON object converted to a Base64-encoded string.\nOption 2: Key-value pairs.\n\n\n    \n        Reference:\n    \n\nEnable manual capture for a payment\n\n\n\n\n    \n        \n        \n    \n\n\n\n\nWhen you receive the payment response, save details from the following fields:\n\n\nPOITransactionID.TransactionID: save the transaction ID. This is provided in the format tenderReference.pspReference, for example, CW1r112876209163113.DXCD52AY3WUGXS93. The PSP reference is also provided in the AdditionalResponse.\nYou need the PSP reference later, to extend or adjust the authorization, and to capture the payment. You also need the PSP reference if the shopper returns items to the warehouse.\nYou need the full transaction ID if the shopper returns items to the store.\n\n\nAdditionalResponse:\n\n\nIf you use synchronous authorization adjustment, save the adjustAuthorisationData. You need this data blob later, to extend or adjust the authorization.\n\n\nIf you use tokenization, save the token (recurring.recurringDetailReference or tokenization.storedPaymenMethodId) and the shopper reference (recurring.shopperReference or tokenization.shopperReferece).\n\n\n\n\nPOITransactionID.TimeStamp: save the payment date and time. You need the timestamp if the shopper returns items to the store.\n\n\n\n\n\n\n\nIf you support mixed baskets as a single transaction, make a partial manual capture request for the in-store items. See the example below, under \"In-store pickup\".\n\n\nIf you support mixed baskets as two separate transactions, make another Terminal API payment request for the in-store items.\nIf your point-of-sale merchant account uses immediate or delayed capture by default (which we usually recommend), do not set manual capture in this payment request. Otherwise, see the exampleunder \"In-store pickup\", and make a separate manual capture request for the in-store items.\n\n\nAuthorization extension (optional)\nAt one or more moments before or after you notify the shopper that the order is ready for pickup, you may need to extend the authorization. This ensures you can still capture the payment later, when the shopper arrives at the store to pick up the order.\n\n    \n        Reference:\n    \n\n Expiration of pre-authorizations,\nAuthorization adjustment\n\n\n    \n        \n        \n    \n\n\nIn-store pickup\nWhen the shopper arrives at the pickup location to collect the order:\n\n\nTo find the shopper's order based on the card that was used to authorize the order:\n\n\nMake a Terminal API  CardAcquisitionRequest with an empty CardAcquisitionTransaction object.\n\n    \n        Reference:\n    \n\nCard acquisition\n\n\n\n\n\nWhen you receive the  CardAcquisitionResponse, find the shopper's order in your ERP system using the following information from the response.AdditionalResponse:\n\nPaymentAccountReference: the PAR, if present.\nalias: the card alias\n\nThe following example shows the AdditionalResponse as a string of key-value pairs concatenated with an ampersand (&amp;). It is possible you receive a Base64-encoded string instead, which you need to Base64 decode first.\n\n\n\n\n\nWhen you have found the order, finish the card acquisition by making an  EnableServiceRequest to stop the flow.\nConsider including a DisplayOutput object with an explanatory message for the shopper, as shown in the following example.\n\n    \n        Reference:\n    \n\nFinish with a cancellation\n\n\n\n\n\n\n\nOptional, if you used pre-authorization and you support mixed baskets as one transaction:\nIf the shopper adds in-store items that significantly increase the amount due, make a POST  \/payments\/{paymentPspReference}\/amountUpdates request to adjust the authorization amount.\nThe following examples show how to adjust the amount for the authorization with PSP reference DXCD52AY3WUGXS93 up from USD&nbsp;124.66 to USD&nbsp;214.03 for added in-store items with a value of USD&nbsp;89.37.\n\n\n    \n        \n        \n    \n\n\n\n\nMake a manual capture request for the amount due:\n\nSend a POST request to the  \/payments\/{paymentPspReference}\/captures endpoint, where paymentPspReference is the PSP reference from the (pre-)authorization response.\nIn your request, include:\n\n\n\nParameter\nRequired\nDescription\n\n\n\n\nmerchantAccount\n\nThe name of your merchant account that is used to process the payment. This depends on how you attribute the sale.\n\n\namount.value\n\nThe amount in minor units (without a decimal point) being captured. If you made any \/amountUpdates requests, this is the amount from your last authorization update.\n\n\n\n\nYou need to make a partial capture for a smaller amount in these cases:\n\nThe whole order is available at pickup but the shopper does not want some of the ordered items.\nOnly part of the order is available and being picked. If you used pre-authorization: after the partial capture, you can adjust the authorization to a partial amount that covers the items that will be picked up at a later time.\n\n\nThe following example shows a capture request for the authorization with PSP reference DXCD52AY3WUGXS93 for USD&nbsp;124.66.\n\n\n\n\n\nCheck the  CAPTURE webhook event message for any issue with the capture.\nA response with success false and reason Transaction is expired means the authorization expired. If you tokenized the original Terminal API payment request, you can make a Checkout API  \/payments request with the token.\n\n\n\n\n\nIf you treat mixed baskets as two separate transactions, make a separate Terminal API payment request for the in-store items that the shopper wants to purchase.\n\n\nLater returns, after pickup\n\n\nIf the shopper returns one or more of the delivered items, issue a refund using the Terminal API if the items are returned in-store, or using the Checkout API if the items returned to the warehouse.\n\n\n    \n        \n        \n    \n\n\n\n\nSee also\n\n\n                    Features per industry: Retail omnichannel\n                \n                    Other retail omnichannel use cases\n                \n","type":"page","locale":"en","boost":16,"hierarchy":{"lvl0":"Home","lvl1":"Omnichannel","lvl2":"Retail use cases","lvl3":"Endless aisle","lvl4":"Order in store, pick up in store"},"hierarchy_url":{"lvl0":"https:\/\/docs.adyen.com\/","lvl1":"https:\/\/docs.adyen.com\/unified-commerce","lvl2":"https:\/\/docs.adyen.com\/unified-commerce\/retail-use-cases","lvl3":"https:\/\/docs.adyen.com\/unified-commerce\/retail-use-cases\/endless-aisle","lvl4":"\/unified-commerce\/retail-use-cases\/endless-aisle\/e-a-store-pickup"},"levels":5,"category":"Omnichannel","category_color":"green","tags":["Order","store,","store"]}}
