Checkout icon

Agentic Checkout API Integration

Enable AI agents to process payments through Adyen.

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.

Our Agentic Checkout layer handles the complexity of orchestrating between diverse standards (like Google’s Universal Commerce Protocol (UCP) and OpenAI’s Agentic Commerce Protocol (ACP), currently the two most widely adopted protocols in the industry).

Requirements

Requirement Description
Integration type An existing online payments integration.

How it works

For a visual diagram representation, go to Sequence diagrams .

Step Name Requirement Endpoint Direction Purpose Related ACP endpoint Related UCP endpoint
1 Agentic checkout configuration MANDATORY (can be one-time request) POST /agentic/configuration Your server → Adyen Configures the endpoints that the merchant wants to implement.
2 Create or Update session MANDATORY POST /agentic/sessions/{sessionId} Adyen → Merchant Synchronizes stock and shipping data to maintain updated cart totals. Create session and Update session Create checkout and Update checkout
3 Commit session (pre payment validation) OPTIONAL POST /agentic/sessions/{sessionId}/commit Adyen → Your server Final pre-auth gate, sends payment data and risk signals to merchants. Is triggered before the payment. Complete session Complete checkout
4 Cancel session OPTIONAL POST /agentic/sessions/{sessionId}/cancel Adyen → Your server Notifies merchants if the agentic checkout is aborted. Cancel session Cancel checkout
5 Finalize session MANDATORY Standard Webhook OR POST /agentic/sessions/{sessionId}/finalize Adyen → Your server Standard authorization webhook with extra agentic metadata. Is triggered after the payment. Merchant fulfills the order based on this event Complete session Complete checkout
6 Complete session (advanced flow) OPTIONAL POST /agentic/sessions/{sessionId}/complete Adyen → Your server Delivers 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. Complete session Complete checkout
7 Post-Purchase Events OPTIONAL POST /agentic/sessions/{sessionId}/events Your server → Adyen Push tracking/status updates for AI follow-up. Checkout webhooks Order capability events

1. Agentic Checkout Configuration

Endpoint: POST /agentic/configuration
Direction: Your server → Adyen (API Call)
Requirement: Mandatory

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’s infrastructure changes.

Example: 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.

2. Create or update session

Endpoint: POST /agentic/sessions/{sessionId}
Direction: Adyen → Your server
Requirement: Mandatory

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:

  • Price / totals confirmation: Confirm the price and the total amount of the session.
  • Dynamic Taxation: If taxes must be calculated specifically at the street, zip-code, or regional level.
  • Volatile Inventory: To verify stock status in real-time before the shopper expresses a final intent to buy, preventing checkout failures.
  • Variable Shipping: If shipping costs fluctuate based on the specific delivery address or size/weight of the order.
  • Upfront 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.

Request scenario: Adyen sends a request to your server.

Reponse scenarios: your server returns a response to Adyen.

3. Commit session

Endpoint: POST /agentic/sessions/{sessionId}/commit
Direction: Adyen → Your server
Requirement: Optional

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 SUCCESS, you provide a binding guarantee to fulfill the order.

When this endpoint is required:

  • Inventory Reservation: Merchants who want to "lock" stock at this point.
  • Risk Review: Use paymentMetadata (BIN, Card Alias) for custom risk engine checks.
  • Final Totals Validation: Performs a definitive reconciliation of total amounts, including line-item pricing, taxes, and shipping fees.

Request scenario: Adyen sends a request to your server.

Reponse scenarios: your server returns a response to Adyen.

Standardized Error Handling

To ensure a consistent experience across different agents, merchants must use these standardized reason codes in their responses when returning a REJECTED status:

Http status Reason Line item status Definition Phase
200 None IN_STOCK Transaction is valid. create session / update session / commit
422 OUT_OF_STOCK OUT_OF_STOCK Requested items are unavailable. create session / update session / commit
422 PARTIAL_STOCK OUT_OF_STOCK / PARTIAL_STOCK Only X of Y items are available. Or X is available but not for the requested quantity. create session / update session / commit
422 INVALID_ADDRESS Shipping rules don't support the location. create session / update session / commit
422 RISK_REJECTED Merchant's internal fraud engine blocked it. create session / update session / commit
422 PRICE_MISMATCH PRICE_MISMATCH The price has changed since the last fetch. commit (in the session creation /update new prices and totals can be returned)

