UPI AutoPay
Learn about e-mandates, regulatory requirements, and payment flows.
UPI supports recurring payments through e-mandates (also known as UPI AutoPay). This lets customers authorize automatic charges for subscriptions and recurring services.
How e-mandates work
When setting up a mandate, customers authorize it in their UPI app during the initial payment flow. After the mandate is created, you can charge customers automatically for future payments within the mandate terms.
The Reserve Bank of India has established several security measures for recurring payments:
- Additional factor authentication (AFA): Customers must enter their PIN to authorize the mandate during setup.
- Pre-debit notifications: At least 24 hours before each recurring charge, the customer must receive an SMS or app notification with the exact debit amount and an option to cancel the mandate.
- If you integrate with Stripe, we send this notification automatically as part of the payment flow, without the need for you to take additional action.
- High-value transaction authentication: Recurring transactions over 15,000 INR require AFA (PIN entry) each time.
Initial payments
You can charge customers up to 5 minutes after the mandate is set up. Stripe handles this automatically. If you’re using Setup Intents, your customer is still debited and instantly refunded to prevent requiring AFA when you intend to charge them later.
Subsequent payments
When you confirm a PaymentIntent for a recurring payment, Stripe automatically:
- Sends the pre-debit notification to the customer
- Waits the required 24 hours
- Handles any AFA requirements for payments exceeding 15,000 INR
- Charges the customer
No additional action is required from you.
Caution
Businesses can only have one pre-debit notification active per customer at a time. Raise a maximum of one charge per customer per day, otherwise previously initiated payments will fail.
Customize an e-mandate
Stripe offers multiple options for you to customize the mandate that you set up for your customer.
You can specify these options using the payment_ hash in the Stripe APIs. The options that you can customize are:
| Field name | Description | Default value |
|---|---|---|
description | The description that your customers see in their UPI app when approving the e-mandate. | Subscription |
amount | The amount that you want to associate with the mandate. | In payments, this is set to the payment amount. In Setup Intents and subscriptions with a free trial, it’s set to 15,000 INR, which is the maximum amount that can be charged automatically with UPI AutoPay. |
amount_ | Set to maximum to authorize payments under the mandate up to the amount. Set it to fixed to charge that exact amount under the mandate. | maximum |
end_ | Expiration date for the mandate. | 30 years from when the subscription starts |
If your customer initiates a subscription with Adaptive Pricing, and mandates support the selected currency, Stripe automatically creates an e-mandate in that currency.
To make sure that the mandate is created in the local currency with the correct exchange rate, don’t pass any mandate-specific parameters to the Checkout Session when using Adaptive Pricing. If you pass mandate-specific parameters, then mandates use those values instead of the automatic ones.