Accept UPI Autopay payments using our APIs, and build your own payment form to have full control over the look and feel of your checkout page. Use this page to offer recurring UPI Autopay payments to your shoppers.
You can accept recurring UPI Autopay payments for the following types of payments:
- Subscriptions: A recurring transaction made at regular intervals for a product or a service. These payments use the Subscription recurring processing model.
- Automatic top-ups: Contracts that occur on a non-fixed schedule using stored card details. This includes automatic top-ups when the cardholder's balance drops below a certain amount. These payments use the UnscheduledCardOnFile [recurring processing model](/online-payments/tokenization/advanced-flow.
How to pay with UPI Autopay
After shoppers select to pay through UPI on your website for the first time:
- Shoppers are prompted to provide the Virtual Payment Address (VPA).
- The shoppers then get a notification on their UPI app asking them to complete the payment.
- On the UPI app, shoppers provide their UPI pin to confirm the payment.
- When shoppers go back to your checkout page, they are redirected to a page showing the payment status.
For subsequent payments, shoppers receive a pre-debit notification in the form of an SMS or an email at least 24 hours before the recurring amount is charged.
Set up a billing plan
To start a billing plan for a shopper, you need to store their payment details and create a mandate in their UPI app. The UPI payment service provider and the issuer uses this mandate to have visibility of your shopper's billing plan. They can then let the shopper cancel (or pause/unpause) the mandate on their side.
Make sure that every billing plan has a unique mandate associated with it.
-
From your server, make a POST /payments request, specifying:
Field Required Description paymentMethod.type
upi_collect paymentMethod.virtualPaymentAddress
Virtual Payment Address. A unique identifier used to let UPI connect to the shopper's bank account. storePaymentMethod
Set to true to store shopper's payment details. shopperInteraction
Set to Ecommerce. recurringProcessingModel
Set to Subscription or UnscheduledCardOnFile. shopperReference
The shopper reference associated with the billing plan (minimum length three characters). mandate.amount
The amount the shopper will be charged per recurring debit in minor units. Must be more than or equal to the transaction amount. The recurring charge does not need to go through authentication if the amount is less than or equal to INR 15,000.mandate.amountRule
Possible values: max (default) and exact. - max - The shopper can be charged any amount between INR 1 to the amount in the
amount
field. - exact - The shopper can only be charged the amount in the
amount
field.
mandate.frequency
The frequency at which the shopper will be charged. Possible values: monthly and adhoc. mandate.startsAt
Start date of the billing plan, in YYYY-MM-DD format. The default value is the transaction date. mandate.endsAt
End date of the billing plan, in YYYY-MM-DD format. mandate.remarks
Limited to 50 characters, no special characters. Shown in the shopper's UPI app, under the Mandate section. mandate.billingAttemptsRule
Possible values: before, after, and on. - before - You can initiate the charge and retries anytime from 1st day of the billing cycle to the
mandate.billingDay
. - after - You can initiate the charge and retries any time from the
mandate.billingDay
to the end of billing cycle (if the frequency is monthly, till the end of the month). - on - You can initiate the charge and retries only on the
mandate.billingDay
.
mandate.billingDay
The day of the billing cycle when the shopper would be charged. If the mandate.frequency
is monthly, andmandate.billingDay
is 26th, the shopper should be charged on the 26th of every month. This field does not apply for adhoc frequency. Possible values: 1-31The details in the
mandate
object are used to create the mandate for the shopper's billing plan.The /payments response is:
- max - The shopper can be charged any amount between INR 1 to the amount in the
-
Show a waiting screen to the shopper, telling them you are waiting for them to complete the payment.
-
Check your webhooks to see the payment result. We send a webhook to you with the final status of the payment.
eventCode success field Description Action to take AUTHORISATION false The transaction failed. Cancel the order and inform the shopper that the payment failed and any amount debited will be refunded in 2-3 days. AUTHORISATION true The shopper successfully completed the payment and a mandate was created. Inform the shopper that the payment has been successful and proceed with the order. You can receive the mandate details as part of your standard webhooks. To do this:
- In your Customer Area, go to Developers > Webhooks.
- Next to Standard webhook, select the edit webhook icon .
- Under Additional Settings, select Include Mandate Details.
- Select Save Configuration.
Then, the webhook will also contain the details on the shopper's mandate, including:
mandate.mandateId
: The identifier for the mandate created by the issuer.mandate.providerId
: The ID returned by the provider.mandate.status
: The status of the mandate.
<