Message types:

Message Type Example Content
error "The delivery address provided is outside our shipping zone."
info "Your order includes a 1-year manufacturer warranty."

4. Cancel session

Endpoint: POST /agentic/sessions/{sessionId}/cancel
Direction: Adyen → Your server
Requirement: Optional

Request body: empty
Response: 204 (session was cancelled) / 409 (session couldn’t be cancelled)

5. Finalize session

Direction: Adyen → Your server
Endpoint: Standard Webhook OR POST /agentic/sessions/{sessionId}/finalize
Requirement: Mandatory

When the payment is successfully authorized, Adyen sends this trigger. You should fulfill the order based on this event.

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 /agentic/sessions/{sessionId}/finalize endpoint.

Implementation Options:

1. 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.

2. 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.

Response: your server sends HTTP 204 Acknowledge

6. Complete session (Advanced Flow)

Direction: Adyen → Your server
Endpoint: POST /agentic/sessions/{sessionId}/complete
Requirement: Optional

Designed for the “Advanced Flow”, 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.

When you receives the payment result from Adyen, you trigger order fulfillment in your order management system.

Reponse scenarios: your server returns a response to Adyen.

For a successful completion, your server returns HTTP 204 Acknowledge with no body.

For a failed payment, your server returns HTTP 422 with a message about the failure.

7. Post-purchase events

Endpoint: POST /agentic/sessions/{sessionId}/events
Direction: Your server → Adyen (API request)
Requirement: Optional

You can push fulfillment status here, so that the AI agent can support the shopper after the purchase. For example, for answering questions like “what’s the status of my order?”.

Response: you get a HTTP 204 Acknowledge with no body.

Testing

We provide URLs for testing your integration with the Adyen Agentic Checkout API.

Session creation

Url: https://commerce-suite-test.adyen.com/commerce-suite/acp/v1/{CompanyAccount}/checkout_sessions
Headers: Authorization: {apiKey}
Method: POST
Role needed: Commerce Suite API

Session update

Url: https://commerce-suite-test.adyen.com/commerce-suite/acp/v1/{CompanyAccount}/checkout_sessions/{sessionId}
Headers: Authorization: {apiKey}
Method: POST
Role needed: Commerce Suite API

Session cancel

Url: https://commerce-suite-test.adyen.com/commerce-suite/acp/v1/{CompanyAccount}/checkout_sessions/{sessionId}/cancel
Headers: Authorization: {apiKey}
Method: POST
Role needed: Commerce Suite API

Get session

Url: https://commerce-suite-test.adyen.com/commerce-suite/acp/v1/{CompanyAccount}/checkout_sessions/{sessionId}
Headers: Authorization: {apiKey}
Method: Get
Role needed: Commerce Suite API

Session complete

Url: https://commerce-suite-test.adyen.com/commerce-suite/acp/v1/{CompanyAccount}/checkout_sessions/{sessionId}/complete
Headers: Authorization: {apiKey}
Method: POST
Role needed: Commerce Suite API

Delegate payment endpoint

Url:
https://pal-test.adyen.com/paltokenization/servlet/Recurring/Agentic/acp/v1/agentic_commerce/delegate_payment
Headers: Authorization: Bearer {apiKey}
Method: Post
Role needed: Commerce Suite API

Sequence diagrams

For ACP:

