Implement UPI on Adyen Integration v2.0
Learn how to implement the UPI payment method on Adyen Integration v2.0, including setup, configuration, and enabling features like zero-amount validation and Real-Time Reconciliation.
Support for the UPI payment method on Adyen can be requested through the Specialized Payment Connections service at an additional cost.
Overview
Unified Payments Interface (UPI) is an Indian instant payment system developed by the National Payments Corporation of India (NPCI). It enables users to link multiple bank accounts to a single mobile application, facilitating inter-bank transactions through a user-friendly process.
Zuora's Adyen Integration v2.0 supports UPI transactions in INR. To support UPI one-time and recurring payment flows, you can implement a hosted payment page through Payment Pages 2.0.
One-time payment flow
Response | Workflow |
|---|---|
Successful response |
|
Failed response | Zuora throws an error on the hosted payment page with the error response message received from Adyen. |
The created UPI payment method can be retrieved through the Zuora UI and API operations. In the Electronic Payment Methods section of the customer account page, you can also retrieve the token information described in the following table. Token ID and Second Token ID will be used in subsequent recurring payments.
Zuora UI field | Value |
|---|---|
Token ID | shopperReference |
Second Token ID | ShopperDetailReference |
Third Token ID | mandate ID |
After a payment is processed, the Reference ID field is populated with a UUID and mapped to pspReference. If you want Reference ID to be populated with the payment number mapped to the merchantReference field in Adyen, submit a ticket at Zuora Global Support.
As regulation requires, a pre-debit notification per invoice must be sent to the UPI users before collecting the recurring payments. To support this requirement, Zuora immediately sends the pre-debit notification request to Adyen once the invoice is posted, if all of the following conditions are met.
Conditions for triggering pre-debit notification requests
- The invoice has an outstanding balance.
- The type of the payment method is UPI.
- The type of the gateway instance is Adyen Integration v2.0
- The transaction currency is INR.
- One of the following conditions regarding pre-debit notification reference is true:
- No pre-debit notification has been successfully triggered for this invoice, and no pre-debit notification reference is stored in Zuora.
- A pre-debit notification reference exists but has already been used for a processed payment. For example, an invoice is posted, and a pre-debit notification is sent. The recurring payment is processed successfully. Later, a refund is issued for this payment, reopening the invoice balance. Zuora's scheduled pre-debit notification retry picks up the invoice and sends another pre-debit notification.
Successful requests
Zuora sends the notifyShopper field in the request to Adyen for each invoice. Adyen synchronously returns the notificationReference field for successful requests, which will be used for the upcoming recurring payments. Zuora stores notificationReference and associates it with the invoice, processing the payment through the scheduled payment run.
Your customers can make a recurring UPI payment in INR through Adyen under the allowed maximum amount configured for the mandate when implementing your hosted payment page. If the recurring payment amount is greater than the maximum allowed amount, additional authentication is required and you need to handle it outside Zuora.
Retries of failed requests
If the pre-debit notification request fails, no notificationReference is received from Adyen. Zuora retries the request using the following logic if the invoice meets the conditions in Conditions for triggering pre-debit notification requests:
- If the gateway's notification API supports idempotency, Zuora retries sending the request immediately.
- Zuora also retries the request at 09:30 AM IST (08:00 PM PST) and 11:30 AM IST (10:00 PM PST). By default, Zuora retries the request up to 23 days after the initial pre-debit notification attempt.
Manual initiation of the request
If you want to manually trigger the pre-debit notification, instead of waiting for the auto-retries, you can use the Trigger a pre-debit notification API operation. The invoice must also meet the conditions in Conditions for triggering pre-debit notification requests.
Mandate cancellation
If the mandate is canceled on your end, you can close the UPI payment method in Zuora by using the Delete a payment method REST API operation. If the mandate is canceled through the UPI application, Adyen notifies Zuora through Adyen's DISABLE_RECURRING webhook event, prompting Zuora to close the payment method.
Supported and unsupported features
The following table lists the supported and unsupported operations and features for UPI on Adyen Integration v2.0.
Supported | Unsupported |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
Support idempotency for retrying the following transaction requests:
|
|
Overall implementation procedure
Overall, complete the following steps to implement a UPI payment flow to support one-time or recurring payments:
- Prepare for the integration.
- Set up a Payment Page 2.0.
- Request a signature from Zuora for the payment page.
- Set up your client code to integrate the payment page to your web page.
- Implement the callback response.