{"title":"In-Chat App Integration","category":"default","creationDate":1778252957,"content":"<p>Build an ecommerce experience that is native to ChatGPT, where your shoppers can make transactions directly inside of the chat interface. Using the <a href=\"https:\/\/developers.openai.com\/apps-sdk\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">OpenAI Apps SDK<\/a>, you can create custom, interactive ecommerce interfaces where users can browse, select, and pay without leaving the AI chat. Adyen securely processes payments initiated by these interactions with AI agents, ensuring a seamless flow from chat to checkout.<\/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 <a href=\"\/online-payments\/build-your-integration\">online payments<\/a> integration.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Setup steps<\/strong><\/td>\n<td style=\"text-align: left;\">Before you begin: <ul><li markdown=\"1\">Build your ChatGPT app, following the <a href=\"https:\/\/developers.openai.com\/apps-sdk\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">OpenAI Apps SDK<\/a> documentation.<\/li><li markdown=\"1\">Set up your <a href=\"https:\/\/developers.openai.com\/apps-sdk\/build\/mcp-server\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">MCP server<\/a> to connect ChatGPT with your backend.<\/li><\/ul><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Limitations<\/strong><\/td>\n<td style=\"text-align: left;\"><a href=\"https:\/\/developers.openai.com\/apps-sdk\/build\/monetization\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Instant Checkout<\/a> availability is limited. If it is not available to you, you can instead redirect shoppers to your own checkout page. By redirecting shoppers to your own checkout page, you have full control over the checkout experience and can use any <a href=\"\/online-payments\/build-your-integration\">online payments integration<\/a>, like Drop-in\/Components or Hosted Checkout.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>How it works<\/h2>\n<p>To accept payments in your ChatGPT app with Adyen, you need to implement the following components:<\/p>\n<table>\n<thead>\n<tr>\n<th>Component<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Checkout session creation tool<\/strong><\/td>\n<td>An MCP tool that creates a checkout session with line items, totals, and Adyen as the payment provider.<\/td>\n<\/tr>\n<tr>\n<td><strong>Widget<\/strong><\/td>\n<td>Your ChatGPT app UI component that displays the cart and calls <code>window.openai.requestCheckout<\/code> to initiate payment.<\/td>\n<\/tr>\n<tr>\n<td><strong>complete_checkout tool<\/strong><\/td>\n<td>An MCP tool that receives the ACP token from OpenAI and calls Adyen to authorize the payment.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Create MCP tools that correspond to the <a href=\"https:\/\/developers.openai.com\/commerce\/specs\/checkout\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Agentic Checkout Spec (ACS)<\/a> REST endpoints:<\/p>\n<table>\n<thead>\n<tr>\n<th>MCP tool<\/th>\n<th>ACS endpoint<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Checkout session tool<\/strong><\/td>\n<td><a href=\"https:\/\/developers.openai.com\/commerce\/specs\/checkout#post-checkout_sessions\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">\n  <code>POST \/checkout_sessions<\/code>\n<\/a><\/td>\n<\/tr>\n<tr>\n<td><strong>complete_checkout<\/strong><\/td>\n<td><a href=\"https:\/\/developers.openai.com\/commerce\/specs\/checkout#post-checkout_sessionscheckout_session_idcomplete\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">\n  <code>POST \/checkout_sessions\/{id}\/complete<\/code>\n<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Transaction flow<\/h3>\n<p>When a shopper initiates a transaction in the chat interface, the following flow occurs:<\/p>\n<ol>\n<li><strong>Shopper initiates transaction<\/strong>: The shopper prompts the AI agent to buy something from you, and the checkout session tool from your MCP server is invoked.<\/li>\n<li><strong>Server prepares session<\/strong>: Your MCP tool returns checkout session data (session ID, line items, totals, Adyen as the payment provider) in <code>structuredContent<\/code>.<\/li>\n<li><strong>Widget previews cart<\/strong>: Your widget renders the line items and totals so that the shopper can review and confirm.<\/li>\n<li><strong>Widget calls requestCheckout<\/strong>: When the shopper selects the button to continue with checkout, your widget calls <code>window.openai.requestCheckout(session_data)<\/code>. ChatGPT opens the Instant Checkout UI and shows available payment methods.<\/li>\n<li><strong>Shopper selects payment method and pays<\/strong>: The shopper selects their payment method and clicks <strong>Pay<\/strong>. ChatGPT communicates with Adyen to register the Agentic Commerce Protocol (ACP) token, then calls the <code>complete_checkout<\/code> tool from your MCP server with the ACP token in <code>payment_data.token<\/code>.<\/li>\n<li><strong>Server authorizes payment<\/strong>: Your <code>complete_checkout<\/code> tool uses the ACP token to make a payment request to Adyen. Adyen authorizes the payment and returns the result.<\/li>\n<li><strong>Order confirmation<\/strong>: Your MCP tool returns payment result to ChatGPT, which passes it to your widget. Your widget displays the payment result to the shopper.<\/li>\n<\/ol>\n<p>The following diagram shows the interaction between the shopper in the chat interface, your app widget, the Apps SDK, your MCP server, and Adyen's server.<\/p>\n<div id=\"mermaid-69fe043770daf-wrapper\"><div id=\"mermaid-69fe043770daf\" class=\"mermaid-shortcode loading\">CnNlcXVlbmNlRGlhZ3JhbQoKcGFydGljaXBhbnQgU2hvcHBlciBhcyBTaG9wcGVyCnBhcnRpY2lwYW50IFdpZGdldCBhcyBXaWRnZXQKcGFydGljaXBhbnQgU0RLIGFzIEFwcHMgU0RLCnBhcnRpY2lwYW50IE1DUCBhcyBZb3VyIE1DUCBTZXJ2ZXIKcGFydGljaXBhbnQgQWR5ZW4gYXMgQWR5ZW4KClNob3BwZXItPj5XaWRnZXQ6IFByb21wdCB0byBzdGFydCB0cmFuc2FjdGlvbgpXaWRnZXQtPj5TREs6IEludm9rZSBjaGVja291dCB0b29sClNESy0+Pk1DUDogQ2FsbCBjaGVja291dCB0b29sCk1DUC0tPj5TREs6IFJldHVybiBjaGVja291dCBzZXNzaW9uIGRhdGEgKHByb3ZpZGVyOiBhZHllbikKU0RLLS0+PldpZGdldDogUmV0dXJuIHN0cnVjdHVyZWQgY29udGVudApXaWRnZXQtLT4+U2hvcHBlcjogU2hvdyBwcm9kdWN0IHBhZ2UKU2hvcHBlci0+PldpZGdldDogU2VsZWN0IGJ1dHRvbiB0byBjb250aW51ZSB3aXRoIGNoZWNrb3V0CldpZGdldC0+PlNESzogQ2FsbCB3aW5kb3cub3BlbmFpLnJlcXVlc3RDaGVja291dApTREstLT4+U2hvcHBlcjogU2hvdyBwYXltZW50IHBhZ2UKU2hvcHBlci0+PlNESzogU2VsZWN0IHBheW1lbnQgbWV0aG9kClNESy0+Pk1DUDogQ2FsbCBjb21wbGV0ZV9jaGVja291dApNQ1AtPj5BZHllbjogTWFrZSBQT1NUIC9wYXltZW50cyByZXF1ZXN0CkFkeWVuLS0+Pk1DUDogUmV0dXJuIHBheW1lbnQgcmVzdWx0Ck1DUC0tPj5TREs6IFJldHVybiBvcmRlciBpbmZvcm1hdGlvbgpTREstLT4+V2lkZ2V0OiBSZXR1cm4gb3JkZXIgY29uZmlybWF0aW9uCldpZGdldC0tPj5TaG9wcGVyOiBTaG93IHBheW1lbnQgcmVzdWx0Cg==<\/div><\/div>\n<h2>Build your checkout session tool<\/h2>\n<p>Create an MCP tool that returns the checkout session data in the <code>payment_provider<\/code> object in <code>structuredContent<\/code>. Include  in the <code>merchant_id<\/code> field:<\/p>\n<p>It must include the following:<\/p>\n<table>\n<thead>\n<tr>\n<th>Field<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>provider<\/code><\/td>\n<td><strong>adyen<\/strong><\/td>\n<\/tr>\n<tr>\n<td><code>merchant_id<\/code><\/td>\n<td>Your Adyen <a href=\"\/account\/account-structure#merchant-accounts\">merchant account<\/a>.<\/td>\n<\/tr>\n<tr>\n<td><code>supported_payment_methods<\/code><\/td>\n<td>An array of supported payment methods. <br> Example: <strong>[scheme]<\/strong><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Example payment_provider in checkout session response'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n  \\\"payment_provider\\\": {\\n    \\\"provider\\\": \\\"adyen\\\",\\n    \\\"merchant_id\\\": \\\"ADYEN_MERCHANT_ACCOUNT\\\",\\n    \\\"supported_payment_methods\\\": [\\\"scheme\\\"]\\n  }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p>For the full checkout session payload structure, go to the <a href=\"https:\/\/developers.openai.com\/commerce\/specs\/checkout#response\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Agentic Checkout Spec<\/a>.<\/p>\n<h2>Build your widget<\/h2>\n<p>Create a widget that handles the checkout UI and initiates the payment flow. Your widget must:<\/p>\n<ol>\n<li>Receive the checkout session data from your MCP tool via <code>structuredContent<\/code>.<\/li>\n<li>Render the cart (line items, totals, terms) so the shopper can review before paying.<\/li>\n<li>Call <code>window.openai.requestCheckout(session_data)<\/code> when the shopper clicks to proceed.<\/li>\n<\/ol>\n<h3>Call <code>requestCheckout<\/code><\/h3>\n<p>When the shopper indicates that they are ready to pay, call <code>window.openai.requestCheckout<\/code> with your checkout session data. This opens the Instant Checkout UI where the shopper selects their payment method.<\/p>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Example requestCheckout call with Adyen'\" :id=\"''\" :code-data='[{\"language\":\"javascript\",\"tabTitle\":\"\",\"content\":\"const order = await window.openai.requestCheckout({\\n    ...checkoutSession,\\n    id: checkoutSessionId\\n});\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p>The function returns a promise that resolves with the order result or rejects on error or cancellation.<\/p>\n<p>For further details on building widgets, go to the <a href=\"https:\/\/developers.openai.com\/apps-sdk\/build\/monetization\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">OpenAI Apps SDK monetization guide<\/a>.<\/p>\n<h2>Build your <code>complete_checkout<\/code> tool<\/h2>\n<p>When the shopper selects a payment method and selects the pay button, OpenAI calls the <code>complete_checkout<\/code> tool from your MCP server with the ACP token in <code>payment_data.token<\/code>. Use this token to authorize the payment with Adyen.<\/p>\n<p>For the Adyen API request details, go to <a href=\"\/online-payments\/agentic-commerce\/product-feed-integration#authorize-a-payment-with-the-acp-token\">Authorize a payment with the ACP token<\/a>.<\/p>\n<h3>Handle errors<\/h3>\n<p>Your <code>complete_checkout<\/code> tool can return error messages to handle payment failures. The following error codes are displayed on the Instant Checkout UI:<\/p>\n<table>\n<thead>\n<tr>\n<th>Error code<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>payment_declined<\/code><\/td>\n<td>The payment was declined by Adyen.<\/td>\n<\/tr>\n<tr>\n<td><code>requires_3ds<\/code><\/td>\n<td>The payment requires 3D Secure authentication.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>All other error messages are returned to your widget as a response to <code>requestCheckout<\/code>, where you can show them.<\/p>\n<p>For the full list of error codes, go to the <a href=\"https:\/\/developers.openai.com\/commerce\/specs\/checkout#message-type--error\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">ACP error messages specification<\/a>.<\/p>\n<h2>Testing<\/h2>\n<p>Use ChatGPT's test payment mode with the Adyen test environment to test your integration without processing real payments.<\/p>\n<ol>\n<li>\n<p>Use your test Adyen merchant account and your test <a href=\"\/development-resources\/api-credentials\">API credentials<\/a>.<\/p>\n<\/li>\n<li>\n<p>Set <code>payment_mode: test<\/code> in your <code>requestCheckout<\/code> call.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Set payment_mode to test'\" :id=\"''\" :code-data='[{\"language\":\"javascript\",\"tabTitle\":\"\",\"content\":\"window.openai.requestCheckout({\\n  id: checkout_session_id,\\n  payment_mode: \\\"test\\\",\\n  payment_provider: {\\n    provider: \\\"adyen\\\"\\n  },\\n  merchant_id: \\\"ADYEN_MERCHANT_ACCOUNT\\\",\\n  supported_payment_methods: [\\\"scheme\\\"]\\n})\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<li>\n<p>Use Adyen <a href=\"\/development-resources\/test-cards-and-credentials\/test-card-numbers\">test card numbers<\/a>, for example: <strong>4111 1111 1111 1111<\/strong>.<\/p>\n<\/li>\n<li>\n<p>Verify that you receive test payments:<\/p>\n<ul>\n<li>In your <a href=\"https:\/\/ca-test.adyen.com\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">test Customer Area<\/a>, test payments show up in the payment list. Go to <strong>Transactions<\/strong> &gt; <strong>Payments<\/strong>.<\/li>\n<li>For each test payment, we send you a <a href=\"\/development-resources\/webhooks\/\">webhook message<\/a>.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h2>Go live<\/h2>\n<div class=\"notices yellow\">\n<p>After you submit your ChatGPT app, do not use test payment mode, because it is exposed to users in the live environment.<\/p>\n<\/div>\n<p>When you are ready to accept live payments:<\/p>\n<ol>\n<li>Switch to your live Adyen merchant account.<\/li>\n<li>Update your MCP server to use your live <a href=\"\/development-resources\/api-credentials\">API credentials<\/a> and an idempotency key for each request to Adyen.<\/li>\n<li>Set <code>payment_mode: \"live\"<\/code> in your <code>requestCheckout<\/code> call.<\/li>\n<li>Submit your ChatGPT app for review.<\/li>\n<\/ol>","url":"https:\/\/docs.adyen.com\/online-payments\/agentic-commerce\/in-chat-app-integration","articleFields":{"description":"Accept payments in your ChatGPT app using Adyen.","robots":"noindex,nofollow","feedback_component":true,"filters_component":false,"decision_tree":"[]"},"algolia":{"url":"https:\/\/docs.adyen.com\/online-payments\/agentic-commerce\/in-chat-app-integration","title":"In-Chat App Integration","content":"Build an ecommerce experience that is native to ChatGPT, where your shoppers can make transactions directly inside of the chat interface. Using the OpenAI Apps SDK, you can create custom, interactive ecommerce interfaces where users can browse, select, and pay without leaving the AI chat. Adyen securely processes payments initiated by these interactions with AI agents, ensuring a seamless flow from chat to checkout.\nRequirements\n\n\n\nRequirement\nDescription\n\n\n\n\nIntegration type\nAn online payments integration.\n\n\nSetup steps\nBefore you begin: Build your ChatGPT app, following the OpenAI Apps SDK documentation.Set up your MCP server to connect ChatGPT with your backend.\n\n\nLimitations\nInstant Checkout availability is limited. If it is not available to you, you can instead redirect shoppers to your own checkout page. By redirecting shoppers to your own checkout page, you have full control over the checkout experience and can use any online payments integration, like Drop-in\/Components or Hosted Checkout.\n\n\n\nHow it works\nTo accept payments in your ChatGPT app with Adyen, you need to implement the following components:\n\n\n\nComponent\nDescription\n\n\n\n\nCheckout session creation tool\nAn MCP tool that creates a checkout session with line items, totals, and Adyen as the payment provider.\n\n\nWidget\nYour ChatGPT app UI component that displays the cart and calls window.openai.requestCheckout to initiate payment.\n\n\ncomplete_checkout tool\nAn MCP tool that receives the ACP token from OpenAI and calls Adyen to authorize the payment.\n\n\n\nCreate MCP tools that correspond to the Agentic Checkout Spec (ACS) REST endpoints:\n\n\n\nMCP tool\nACS endpoint\n\n\n\n\nCheckout session tool\n\n  POST \/checkout_sessions\n\n\n\ncomplete_checkout\n\n  POST \/checkout_sessions\/{id}\/complete\n\n\n\n\nTransaction flow\nWhen a shopper initiates a transaction in the chat interface, the following flow occurs:\n\nShopper initiates transaction: The shopper prompts the AI agent to buy something from you, and the checkout session tool from your MCP server is invoked.\nServer prepares session: Your MCP tool returns checkout session data (session ID, line items, totals, Adyen as the payment provider) in structuredContent.\nWidget previews cart: Your widget renders the line items and totals so that the shopper can review and confirm.\nWidget calls requestCheckout: When the shopper selects the button to continue with checkout, your widget calls window.openai.requestCheckout(session_data). ChatGPT opens the Instant Checkout UI and shows available payment methods.\nShopper selects payment method and pays: The shopper selects their payment method and clicks Pay. ChatGPT communicates with Adyen to register the Agentic Commerce Protocol (ACP) token, then calls the complete_checkout tool from your MCP server with the ACP token in payment_data.token.\nServer authorizes payment: Your complete_checkout tool uses the ACP token to make a payment request to Adyen. Adyen authorizes the payment and returns the result.\nOrder confirmation: Your MCP tool returns payment result to ChatGPT, which passes it to your widget. Your widget displays the payment result to the shopper.\n\nThe following diagram shows the interaction between the shopper in the chat interface, your app widget, the Apps SDK, your MCP server, and Adyen's server.\nCnNlcXVlbmNlRGlhZ3JhbQoKcGFydGljaXBhbnQgU2hvcHBlciBhcyBTaG9wcGVyCnBhcnRpY2lwYW50IFdpZGdldCBhcyBXaWRnZXQKcGFydGljaXBhbnQgU0RLIGFzIEFwcHMgU0RLCnBhcnRpY2lwYW50IE1DUCBhcyBZb3VyIE1DUCBTZXJ2ZXIKcGFydGljaXBhbnQgQWR5ZW4gYXMgQWR5ZW4KClNob3BwZXItPj5XaWRnZXQ6IFByb21wdCB0byBzdGFydCB0cmFuc2FjdGlvbgpXaWRnZXQtPj5TREs6IEludm9rZSBjaGVja291dCB0b29sClNESy0+Pk1DUDogQ2FsbCBjaGVja291dCB0b29sCk1DUC0tPj5TREs6IFJldHVybiBjaGVja291dCBzZXNzaW9uIGRhdGEgKHByb3ZpZGVyOiBhZHllbikKU0RLLS0+PldpZGdldDogUmV0dXJuIHN0cnVjdHVyZWQgY29udGVudApXaWRnZXQtLT4+U2hvcHBlcjogU2hvdyBwcm9kdWN0IHBhZ2UKU2hvcHBlci0+PldpZGdldDogU2VsZWN0IGJ1dHRvbiB0byBjb250aW51ZSB3aXRoIGNoZWNrb3V0CldpZGdldC0+PlNESzogQ2FsbCB3aW5kb3cub3BlbmFpLnJlcXVlc3RDaGVja291dApTREstLT4+U2hvcHBlcjogU2hvdyBwYXltZW50IHBhZ2UKU2hvcHBlci0+PlNESzogU2VsZWN0IHBheW1lbnQgbWV0aG9kClNESy0+Pk1DUDogQ2FsbCBjb21wbGV0ZV9jaGVja291dApNQ1AtPj5BZHllbjogTWFrZSBQT1NUIC9wYXltZW50cyByZXF1ZXN0CkFkeWVuLS0+Pk1DUDogUmV0dXJuIHBheW1lbnQgcmVzdWx0Ck1DUC0tPj5TREs6IFJldHVybiBvcmRlciBpbmZvcm1hdGlvbgpTREstLT4+V2lkZ2V0OiBSZXR1cm4gb3JkZXIgY29uZmlybWF0aW9uCldpZGdldC0tPj5TaG9wcGVyOiBTaG93IHBheW1lbnQgcmVzdWx0Cg==\nBuild your checkout session tool\nCreate an MCP tool that returns the checkout session data in the payment_provider object in structuredContent. Include  in the merchant_id field:\nIt must include the following:\n\n\n\nField\nDescription\n\n\n\n\nprovider\nadyen\n\n\nmerchant_id\nYour Adyen merchant account.\n\n\nsupported_payment_methods\nAn array of supported payment methods.  Example: [scheme]\n\n\n\n\n    \n\nFor the full checkout session payload structure, go to the Agentic Checkout Spec.\nBuild your widget\nCreate a widget that handles the checkout UI and initiates the payment flow. Your widget must:\n\nReceive the checkout session data from your MCP tool via structuredContent.\nRender the cart (line items, totals, terms) so the shopper can review before paying.\nCall window.openai.requestCheckout(session_data) when the shopper clicks to proceed.\n\nCall requestCheckout\nWhen the shopper indicates that they are ready to pay, call window.openai.requestCheckout with your checkout session data. This opens the Instant Checkout UI where the shopper selects their payment method.\n\n    \n\nThe function returns a promise that resolves with the order result or rejects on error or cancellation.\nFor further details on building widgets, go to the OpenAI Apps SDK monetization guide.\nBuild your complete_checkout tool\nWhen the shopper selects a payment method and selects the pay button, OpenAI calls the complete_checkout tool from your MCP server with the ACP token in payment_data.token. Use this token to authorize the payment with Adyen.\nFor the Adyen API request details, go to Authorize a payment with the ACP token.\nHandle errors\nYour complete_checkout tool can return error messages to handle payment failures. The following error codes are displayed on the Instant Checkout UI:\n\n\n\nError code\nDescription\n\n\n\n\npayment_declined\nThe payment was declined by Adyen.\n\n\nrequires_3ds\nThe payment requires 3D Secure authentication.\n\n\n\nAll other error messages are returned to your widget as a response to requestCheckout, where you can show them.\nFor the full list of error codes, go to the ACP error messages specification.\nTesting\nUse ChatGPT's test payment mode with the Adyen test environment to test your integration without processing real payments.\n\n\nUse your test Adyen merchant account and your test API credentials.\n\n\nSet payment_mode: test in your requestCheckout call.\n\n\n\n\n\nUse Adyen test card numbers, for example: 4111 1111 1111 1111.\n\n\nVerify that you receive test payments:\n\nIn your test Customer Area, test payments show up in the payment list. Go to Transactions &gt; Payments.\nFor each test payment, we send you a webhook message.\n\n\n\nGo live\n\nAfter you submit your ChatGPT app, do not use test payment mode, because it is exposed to users in the live environment.\n\nWhen you are ready to accept live payments:\n\nSwitch to your live Adyen merchant account.\nUpdate your MCP server to use your live API credentials and an idempotency key for each request to Adyen.\nSet payment_mode: \"live\" in your requestCheckout call.\nSubmit your ChatGPT app for review.\n","type":"page","locale":"en","boost":17,"hierarchy":{"lvl0":"Home","lvl1":"Online payments","lvl2":"Agentic Commerce","lvl3":"In-Chat App 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\/in-chat-app-integration"},"levels":4,"category":"Online Payments","category_color":"green","tags":["In-Chat","Integration"]}}