CnNlcXVlbmNlRGlhZ3JhbQogYWN0b3IgUyBhcyBTaG9wcGVyCiBwYXJ0aWNpcGFudCBBIGFzIFNob3BwaW5nIEFnZW50CiBwYXJ0aWNpcGFudCBWIGFzIEFnZW50J3MgVG9rZW4gVmF1bHQKIHBhcnRpY2lwYW50IFAgYXMgQWR5ZW4gKFVuaXZlcnNhbCBUcmFuc2xhdG9yKQogcGFydGljaXBhbnQgTSBhcyBZb3VyIHNlcnZlcgoKCiBOb3RlIG92ZXIgUywgTTogU3RhZ2UgMTogQ3JlYXRlIENoZWNrb3V0CiBTIC0+PiBBOiAiSSB3YW50IHRvIGJ1eSB0aGVzZSBoZWFkcGhvbmVzIgogQSAtPj4gUDogW0FDUF0gL2NoZWNrb3V0X3Nlc3Npb24KIFAgLT4+IE06IFtQT1NUXSAvYWdlbnRpYy9zZXNzaW9ucy97aWR9CiBNIC0tPj4gUDogMjAwIFNVQ0NFU1MgKHRvdGFscywgc2hpcHBpbmcsIGludmVudG9yeSkKIFAgLS0+PiBBOiBTZXNzaW9uIElEICsgdG90YWxzCiBBIC0tPj4gUzogRGlzcGxheXMgT3JkZXIgU3VtbWFyeSAoUHJpY2UvU3RvY2spCgoKIE5vdGUgb3ZlciBTLCBNOiBTdGFnZSAyOiBQYXltZW50ICYgRmluYWwgVmFsaWRhdGlvbgogUyAtPj4gQTogIlBheSBub3ciCiAgQSAtPj4gVjogSW5zdHJ1Y3QgdG8gZGVsZWdhdGUgcGF5bWVudCBmb3IgU2Vzc2lvbiB7aWR9CiBWIC0+PiBQOiBbQUNQXSAvZGVsZWdhdGVfcGF5bWVudCAoU2VjdXJlIERhdGEpCiBQIC0tPj4gVjogUmV0dXJuIHBzcF90cmFuc2FjdGlvbl90b2tlbgogViAtLT4+IEE6IFJldHVybiBwc3BfdHJhbnNhY3Rpb25fdG9rZW4KCgogQSAtPj4gUDogW0FDUF0gL2NoZWNrb3V0X3Nlc3Npb24ve2lkfS9jb21wbGV0ZSAod2l0aCBwc3BfdG9rZW4pCgoKIFAgLT4+IE06IFtQT1NUXSAvYWdlbnRpYy9zZXNzaW9ucy97aWR9L2NvbW1pdAogTSAtLT4+IFA6IDIwMCBTVUNDRVNTIAoKCiBQIC0+PiBQOiBFeGVjdXRlIFBheW1lbnQgQXV0aG9yaXphdGlvbgogUCAtPj4gTTogW1BPU1RdIC9hZ2VudGljL3Nlc3Npb25zL3tpZH0vZmluYWxpemUgKG9yIHN0YW5kYXJkIHdlYmhvb2spCiBNIC0tPj4gUDogMjAwIEFDSwogTSAtPj4gTTogVHJpZ2dlciBvcmRlciBmdWxmaWxsbWVudAoKCiBQIC0tPj4gQTogRmluYWwgU3RhdHVzOiBTVUNDRVNTCiBBIC0tPj4gUzogIk9yZGVyIENvbmZpcm1lZCEgUmVmOiBPUkRSXzIxMjIiCgoKIE5vdGUgb3ZlciBTLCBNOiBTdGFnZSA0OiBQb3N0LVB1cmNoYXNlIEZsb3cKIE0gLT4+IFA6IFtQT1NUXSAvYWdlbnRpYy9zZXNzaW9ucy97aWR9L2V2ZW50cwogUCAtPj4gQTogUHVzaCB0cmFja2luZyBpbmZvIHRvIEFnZW50CiBBIC0tPj4gUzogIllvdXIgcGFja2FnZSBpcyBvbiB0aGUgd2F5ISBMaW5rOiBbREhMIFRyYWNraW5nXSIKCg==

For ACP with the /complete endpoint (Advanced Flow):

