{"title":"Google Agentic Commerce integration","category":"default","creationDate":1781866579,"content":"<p>Use this integration for processing Google Pay payments through Adyen, when Google agents (<a href=\"https:\/\/search.google\/ways-to-search\/ai-mode\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Google AI Mode<\/a> or <a href=\"https:\/\/gemini.google.com\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Gemini<\/a>) initiate transactions with you. In this integration, Google handles product discovery, checkout session management, and showing the Google Pay payment sheet to the shopper. Your server gets an encrypted payment token from google, and you pass it to Adyen to complete the payment. <\/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\/build-your-integration#advanced-flow-three-api-requests\">online payments integration using Advanced flow<\/a>.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Limitations<\/strong><\/td>\n<td style=\"text-align: left;\">This integration is only for Google Pay payments.<\/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\">Follow the <a href=\"https:\/\/developers.google.com\/pay\/api\/web\/guides\/setup\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">setup steps in the Google Pay documentation<\/a>.<\/li><li markdown=\"1\"><a href=\"https:\/\/docs.adyen.com\/payment-methods\/add-payment-methods\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Add Google Pay in your Customer Area<\/a>.<\/li><li markdown=\"1\">Set up your server to handle Google's <a href=\"https:\/\/developers.google.com\/pay\/api\/universal-commerce-protocol\/overview\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Universal Commerce Protocol (UCP)<\/a>.<\/li><\/ul><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>How it works<\/h2>\n<p>The following shows the process of a shopper using a Google AI agent to make a transaction with you:<\/p>\n<ol>\n<li>The shopper instructs Google's AI agent to initiate a transaction with you.<\/li>\n<li>Google's AI agent makes a request to your server that handles the Universal Commerce Protocol (UCP) Tokenization flow.<\/li>\n<li>Your server returns order data to Google's AI agent (like total payment amount and shipping options).<\/li>\n<li>Google's AI agent shows the order summary to the shopper.<\/li>\n<li>The shopper selects to pay with Google Pay.<\/li>\n<li>Google's AI agent shows the payment form, collects the shopper's payment details, and creates an encrypted token that you can use to process the payment through Adyen.<\/li>\n<li>Google's AI agent makes a request to your server, including the encrypted token.<\/li>\n<li>Your server makes a payment request to Adyen's server, including the encrypted token.<\/li>\n<li>Adyen returns the payment result to you.<\/li>\n<li>You return the payment result to Google's AI agent.<\/li>\n<li>Google's AI agent shows the order confirmation to the shopper.<\/li>\n<li>Adyen sends a webhook message with the payment outcome to your webhook server.<\/li>\n<\/ol>\n<h2>Configure your UCP payment handler for Adyen payments<\/h2>\n<p>Your server's UCP payment handler handles requests from Google's AI agent. You must configure it to handle tokens for Adyen payments.<\/p>\n<p>In the manifest of the UCP handler, configure the following fields:<\/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>tokenization_specification.type<\/code><\/td>\n<td><strong>PAYMENT_GATEWAY<\/strong>. This is not a placeholder, this is the exact value.<\/td>\n<\/tr>\n<tr>\n<td><code>tokenization_specification.parameters.gateway<\/code><\/td>\n<td><strong>adyen<\/strong><\/td>\n<\/tr>\n<tr>\n<td><code>tokenization_specification.parameters.gatewayMerchantId<\/code><\/td>\n<td>Your Adyen merchant account.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"notices green\">\n<p>In your manifest file, the <code>merchant_info.merchant_id<\/code> field meant for your Google Pay Merchant ID. This field is not for your Adyen merchant account.<\/p>\n<\/div>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Example to configure your UCP manifest file'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n  \\\"tokenization_specification\\\": {\\n    \\\"type\\\": \\\"PAYMENT_GATEWAY\\\",         \\n    \\\"parameters\\\": {\\n      \\\"gateway\\\": \\\"adyen\\\",              \\n      \\\"gatewayMerchantId\\\": \\\"ADYEN_MERCHANT_ACCOUNT\\\"  \\n    }\\n  }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<h2>Process the payment<\/h2>\n<p>To process the payment, you must get the encrypted token from the request from Google's AI agent to your server. Then use it to make a payment request from your server to Adyen.<\/p>\n<h3>Get the encrypted token<\/h3>\n<p>Google makes a POST <code>\/checkout-sessions\/{id}\/complete<\/code> to your server. <\/p>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Example request body from Google'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n  \\\"payment\\\": {\\n    \\\"instruments\\\": [{\\n      \\\"credential\\\": {\\n        \\\"type\\\": \\\"PAYMENT_GATEWAY\\\",\\n        \\\"token\\\": \\\"{\\\"signature\\\":\\\"...\\\",\\\"protocolVersion\\\":\\\"ECv2\\\",\\\"signedMessage\\\":\\\"...\\\"}\\\"\\n                  \\\/\\\/  \\u2191  Pass this value as-is to Adyen \\u2014 do not decode or modify it\\n      }\\n    }]\\n  }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p>Get the following from the request body:<\/p>\n<table>\n<thead>\n<tr>\n<th>Parameter<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>payment.instruments.credential.token<\/code><\/td>\n<td>The encrypted token from Google. Do not decode or modify it. Pass the complete value to Adyen.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Make a payment request to Adyen<\/h2>\n<p>To submit the payment, make a payment request to Adyen.<\/p>\n<p>When you <a href=\"\/online-payments\/build-your-integration\/advanced-flow?platform=Web#make-a-payment\">make the payment request<\/a>, additionally include the following for the Google Pay payment initiated by Google's AI agent:<\/p>\n<table>\n<thead>\n<tr>\n<th>Parameter<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>paymentMethod.type<\/code><\/td>\n<td><strong>googlepay<\/strong><\/td>\n<\/tr>\n<tr>\n<td><code>paymentMethod.googlePayToken<\/code><\/td>\n<td>The complete token value from the POST <code>\/checkout-sessions\/{id}\/complete<\/code> request from Google's AI agent.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Example payment request with Google Pay token'\" :id=\"'payments-request-agentic-googlepay'\" :code-data=\"[{&quot;language&quot;:&quot;bash&quot;,&quot;tabTitle&quot;:&quot;&quot;,&quot;content&quot;:&quot;curl https:\\\/\\\/checkout-test.adyen.com\\\/v72\\\/payments \\\\\\n-H 'x-api-key: ADYEN_API_KEY' \\\\\\n-H 'Idempotency-Key: YOUR_IDEMPOTENCY_KEY' \\\\\\n-H 'content-type: application\\\/json' \\\\\\n-d '{\\n  \\&quot;merchantAccount\\&quot;: \\&quot;ADYEN_MERCHANT_ACCOUNT\\&quot;,\\n  \\&quot;paymentMethod\\&quot;: {\\n    \\&quot;type\\&quot;: \\&quot;googlepay\\&quot;,\\n    \\&quot;googlePayToken\\&quot;: \\&quot;{\\\\\\&quot;signature\\\\\\&quot;:\\\\\\&quot;...\\\\\\&quot;,\\\\\\&quot;protocolVersion\\\\\\&quot;:\\\\\\&quot;ECv2\\\\\\&quot;,\\\\\\&quot;signedMessage\\\\\\&quot;:\\\\\\&quot;...\\\\\\&quot;}\\&quot;\\n  },\\n  \\&quot;amount\\&quot;: {\\n    \\&quot;currency\\&quot;: \\&quot;EUR\\&quot;,\\n    \\&quot;value\\&quot;: 1000\\n  },\\n  \\&quot;reference\\&quot;: \\&quot;YOUR_ORDER_REFERENCE_AGENTIC_TRANSACTION\\&quot;,\\n  \\&quot;returnUrl\\&quot;: \\&quot;https:\\\/\\\/your-company.example.com\\\/checkout?shopperOrder=12xy..\\&quot;\\n}'&quot;}]\" :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p>After making the payment request, continue your integration's payment flow. You <a href=\"\/online-payments\/build-your-integration\/advanced-flow?platform=Web#get-the-payment-outcome\">get the payment outcome<\/a> in your synchronous response and a webhook message.<\/p>\n<h2>Liability shift<\/h2>\n<p>When using <strong>PAYMENT_GATEWAY<\/strong> tokenization with Adyen, Adyen (as the gateway) receives the  Electronic Commerce Indicator (ECI) from the Google Pay token and passes it through the payment processing flow automatically. You do not need to handle ECI value.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Authorization method<\/th>\n<th style=\"text-align: left;\">Liability shift availability<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><strong><code>CRYPTOGRAM_3DS<\/code><\/strong><\/td>\n<td style=\"text-align: left;\">Available for eligible Visa and Mastercard device tokens (Android). <ul><li markdown=\"1\">Mastercard: no exclusions.<\/li><li markdown=\"1\">Visa: excludes certain high-risk MCCs (money transfer, gambling, crypto). European merchants are automatically covered by a Visa exception for eligible transactions.<\/li><\/ul><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong><code>PAN_ONLY<\/code><\/strong><\/td>\n<td style=\"text-align: left;\">Liability shift is not available for <strong>PAN_ONLY<\/strong> transactions.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"notices green\">\n<p>Enabling Visa liability shift: To qualify for Visa liability shift for <strong>CRYPTOGRAM_3DS<\/strong> transactions, follow <a href=\"https:\/\/developers.google.com\/pay\/api\/web\/guides\/resources\/shift-liability-to-issuer#liability-shift-opt-in\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Google's instructions to enable Fraud liability protection for Visa device tokens in your Google Pay &amp; Wallet Console<\/a>. Make sure that <code>totalPrice<\/code> and <code>currencyCode<\/code> are always accurate. Transactions with the value zero or a hardcoded value do not qualify. <\/p>\n<\/div>\n<h2>Test and go live<\/h2>\n<p>Set your test environment:<\/p>\n<ul>\n<li>UCP payment handler configuration: <strong>TEST<\/strong><\/li>\n<li>Base URL for Adyen test endpoints: <code>https:\/\/checkout-test.adyen.com<\/code><\/li>\n<\/ul>\n<h3>Test Google Pay in insolation<\/h3>\n<p>To test the Google Pay token flow without a full UCP integration, use the <a href=\"https:\/\/developers.google.com\/pay\/api\/web\/guides\/gpay-codegen\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Google Pay Code Generator<\/a>. Configure the tokenization specification with the gateway <strong>adyen<\/strong> and your Adyen merchant account name, generate a test token in the test environment, and make a test  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/payments<\/a> request with the token. This lets you validate the Adyen integration end-to-end before your UCP server is complete.<\/p>\n<h3>Test wallet setup<\/h3>\n<p>Add a card to your <a href=\"https:\/\/wallet.google.com\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Google Pay wallet<\/a>, then enroll it in <a href=\"https:\/\/developers.google.com\/pay\/api\/android\/guides\/resources\/test-card-suite\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Google's test card suite<\/a>. The suite pre-populates your wallet with Adyen test cards covering authorized, refused, and other scenarios. Alternatively, add a real card in the test environment. It maps to an Adyen test card of the same brand without being charged.<\/p>\n<h3>Go live<\/h3>\n<div class=\"notices green\">\n<p>We recommend that you test the scenarios described in <a href=\"https:\/\/developers.google.com\/pay\/api\/web\/reference\/client\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Google Pay\u2019s API reference for web<\/a> in your live environment.<\/p>\n<\/div>\n<ol>\n<li>Make sure that your API credential has the <strong>API Clientside Encryption Payments role<\/strong>. Check this in your <a href=\"https:\/\/ca-live.adyen.com\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">live Customer Area<\/a> or ask your Admin user to verify.<\/li>\n<li>Go to your <a href=\"https:\/\/ca-live.adyen.com\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">live Customer Area<\/a> to configure your <a href=\"https:\/\/developers.google.com\/pay\/api\/web\/reference\/request-objects#MerchantInfo\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Google Merchant ID<\/a>.<\/li>\n<li>Complete the steps in the Google Pay API <a href=\"https:\/\/developers.google.com\/pay\/api\/web\/guides\/test-and-deploy\/request-prod-access\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">request production access<\/a>.<\/li>\n<li>Complete the steps in the Google Pay API <a href=\"https:\/\/developers.google.com\/pay\/api\/web\/guides\/test-and-deploy\/deploy-production-environment\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">deploy to production documentation for Web<\/a>.<\/li>\n<\/ol>","url":"https:\/\/docs.adyen.com\/online-payments\/agentic-commerce\/merchant\/google-agentic-commerce","articleFields":{"description":"Process payments for agent-initiated transactions with Google AI Mode or Gemini.","robots":"noindex,nofollow"},"algolia":{"url":"https:\/\/docs.adyen.com\/online-payments\/agentic-commerce\/merchant\/google-agentic-commerce","title":"Google Agentic Commerce integration","content":"Use this integration for processing Google Pay payments through Adyen, when Google agents (Google AI Mode or Gemini) initiate transactions with you. In this integration, Google handles product discovery, checkout session management, and showing the Google Pay payment sheet to the shopper. Your server gets an encrypted payment token from google, and you pass it to Adyen to complete the payment. \nRequirements\n\n\n\nRequirement\nDescription\n\n\n\n\nIntegration type\nAn existing online payments integration using Advanced flow.\n\n\nLimitations\nThis integration is only for Google Pay payments.\n\n\nSetup steps\nBefore you begin: Follow the setup steps in the Google Pay documentation.Add Google Pay in your Customer Area.Set up your server to handle Google's Universal Commerce Protocol (UCP).\n\n\n\nHow it works\nThe following shows the process of a shopper using a Google AI agent to make a transaction with you:\n\nThe shopper instructs Google's AI agent to initiate a transaction with you.\nGoogle's AI agent makes a request to your server that handles the Universal Commerce Protocol (UCP) Tokenization flow.\nYour server returns order data to Google's AI agent (like total payment amount and shipping options).\nGoogle's AI agent shows the order summary to the shopper.\nThe shopper selects to pay with Google Pay.\nGoogle's AI agent shows the payment form, collects the shopper's payment details, and creates an encrypted token that you can use to process the payment through Adyen.\nGoogle's AI agent makes a request to your server, including the encrypted token.\nYour server makes a payment request to Adyen's server, including the encrypted token.\nAdyen returns the payment result to you.\nYou return the payment result to Google's AI agent.\nGoogle's AI agent shows the order confirmation to the shopper.\nAdyen sends a webhook message with the payment outcome to your webhook server.\n\nConfigure your UCP payment handler for Adyen payments\nYour server's UCP payment handler handles requests from Google's AI agent. You must configure it to handle tokens for Adyen payments.\nIn the manifest of the UCP handler, configure the following fields:\n\n\n\nField\nDescription\n\n\n\n\ntokenization_specification.type\nPAYMENT_GATEWAY. This is not a placeholder, this is the exact value.\n\n\ntokenization_specification.parameters.gateway\nadyen\n\n\ntokenization_specification.parameters.gatewayMerchantId\nYour Adyen merchant account.\n\n\n\n\nIn your manifest file, the merchant_info.merchant_id field meant for your Google Pay Merchant ID. This field is not for your Adyen merchant account.\n\n\n    \n\nProcess the payment\nTo process the payment, you must get the encrypted token from the request from Google's AI agent to your server. Then use it to make a payment request from your server to Adyen.\nGet the encrypted token\nGoogle makes a POST \/checkout-sessions\/{id}\/complete to your server. \n\n    \n\nGet the following from the request body:\n\n\n\nParameter\nDescription\n\n\n\n\npayment.instruments.credential.token\nThe encrypted token from Google. Do not decode or modify it. Pass the complete value to Adyen.\n\n\n\nMake a payment request to Adyen\nTo submit the payment, make a payment request to Adyen.\nWhen you make the payment request, additionally include the following for the Google Pay payment initiated by Google's AI agent:\n\n\n\nParameter\nDescription\n\n\n\n\npaymentMethod.type\ngooglepay\n\n\npaymentMethod.googlePayToken\nThe complete token value from the POST \/checkout-sessions\/{id}\/complete request from Google's AI agent.\n\n\n\n\n    \n\nAfter making the payment request, continue your integration's payment flow. You get the payment outcome in your synchronous response and a webhook message.\nLiability shift\nWhen using PAYMENT_GATEWAY tokenization with Adyen, Adyen (as the gateway) receives the  Electronic Commerce Indicator (ECI) from the Google Pay token and passes it through the payment processing flow automatically. You do not need to handle ECI value.\n\n\n\nAuthorization method\nLiability shift availability\n\n\n\n\nCRYPTOGRAM_3DS\nAvailable for eligible Visa and Mastercard device tokens (Android). Mastercard: no exclusions.Visa: excludes certain high-risk MCCs (money transfer, gambling, crypto). European merchants are automatically covered by a Visa exception for eligible transactions.\n\n\nPAN_ONLY\nLiability shift is not available for PAN_ONLY transactions.\n\n\n\n\nEnabling Visa liability shift: To qualify for Visa liability shift for CRYPTOGRAM_3DS transactions, follow Google's instructions to enable Fraud liability protection for Visa device tokens in your Google Pay &amp; Wallet Console. Make sure that totalPrice and currencyCode are always accurate. Transactions with the value zero or a hardcoded value do not qualify. \n\nTest and go live\nSet your test environment:\n\nUCP payment handler configuration: TEST\nBase URL for Adyen test endpoints: https:\/\/checkout-test.adyen.com\n\nTest Google Pay in insolation\nTo test the Google Pay token flow without a full UCP integration, use the Google Pay Code Generator. Configure the tokenization specification with the gateway adyen and your Adyen merchant account name, generate a test token in the test environment, and make a test  \/payments request with the token. This lets you validate the Adyen integration end-to-end before your UCP server is complete.\nTest wallet setup\nAdd a card to your Google Pay wallet, then enroll it in Google's test card suite. The suite pre-populates your wallet with Adyen test cards covering authorized, refused, and other scenarios. Alternatively, add a real card in the test environment. It maps to an Adyen test card of the same brand without being charged.\nGo live\n\nWe recommend that you test the scenarios described in Google Pay\u2019s API reference for web in your live environment.\n\n\nMake sure that your API credential has the API Clientside Encryption Payments role. Check this in your live Customer Area or ask your Admin user to verify.\nGo to your live Customer Area to configure your Google Merchant ID.\nComplete the steps in the Google Pay API request production access.\nComplete the steps in the Google Pay API deploy to production documentation for Web.\n","type":"page","locale":"en","boost":16,"hierarchy":{"lvl0":"Home","lvl1":"Online payments","lvl2":"Adyen Agentic","lvl3":"Merchant","lvl4":"Google Agentic Commerce 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":"https:\/\/docs.adyen.com\/online-payments\/agentic-commerce\/merchant","lvl4":"\/online-payments\/agentic-commerce\/merchant\/google-agentic-commerce"},"levels":5,"category":"Online Payments","category_color":"green","tags":["Google","Agentic","Commerce","integration"]}}
