{"title":"UPI Autopay for Web","category":"default","creationDate":1776961628,"content":"<p>UPI Autopay enables Indian shoppers to set up recurring payments through their UPI app (for example, Google Pay, PhonePe, and Paytm).<\/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;\">Make sure that you have an existing integration for one of the following:<br\/> - <a href=\"\/pt\/online-payments\/build-your-integration\/advanced-flow\/?platform=Web&amp;integration=Components\">Web components integration for advanced flow<\/a><br\/> - <a href=\"\/pt\/online-payments\/build-your-integration\/sessions-flow?platform=Web&amp;integration=Components\">Web components integration for sessions flow<\/a><br\/> - <a href=\"\/pt\/online-payments\/build-your-integration\/advanced-flow\/?platform=Web&amp;integration=Drop-in\">Web drop-in integration for advanced flow<\/a><br\/> - <a href=\"\/pt\/online-payments\/build-your-integration\/sessions-flow?platform=Web&amp;integration=Drop-in\">Web drop-in integration for sessions flow<\/a><br\/>Make sure you integrate to the latest web version to display the mandate information on UPI Autopay <a href=\"https:\/\/github.com\/Adyen\/adyen-web\/releases\/tag\/v6.22.0\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">v6.22.0<\/a>.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Setup<\/strong><\/td>\n<td style=\"text-align: left;\">Backend integration for recurring flows: Ensure your backend implements all UPI Autopay recurring flows - including pre-debit notifications, recurring payments and cancelling billing plans. This page only covers Web SDK configuration for the signup flow. Refer to the <a href=\"\/pt\/payment-methods\/upi\/upi-autopay\/api-only\">API-only documentation<\/a> for full backend requirements.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Shopper experience<\/h2>\n<p>With Adyen\u2019s UPI Autopay solution, you can give your shoppers different payment options for signing up on the recurring plan, namely UPI Collect, UPI QR, and UPI Intent:<\/p>\n<ul>\n<li>\n<p><strong>Collect flow<\/strong>: UPI apps only show the mandate amount. The shopper authorizes the mandate with their PIN.<\/p>\n<ol>\n<li>The shopper gets a push notification on their phone.<\/li>\n<li>The Autopay mandate details are shown in the UPI app for review.<\/li>\n<li>The shopper enters their UPI PIN to authorize the mandate.<\/li>\n<li>The mandate is created and the first payment is completed.<\/li>\n<\/ol>\n<\/li>\n<li>\n<p><strong>QR and Intent flows<\/strong>: UPI apps show both the mandate amount and the first transaction amount.<\/p>\n<ol>\n<li>The shopper scans the QR code, or in the Intent flow launches the UPI app.<\/li>\n<li>The Autopay mandate details are shown in the UPI app for review.<\/li>\n<li>The shopper enters their UPI PIN to authorize the mandate.<\/li>\n<li>The mandate is created and the first payment is completed.<\/li>\n<\/ol>\n<\/li>\n<\/ul>\n<p>From <a href=\"https:\/\/github.com\/Adyen\/adyen-web\/releases\/tag\/v6.22.0\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Adyen Web SDK v6.22.0<\/a> the UPI Autopay component shows mandate information directly in the checkout. The result is:<\/p>\n<ul>\n<li>Shoppers see clear mandate details before authorizing.<\/li>\n<li>Information is consistent across Collect, Intent, and QR flows.<\/li>\n<li>Less confusion and improved conversion.<\/li>\n<\/ul>\n<h3>Payment examples<\/h3>\n<ul>\n<li>\n<p>The shopper makes an upfront payment and a higher mandate is created.<br \/>\n<img alt=\"higher mandate\" src=\"\/user\/pages\/docs\/08.payment-methods\/86.upi\/16.upi-autopay\/01.web\/image1.png\" \/><\/p>\n<\/li>\n<li>\n<p>The shopper does not make an upfront payment, only a mandate is created.<br \/>\nYou can use this to sign up shoppers for free trials, or to save the payment details for future use. In this case, a small minimum amount is authorized and refunded automatically. Pass a minimum value of 2 INR in the <code>additionalAmount<\/code> field in your payment request. Note that you need to show information about the authorization and refund outside of the component based on your requirements for tokenizing the payment details. For example: \"To enable a free trial, 2 INR will be charged and refunded\".<br \/>\n<img alt=\"only mandate\" src=\"\/user\/pages\/docs\/08.payment-methods\/86.upi\/16.upi-autopay\/01.web\/image3.png\" \/><\/p>\n<\/li>\n<\/ul>\n<h3>Mandate information box<\/h3>\n<p>When a mandate is present, the new UPI component renders an information box with details. The standard base text of \"You\u2019re setting up a UPI Autopay recurring payment...\" is followed by dynamic text that depends on:<\/p>\n<ul>\n<li><code>amount<\/code>: The transaction amount (can be known or unknown).<\/li>\n<li><code>mandate.amount<\/code>: The mandate limit (always known).<\/li>\n<li><code>frequency<\/code>: The payment monthly, weekly, or ad hoc.<\/li>\n<li><code>amountRule<\/code>: Either <span translate=\"no\"><strong>exact<\/strong><\/span> or <span translate=\"no\"><strong>max<\/strong><\/span>.<\/li>\n<\/ul>\n<p>Examples of messages:<\/p>\n<table>\n<thead>\n<tr>\n<th>Type<\/th>\n<th>Amount <a href=\"#currency\"><\/th>\n<th>Mandate<\/th>\n<th>Frequency<\/th>\n<th>Rule<\/th>\n<th>Shopper message<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Monthly subscription with fixed pricing<\/td>\n<td>100<\/td>\n<td>100<\/td>\n<td>month<\/td>\n<td>exact<\/td>\n<td>You\u2019re setting up a UPI Autopay recurring payment (\u20b9100\/month).<\/td>\n<\/tr>\n<tr>\n<td>Monthly subscription with potential upgrades<\/td>\n<td>100<\/td>\n<td>200<\/td>\n<td>month<\/td>\n<td>max<\/td>\n<td>You\u2019re setting up a UPI Autopay recurring payment (\u20b9100). You\u2019ll approve a higher limit to allow future plan changes (up to \u20b9200\/month).<\/td>\n<\/tr>\n<tr>\n<td>Flexible monthly subscription with variable pricing<\/td>\n<td>Unknown<\/td>\n<td>200<\/td>\n<td>month<\/td>\n<td>max<\/td>\n<td>You\u2019re setting up a UPI Autopay recurring payment (up to \u20b9200\/month).<\/td>\n<\/tr>\n<tr>\n<td>Weekly subscription with fixed pricing<\/td>\n<td>100<\/td>\n<td>100<\/td>\n<td>week<\/td>\n<td>exact<\/td>\n<td>You\u2019re setting up a UPI Autopay recurring payment (\u20b9100\/week).<\/td>\n<\/tr>\n<tr>\n<td>Weekly subscription with potential upgrades<\/td>\n<td>100<\/td>\n<td>200<\/td>\n<td>week<\/td>\n<td>max<\/td>\n<td>You\u2019re setting up a UPI Autopay recurring payment (\u20b9100). You\u2019ll approve a higher limit to allow future plan changes (up to \u20b9200\/week).<\/td>\n<\/tr>\n<tr>\n<td>Flexible weekly subscription with variable pricing<\/td>\n<td>Unknown<\/td>\n<td>200<\/td>\n<td>week<\/td>\n<td>max<\/td>\n<td>You\u2019re setting up a UPI Autopay recurring payment (up to \u20b9200\/week).<\/td>\n<\/tr>\n<tr>\n<td>Ad-hoc subscription with fixed pricing<\/td>\n<td>100<\/td>\n<td>100<\/td>\n<td>adhoc<\/td>\n<td>exact<\/td>\n<td>You\u2019re setting up a UPI Autopay recurring payment (\u20b9100 as presented).<\/td>\n<\/tr>\n<tr>\n<td>Ad-hoc subscription with potential upgrades<\/td>\n<td>100<\/td>\n<td>200<\/td>\n<td>adhoc<\/td>\n<td>max<\/td>\n<td>You\u2019re setting up a UPI Autopay recurring payment (\u20b9100). You\u2019ll approve a higher limit to allow future plan changes (up to \u20b9200 as presented).<\/td>\n<\/tr>\n<tr>\n<td>Flexible ad-hoc subscription with variable pricing<\/td>\n<td>Unknown<\/td>\n<td>200<\/td>\n<td>adhoc<\/td>\n<td>max<\/td>\n<td>You\u2019re setting up a UPI Autopay recurring payment (up to \u20b9200 as presented).<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Customize the mandate information box<\/h3>\n<p>You can <a href=\"https:\/\/docs.adyen.com\/online-payments\/build-your-integration\/sessions-flow\/?platform=Web&amp;integration=Drop-in&amp;version=6.21.0#localization\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">override the default translations<\/a> for the mandate information box:<\/p>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Example of customization'\" :id=\"''\" :code-data=\"[{&quot;language&quot;:&quot;json&quot;,&quot;tabTitle&quot;:&quot;&quot;,&quot;content&quot;:&quot;{\\n  \\&quot;upi.mandate.intro\\&quot;: \\&quot;You're setting up a UPI Autopay recurring payment\\&quot;,\\n  \\&quot;upi.mandate.max.extraText\\&quot;: \\&quot;You'll approve a higher limit to allow future plan changes\\&quot;,\\n  \\&quot;upi.mandate.upTo\\&quot;: \\&quot;up to %{amount}\\&quot;,\\n  \\&quot;upi.mandate.frequency.monthly\\&quot;: \\&quot;\\\/month\\&quot;,\\n  \\&quot;upi.mandate.frequency.weekly\\&quot;: \\&quot;\\\/week\\&quot;,\\n  \\&quot;upi.mandate.frequency.adhoc\\&quot;: \\&quot;as presented\\&quot;\\n}&quot;}]\" :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<h2>Integration steps<\/h2>\n\n<div id=\"tabGaqTe\">\n    <div data-component-wrapper=\"tabs\">\n        <tabs\n                        :items=\"[{&quot;title&quot;:&quot;Sessions flow&quot;,&quot;content&quot;:&quot;\\n&lt;p&gt;This flow is applicable to both Web Drop-in and Components:&lt;\\\/p&gt;\\n&lt;ol&gt;\\n&lt;li&gt;\\n&lt;p&gt;Pass the followin &lt;a href=\\&quot;\\\/pt\\\/payment-methods\\\/upi\\\/upi-autopay\\\/api-only#billing-plan\\&quot;&gt;Autopay-specific fields&lt;\\\/a&gt; in your  &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/Checkout\\\/latest\\\/post\\\/sessions\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;\\\/sessions&lt;\\\/a&gt; request.&lt;\\\/p&gt;\\n&lt;ul&gt;\\n&lt;li&gt;The complete &lt;code&gt;mandate&lt;\\\/code&gt; object&lt;\\\/li&gt;\\n&lt;li&gt;&lt;code&gt;recurringProcessingModel&lt;\\\/code&gt;&lt;\\\/li&gt;\\n&lt;li&gt;&lt;code&gt;shopperReference&lt;\\\/code&gt;&lt;\\\/li&gt;\\n&lt;li&gt;&lt;code&gt;storePaymentMethod&lt;\\\/code&gt;&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;Pass the  &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/Checkout\\\/latest\\\/post\\\/sessions\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;\\\/sessions&lt;\\\/a&gt; response to the &lt;code&gt;AdyenCheckout&lt;\\\/code&gt; and then provide the same mandate object to the UPI Component&#039;s configuration.&lt;\\\/p&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;Mount the Component into your application.&lt;\\\/p&gt;\\n&lt;\\\/li&gt;\\n&lt;\\\/ol&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n    &lt;code-sample :title=\\&quot;&#039;Example \\\/sessions request&#039;\\&quot; :id=\\&quot;&#039;&#039;\\&quot; :code-data=\\&quot;[{&amp;quot;language&amp;quot;:&amp;quot;JavaScript&amp;quot;,&amp;quot;tabTitle&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;content&amp;quot;:&amp;quot;\\\\nconst mandate = { amount: &#039;30000&#039;, frequency: &#039;monthly&#039;, amountRule: &#039;max&#039; };\\\\n\\\\nconst session = await createSession({\\\\n  amount,\\\\n  countryCode,\\\\n  mandate,\\\\n  \\\\\\\/\\\\\\\/ ... other session configuration\\\\n});\\\\n\\\\nconst checkout = await AdyenCheckout({\\\\n  environment: process.env.CLIENT_ENV,\\\\n  clientKey: process.env.CLIENT_KEY,\\\\n  session\\\\n});\\\\n\\\\nconst upi = new UPI(checkout, { mandate });\\\\nupi.mount(&#039;.upi-component&#039;);&amp;quot;}]\\&quot; :enable-copy-link-to-code-block=\\&quot;true\\&quot; :code-sample-card-size=\\&quot;&#039;fullsize&#039;\\&quot;&gt;&lt;\\\/code-sample&gt;\\n&lt;\\\/div&gt;\\n&quot;,&quot;altTitle&quot;:&quot;sessions&quot;,&quot;oldTabId&quot;:&quot;sessions-api_1&quot;,&quot;relation&quot;:&quot;sessions&quot;},{&quot;title&quot;:&quot;Advanced flow&quot;,&quot;content&quot;:&quot;\\n&lt;p&gt;This flow is applicable to both Web Drop-in and Components:&lt;\\\/p&gt;\\n&lt;ol&gt;\\n&lt;li&gt;\\n&lt;p&gt;Pass the &lt;code&gt;mandate&lt;\\\/code&gt; object to the UPI Component configuration.&lt;\\\/p&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;Initiate your  &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/Checkout\\\/latest\\\/post\\\/payments\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;\\\/payments&lt;\\\/a&gt; request within the &lt;code&gt;onSubmit&lt;\\\/code&gt; callback. Pass the following &lt;a href=\\&quot;\\\/pt\\\/payment-methods\\\/upi\\\/upi-autopay\\\/api-only#billing-plan\\&quot;&gt;Autopay-specific fields&lt;\\\/a&gt; in your  &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/Checkout\\\/latest\\\/post\\\/payments\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;\\\/payments&lt;\\\/a&gt; request:&lt;\\\/p&gt;\\n&lt;ul&gt;\\n&lt;li&gt;The complete &lt;code&gt;mandate&lt;\\\/code&gt; object&lt;\\\/li&gt;\\n&lt;li&gt;&lt;code&gt;recurringProcessingModel&lt;\\\/code&gt;&lt;\\\/li&gt;\\n&lt;li&gt;&lt;code&gt;shopperReference&lt;\\\/code&gt;&lt;\\\/li&gt;\\n&lt;li&gt;&lt;code&gt;storePaymentMethod&lt;\\\/code&gt;&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;Mount the component into your application.&lt;\\\/p&gt;\\n&lt;\\\/li&gt;\\n&lt;\\\/ol&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n    &lt;code-sample :title=\\&quot;&#039;Example \\\/payments request&#039;\\&quot; :id=\\&quot;&#039;&#039;\\&quot; :code-data=\\&quot;[{&amp;quot;language&amp;quot;:&amp;quot;JavaScript&amp;quot;,&amp;quot;tabTitle&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;content&amp;quot;:&amp;quot;\\\\nconst paymentMethodsResponse = await getPaymentMethods({ amount, shopperLocale });\\\\n\\\\nconst mandate = { amount: &#039;30000&#039;, frequency: &#039;monthly&#039;, amountRule: &#039;max&#039; };\\\\n\\\\nconst checkout = await AdyenCheckout({\\\\n  amount,\\\\n  countryCode,\\\\n  paymentMethodsResponse,\\\\n  locale: shopperLocale,\\\\n  clientKey: process.env.CLIENT_KEY,\\\\n  environment: process.env.CLIENT_ENV,\\\\n  onSubmit: async (state, component, actions) =&amp;gt; {\\\\n      try {\\\\n          const { action, resultCode } = await makePayment({ ...state.data, mandate });\\\\n          if (!resultCode) actions.reject();\\\\n          actions.resolve({ resultCode, action });\\\\n      } catch (error) {\\\\n          console.error(&#039;## onSubmit - critical error&#039;, error);\\\\n          actions.reject();\\\\n      }\\\\n  }\\\\n});\\\\n\\\\nconst upi = new UPI(checkout, { mandate });\\\\nupi.mount(&#039;.upi-component&#039;);&amp;quot;}]\\&quot; :enable-copy-link-to-code-block=\\&quot;true\\&quot; :code-sample-card-size=\\&quot;&#039;fullsize&#039;\\&quot;&gt;&lt;\\\/code-sample&gt;\\n&lt;\\\/div&gt;\\n&quot;,&quot;altTitle&quot;:&quot;advanced&quot;,&quot;oldTabId&quot;:&quot;advanced-api_2&quot;,&quot;relation&quot;:&quot;advanced&quot;}]\"\n            :should-update-when-url-changes='true'>\n        <\/tabs>\n    <\/div>\n<\/div>\n\n<h2>Test and go live<\/h2>\n<p>Reach out to your Adyen contact to set up your test environment for UPI Autopay. You can use the following magic amounts to test various transaction outcomes.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Scenario<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<th style=\"text-align: left;\">Magic amount<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><strong>Signup \u2013 Success<\/strong><\/td>\n<td style=\"text-align: left;\">Shopper signup successful<\/td>\n<td style=\"text-align: left;\">7005<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Signup \u2013 Failure<\/strong><\/td>\n<td style=\"text-align: left;\">Shopper signup unsuccessful<\/td>\n<td style=\"text-align: left;\">7006<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Pre debit notification - Success<\/strong><\/td>\n<td style=\"text-align: left;\">Pre debit notification successful<\/td>\n<td style=\"text-align: left;\">7005<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Pre debit notification - Failure<\/strong><\/td>\n<td style=\"text-align: left;\">Pre debit notification unsuccessful<\/td>\n<td style=\"text-align: left;\">1401<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Recurring Charge \u2013 Success<\/strong><\/td>\n<td style=\"text-align: left;\">Successful recurring charge<\/td>\n<td style=\"text-align: left;\">7005<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Recurring Charge \u2013 Failure<\/strong><\/td>\n<td style=\"text-align: left;\">Failed recurring charge<\/td>\n<td style=\"text-align: left;\">7008<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Mandate Revoke \u2013 Success<\/strong><\/td>\n<td style=\"text-align: left;\">Successful mandate revoke<\/td>\n<td style=\"text-align: left;\">7008<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Mandate Revoke \u2013 Failure<\/strong><\/td>\n<td style=\"text-align: left;\">Failed mandate revoke<\/td>\n<td style=\"text-align: left;\">7010<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Refund \u2013 Success<\/strong><\/td>\n<td style=\"text-align: left;\">Successful refund<\/td>\n<td style=\"text-align: left;\">2010<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Refund \u2013 Failure<\/strong><\/td>\n<td style=\"text-align: left;\">Failed refund<\/td>\n<td style=\"text-align: left;\">2011<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Before you can accept live UPI Autopay payments, reach out to your Adyen contact to begin the onboarding process.<\/p>\n<h2 id=\"see-also\">See also<\/h2>\n<div class=\"see-also-links output-inline\" id=\"see-also\">\n<ul><li><a href=\"\/online-payments\/build-your-integration\/advanced-flow?platform=Web&amp;integration=API%20only\"\n                        target=\"_self\"\n                        >\n                    API only integration\n                <\/a><\/li><li><a href=\"\/development-resources\/webhooks\"\n                        target=\"_self\"\n                        >\n                    Webhooks\n                <\/a><\/li><li><a href=\"https:\/\/docs.adyen.com\/api-explorer\/#\/CheckoutService\/latest\/overview\"\n                        target=\"_blank\"\n                         class=\"external\">\n                    API Explorer\n                <\/a><\/li><\/ul><\/div>\n","url":"https:\/\/docs.adyen.com\/pt\/payment-methods\/upi\/upi-autopay\/web","articleFields":{"description":"Offer recurring payments to your shoppers with our UPI Autopay integration.","feedback_component":true,"parameters":{"payment_method":"UPI Autopay","country_code":"IN","currency":"INR","payment_method_type":"upi_collect","component_name":"payu_IN_upi","integration_guide_url_component_adv":"\/online-payments\/build-your-integration\/advanced-flow\/?platform=Web&integration=Components","integration_guide_url_component_sessions":"\/online-payments\/build-your-integration\/sessions-flow?platform=Web&integration=Components","integration_guide_url_dropin_adv":"\/online-payments\/build-your-integration\/advanced-flow\/?platform=Web&integration=Drop-in","integration_guide_url_dropin_sessions":"\/online-payments\/build-your-integration\/sessions-flow?platform=Web&integration=Drop-in"},"display_in_overview":false,"page_id":"50b97a6c-6cb0-452f-b4e4-d95b5209a5ec","filters_component":false,"decision_tree":"[]"},"algolia":{"url":"https:\/\/docs.adyen.com\/pt\/payment-methods\/upi\/upi-autopay\/web","title":"UPI Autopay for Web","content":"UPI Autopay enables Indian shoppers to set up recurring payments through their UPI app (for example, Google Pay, PhonePe, and Paytm).\nRequirements\n\n\n\nRequirement\nDescription\n\n\n\n\nIntegration type\nMake sure that you have an existing integration for one of the following: - Web components integration for advanced flow - Web components integration for sessions flow - Web drop-in integration for advanced flow - Web drop-in integration for sessions flowMake sure you integrate to the latest web version to display the mandate information on UPI Autopay v6.22.0.\n\n\nSetup\nBackend integration for recurring flows: Ensure your backend implements all UPI Autopay recurring flows - including pre-debit notifications, recurring payments and cancelling billing plans. This page only covers Web SDK configuration for the signup flow. Refer to the API-only documentation for full backend requirements.\n\n\n\nShopper experience\nWith Adyen\u2019s UPI Autopay solution, you can give your shoppers different payment options for signing up on the recurring plan, namely UPI Collect, UPI QR, and UPI Intent:\n\n\nCollect flow: UPI apps only show the mandate amount. The shopper authorizes the mandate with their PIN.\n\nThe shopper gets a push notification on their phone.\nThe Autopay mandate details are shown in the UPI app for review.\nThe shopper enters their UPI PIN to authorize the mandate.\nThe mandate is created and the first payment is completed.\n\n\n\nQR and Intent flows: UPI apps show both the mandate amount and the first transaction amount.\n\nThe shopper scans the QR code, or in the Intent flow launches the UPI app.\nThe Autopay mandate details are shown in the UPI app for review.\nThe shopper enters their UPI PIN to authorize the mandate.\nThe mandate is created and the first payment is completed.\n\n\n\nFrom Adyen Web SDK v6.22.0 the UPI Autopay component shows mandate information directly in the checkout. The result is:\n\nShoppers see clear mandate details before authorizing.\nInformation is consistent across Collect, Intent, and QR flows.\nLess confusion and improved conversion.\n\nPayment examples\n\n\nThe shopper makes an upfront payment and a higher mandate is created.\n\n\n\nThe shopper does not make an upfront payment, only a mandate is created.\nYou can use this to sign up shoppers for free trials, or to save the payment details for future use. In this case, a small minimum amount is authorized and refunded automatically. Pass a minimum value of 2 INR in the additionalAmount field in your payment request. Note that you need to show information about the authorization and refund outside of the component based on your requirements for tokenizing the payment details. For example: \"To enable a free trial, 2 INR will be charged and refunded\".\n\n\n\nMandate information box\nWhen a mandate is present, the new UPI component renders an information box with details. The standard base text of \"You\u2019re setting up a UPI Autopay recurring payment...\" is followed by dynamic text that depends on:\n\namount: The transaction amount (can be known or unknown).\nmandate.amount: The mandate limit (always known).\nfrequency: The payment monthly, weekly, or ad hoc.\namountRule: Either exact or max.\n\nExamples of messages:\n\n\n\nType\nAmount \nMandate\nFrequency\nRule\nShopper message\n\n\n\n\nMonthly subscription with fixed pricing\n100\n100\nmonth\nexact\nYou\u2019re setting up a UPI Autopay recurring payment (\u20b9100\/month).\n\n\nMonthly subscription with potential upgrades\n100\n200\nmonth\nmax\nYou\u2019re setting up a UPI Autopay recurring payment (\u20b9100). You\u2019ll approve a higher limit to allow future plan changes (up to \u20b9200\/month).\n\n\nFlexible monthly subscription with variable pricing\nUnknown\n200\nmonth\nmax\nYou\u2019re setting up a UPI Autopay recurring payment (up to \u20b9200\/month).\n\n\nWeekly subscription with fixed pricing\n100\n100\nweek\nexact\nYou\u2019re setting up a UPI Autopay recurring payment (\u20b9100\/week).\n\n\nWeekly subscription with potential upgrades\n100\n200\nweek\nmax\nYou\u2019re setting up a UPI Autopay recurring payment (\u20b9100). You\u2019ll approve a higher limit to allow future plan changes (up to \u20b9200\/week).\n\n\nFlexible weekly subscription with variable pricing\nUnknown\n200\nweek\nmax\nYou\u2019re setting up a UPI Autopay recurring payment (up to \u20b9200\/week).\n\n\nAd-hoc subscription with fixed pricing\n100\n100\nadhoc\nexact\nYou\u2019re setting up a UPI Autopay recurring payment (\u20b9100 as presented).\n\n\nAd-hoc subscription with potential upgrades\n100\n200\nadhoc\nmax\nYou\u2019re setting up a UPI Autopay recurring payment (\u20b9100). You\u2019ll approve a higher limit to allow future plan changes (up to \u20b9200 as presented).\n\n\nFlexible ad-hoc subscription with variable pricing\nUnknown\n200\nadhoc\nmax\nYou\u2019re setting up a UPI Autopay recurring payment (up to \u20b9200 as presented).\n\n\n\nCustomize the mandate information box\nYou can override the default translations for the mandate information box:\n\n    \n\nIntegration steps\n\n\n    \n        \n        \n    \n\n\nTest and go live\nReach out to your Adyen contact to set up your test environment for UPI Autopay. You can use the following magic amounts to test various transaction outcomes.\n\n\n\nScenario\nDescription\nMagic amount\n\n\n\n\nSignup \u2013 Success\nShopper signup successful\n7005\n\n\nSignup \u2013 Failure\nShopper signup unsuccessful\n7006\n\n\nPre debit notification - Success\nPre debit notification successful\n7005\n\n\nPre debit notification - Failure\nPre debit notification unsuccessful\n1401\n\n\nRecurring Charge \u2013 Success\nSuccessful recurring charge\n7005\n\n\nRecurring Charge \u2013 Failure\nFailed recurring charge\n7008\n\n\nMandate Revoke \u2013 Success\nSuccessful mandate revoke\n7008\n\n\nMandate Revoke \u2013 Failure\nFailed mandate revoke\n7010\n\n\nRefund \u2013 Success\nSuccessful refund\n2010\n\n\nRefund \u2013 Failure\nFailed refund\n2011\n\n\n\nBefore you can accept live UPI Autopay payments, reach out to your Adyen contact to begin the onboarding process.\nSee also\n\n\n                    API only integration\n                \n                    Webhooks\n                \n                    API Explorer\n                \n","type":"page","locale":"pt","boost":16,"hierarchy":{"lvl0":"Home","lvl1":"Payment methods","lvl2":"UPI","lvl3":"UPI Autopay","lvl4":"UPI Autopay for Web"},"hierarchy_url":{"lvl0":"https:\/\/docs.adyen.com\/pt","lvl1":"https:\/\/docs.adyen.com\/pt\/payment-methods","lvl2":"https:\/\/docs.adyen.com\/pt\/payment-methods\/upi","lvl3":"https:\/\/docs.adyen.com\/pt\/payment-methods\/upi\/upi-autopay","lvl4":"\/pt\/payment-methods\/upi\/upi-autopay\/web"},"levels":5,"category":"Payment method","category_color":"green","tags":["Autopay"]},"articleFiles":{"image1.png":"<img alt=\"\" src=\"https:\/\/docs.adyen.com\/user\/pages\/docs\/08.payment-methods\/86.upi\/16.upi-autopay\/01.web\/image1.png\" \/>","image3.png":"<img alt=\"\" src=\"https:\/\/docs.adyen.com\/user\/pages\/docs\/08.payment-methods\/86.upi\/16.upi-autopay\/01.web\/image3.png\" \/>"}}