CnNlcXVlbmNlRGlhZ3JhbQphY3RvciBTIGFzIFNob3BwZXIKcGFydGljaXBhbnQgQSBhcyBTaG9wcGluZyBBZ2VudApwYXJ0aWNpcGFudCBWIGFzIEFnZW50J3MgVG9rZW4gVmF1bHQKcGFydGljaXBhbnQgUCBhcyBBZHllbiAoVW5pdmVyc2FsIFRyYW5zbGF0b3IpCnBhcnRpY2lwYW50IE0gYXMgWW91ciBzZXJ2ZXIKCgoKCk5vdGUgb3ZlciBTLCBNOiBTdGFnZSAxOiBDcmVhdGUgQ2hlY2tvdXQKUyAtPj4gQTogIkkgd2FudCB0byBidXkgdGhlc2UgaGVhZHBob25lcyIKQSAtPj4gUDogW0FDUF0gL2NoZWNrb3V0X3Nlc3Npb24KUCAtPj4gTTogW1BPU1RdIC9hZ2VudGljL3Nlc3Npb25zL3tpZH0KTSAtLT4+IFA6IDIwMCBTVUNDRVNTICh0b3RhbHMsIHNoaXBwaW5nLCBpbnZlbnRvcnkpClAgLS0+PiBBOiBTZXNzaW9uIElEICsgdG90YWxzCkEgLS0+PiBTOiBEaXNwbGF5cyBPcmRlciBTdW1tYXJ5IChQcmljZS9TdG9jaykKCgoKCk5vdGUgb3ZlciBTLCBNOiBTdGFnZSAyOiBQYXltZW50ICYgRmluYWwgVmFsaWRhdGlvbgpTIC0+PiBBOiAiUGF5IG5vdyIKIEEgLT4+IFY6IEluc3RydWN0IHRvIGRlbGVnYXRlIHBheW1lbnQgZm9yIFNlc3Npb24ge2lkfQpWIC0+PiBQOiBbQUNQXSAvZGVsZWdhdGVfcGF5bWVudCAoU2VjdXJlIERhdGEpClAgLS0+PiBWOiBSZXR1cm4gcHNwX3RyYW5zYWN0aW9uX3Rva2VuClYgLS0+PiBBOiBSZXR1cm4gcHNwX3RyYW5zYWN0aW9uX3Rva2VuCgoKCgpBIC0+PiBQOiBbQUNQXSAvY2hlY2tvdXRfc2Vzc2lvbi97aWR9L2NvbXBsZXRlICh3aXRoIHBzcF90b2tlbikKCgoKClAgLT4+IE06IFtQT1NUXSAvYWdlbnRpYy9zZXNzaW9ucy97aWR9L2NvbXBsZXRlIChzZW5kIHBzcF90b2tlbikKTSAtPj4gUDogW1BPU1RdIC9wYXltZW50cyAoc2VuZCBwc3BfdG9rZW4pClAgLS0+PiBNOiBwYXltZW50IHJlc3VsdApNIC0+PiBNOiBUcmlnZ2VyIG9yZGVyIGZ1bGZpbGxtZW50Ck0gLS0+PiBQOiBwYXltZW50IHJlc3VsdAoKClAgLS0+PiBBOiBGaW5hbCBTdGF0dXM6IFNVQ0NFU1MKQSAtLT4+IFM6ICJPcmRlciBDb25maXJtZWQhIFJlZjogT1JEUl8yMTIyIgoKCgoKTm90ZSBvdmVyIFMsIE06IFN0YWdlIDQ6IFBvc3QtUHVyY2hhc2UgRmxvdwpNIC0+PiBQOiBbUE9TVF0gL2FnZW50aWMvc2Vzc2lvbnMve2lkfS9ldmVudHMKUCAtPj4gQTogUHVzaCB0cmFja2luZyBpbmZvIHRvIEFnZW50CkEgLS0+PiBTOiAiWW91ciBwYWNrYWdlIGlzIG9uIHRoZSB3YXkhIExpbms6IFtESEwgVHJhY2tpbmddIgoK

For UCP:

