{"title":"Agentic Checkout API Integration","category":"default","creationDate":1766481060,"content":"<p>The Adyen Agentic Checkout API acts as a unified integration layer that creates a bridge between AI-driven shopping agents (like Gemini, ChatGPT, and Copilot) and your commerce ecosystems. You integrate with our API, and we handle the translation between different commerce protocols. This makes it so that you do not need to integrate with multiple protocols, while enabling you to continue processing payments with your existing Adyen integration.<\/p>\n<p>Our Agentic Checkout layer handles the complexity of orchestrating between diverse standards (like Google\u2019s <strong>Universal Commerce Protocol (<a href=\"https:\/\/ucp.dev\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">UCP<\/a>)<\/strong> and OpenAI\u2019s <strong>Agentic Commerce Protocol (<a href=\"https:\/\/developers.openai.com\/commerce\/specs\/checkout\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">ACP<\/a>)<\/strong>, currently the two most widely adopted protocols in the industry).<\/p>\n<h2>Requirements<\/h2>\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;\">An existing <a href=\"\/online-payments\">online payments<\/a> integration.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>How it works<\/h2>\n<p>For a visual diagram representation, go to <a href=\"#sequence-diagrams\">\n  <strong>Sequence diagrams<\/strong>\n<\/a>.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Step<\/th>\n<th style=\"text-align: left;\">Name<\/th>\n<th style=\"text-align: left;\">Requirement<\/th>\n<th style=\"text-align: left;\">Endpoint<\/th>\n<th style=\"text-align: left;\">Direction<\/th>\n<th style=\"text-align: left;\">Purpose<\/th>\n<th style=\"text-align: left;\">Related ACP endpoint<\/th>\n<th style=\"text-align: left;\">Related UCP endpoint<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\">1<\/td>\n<td style=\"text-align: left;\"><strong><a href=\"?tab=t.a1hkdwq1y1zl#heading=h.kri3p5r39mf\">Agentic checkout  configuration<\/a><\/strong><\/td>\n<td style=\"text-align: left;\"><strong>MANDATORY<\/strong> (can be one-time request)<\/td>\n<td style=\"text-align: left;\">POST <code>\/agentic\/configuration<\/code><\/td>\n<td style=\"text-align: left;\">Your server \u2192 Adyen<\/td>\n<td style=\"text-align: left;\">Configures the endpoints that the merchant wants to implement.<\/td>\n<td style=\"text-align: left;\"><\/td>\n<td style=\"text-align: left;\"><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">2<\/td>\n<td style=\"text-align: left;\"><a href=\"?tab=t.a1hkdwq1y1zl#heading=h.rj1eb0en6s83\">\n  <strong>Create or Update session<\/strong>\n<\/a><\/td>\n<td style=\"text-align: left;\"><strong>MANDATORY<\/strong><\/td>\n<td style=\"text-align: left;\">POST  <code>\/agentic\/sessions\/{sessionId}<\/code><\/td>\n<td style=\"text-align: left;\">Adyen \u2192 Merchant<\/td>\n<td style=\"text-align: left;\">Synchronizes stock and shipping data to maintain updated cart totals.<\/td>\n<td style=\"text-align: left;\"><a href=\"https:\/\/www.agenticcommerce.dev\/docs\/reference\/checkout#:~:text=Endpoints-,Create checkout session,-Creates a new\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Create session<\/a> and <a href=\"https:\/\/www.agenticcommerce.dev\/docs\/reference\/checkout#:~:text=does not exist-,Update checkout session,-Updates an existing\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Update session<\/a><\/td>\n<td style=\"text-align: left;\"><a href=\"https:\/\/ucp.dev\/latest\/specification\/checkout\/#create-checkout\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Create checkout<\/a> and <a href=\"https:\/\/ucp.dev\/latest\/specification\/checkout\/#update-checkout\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Update checkout<\/a><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">3<\/td>\n<td style=\"text-align: left;\"><a href=\"?tab=t.a1hkdwq1y1zl#heading=h.wx5n09l7t1yz\">\n  <strong>Commit session (pre payment validation)<\/strong>\n<\/a><\/td>\n<td style=\"text-align: left;\">OPTIONAL<\/td>\n<td style=\"text-align: left;\">POST <code>\/agentic\/sessions\/{sessionId}\/commit<\/code><\/td>\n<td style=\"text-align: left;\">Adyen \u2192 Your server<\/td>\n<td style=\"text-align: left;\">Final pre-auth gate, sends payment data and risk signals to merchants. Is triggered before the payment.<\/td>\n<td style=\"text-align: left;\"><a href=\"https:\/\/www.agenticcommerce.dev\/docs\/reference\/checkout#:~:text=logic prevents update-,Complete checkout session,-Finalizes the checkout\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Complete session<\/a><\/td>\n<td style=\"text-align: left;\"><a href=\"https:\/\/ucp.dev\/latest\/specification\/checkout\/#complete-checkout\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Complete checkout<\/a><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">4<\/td>\n<td style=\"text-align: left;\"><a href=\"?tab=t.a1hkdwq1y1zl#heading=h.3enl42jbkm2u\">\n  <strong>Cancel session<\/strong>\n<\/a><\/td>\n<td style=\"text-align: left;\">OPTIONAL<\/td>\n<td style=\"text-align: left;\">POST <code>\/agentic\/sessions\/{sessionId}\/cancel<\/code><\/td>\n<td style=\"text-align: left;\">Adyen \u2192 Your server<\/td>\n<td style=\"text-align: left;\">Notifies merchants if the agentic checkout is aborted.<\/td>\n<td style=\"text-align: left;\"><a href=\"https:\/\/www.agenticcommerce.dev\/docs\/reference\/checkout#cancel-checkout-session\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Cancel session<\/a><\/td>\n<td style=\"text-align: left;\"><a href=\"https:\/\/ucp.dev\/latest\/specification\/checkout\/#cancel-checkout\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Cancel checkout<\/a><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">5<\/td>\n<td style=\"text-align: left;\"><a href=\"?tab=t.a1hkdwq1y1zl#heading=h.xw0o8ierlyro\">\n  <strong>Finalize session<\/strong>\n<\/a><\/td>\n<td style=\"text-align: left;\"><strong>MANDATORY<\/strong><\/td>\n<td style=\"text-align: left;\">Standard Webhook <strong>OR<\/strong> POST <code>\/agentic\/sessions\/{sessionId}\/finalize<\/code><\/td>\n<td style=\"text-align: left;\">Adyen \u2192 Your server<\/td>\n<td style=\"text-align: left;\">Standard authorization webhook with extra agentic metadata. Is triggered after the payment. Merchant fulfills the order based on this event<\/td>\n<td style=\"text-align: left;\"><a href=\"https:\/\/www.agenticcommerce.dev\/docs\/reference\/checkout#:~:text=logic prevents update-,Complete checkout session,-Finalizes the checkout\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Complete session<\/a><\/td>\n<td style=\"text-align: left;\"><a href=\"https:\/\/ucp.dev\/latest\/specification\/checkout\/#complete-checkout\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Complete checkout<\/a><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">6<\/td>\n<td style=\"text-align: left;\"><strong><a href=\"?tab=t.a1hkdwq1y1zl#heading=h.fdhqlapu7nb1\">Complete session (advanced flow)<\/a><\/strong><\/td>\n<td style=\"text-align: left;\"><strong>OPTIONAL<\/strong><\/td>\n<td style=\"text-align: left;\">POST <code>\/agentic\/sessions\/{sessionId}\/complete<\/code><\/td>\n<td style=\"text-align: left;\">Adyen \u2192 Your server<\/td>\n<td style=\"text-align: left;\">Delivers payment data to the merchant, allowing the merchant to execute the payment directly by making a  <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 and fulfill the order in one synchronous step.<\/td>\n<td style=\"text-align: left;\"><a href=\"https:\/\/www.agenticcommerce.dev\/docs\/reference\/checkout#:~:text=logic prevents update-,Complete checkout session,-Finalizes the checkout\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Complete session<\/a><\/td>\n<td style=\"text-align: left;\"><a href=\"https:\/\/ucp.dev\/latest\/specification\/checkout\/#complete-checkout\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Complete checkout<\/a><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">7<\/td>\n<td style=\"text-align: left;\"><a href=\"?tab=t.a1hkdwq1y1zl#heading=h.tnqr6sdn5sh8\">\n  <strong>Post-Purchase Events<\/strong>\n<\/a><\/td>\n<td style=\"text-align: left;\">OPTIONAL<\/td>\n<td style=\"text-align: left;\">POST <code>\/agentic\/sessions\/{sessionId}\/events<\/code><\/td>\n<td style=\"text-align: left;\">Your server \u2192 Adyen<\/td>\n<td style=\"text-align: left;\">Push tracking\/status updates for AI follow-up.<\/td>\n<td style=\"text-align: left;\"><a href=\"https:\/\/developers.openai.com\/commerce\/specs\/checkout#webhooks\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Checkout webhooks<\/a><\/td>\n<td style=\"text-align: left;\"><a href=\"https:\/\/ucp.dev\/latest\/specification\/order\/#order-capability\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Order capability events<\/a><\/td>\n<td><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>1. Agentic Checkout Configuration<\/h2>\n<p><strong>Endpoint:<\/strong> <code>POST \/agentic\/configuration<\/code><br \/>\n<strong>Direction:<\/strong> Your server \u2192 Adyen (API Call)<br \/>\n<strong>Requirement:<\/strong> Mandatory <\/p>\n<p>Before processing agentic transactions, the merchant must register their endpoints\/webhooks with Adyen. This is typically a one-time setup during onboarding or updated when the merchant\u2019s infrastructure changes.<\/p>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Example request to configure your endpoints and webhooks'\" :id=\"'post-agentic-configuration'\" :code-data=\"[{&quot;language&quot;:&quot;bash&quot;,&quot;tabTitle&quot;:&quot;&quot;,&quot;content&quot;:&quot;curl https:\\\/\\\/commerce-suite-test.adyen.com\\\/commerce-suite\\\/agentic\\\/configuration\\n-H 'x-api-key: ADYEN_API_KEY' \\\\\\n-H 'content-type: application\\\/json' \\\\\\n-d '{\\n  \\&quot;baseUrl\\&quot;: \\&quot;https:\\\/\\\/api.testshop.com\\\/adyen-integration\\&quot;,\\n  \\&quot;features\\&quot;: {\\n    \\&quot;enableCommitSession\\&quot;: false,\\n    \\&quot;enableCancelSession\\&quot;: false,\\n    \\&quot;enableFinalizeSession\\&quot;: true\\n    \\&quot;enableCompleteSession\\&quot;: false\\n  },\\n  \\&quot;security\\&quot;: {\\n    \\&quot;apiKey\\&quot;: \\&quot;API_KEY_FOR_VALIDATION\\&quot;\\n  }\\n}'&quot;}]\" :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p><strong>Example:<\/strong> If <code>enableCommitEndpoint<\/code> is <code>true<\/code>, Adyen will attempt to call <code>{baseUrl}\/agentic\/sessions\/{id}\/commit<\/code>. If <code>false<\/code>, Adyen skips this step and proceeds directly to authorization.<\/p>\n<h2>2. Create or update session<\/h2>\n<p><strong>Endpoint:<\/strong> POST <code>\/agentic\/sessions\/{sessionId}<\/code><br \/>\n<strong>Direction:<\/strong> Adyen \u2192 Your server<br \/>\n<strong>Requirement:<\/strong> Mandatory<\/p>\n<p>It serves as the live calculator for the AI Agent to determine final amounts and stock availability. As the shopper interacts with the agent and provides a delivery address and changes quantities, Adyen calls this endpoint to ensure the agent has the most accurate data of the checkout session. This endpoint is used for:<\/p>\n<ul>\n<li><strong>Price \/ totals confirmation:<\/strong> Confirm the price and the total amount of the session.   <\/li>\n<li><strong>Dynamic Taxation:<\/strong> If taxes must be calculated specifically at the street, zip-code, or regional level.  <\/li>\n<li><strong>Volatile Inventory:<\/strong> To verify stock status in real-time before the shopper expresses a final intent to buy, preventing checkout failures.  <\/li>\n<li><strong>Variable Shipping:<\/strong> If shipping costs fluctuate based on the specific delivery address or size\/weight of the order.  <\/li>\n<li><strong>Upfront Order \/ Session Creation:<\/strong> If the merchant prefers to create a \"draft\"  order in their system as soon as the session begins, using the <code>sessionId<\/code> as a unique identifier.<\/li>\n<\/ul>\n<p>Request scenario: Adyen sends a request to your server.<\/p>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Example request body to create or update a session, from Adyen to your server'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n  \\\"shoppingPlatform\\\": \\\"chatgpt\\\",\\n  \\\"currency\\\": \\\"USD\\\",\\n  \\\"shopper\\\": {\\n    \\\"firstName\\\": \\\"Simon\\\",\\n    \\\"lastName\\\": \\\"Hopper\\\",\\n    \\\"email\\\": \\\"s.hopper@example.com\\\",\\n    \\\"phoneNumber\\\": \\\"+15555555555\\\"\\n  },\\n  \\\"lineItems\\\": [\\n    {\\n      \\\"id\\\": \\\"item_123\\\",\\n      \\\"quantity\\\": 2\\n    }\\n  ],\\n  \\\"fulfillment\\\": {\\n    \\\"selectedFulfillmentOptionId\\\": \\\"ship_standard\\\" \\n  },\\n  \\\"deliveryAddress\\\": {\\n    \\\"street\\\": \\\"123 Main St\\\",\\n    \\\"city\\\": \\\"Anytown\\\",\\n    \\\"postalCode\\\": \\\"12345\\\",\\n    \\\"country\\\": \\\"US\\\"\\n  },\\n  \\\"affiliateAttribution\\\": {...}\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p>Reponse scenarios: your server returns a response to Adyen.<\/p>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Example successful response (HTTP 200 OK)'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n  \\\"merchantAccount\\\": \\\"ADYEN_MERCHANT_ACCOUNT\\\",\\n  \\\"lineItems\\\": [\\n    {\\n      \\\"id\\\": \\\"item_123\\\",\\n      \\\"quantity\\\": 2,\\n      \\\"status\\\": \\\"IN_STOCK\\\",\\n      \\\"amount\\\": { \\\"value\\\": 30000, \\\"currency\\\": \\\"USD\\\" },\\n      \\\"taxAmount\\\": { \\\"value\\\": 2000, \\\"currency\\\": \\\"USD\\\" },\\n      \\\"totalAmount\\\": { \\\"value\\\": 32000, \\\"currency\\\": \\\"USD\\\" }\\n    }\\n  ],\\n  \\\"totals\\\": {\\n    \\\"subtotal\\\": { \\\"value\\\": 30000, \\\"currency\\\": \\\"USD\\\" },\\n    \\\"fulfillment\\\": { \\\"value\\\": 1000, \\\"currency\\\": \\\"USD\\\" },\\n    \\\"tax\\\": { \\\"value\\\": 2000, \\\"currency\\\": \\\"USD\\\" },\\n    \\\"total\\\": { \\\"value\\\": 33000, \\\"currency\\\": \\\"USD\\\" }\\n  },\\n  \\\"fulfillmentOptions\\\": [\\n    { \\n\\\"id\\\": \\\"ship_standard\\\", \\n\\\"type\\\": \\\"shipping\\\", \\n\\\"title\\\": \\\"Standard Shipping\\\", \\n\\\"subtitle\\\": \\\"3-5 Business Days\\\", \\n\\\"carrier\\\": \\\"UPS\\\",\\n\\\"amount\\\": { \\\"value\\\": 1000, \\\"currency\\\": \\\"USD\\\" }\\n    }\\n  ],\\n  \\\"messages\\\": [\\n    {\\n      \\\"type\\\": \\\"info\\\",\\n      \\\"origin\\\": \\\"system\\\"\\n      \\\"content\\\": \\\"You will earn 50 points with this purchase!\\\"\\n    }\\n  ],\\n  \\\"links\\\": [\\n     {\\n       \\\"type\\\": \\\"terms_of_use\\\",\\n       \\\"url\\\": \\\"https:\\\/\\\/www.your-shop.example.com\\\/legal\\\/terms-of-use\\\"\\n     }\\n   ]\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Example error response for an item that is out of stock (HTTP 422)'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n  \\\"reason\\\": \\\"OUT_OF_STOCK\\\",\\n  \\\"messages\\\": [\\n    {\\n      \\\"type\\\": \\\"error\\\",\\n      \\\"content\\\": \\\"The **Premium Headphones** are currently out of stock.\\\"\\n    }\\n  ],\\n  \\\"lineItems\\\": [\\n    {\\n      \\\"id\\\": \\\"item_123\\\",\\n      \\\"status\\\": \\\"OUT_OF_STOCK\\\",\\n      \\\"quantity\\\": 0    \\n    }\\n  ]\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<h2>3. Commit session<\/h2>\n<p><strong>Endpoint:<\/strong> POST <code>\/agentic\/sessions\/{sessionId}\/commit<\/code><br \/>\n<strong>Direction:<\/strong> Adyen \u2192 Your server<br \/>\n<strong>Requirement:<\/strong> Optional <\/p>\n<p>This a pre-payment check with your server. It is triggered after the shopper clicks \"Pay\", but before funds are authorized. This request includes payment data and risk signals that you can use to run their own risk checks. By returning <strong>SUCCESS<\/strong>, you provide a binding guarantee to fulfill the order.<\/p>\n<h3>When this endpoint is required:<\/h3>\n<ul>\n<li><strong>Inventory Reservation:<\/strong> Merchants who want to \"lock\" stock at this point.  <\/li>\n<li><strong>Risk Review:<\/strong> Use <code>paymentMetadata<\/code> (BIN, Card Alias) for custom risk engine checks.  <\/li>\n<li><strong>Final Totals Validation:<\/strong> Performs a definitive reconciliation of total amounts, including line-item pricing, taxes, and shipping fees.<\/li>\n<\/ul>\n<p>Request scenario: Adyen sends a request to your server.<\/p>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Example request body to commit a session, from Adyen to your server'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n  \\\"lineItems\\\": [\\n    {\\n      \\\"id\\\": \\\"item_123\\\",\\n      \\\"quantity\\\": 2,\\n      \\\"status\\\": \\\"IN_STOCK\\\",\\n      \\\"amount\\\": { \\\"value\\\": 30000, \\\"currency\\\": \\\"USD\\\" },\\n      \\\"taxAmount\\\": { \\\"value\\\": 2000, \\\"currency\\\": \\\"USD\\\" },\\n      \\\"totalAmount\\\": { \\\"value\\\": 32000, \\\"currency\\\": \\\"USD\\\" }\\n    }\\n  ],\\n  \\\"totals\\\": {\\n    \\\"subtotal\\\": { \\\"value\\\": 30000, \\\"currency\\\": \\\"USD\\\" },\\n    \\\"fulfillment\\\": { \\\"value\\\": 1000, \\\"currency\\\": \\\"USD\\\" },\\n    \\\"tax\\\": { \\\"value\\\": 2000, \\\"currency\\\": \\\"USD\\\" },\\n    \\\"total\\\": { \\\"value\\\": 33000, \\\"currency\\\": \\\"USD\\\" }\\n  },\\n  \\\"fulfillmentOptions\\\": [\\n    {\\n      \\\"id\\\": \\\"ship_standard\\\", \\n\\\"type\\\": \\\"shipping\\\", \\n\\\"title\\\": \\\"Standard Shipping\\\", \\n\\\"subtitle\\\": \\\"3-5 Business Days\\\", \\n\\\"carrier\\\": \\\"UPS\\\",\\n\\\"amount\\\": { \\\"value\\\": 1000, \\\"currency\\\": \\\"USD\\\" }\\n    }\\n  ],\\n  \\\"paymentMetadata\\\": {\\n    \\\"paymentMethod\\\": \\\"visa\\\",\\n    \\\"bin\\\": \\\"411111\\\",\\n    \\\"cardAlias\\\": \\\"alias_ABCD1234\\\"\\n  },\\n  \\\"messages\\\": [\\n    {\\n      \\\"type\\\": \\\"info\\\",\\n      \\\"origin\\\": \\\"system\\\",\\n      \\\"content\\\": \\\"You will earn 50 points with this purchase!\\\"\\n    }\\n  ],\\n  \\\"links\\\": [\\n    {\\n      \\\"type\\\": \\\"terms_of_use\\\",\\n      \\\"url\\\": \\\"https:\\\/\\\/www.your-shop.example.com\\\/legal\\\/terms-of-use\\\"\\n    }\\n  ]\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p>Reponse scenarios: your server returns a response to Adyen.<\/p>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Example successful response (HTTP 200 OK)'\" :id=\"''\" :code-data='[{\"language\":\"\",\"tabTitle\":\"\",\"content\":\"\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Example error response because of risk assessment (HTTP 422)'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n  \\\"reason\\\": \\\"RISK_REJECTED\\\",\\n  \\\"messages\\\": [\\n    {\\n      \\\"type\\\": \\\"error\\\",\\n      \\\"code\\\": \\\"request_not_idempotent\\\",\\n      \\\"content\\\": \\\"Some optional error to include to the shopper.\\\"\\n    }\\n  ]\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Example error response because the item is partially out-of-stock (HTTP 422)'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n  \\\"reason\\\": \\\"PARTIAL_STOCK\\\",\\n  \\\"messages\\\": [\\n    {\\n      \\\"type\\\": \\\"error\\\",\\n      \\\"code\\\": \\\"out_of_stock\\\",\\n      \\\"content\\\": \\\"One of your items is no longer available.\\\"\\n    }\\n  ],\\n  \\\"lineItems\\\": [\\n    {\\n      \\\"id\\\": \\\"item_123\\\",\\n      \\\"status\\\": \\\"OUT_OF_STOCK\\\",\\n    }\\n  ]\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<h3>Standardized Error Handling<\/h3>\n<p>To ensure a consistent experience across different agents, merchants must use these standardized reason codes in their responses when returning a REJECTED status:<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Http status<\/th>\n<th style=\"text-align: left;\">Reason<\/th>\n<th style=\"text-align: left;\">Line item status<\/th>\n<th style=\"text-align: left;\">Definition<\/th>\n<th style=\"text-align: left;\">Phase<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><strong>200<\/strong><\/td>\n<td style=\"text-align: left;\"><em>None<\/em><\/td>\n<td style=\"text-align: left;\"><strong>IN_STOCK<\/strong><\/td>\n<td style=\"text-align: left;\">Transaction is valid.<\/td>\n<td style=\"text-align: left;\">create session \/ update session \/ commit<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>422<\/strong><\/td>\n<td style=\"text-align: left;\"><strong>OUT_OF_STOCK<\/strong><\/td>\n<td style=\"text-align: left;\"><strong>OUT_OF_STOCK<\/strong><\/td>\n<td style=\"text-align: left;\">Requested items are unavailable.<\/td>\n<td style=\"text-align: left;\">create session \/ update session \/ commit<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>422<\/strong><\/td>\n<td style=\"text-align: left;\"><strong>PARTIAL_STOCK<\/strong><\/td>\n<td style=\"text-align: left;\"><strong>OUT_OF_STOCK<\/strong> \/ <strong>PARTIAL_STOCK<\/strong><\/td>\n<td style=\"text-align: left;\">Only X of Y items are available. Or X is available but not for the requested quantity.<\/td>\n<td style=\"text-align: left;\">create session \/ update session \/ commit<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>422<\/strong><\/td>\n<td style=\"text-align: left;\"><strong>INVALID_ADDRESS<\/strong><\/td>\n<td style=\"text-align: left;\"><\/td>\n<td style=\"text-align: left;\">Shipping rules don't support the location.<\/td>\n<td style=\"text-align: left;\">create session \/ update session \/ commit<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>422<\/strong><\/td>\n<td style=\"text-align: left;\"><strong>RISK_REJECTED<\/strong><\/td>\n<td style=\"text-align: left;\"><\/td>\n<td style=\"text-align: left;\">Merchant's internal fraud engine blocked it.<\/td>\n<td style=\"text-align: left;\">create session \/ update session \/ commit<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>422<\/strong><\/td>\n<td style=\"text-align: left;\"><strong>PRICE_MISMATCH<\/strong><\/td>\n<td style=\"text-align: left;\"><strong>PRICE_MISMATCH<\/strong><\/td>\n<td style=\"text-align: left;\">The price has changed since the last fetch.<\/td>\n<td style=\"text-align: left;\">commit (in the session creation \/update new prices and totals can be returned)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Message types:<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Message Type<\/th>\n<th style=\"text-align: left;\">Example Content<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><strong>error<\/strong><\/td>\n<td style=\"text-align: left;\">\"The delivery address provided is outside our shipping zone.\"<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>info<\/strong><\/td>\n<td style=\"text-align: left;\">\"Your order includes a 1-year manufacturer warranty.\"<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>4. Cancel session<\/h2>\n<p><strong>Endpoint:<\/strong> POST <code>\/agentic\/sessions\/{sessionId}\/cancel<\/code><br \/>\n<strong>Direction:<\/strong> Adyen \u2192 Your server<br \/>\n<strong>Requirement:<\/strong> Optional <\/p>\n<p><strong>Request body:<\/strong> empty<br \/>\n<strong>Response:<\/strong> 204 (session was cancelled) \/ 409 (session couldn\u2019t be cancelled)<\/p>\n<h3>5. Finalize session<\/h3>\n<p><strong>Direction:<\/strong> Adyen \u2192 Your server<br \/>\n<strong>Endpoint:<\/strong> Standard Webhook <strong>OR<\/strong> POST <code>\/agentic\/sessions\/{sessionId}\/finalize<\/code><br \/>\n<strong>Requirement:<\/strong> Mandatory <\/p>\n<p>When the payment is successfully authorized, Adyen sends this trigger. <strong>You should fulfill the order based on this event.<\/strong><\/p>\n<p>To ensure maximum flexibility for the your existing infrastructure, the fulfillment trigger can be handled either by the classic Adyen notification system or the faster <code>\/agentic\/sessions\/{sessionId}\/finalize<\/code> endpoint.<\/p>\n<h4><strong>Implementation Options:<\/strong><\/h4>\n<p><strong>1. Standard Webhook:<\/strong> Best if you want to reuse your existing logic for webhook messages that include <code>eventCode<\/code>: <strong>AUTHORISATION<\/strong>. Adyen includes <code>additionalData.agentic.sessionId<\/code> in the body of the message, so that you can associate it with the AI session.<\/p>\n<p><strong>2. POST <code>\/agentic\/sessions\/{sessionId}\/finalize<\/code>:<\/strong> This endpoint is optimized for low-latency and provides a clean, agent-specific payload identical in structure to the checkout commit request.<\/p>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Example body of the request, from Adyen to your server'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n  \\\"lineItems\\\": [\\n    {\\n      \\\"id\\\": \\\"item_123\\\",\\n      \\\"quantity\\\": 2,\\n      \\\"status\\\": \\\"IN_STOCK\\\",\\n      \\\"amount\\\": { \\\"value\\\": 30000, \\\"currency\\\": \\\"USD\\\" },\\n      \\\"taxAmount\\\": { \\\"value\\\": 2000, \\\"currency\\\": \\\"USD\\\" },\\n      \\\"totalAmount\\\": { \\\"value\\\": 32000, \\\"currency\\\": \\\"USD\\\" }\\n    }\\n  ],\\n  \\\"totals\\\": {\\n    \\\"subtotal\\\": { \\\"value\\\": 30000, \\\"currency\\\": \\\"USD\\\" },\\n    \\\"fulfillment\\\": { \\\"value\\\": 1000, \\\"currency\\\": \\\"USD\\\" },\\n    \\\"tax\\\": { \\\"value\\\": 2000, \\\"currency\\\": \\\"USD\\\" },\\n    \\\"total\\\": { \\\"value\\\": 33000, \\\"currency\\\": \\\"USD\\\" }\\n  },\\n  \\\"fulfillmentOptions\\\": [\\n    {\\n      \\\"id\\\": \\\"ship_standard\\\",\\n      \\\"title\\\": \\\"Standard Shipping\\\",\\n      \\\"amount\\\": { \\\"value\\\": 1000, \\\"currency\\\": \\\"USD\\\" },\\n      \\\"isSelected\\\": true\\n    }\\n  ],\\n  \\\"paymentMetadata\\\": {\\n    \\\"paymentMethod\\\": \\\"visa\\\",\\n    \\\"bin\\\": \\\"411111\\\",\\n    \\\"cardAlias\\\": \\\"alias_ABCD1234\\\"\\n  },\\n  \\\"messages\\\": [\\n    {\\n      \\\"type\\\": \\\"info\\\",\\n      \\\"content\\\": \\\"You will earn 50 points with this purchase!\\\"\\n    }\\n  ],\\n  \\\"links\\\": [\\n     {\\n       \\\"type\\\": \\\"terms_of_use\\\",\\n       \\\"url\\\": \\\"https:\\\/\\\/www.your-shop.example\\\/legal\\\/terms-of-use\\\"\\n     }\\n   ]\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p>Response: your server sends HTTP 204 Acknowledge<\/p>\n<h3>6. Complete session (Advanced Flow)<\/h3>\n<p><strong>Direction:<\/strong> Adyen \u2192 Your server<br \/>\n<strong>Endpoint:<\/strong> POST <code>\/agentic\/sessions\/{sessionId}\/complete<\/code><br \/>\n<strong>Requirement:<\/strong> Optional <\/p>\n<p>Designed for the \u201cAdvanced Flow\u201d, this endpoint redefines the orchestration model. Instead of Adyen functioning as the entity that executes payment authorization, it delivers the transaction token (such as a token, depending on the payment handler) directly to you. You then have responsibility for using this data to make a POST  <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 to Adyen and fulfill the order in a single step.<\/p>\n<p>When you receives the payment result from Adyen, you trigger order fulfillment in your order management system.<\/p>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Example request body to complete the session, from Adyen to your server'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n  \\\"lineItems\\\": [\\n    {\\n      \\\"id\\\": \\\"item_123\\\",\\n      \\\"quantity\\\": 2,\\n      \\\"status\\\": \\\"IN_STOCK\\\",\\n      \\\"amount\\\": { \\\"value\\\": 30000, \\\"currency\\\": \\\"USD\\\" },\\n      \\\"taxAmount\\\": { \\\"value\\\": 2000, \\\"currency\\\": \\\"USD\\\" },\\n      \\\"totalAmount\\\": { \\\"value\\\": 32000, \\\"currency\\\": \\\"USD\\\" }\\n    }\\n  ],\\n  \\\"totals\\\": {\\n    \\\"subtotal\\\": { \\\"value\\\": 30000, \\\"currency\\\": \\\"USD\\\" },\\n    \\\"fulfillment\\\": { \\\"value\\\": 1000, \\\"currency\\\": \\\"USD\\\" },\\n    \\\"tax\\\": { \\\"value\\\": 2000, \\\"currency\\\": \\\"USD\\\" },\\n    \\\"total\\\": { \\\"value\\\": 33000, \\\"currency\\\": \\\"USD\\\" }\\n  },\\n  \\\"selectedFulfillmentOptionId\\\": \\\"ship_standard\\\",\\n  \\\"shopper\\\": {\\n    \\\"firstName\\\": \\\"Simon\\\",\\n    \\\"lastName\\\": \\\"Hopper\\\",\\n    \\\"email\\\": \\\"s.hopper@example.com\\\",\\n    \\\"phoneNumber\\\": \\\"+15555555555\\\"\\n  },\\n  \\\"paymentData\\\": {\\n    \\\"token\\\": \\\"token_1234_abcd\\\",\\n    \\\"provider\\\": \\\"adyen\\\"\\n  }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p>Reponse scenarios: your server returns a response to Adyen.<\/p>\n<p>For a successful completion, your server returns HTTP 204 Acknowledge with no body.<\/p>\n<p>For a failed payment, your server returns HTTP 422 with a message about the failure.<\/p>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Example response body for a failed payment'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n  \\\"reason\\\": \\\"REFUSED\\\",\\n  \\\"messages\\\": [\\n    {\\n      \\\"type\\\": \\\"error\\\",\\n      \\\"code\\\": \\\"payment_refused\\\",\\n      \\\"content\\\": \\\"An optional error message to send to the shopper.\\\"\\n    }\\n  ]\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<h2>7. Post-purchase events<\/h2>\n<p><strong>Endpoint:<\/strong> POST <code>\/agentic\/sessions\/{sessionId}\/events<\/code><br \/>\n<strong>Direction:<\/strong> Your server \u2192 Adyen (API request)<br \/>\n<strong>Requirement:<\/strong> Optional <\/p>\n<p>You can push fulfillment status here, so that the AI agent can support the shopper after the purchase. For example, for answering questions like \u201cwhat\u2019s the status of my order?\u201d.<\/p>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Example request body about fulfillment status'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n  \\\"eventCode\\\": \\\"ORDER_SHIPPED\\\",\\n  \\\"payload\\\": {\\n    \\\"carrier\\\": \\\"Example Carrier\\\",\\n    \\\"trackingNumber\\\": \\\"carrier_abcd_1234\\\",\\n    \\\"trackingUrl\\\": \\\"https:\\\/\\\/carrier.example.com\\\/track\\\/carrier_abcd_1234\\\"\\n  }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p>Response: you get a HTTP 204 Acknowledge with no body.<\/p>\n<h2>Testing<\/h2>\n<p>We provide URLs for testing your integration with the Adyen Agentic Checkout API.<\/p>\n<h3>Session creation<\/h3>\n<p><strong>Url:<\/strong> <code>https:\/\/commerce-suite-test.adyen.com\/commerce-suite\/acp\/v1\/{CompanyAccount}\/checkout_sessions<\/code><br \/>\n<strong>Headers:<\/strong> Authorization: {apiKey}<br \/>\n<strong>Method:<\/strong> POST<br \/>\n<strong>Role needed:<\/strong> Commerce Suite API<\/p>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Example request body for session creation'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n  \\\"currency\\\": \\\"USD\\\",\\n \\\"buyer\\\": {\\n   \\\"first_name\\\": \\\"Simon\\\",\\n   \\\"last_name\\\": \\\"Hopper\\\",\\n   \\\"email\\\": \\\"s.hopper@example.com\\\",\\n   \\\"phone_number\\\": \\\"+15555555555\\\"\\n },\\n \\\"items\\\": [\\n   {\\n     \\\"id\\\": \\\"prod_123\\\",\\n     \\\"quantity\\\": 2\\n   },\\n   {\\n     \\\"id\\\": \\\"prod_456\\\",\\n     \\\"quantity\\\": 1\\n   }\\n ],\\n \\\"fulfillment_address\\\": {\\n   \\\"name\\\": \\\"Simon Hopper\\\",\\n   \\\"line_one\\\": \\\"123 Main Street\\\",\\n   \\\"line_two\\\": \\\"Apt 1A\\\",\\n    \\\"city\\\": \\\"Anytown\\\",\\n    \\\"state\\\": \\\"CA\\\",\\n    \\\"postal_code\\\": \\\"12345\\\",\\n    \\\"country\\\": \\\"US\\\"\\n }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<h3>Session update<\/h3>\n<p><strong>Url:<\/strong> <code>https:\/\/commerce-suite-test.adyen.com\/commerce-suite\/acp\/v1\/{CompanyAccount}\/checkout_sessions\/{sessionId}<\/code><br \/>\n<strong>Headers:<\/strong> Authorization: {apiKey}<br \/>\n<strong>Method:<\/strong> POST<br \/>\n<strong>Role needed:<\/strong> Commerce Suite API<\/p>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Example request body for session update'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n  \\\"currency\\\": \\\"USD\\\",\\n  \\\"buyer\\\": {\\n    \\\"first_name\\\": \\\"fffa\\\",\\n    \\\"last_name\\\": \\\"Lovelace kff\\\",\\n    \\\"email\\\": \\\"adaffkff@example.com\\\",\\n    \\\"phone_number\\\": \\\"+31612345678\\\"\\n  },\\n  \\\"items\\\": [\\n    {\\n      \\\"id\\\": \\\"prod_123\\\",\\n      \\\"quantity\\\": 2\\n    }\\n  ],\\n  \\\"fulfillment_address\\\": {\\n   \\\"name\\\": \\\"Simon Hopper\\\",\\n   \\\"line_one\\\": \\\"123 Main Street\\\",\\n   \\\"line_two\\\": \\\"Apt 1A\\\",\\n    \\\"city\\\": \\\"Anytown\\\",\\n    \\\"state\\\": \\\"CA\\\",\\n    \\\"postal_code\\\": \\\"12345\\\",\\n    \\\"country\\\": \\\"US\\\"\\n  }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<h3>Session cancel<\/h3>\n<p><strong>Url:<\/strong> <code>https:\/\/commerce-suite-test.adyen.com\/commerce-suite\/acp\/v1\/{CompanyAccount}\/checkout_sessions\/{sessionId}\/cancel<\/code><br \/>\n<strong>Headers:<\/strong> Authorization: {apiKey}<br \/>\n<strong>Method:<\/strong> POST<br \/>\n<strong>Role needed:<\/strong> Commerce Suite API<\/p>\n<h3>Get session<\/h3>\n<p><strong>Url:<\/strong> <code>https:\/\/commerce-suite-test.adyen.com\/commerce-suite\/acp\/v1\/{CompanyAccount}\/checkout_sessions\/{sessionId}<\/code><br \/>\n<strong>Headers:<\/strong> Authorization: {apiKey}<br \/>\n<strong>Method:<\/strong> Get<br \/>\n<strong>Role needed:<\/strong> Commerce Suite API<\/p>\n<h3>Session complete<\/h3>\n<p><strong>Url:<\/strong> <code>https:\/\/commerce-suite-test.adyen.com\/commerce-suite\/acp\/v1\/{CompanyAccount}\/checkout_sessions\/{sessionId}\/complete<\/code><br \/>\n<strong>Headers:<\/strong> Authorization: {apiKey}<br \/>\n<strong>Method:<\/strong> POST<br \/>\n<strong>Role needed:<\/strong> Commerce Suite API<\/p>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Example request body for session complete'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n \\\"payment_data\\\": {\\n   \\\"token\\\": \\\"P27P5Q9LM7MKDM92\\\",\\n   \\\"provider\\\": \\\"adyen\\\"\\n }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<h3>Delegate payment endpoint<\/h3>\n<p><strong>Url:<\/strong><br \/>\n<code>https:\/\/pal-test.adyen.com\/paltokenization\/servlet\/Recurring\/Agentic\/acp\/v1\/agentic_commerce\/delegate_payment<\/code><br \/>\n<strong>Headers:<\/strong> Authorization: Bearer {apiKey}<br \/>\n<strong>Method:<\/strong> Post<br \/>\n<strong>Role needed:<\/strong> Commerce Suite API<\/p>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Example request body for delegate payment'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n \\\"payment_method\\\": {\\n   \\\"type\\\": \\\"card\\\",\\n   \\\"card_number_type\\\": \\\"fpan\\\",\\n   \\\"number\\\": \\\"4111111111111111\\\",\\n   \\\"exp_month\\\": \\\"03\\\",\\n   \\\"exp_year\\\": \\\"2030\\\",\\n   \\\"cvc\\\": \\\"737\\\",\\n   \\\"name\\\": \\\"Test User\\\",\\n   \\\"display_card_funding_type\\\": \\\"credit\\\",\\n   \\\"display_brand\\\": \\\"Visa\\\",\\n   \\\"display_last4\\\": \\\"1111\\\",\\n   \\\"metadata\\\": {\\n     \\\"issuing_bank\\\": \\\"Test Issuer\\\"\\n   }\\n },\\n \\\"allowance\\\": {\\n   \\\"reason\\\": \\\"one_time\\\",\\n   \\\"max_amount\\\": 1000000,\\n   \\\"currency\\\": \\\"usd\\\",\\n   \\\"checkout_session_id\\\": \\\"cs_423488ffbcb047019d31bedcaa1c048f\\\",\\n   \\\"merchant_id\\\": \\\"ADYEN_MERCHANT_ACCOUNT\\\",\\n   \\\"expires_at\\\": \\\"2026-04-26T16:46:00Z\\\"\\n },\\n \\\"billing_address\\\": {\\n   \\\"name\\\": \\\"Test User\\\",\\n   \\\"line_one\\\": \\\"123 Test Street\\\",\\n   \\\"city\\\": \\\"San Francisco\\\",\\n   \\\"state\\\": \\\"CA\\\",\\n   \\\"country\\\": \\\"US\\\",   \\n   \\\"postal_code\\\": \\\"94105\\\"\\n },\\n \\\"risk_signals\\\": [\\n   {\\n     \\\"type\\\": \\\"card_testing\\\",\\n     \\\"score\\\": 0,\\n     \\\"action\\\": \\\"authorized\\\"\\n   }\\n ],\\n \\\"metadata\\\": {\\n   \\\"source\\\": \\\"manual_test\\\",\\n   \\\"environment\\\": \\\"sandbox\\\"\\n }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<h2>Sequence diagrams<\/h2>\n<p>For ACP:<\/p>\n<div id=\"mermaid-69fe04359dab5-wrapper\"><div id=\"mermaid-69fe04359dab5\" class=\"mermaid-shortcode loading\">CnNlcXVlbmNlRGlhZ3JhbQogYWN0b3IgUyBhcyBTaG9wcGVyCiBwYXJ0aWNpcGFudCBBIGFzIFNob3BwaW5nIEFnZW50CiBwYXJ0aWNpcGFudCBWIGFzIEFnZW50J3MgVG9rZW4gVmF1bHQKIHBhcnRpY2lwYW50IFAgYXMgQWR5ZW4gKFVuaXZlcnNhbCBUcmFuc2xhdG9yKQogcGFydGljaXBhbnQgTSBhcyBZb3VyIHNlcnZlcgoKCiBOb3RlIG92ZXIgUywgTTogU3RhZ2UgMTogQ3JlYXRlIENoZWNrb3V0CiBTIC0+PiBBOiAiSSB3YW50IHRvIGJ1eSB0aGVzZSBoZWFkcGhvbmVzIgogQSAtPj4gUDogW0FDUF0gL2NoZWNrb3V0X3Nlc3Npb24KIFAgLT4+IE06IFtQT1NUXSAvYWdlbnRpYy9zZXNzaW9ucy97aWR9CiBNIC0tPj4gUDogMjAwIFNVQ0NFU1MgKHRvdGFscywgc2hpcHBpbmcsIGludmVudG9yeSkKIFAgLS0+PiBBOiBTZXNzaW9uIElEICsgdG90YWxzCiBBIC0tPj4gUzogRGlzcGxheXMgT3JkZXIgU3VtbWFyeSAoUHJpY2UvU3RvY2spCgoKIE5vdGUgb3ZlciBTLCBNOiBTdGFnZSAyOiBQYXltZW50ICYgRmluYWwgVmFsaWRhdGlvbgogUyAtPj4gQTogIlBheSBub3ciCiAgQSAtPj4gVjogSW5zdHJ1Y3QgdG8gZGVsZWdhdGUgcGF5bWVudCBmb3IgU2Vzc2lvbiB7aWR9CiBWIC0+PiBQOiBbQUNQXSAvZGVsZWdhdGVfcGF5bWVudCAoU2VjdXJlIERhdGEpCiBQIC0tPj4gVjogUmV0dXJuIHBzcF90cmFuc2FjdGlvbl90b2tlbgogViAtLT4+IEE6IFJldHVybiBwc3BfdHJhbnNhY3Rpb25fdG9rZW4KCgogQSAtPj4gUDogW0FDUF0gL2NoZWNrb3V0X3Nlc3Npb24ve2lkfS9jb21wbGV0ZSAod2l0aCBwc3BfdG9rZW4pCgoKIFAgLT4+IE06IFtQT1NUXSAvYWdlbnRpYy9zZXNzaW9ucy97aWR9L2NvbW1pdAogTSAtLT4+IFA6IDIwMCBTVUNDRVNTIAoKCiBQIC0+PiBQOiBFeGVjdXRlIFBheW1lbnQgQXV0aG9yaXphdGlvbgogUCAtPj4gTTogW1BPU1RdIC9hZ2VudGljL3Nlc3Npb25zL3tpZH0vZmluYWxpemUgKG9yIHN0YW5kYXJkIHdlYmhvb2spCiBNIC0tPj4gUDogMjAwIEFDSwogTSAtPj4gTTogVHJpZ2dlciBvcmRlciBmdWxmaWxsbWVudAoKCiBQIC0tPj4gQTogRmluYWwgU3RhdHVzOiBTVUNDRVNTCiBBIC0tPj4gUzogIk9yZGVyIENvbmZpcm1lZCEgUmVmOiBPUkRSXzIxMjIiCgoKIE5vdGUgb3ZlciBTLCBNOiBTdGFnZSA0OiBQb3N0LVB1cmNoYXNlIEZsb3cKIE0gLT4+IFA6IFtQT1NUXSAvYWdlbnRpYy9zZXNzaW9ucy97aWR9L2V2ZW50cwogUCAtPj4gQTogUHVzaCB0cmFja2luZyBpbmZvIHRvIEFnZW50CiBBIC0tPj4gUzogIllvdXIgcGFja2FnZSBpcyBvbiB0aGUgd2F5ISBMaW5rOiBbREhMIFRyYWNraW5nXSIKCg==<\/div><\/div>\n<p>For ACP with the <code>\/complete<\/code> endpoint (Advanced Flow):<\/p>\n<div id=\"mermaid-69fe04359dab9-wrapper\"><div id=\"mermaid-69fe04359dab9\" class=\"mermaid-shortcode loading\">CnNlcXVlbmNlRGlhZ3JhbQphY3RvciBTIGFzIFNob3BwZXIKcGFydGljaXBhbnQgQSBhcyBTaG9wcGluZyBBZ2VudApwYXJ0aWNpcGFudCBWIGFzIEFnZW50J3MgVG9rZW4gVmF1bHQKcGFydGljaXBhbnQgUCBhcyBBZHllbiAoVW5pdmVyc2FsIFRyYW5zbGF0b3IpCnBhcnRpY2lwYW50IE0gYXMgWW91ciBzZXJ2ZXIKCgoKCk5vdGUgb3ZlciBTLCBNOiBTdGFnZSAxOiBDcmVhdGUgQ2hlY2tvdXQKUyAtPj4gQTogIkkgd2FudCB0byBidXkgdGhlc2UgaGVhZHBob25lcyIKQSAtPj4gUDogW0FDUF0gL2NoZWNrb3V0X3Nlc3Npb24KUCAtPj4gTTogW1BPU1RdIC9hZ2VudGljL3Nlc3Npb25zL3tpZH0KTSAtLT4+IFA6IDIwMCBTVUNDRVNTICh0b3RhbHMsIHNoaXBwaW5nLCBpbnZlbnRvcnkpClAgLS0+PiBBOiBTZXNzaW9uIElEICsgdG90YWxzCkEgLS0+PiBTOiBEaXNwbGF5cyBPcmRlciBTdW1tYXJ5IChQcmljZS9TdG9jaykKCgoKCk5vdGUgb3ZlciBTLCBNOiBTdGFnZSAyOiBQYXltZW50ICYgRmluYWwgVmFsaWRhdGlvbgpTIC0+PiBBOiAiUGF5IG5vdyIKIEEgLT4+IFY6IEluc3RydWN0IHRvIGRlbGVnYXRlIHBheW1lbnQgZm9yIFNlc3Npb24ge2lkfQpWIC0+PiBQOiBbQUNQXSAvZGVsZWdhdGVfcGF5bWVudCAoU2VjdXJlIERhdGEpClAgLS0+PiBWOiBSZXR1cm4gcHNwX3RyYW5zYWN0aW9uX3Rva2VuClYgLS0+PiBBOiBSZXR1cm4gcHNwX3RyYW5zYWN0aW9uX3Rva2VuCgoKCgpBIC0+PiBQOiBbQUNQXSAvY2hlY2tvdXRfc2Vzc2lvbi97aWR9L2NvbXBsZXRlICh3aXRoIHBzcF90b2tlbikKCgoKClAgLT4+IE06IFtQT1NUXSAvYWdlbnRpYy9zZXNzaW9ucy97aWR9L2NvbXBsZXRlIChzZW5kIHBzcF90b2tlbikKTSAtPj4gUDogW1BPU1RdIC9wYXltZW50cyAoc2VuZCBwc3BfdG9rZW4pClAgLS0+PiBNOiBwYXltZW50IHJlc3VsdApNIC0+PiBNOiBUcmlnZ2VyIG9yZGVyIGZ1bGZpbGxtZW50Ck0gLS0+PiBQOiBwYXltZW50IHJlc3VsdAoKClAgLS0+PiBBOiBGaW5hbCBTdGF0dXM6IFNVQ0NFU1MKQSAtLT4+IFM6ICJPcmRlciBDb25maXJtZWQhIFJlZjogT1JEUl8yMTIyIgoKCgoKTm90ZSBvdmVyIFMsIE06IFN0YWdlIDQ6IFBvc3QtUHVyY2hhc2UgRmxvdwpNIC0+PiBQOiBbUE9TVF0gL2FnZW50aWMvc2Vzc2lvbnMve2lkfS9ldmVudHMKUCAtPj4gQTogUHVzaCB0cmFja2luZyBpbmZvIHRvIEFnZW50CkEgLS0+PiBTOiAiWW91ciBwYWNrYWdlIGlzIG9uIHRoZSB3YXkhIExpbms6IFtESEwgVHJhY2tpbmddIgoK<\/div><\/div>\n<p>For UCP:<\/p>\n<div id=\"mermaid-69fe04359dabc-wrapper\"><div id=\"mermaid-69fe04359dabc\" class=\"mermaid-shortcode loading\">CnNlcXVlbmNlRGlhZ3JhbQogICBhY3RvciBTIGFzIFNob3BwZXIKICAgcGFydGljaXBhbnQgQSBhcyBTaG9wcGluZyBBZ2VudAogICBwYXJ0aWNpcGFudCBWIGFzIEFnZW50J3MgVG9rZW4gVmF1bHQKICAgcGFydGljaXBhbnQgUCBhcyBBZHllbiAoVW5pdmVyc2FsIFRyYW5zbGF0b3IpCiAgIHBhcnRpY2lwYW50IE0gYXMgWW91ciBzZXJ2ZXIKCgogICBOb3RlIG92ZXIgUywgTTogU3RhZ2UgMTogQ3JlYXRlIENoZWNrb3V0CiAgIFMgLT4+IEE6ICJJIHdhbnQgdG8gYnV5IHRoZXNlIGhlYWRwaG9uZXMiCiAgIEEgLT4+IFA6IFtQT1NUXSAvY2hlY2tvdXQgKGxpbmVfaXRlbXMsIGJ1eWVyKQogIAogICBQIC0+PiBNOiBbUE9TVF0gL2FnZW50aWMvc2Vzc2lvbnMve2lkfQogICBNIC0tPj4gUDogMjAwIFNVQ0NFU1MgKHRvdGFscywgc2hpcHBpbmcpCiAgIFAgLS0+PiBBOiBVQ1AgQ2hlY2tvdXQgT2JqZWN0CiAgIEEgLS0+PiBTOiBEaXNwbGF5cyBPcmRlciBTdW1tYXJ5CgoKICAgTm90ZSBvdmVyIFMsIE06IFN0YWdlIDI6IFRva2VuaXphdGlvbiAmIENvbXBsZXRpb24KICAgUyAtPj4gQTogIlBheSBub3ciCiAgCiAgIEEgLT4+IFY6IFJldHJpZXZlIHJhdyBwYXltZW50IGNyZWRlbnRpYWxzCiAgIFYgLS0+PiBBOiAoU2VjdXJlIENhcmQgRGF0YSkKCgogICBBIC0+PiBQOiBbUE9TVF0gL2NoZWNrb3V0L3tpZH0vY29tcGxldGUgKHRva2VuOiAidWNwX3Rrbl84ODkyIikKCgogICBQIC0+PiBWOiBbUE9TVF0gL2RldG9rZW5pemUgKHRva2VuOiAidWNwX3Rrbl84ODkyIikKICAgViAtLT4+IFA6IHsgImNhcmQiOiAiNDExMTEiLCAidHlwZSI6ICJjYXJkIiB9CgoKICAgUCAtPj4gTTogW1BPU1RdIC9hZ2VudGljL3Nlc3Npb25zL3tpZH0vY29tbWl0CiAgIE0gLS0+PiBQOiAyMDAgU1VDQ0VTUyAob3JkZXI6IHtpZDogT1JEUl8yMTIyfSkKICAKICAgUCAtPj4gUDogRXhlY3V0ZSBQYXltZW50IEF1dGhvcml6YXRpb24KCgogICBQIC0+PiBNOiBbUE9TVF0gL2FnZW50aWMvc2Vzc2lvbnMve2lkfS9maW5hbGl6ZSAob3IgU3RhbmRhcmQgV2ViaG9vaykKICAgTSAtPj4gTTogVHJpZ2dlciBPcmRlciBmdWxmaWxsbWVudAoKCiAgIFAgLS0+PiBBOiBVQ1AgQ2hlY2tvdXQgT2JqZWN0IChzdGF0dXM6IGNvbXBsZXRlZCkKICAgQSAtLT4+IFM6ICJPcmRlciBDb25maXJtZWQhIFJlZjogT1JEUl8yMTIyIgoKCiAgIE5vdGUgb3ZlciBTLCBNOiBTdGFnZSAzOiBQb3N0LVB1cmNoYXNlIFVwZGF0ZXMKICAgTSAtPj4gUDogW1BPU1RdIC9hZ2VudGljL3Nlc3Npb25zL3tpZH0vZXZlbnRzICh0cmFja2luZ19pbmZvKQogICBQIC0+PiBBOiBQdXNoIENhcGFiaWxpdHkgRXZlbnQKICAgQSAtLT4+IFM6ICJZb3VyIHBhY2thZ2UgaXMgb24gdGhlIHdheSEiCg==<\/div><\/div>","url":"https:\/\/docs.adyen.com\/online-payments\/agentic-commerce\/agentic-checkout-integration","articleFields":{"description":"Enable AI agents to process payments through Adyen.","robots":"noindex,nofollow","feedback_component":true,"filters_component":false,"decision_tree":"[]","page_id":"80c1efef-1b1a-4fc1-9803-d887fb8b6f36"},"algolia":{"url":"https:\/\/docs.adyen.com\/online-payments\/agentic-commerce\/agentic-checkout-integration","title":"Agentic Checkout API Integration","content":"The Adyen Agentic Checkout API acts as a unified integration layer that creates a bridge between AI-driven shopping agents (like Gemini, ChatGPT, and Copilot) and your commerce ecosystems. You integrate with our API, and we handle the translation between different commerce protocols. This makes it so that you do not need to integrate with multiple protocols, while enabling you to continue processing payments with your existing Adyen integration.\nOur Agentic Checkout layer handles the complexity of orchestrating between diverse standards (like Google\u2019s Universal Commerce Protocol (UCP) and OpenAI\u2019s Agentic Commerce Protocol (ACP), currently the two most widely adopted protocols in the industry).\nRequirements\n\n\n\nRequirement\nDescription\n\n\n\n\nIntegration type\nAn existing online payments integration.\n\n\n\nHow it works\nFor a visual diagram representation, go to \n  Sequence diagrams\n.\n\n\n\nStep\nName\nRequirement\nEndpoint\nDirection\nPurpose\nRelated ACP endpoint\nRelated UCP endpoint\n\n\n\n\n1\nAgentic checkout  configuration\nMANDATORY (can be one-time request)\nPOST \/agentic\/configuration\nYour server \u2192 Adyen\nConfigures the endpoints that the merchant wants to implement.\n\n\n\n\n2\n\n  Create or Update session\n\nMANDATORY\nPOST  \/agentic\/sessions\/{sessionId}\nAdyen \u2192 Merchant\nSynchronizes stock and shipping data to maintain updated cart totals.\nCreate session and Update session\nCreate checkout and Update checkout\n\n\n3\n\n  Commit session (pre payment validation)\n\nOPTIONAL\nPOST \/agentic\/sessions\/{sessionId}\/commit\nAdyen \u2192 Your server\nFinal pre-auth gate, sends payment data and risk signals to merchants. Is triggered before the payment.\nComplete session\nComplete checkout\n\n\n4\n\n  Cancel session\n\nOPTIONAL\nPOST \/agentic\/sessions\/{sessionId}\/cancel\nAdyen \u2192 Your server\nNotifies merchants if the agentic checkout is aborted.\nCancel session\nCancel checkout\n\n\n5\n\n  Finalize session\n\nMANDATORY\nStandard Webhook OR POST \/agentic\/sessions\/{sessionId}\/finalize\nAdyen \u2192 Your server\nStandard authorization webhook with extra agentic metadata. Is triggered after the payment. Merchant fulfills the order based on this event\nComplete session\nComplete checkout\n\n\n6\nComplete session (advanced flow)\nOPTIONAL\nPOST \/agentic\/sessions\/{sessionId}\/complete\nAdyen \u2192 Your server\nDelivers payment data to the merchant, allowing the merchant to execute the payment directly by making a  \/payments request and fulfill the order in one synchronous step.\nComplete session\nComplete checkout\n\n\n7\n\n  Post-Purchase Events\n\nOPTIONAL\nPOST \/agentic\/sessions\/{sessionId}\/events\nYour server \u2192 Adyen\nPush tracking\/status updates for AI follow-up.\nCheckout webhooks\nOrder capability events\n\n\n\n\n1. Agentic Checkout Configuration\nEndpoint: POST \/agentic\/configuration\nDirection: Your server \u2192 Adyen (API Call)\nRequirement: Mandatory \nBefore processing agentic transactions, the merchant must register their endpoints\/webhooks with Adyen. This is typically a one-time setup during onboarding or updated when the merchant\u2019s infrastructure changes.\n\n    \n\nExample: If enableCommitEndpoint is true, Adyen will attempt to call {baseUrl}\/agentic\/sessions\/{id}\/commit. If false, Adyen skips this step and proceeds directly to authorization.\n2. Create or update session\nEndpoint: POST \/agentic\/sessions\/{sessionId}\nDirection: Adyen \u2192 Your server\nRequirement: Mandatory\nIt serves as the live calculator for the AI Agent to determine final amounts and stock availability. As the shopper interacts with the agent and provides a delivery address and changes quantities, Adyen calls this endpoint to ensure the agent has the most accurate data of the checkout session. This endpoint is used for:\n\nPrice \/ totals confirmation: Confirm the price and the total amount of the session.   \nDynamic Taxation: If taxes must be calculated specifically at the street, zip-code, or regional level.  \nVolatile Inventory: To verify stock status in real-time before the shopper expresses a final intent to buy, preventing checkout failures.  \nVariable Shipping: If shipping costs fluctuate based on the specific delivery address or size\/weight of the order.  \nUpfront Order \/ Session Creation: If the merchant prefers to create a \"draft\"  order in their system as soon as the session begins, using the sessionId as a unique identifier.\n\nRequest scenario: Adyen sends a request to your server.\n\n    \n\nReponse scenarios: your server returns a response to Adyen.\n\n    \n\n\n    \n\n3. Commit session\nEndpoint: POST \/agentic\/sessions\/{sessionId}\/commit\nDirection: Adyen \u2192 Your server\nRequirement: Optional \nThis a pre-payment check with your server. It is triggered after the shopper clicks \"Pay\", but before funds are authorized. This request includes payment data and risk signals that you can use to run their own risk checks. By returning SUCCESS, you provide a binding guarantee to fulfill the order.\nWhen this endpoint is required:\n\nInventory Reservation: Merchants who want to \"lock\" stock at this point.  \nRisk Review: Use paymentMetadata (BIN, Card Alias) for custom risk engine checks.  \nFinal Totals Validation: Performs a definitive reconciliation of total amounts, including line-item pricing, taxes, and shipping fees.\n\nRequest scenario: Adyen sends a request to your server.\n\n    \n\nReponse scenarios: your server returns a response to Adyen.\n\n    \n\n\n    \n\n\n    \n\nStandardized Error Handling\nTo ensure a consistent experience across different agents, merchants must use these standardized reason codes in their responses when returning a REJECTED status:\n\n\n\nHttp status\nReason\nLine item status\nDefinition\nPhase\n\n\n\n\n200\nNone\nIN_STOCK\nTransaction is valid.\ncreate session \/ update session \/ commit\n\n\n422\nOUT_OF_STOCK\nOUT_OF_STOCK\nRequested items are unavailable.\ncreate session \/ update session \/ commit\n\n\n422\nPARTIAL_STOCK\nOUT_OF_STOCK \/ PARTIAL_STOCK\nOnly X of Y items are available. Or X is available but not for the requested quantity.\ncreate session \/ update session \/ commit\n\n\n422\nINVALID_ADDRESS\n\nShipping rules don't support the location.\ncreate session \/ update session \/ commit\n\n\n422\nRISK_REJECTED\n\nMerchant's internal fraud engine blocked it.\ncreate session \/ update session \/ commit\n\n\n422\nPRICE_MISMATCH\nPRICE_MISMATCH\nThe price has changed since the last fetch.\ncommit (in the session creation \/update new prices and totals can be returned)\n\n\n\nMessage types:\n\n\n\nMessage Type\nExample Content\n\n\n\n\nerror\n\"The delivery address provided is outside our shipping zone.\"\n\n\ninfo\n\"Your order includes a 1-year manufacturer warranty.\"\n\n\n\n4. Cancel session\nEndpoint: POST \/agentic\/sessions\/{sessionId}\/cancel\nDirection: Adyen \u2192 Your server\nRequirement: Optional \nRequest body: empty\nResponse: 204 (session was cancelled) \/ 409 (session couldn\u2019t be cancelled)\n5. Finalize session\nDirection: Adyen \u2192 Your server\nEndpoint: Standard Webhook OR POST \/agentic\/sessions\/{sessionId}\/finalize\nRequirement: Mandatory \nWhen the payment is successfully authorized, Adyen sends this trigger. You should fulfill the order based on this event.\nTo ensure maximum flexibility for the your existing infrastructure, the fulfillment trigger can be handled either by the classic Adyen notification system or the faster \/agentic\/sessions\/{sessionId}\/finalize endpoint.\nImplementation Options:\n1. Standard Webhook: Best if you want to reuse your existing logic for webhook messages that include eventCode: AUTHORISATION. Adyen includes additionalData.agentic.sessionId in the body of the message, so that you can associate it with the AI session.\n2. POST \/agentic\/sessions\/{sessionId}\/finalize: This endpoint is optimized for low-latency and provides a clean, agent-specific payload identical in structure to the checkout commit request.\n\n    \n\nResponse: your server sends HTTP 204 Acknowledge\n6. Complete session (Advanced Flow)\nDirection: Adyen \u2192 Your server\nEndpoint: POST \/agentic\/sessions\/{sessionId}\/complete\nRequirement: Optional \nDesigned for the \u201cAdvanced Flow\u201d, this endpoint redefines the orchestration model. Instead of Adyen functioning as the entity that executes payment authorization, it delivers the transaction token (such as a token, depending on the payment handler) directly to you. You then have responsibility for using this data to make a POST  \/payments request to Adyen and fulfill the order in a single step.\nWhen you receives the payment result from Adyen, you trigger order fulfillment in your order management system.\n\n    \n\nReponse scenarios: your server returns a response to Adyen.\nFor a successful completion, your server returns HTTP 204 Acknowledge with no body.\nFor a failed payment, your server returns HTTP 422 with a message about the failure.\n\n    \n\n7. Post-purchase events\nEndpoint: POST \/agentic\/sessions\/{sessionId}\/events\nDirection: Your server \u2192 Adyen (API request)\nRequirement: Optional \nYou can push fulfillment status here, so that the AI agent can support the shopper after the purchase. For example, for answering questions like \u201cwhat\u2019s the status of my order?\u201d.\n\n    \n\nResponse: you get a HTTP 204 Acknowledge with no body.\nTesting\nWe provide URLs for testing your integration with the Adyen Agentic Checkout API.\nSession creation\nUrl: https:\/\/commerce-suite-test.adyen.com\/commerce-suite\/acp\/v1\/{CompanyAccount}\/checkout_sessions\nHeaders: Authorization: {apiKey}\nMethod: POST\nRole needed: Commerce Suite API\n\n    \n\nSession update\nUrl: https:\/\/commerce-suite-test.adyen.com\/commerce-suite\/acp\/v1\/{CompanyAccount}\/checkout_sessions\/{sessionId}\nHeaders: Authorization: {apiKey}\nMethod: POST\nRole needed: Commerce Suite API\n\n    \n\nSession cancel\nUrl: https:\/\/commerce-suite-test.adyen.com\/commerce-suite\/acp\/v1\/{CompanyAccount}\/checkout_sessions\/{sessionId}\/cancel\nHeaders: Authorization: {apiKey}\nMethod: POST\nRole needed: Commerce Suite API\nGet session\nUrl: https:\/\/commerce-suite-test.adyen.com\/commerce-suite\/acp\/v1\/{CompanyAccount}\/checkout_sessions\/{sessionId}\nHeaders: Authorization: {apiKey}\nMethod: Get\nRole needed: Commerce Suite API\nSession complete\nUrl: https:\/\/commerce-suite-test.adyen.com\/commerce-suite\/acp\/v1\/{CompanyAccount}\/checkout_sessions\/{sessionId}\/complete\nHeaders: Authorization: {apiKey}\nMethod: POST\nRole needed: Commerce Suite API\n\n    \n\nDelegate payment endpoint\nUrl:\nhttps:\/\/pal-test.adyen.com\/paltokenization\/servlet\/Recurring\/Agentic\/acp\/v1\/agentic_commerce\/delegate_payment\nHeaders: Authorization: Bearer {apiKey}\nMethod: Post\nRole needed: Commerce Suite API\n\n    \n\nSequence diagrams\nFor ACP:\nCnNlcXVlbmNlRGlhZ3JhbQogYWN0b3IgUyBhcyBTaG9wcGVyCiBwYXJ0aWNpcGFudCBBIGFzIFNob3BwaW5nIEFnZW50CiBwYXJ0aWNpcGFudCBWIGFzIEFnZW50J3MgVG9rZW4gVmF1bHQKIHBhcnRpY2lwYW50IFAgYXMgQWR5ZW4gKFVuaXZlcnNhbCBUcmFuc2xhdG9yKQogcGFydGljaXBhbnQgTSBhcyBZb3VyIHNlcnZlcgoKCiBOb3RlIG92ZXIgUywgTTogU3RhZ2UgMTogQ3JlYXRlIENoZWNrb3V0CiBTIC0+PiBBOiAiSSB3YW50IHRvIGJ1eSB0aGVzZSBoZWFkcGhvbmVzIgogQSAtPj4gUDogW0FDUF0gL2NoZWNrb3V0X3Nlc3Npb24KIFAgLT4+IE06IFtQT1NUXSAvYWdlbnRpYy9zZXNzaW9ucy97aWR9CiBNIC0tPj4gUDogMjAwIFNVQ0NFU1MgKHRvdGFscywgc2hpcHBpbmcsIGludmVudG9yeSkKIFAgLS0+PiBBOiBTZXNzaW9uIElEICsgdG90YWxzCiBBIC0tPj4gUzogRGlzcGxheXMgT3JkZXIgU3VtbWFyeSAoUHJpY2UvU3RvY2spCgoKIE5vdGUgb3ZlciBTLCBNOiBTdGFnZSAyOiBQYXltZW50ICYgRmluYWwgVmFsaWRhdGlvbgogUyAtPj4gQTogIlBheSBub3ciCiAgQSAtPj4gVjogSW5zdHJ1Y3QgdG8gZGVsZWdhdGUgcGF5bWVudCBmb3IgU2Vzc2lvbiB7aWR9CiBWIC0+PiBQOiBbQUNQXSAvZGVsZWdhdGVfcGF5bWVudCAoU2VjdXJlIERhdGEpCiBQIC0tPj4gVjogUmV0dXJuIHBzcF90cmFuc2FjdGlvbl90b2tlbgogViAtLT4+IEE6IFJldHVybiBwc3BfdHJhbnNhY3Rpb25fdG9rZW4KCgogQSAtPj4gUDogW0FDUF0gL2NoZWNrb3V0X3Nlc3Npb24ve2lkfS9jb21wbGV0ZSAod2l0aCBwc3BfdG9rZW4pCgoKIFAgLT4+IE06IFtQT1NUXSAvYWdlbnRpYy9zZXNzaW9ucy97aWR9L2NvbW1pdAogTSAtLT4+IFA6IDIwMCBTVUNDRVNTIAoKCiBQIC0+PiBQOiBFeGVjdXRlIFBheW1lbnQgQXV0aG9yaXphdGlvbgogUCAtPj4gTTogW1BPU1RdIC9hZ2VudGljL3Nlc3Npb25zL3tpZH0vZmluYWxpemUgKG9yIHN0YW5kYXJkIHdlYmhvb2spCiBNIC0tPj4gUDogMjAwIEFDSwogTSAtPj4gTTogVHJpZ2dlciBvcmRlciBmdWxmaWxsbWVudAoKCiBQIC0tPj4gQTogRmluYWwgU3RhdHVzOiBTVUNDRVNTCiBBIC0tPj4gUzogIk9yZGVyIENvbmZpcm1lZCEgUmVmOiBPUkRSXzIxMjIiCgoKIE5vdGUgb3ZlciBTLCBNOiBTdGFnZSA0OiBQb3N0LVB1cmNoYXNlIEZsb3cKIE0gLT4+IFA6IFtQT1NUXSAvYWdlbnRpYy9zZXNzaW9ucy97aWR9L2V2ZW50cwogUCAtPj4gQTogUHVzaCB0cmFja2luZyBpbmZvIHRvIEFnZW50CiBBIC0tPj4gUzogIllvdXIgcGFja2FnZSBpcyBvbiB0aGUgd2F5ISBMaW5rOiBbREhMIFRyYWNraW5nXSIKCg==\nFor ACP with the \/complete endpoint (Advanced Flow):\nCnNlcXVlbmNlRGlhZ3JhbQphY3RvciBTIGFzIFNob3BwZXIKcGFydGljaXBhbnQgQSBhcyBTaG9wcGluZyBBZ2VudApwYXJ0aWNpcGFudCBWIGFzIEFnZW50J3MgVG9rZW4gVmF1bHQKcGFydGljaXBhbnQgUCBhcyBBZHllbiAoVW5pdmVyc2FsIFRyYW5zbGF0b3IpCnBhcnRpY2lwYW50IE0gYXMgWW91ciBzZXJ2ZXIKCgoKCk5vdGUgb3ZlciBTLCBNOiBTdGFnZSAxOiBDcmVhdGUgQ2hlY2tvdXQKUyAtPj4gQTogIkkgd2FudCB0byBidXkgdGhlc2UgaGVhZHBob25lcyIKQSAtPj4gUDogW0FDUF0gL2NoZWNrb3V0X3Nlc3Npb24KUCAtPj4gTTogW1BPU1RdIC9hZ2VudGljL3Nlc3Npb25zL3tpZH0KTSAtLT4+IFA6IDIwMCBTVUNDRVNTICh0b3RhbHMsIHNoaXBwaW5nLCBpbnZlbnRvcnkpClAgLS0+PiBBOiBTZXNzaW9uIElEICsgdG90YWxzCkEgLS0+PiBTOiBEaXNwbGF5cyBPcmRlciBTdW1tYXJ5IChQcmljZS9TdG9jaykKCgoKCk5vdGUgb3ZlciBTLCBNOiBTdGFnZSAyOiBQYXltZW50ICYgRmluYWwgVmFsaWRhdGlvbgpTIC0+PiBBOiAiUGF5IG5vdyIKIEEgLT4+IFY6IEluc3RydWN0IHRvIGRlbGVnYXRlIHBheW1lbnQgZm9yIFNlc3Npb24ge2lkfQpWIC0+PiBQOiBbQUNQXSAvZGVsZWdhdGVfcGF5bWVudCAoU2VjdXJlIERhdGEpClAgLS0+PiBWOiBSZXR1cm4gcHNwX3RyYW5zYWN0aW9uX3Rva2VuClYgLS0+PiBBOiBSZXR1cm4gcHNwX3RyYW5zYWN0aW9uX3Rva2VuCgoKCgpBIC0+PiBQOiBbQUNQXSAvY2hlY2tvdXRfc2Vzc2lvbi97aWR9L2NvbXBsZXRlICh3aXRoIHBzcF90b2tlbikKCgoKClAgLT4+IE06IFtQT1NUXSAvYWdlbnRpYy9zZXNzaW9ucy97aWR9L2NvbXBsZXRlIChzZW5kIHBzcF90b2tlbikKTSAtPj4gUDogW1BPU1RdIC9wYXltZW50cyAoc2VuZCBwc3BfdG9rZW4pClAgLS0+PiBNOiBwYXltZW50IHJlc3VsdApNIC0+PiBNOiBUcmlnZ2VyIG9yZGVyIGZ1bGZpbGxtZW50Ck0gLS0+PiBQOiBwYXltZW50IHJlc3VsdAoKClAgLS0+PiBBOiBGaW5hbCBTdGF0dXM6IFNVQ0NFU1MKQSAtLT4+IFM6ICJPcmRlciBDb25maXJtZWQhIFJlZjogT1JEUl8yMTIyIgoKCgoKTm90ZSBvdmVyIFMsIE06IFN0YWdlIDQ6IFBvc3QtUHVyY2hhc2UgRmxvdwpNIC0+PiBQOiBbUE9TVF0gL2FnZW50aWMvc2Vzc2lvbnMve2lkfS9ldmVudHMKUCAtPj4gQTogUHVzaCB0cmFja2luZyBpbmZvIHRvIEFnZW50CkEgLS0+PiBTOiAiWW91ciBwYWNrYWdlIGlzIG9uIHRoZSB3YXkhIExpbms6IFtESEwgVHJhY2tpbmddIgoK\nFor UCP:\nCnNlcXVlbmNlRGlhZ3JhbQogICBhY3RvciBTIGFzIFNob3BwZXIKICAgcGFydGljaXBhbnQgQSBhcyBTaG9wcGluZyBBZ2VudAogICBwYXJ0aWNpcGFudCBWIGFzIEFnZW50J3MgVG9rZW4gVmF1bHQKICAgcGFydGljaXBhbnQgUCBhcyBBZHllbiAoVW5pdmVyc2FsIFRyYW5zbGF0b3IpCiAgIHBhcnRpY2lwYW50IE0gYXMgWW91ciBzZXJ2ZXIKCgogICBOb3RlIG92ZXIgUywgTTogU3RhZ2UgMTogQ3JlYXRlIENoZWNrb3V0CiAgIFMgLT4+IEE6ICJJIHdhbnQgdG8gYnV5IHRoZXNlIGhlYWRwaG9uZXMiCiAgIEEgLT4+IFA6IFtQT1NUXSAvY2hlY2tvdXQgKGxpbmVfaXRlbXMsIGJ1eWVyKQogIAogICBQIC0+PiBNOiBbUE9TVF0gL2FnZW50aWMvc2Vzc2lvbnMve2lkfQogICBNIC0tPj4gUDogMjAwIFNVQ0NFU1MgKHRvdGFscywgc2hpcHBpbmcpCiAgIFAgLS0+PiBBOiBVQ1AgQ2hlY2tvdXQgT2JqZWN0CiAgIEEgLS0+PiBTOiBEaXNwbGF5cyBPcmRlciBTdW1tYXJ5CgoKICAgTm90ZSBvdmVyIFMsIE06IFN0YWdlIDI6IFRva2VuaXphdGlvbiAmIENvbXBsZXRpb24KICAgUyAtPj4gQTogIlBheSBub3ciCiAgCiAgIEEgLT4+IFY6IFJldHJpZXZlIHJhdyBwYXltZW50IGNyZWRlbnRpYWxzCiAgIFYgLS0+PiBBOiAoU2VjdXJlIENhcmQgRGF0YSkKCgogICBBIC0+PiBQOiBbUE9TVF0gL2NoZWNrb3V0L3tpZH0vY29tcGxldGUgKHRva2VuOiAidWNwX3Rrbl84ODkyIikKCgogICBQIC0+PiBWOiBbUE9TVF0gL2RldG9rZW5pemUgKHRva2VuOiAidWNwX3Rrbl84ODkyIikKICAgViAtLT4+IFA6IHsgImNhcmQiOiAiNDExMTEiLCAidHlwZSI6ICJjYXJkIiB9CgoKICAgUCAtPj4gTTogW1BPU1RdIC9hZ2VudGljL3Nlc3Npb25zL3tpZH0vY29tbWl0CiAgIE0gLS0+PiBQOiAyMDAgU1VDQ0VTUyAob3JkZXI6IHtpZDogT1JEUl8yMTIyfSkKICAKICAgUCAtPj4gUDogRXhlY3V0ZSBQYXltZW50IEF1dGhvcml6YXRpb24KCgogICBQIC0+PiBNOiBbUE9TVF0gL2FnZW50aWMvc2Vzc2lvbnMve2lkfS9maW5hbGl6ZSAob3IgU3RhbmRhcmQgV2ViaG9vaykKICAgTSAtPj4gTTogVHJpZ2dlciBPcmRlciBmdWxmaWxsbWVudAoKCiAgIFAgLS0+PiBBOiBVQ1AgQ2hlY2tvdXQgT2JqZWN0IChzdGF0dXM6IGNvbXBsZXRlZCkKICAgQSAtLT4+IFM6ICJPcmRlciBDb25maXJtZWQhIFJlZjogT1JEUl8yMTIyIgoKCiAgIE5vdGUgb3ZlciBTLCBNOiBTdGFnZSAzOiBQb3N0LVB1cmNoYXNlIFVwZGF0ZXMKICAgTSAtPj4gUDogW1BPU1RdIC9hZ2VudGljL3Nlc3Npb25zL3tpZH0vZXZlbnRzICh0cmFja2luZ19pbmZvKQogICBQIC0+PiBBOiBQdXNoIENhcGFiaWxpdHkgRXZlbnQKICAgQSAtLT4+IFM6ICJZb3VyIHBhY2thZ2UgaXMgb24gdGhlIHdheSEiCg==","type":"page","locale":"en","boost":17,"hierarchy":{"lvl0":"Home","lvl1":"Online payments","lvl2":"Agentic Commerce","lvl3":"Agentic Checkout API Integration"},"hierarchy_url":{"lvl0":"https:\/\/docs.adyen.com\/","lvl1":"https:\/\/docs.adyen.com\/online-payments","lvl2":"https:\/\/docs.adyen.com\/online-payments\/agentic-commerce","lvl3":"\/online-payments\/agentic-commerce\/agentic-checkout-integration"},"levels":4,"category":"Online Payments","category_color":"green","tags":["Agentic","Checkout","Integration"]}}
