Saved VPA
Check the Saved VPA feature for Custom Web Integration.
Razorpay enables you to save the VPAs of a customer. The VPAs entered by the customer is stored and secured as tokens in Razorpay. The customers can select the saved VPA and complete the payment on subsequent visits.
- This saves the customer the hassle of entering the VPA again for every transaction.
- Without Saved VPAs, the customers may enter invalid VPAs or forget their VPAs, which could lead to higher drop-off rates.
UPI Collect Flow Deprecated
According to NPCI guidelines, the UPI Collect flow is being deprecated effective 28 February 2026. Customers can no longer make payments or register UPI mandates by manually entering VPA/UPI id/mobile numbers.
Exemptions: UPI Collect will continue to be supported for:
- MCC 6012 & 6211 (IPO and secondary market transactions).
- iOS mobile app and mobile web transactions.
- UPI Mandates (execute/modify/revoke operations only)
- eRupi vouchers.
- PACB businesses (cross-border/international payments).
Action Required:
- If you are a new Razorpay user, use .
- If you are an existing Razorpay user not covered by exemptions, you must migrate to UPI Intent or UPI QR code to continue accepting UPI payments. For detailed migration steps, refer to the .
The user flow for accepting payments using tokens is as follows:
- The customer enters VPA to make UPI payments at your checkout.
- The entered VPAs are saved as tokens by Razorpay.
- On a repeat visit to your site, all the tokens saved for a customer are displayed on your checkout.
- From the displayed list of VPAs, the customer selects VPAs of their choice to complete the payment.
To authenticate API requests sent to Razorpay servers, send the API key, a combination of Key_Id and Key_Secret, in the request header.
The steps required to integrate tokens in the payment flow are as follows:
Create a customer, whose VPAs should be saved, with details such as email and contact.
Know more about
.An order must be created before initiating payment on your Checkout.
curl -u [YOUR_KEY_ID]:[YOUR_KEY_SECRET] \-X POST https://api.razorpay.com/v1/orders \-H "Content-Type: application/json" \-d '{"amount": 200,"currency": "INR"}'
Know more about
.While making the UPI collect payment, the customer enters the VPA on the checkout. To save the VPA, send customer_id and save attributes along with the other
razorpay.createPayment({amount: 200,contact: '9900000000',email_id: 'gaurav.kumar@example.com',customer_id: 'cust_EIW4T2etiweBmG',save: 1,order_id: 'order_Ee0biRtLOqzRjP',method: 'upi'vpa: '9900000000@upi'});
customer_id
string Unique identifier of the customer. This can be obtained from the response of
save
integer Specifies if the VPA should be stored as tokens. Possible values are:
1: Saves the VPA details.0(default): Does not save the VPA details.
All the VPA tokens of a customer can be retrieved as follows:
curl -u [YOUR_KEY_ID]:[YOUR_KEY_SECRET] \-X GET https://api.razorpay.com/v1/customers/cust_EIW4T2etiweBmG/tokens
Once the VPAs are tokenized, in all the repeat transactions on your website, customers can complete their UPI payments without having to enter their VPAs again.
In subsequent payments, instead of vpa, pass customer_id and token attributes along with the other
.... //beginning of your custom coderazorpay.createPayment({amount: 100,contact: '9900000000',email_id: 'gaurav.kumar@example.com',customer_id: 'cust_EIW4T2etiweBmG',order_id: 'order_EAFrKULhM6Eopk',method: 'upi',token: 'token_EeO65VIv8BXZg5'});...... //rest of the code
customer_id
string Unique identifier of the customer.
token
string Token of the saved VPA obtained in the
Is this integration guide useful?