CnNlcXVlbmNlRGlhZ3JhbQogICBhY3RvciBTIGFzIFNob3BwZXIKICAgcGFydGljaXBhbnQgQSBhcyBTaG9wcGluZyBBZ2VudAogICBwYXJ0aWNpcGFudCBWIGFzIEFnZW50J3MgVG9rZW4gVmF1bHQKICAgcGFydGljaXBhbnQgUCBhcyBBZHllbiAoVW5pdmVyc2FsIFRyYW5zbGF0b3IpCiAgIHBhcnRpY2lwYW50IE0gYXMgWW91ciBzZXJ2ZXIKCgogICBOb3RlIG92ZXIgUywgTTogU3RhZ2UgMTogQ3JlYXRlIENoZWNrb3V0CiAgIFMgLT4+IEE6ICJJIHdhbnQgdG8gYnV5IHRoZXNlIGhlYWRwaG9uZXMiCiAgIEEgLT4+IFA6IFtQT1NUXSAvY2hlY2tvdXQgKGxpbmVfaXRlbXMsIGJ1eWVyKQogIAogICBQIC0+PiBNOiBbUE9TVF0gL2FnZW50aWMvc2Vzc2lvbnMve2lkfQogICBNIC0tPj4gUDogMjAwIFNVQ0NFU1MgKHRvdGFscywgc2hpcHBpbmcpCiAgIFAgLS0+PiBBOiBVQ1AgQ2hlY2tvdXQgT2JqZWN0CiAgIEEgLS0+PiBTOiBEaXNwbGF5cyBPcmRlciBTdW1tYXJ5CgoKICAgTm90ZSBvdmVyIFMsIE06IFN0YWdlIDI6IFRva2VuaXphdGlvbiAmIENvbXBsZXRpb24KICAgUyAtPj4gQTogIlBheSBub3ciCiAgCiAgIEEgLT4+IFY6IFJldHJpZXZlIHJhdyBwYXltZW50IGNyZWRlbnRpYWxzCiAgIFYgLS0+PiBBOiAoU2VjdXJlIENhcmQgRGF0YSkKCgogICBBIC0+PiBQOiBbUE9TVF0gL2NoZWNrb3V0L3tpZH0vY29tcGxldGUgKHRva2VuOiAidWNwX3Rrbl84ODkyIikKCgogICBQIC0+PiBWOiBbUE9TVF0gL2RldG9rZW5pemUgKHRva2VuOiAidWNwX3Rrbl84ODkyIikKICAgViAtLT4+IFA6IHsgImNhcmQiOiAiNDExMTEiLCAidHlwZSI6ICJjYXJkIiB9CgoKICAgUCAtPj4gTTogW1BPU1RdIC9hZ2VudGljL3Nlc3Npb25zL3tpZH0vY29tbWl0CiAgIE0gLS0+PiBQOiAyMDAgU1VDQ0VTUyAob3JkZXI6IHtpZDogT1JEUl8yMTIyfSkKICAKICAgUCAtPj4gUDogRXhlY3V0ZSBQYXltZW50IEF1dGhvcml6YXRpb24KCgogICBQIC0+PiBNOiBbUE9TVF0gL2FnZW50aWMvc2Vzc2lvbnMve2lkfS9maW5hbGl6ZSAob3IgU3RhbmRhcmQgV2ViaG9vaykKICAgTSAtPj4gTTogVHJpZ2dlciBPcmRlciBmdWxmaWxsbWVudAoKCiAgIFAgLS0+PiBBOiBVQ1AgQ2hlY2tvdXQgT2JqZWN0IChzdGF0dXM6IGNvbXBsZXRlZCkKICAgQSAtLT4+IFM6ICJPcmRlciBDb25maXJtZWQhIFJlZjogT1JEUl8yMTIyIgoKCiAgIE5vdGUgb3ZlciBTLCBNOiBTdGFnZSAzOiBQb3N0LVB1cmNoYXNlIFVwZGF0ZXMKICAgTSAtPj4gUDogW1BPU1RdIC9hZ2VudGljL3Nlc3Npb25zL3tpZH0vZXZlbnRzICh0cmFja2luZ19pbmZvKQogICBQIC0+PiBBOiBQdXNoIENhcGFiaWxpdHkgRXZlbnQKICAgQSAtLT4+IFM6ICJZb3VyIHBhY2thZ2UgaXMgb24gdGhlIHdheSEiCg==