UPI Intent on Mobile Web
Let your customers make UPI Intent payments on your mobile websites.
Integrate UPI Intent on your mobile app. UPI Intent works for UPI PSP apps and is available on Android and iOS.
Watch Out!
Razorpay UPI Intent is currently not available on CFB (Customer Fee Bearer) model.
- for a Razorpay account.
- from the Dashboard.
- Integrate with .
Follow the steps given below to integrate UPI intent on your mobile app:
1.1
1.2
Follow the steps given below to show the available UPI intent apps to your customers:
-
Add Razorpay.js file to your website. Skip this step if you have already completed it.
<script type="text/javascript" src="https://checkout.razorpay.com/v1/razorpay.js"></script> -
Instantiate Razorpay with your Key ID generated from the
. Skip this step if you have already completed it.var razorpay = new Razorpay({ key: '<YOUR_KEY_ID>' }); -
Call the
getSupportedUpiIntentApps
method to get a list of the supported UPI Intent apps.razorpay.getSupportedUpiIntentApps().then(() => {// get list of apps available for payment}).catch(() => {// no apps available});We recommend calling the above function and showing only these options to your customers:
-
Android: [
gpay
,phonepe
,paytm
,any
]Handy Tips
The below functionality is only available for Android.
- The
any
option triggers the other UPI payment apps installed on your customer's mobile. - You can use
razorpay.checkPaymentAdapter
to check if Gpay is available on your customer's mobile device. You can show only a specific app using the following:
razorpay.checkPaymentAdapter('gpay').then(() => {// gpay is installed}).catch(() => {// gpay app not installed}); - The
-
iOS: [
gpay
,phonepe
,paytm
]
-
Use the code below to initiate UPI intent payments from your app:
var paymentData = {amount: 100000, //pass in paise (amount: 100000 equals ₹1000)method: 'upi',contact: '9000090000', // customer's mobile numberemail: 'gaurav.kumar@example.com', //customer's email addressorder_id: 'order_00000000000001' //.. and other payment parameters, as usual};razorpay.createPayment(paymentData, { app: ‘phonepe’});razorpay.on('payment.success', function(response) {// response.razorpay_payment_id// response.razorpay_order_id});razorpay..on('payment.error', function(error) {// display error to customer});
Below is a list of errors you might face while initiating payments:
{"error": {"code": "BAD_REQUEST_ERROR","description": "Payment failed with selected app.","reason": "intent_no_apps_error"},"_silent": false}{"error": {"code": "BAD_REQUEST_ERROR","description": "UPI transactions are not enabled for the merchant","source": "NA","step": "NA","reason": "NA","metadata": {}},"status_code": 400}{"error": {"code": "BAD_REQUEST_ERROR","description": "Payment failed with selected app.","reason": "intent_no_apps_error"},"_silent": false}{"error": {"code": "BAD_REQUEST_ERROR","description": "You may have cancelled the payment or there was a delay in response from the UPI app.","source": "customer","step": "payment_authentication","reason": "payment_cancelled","metadata": {"payment_id": "pay_LA4ZngnumqsKFW"}},"status_code": 400,"_silent": false}
Given below is a list of possible errors, and their causes:
Follow these best practices while integrating Razorpay UPI intent with your mobile website:
-
Only activate the UPI payment intent when a customer initiates it rather than when the page loads.
-
Create a payment immediately after the customer clicks the pay button without extended async operations between these two steps.
-
When a customer chooses a UPI payment method, pass the value into
razorpay.createPayment(paymentData, {app: ‘phonepe’})
. -
Display a loading screen after starting the UPI payment intent flow. Wait until you receive a "success" or "failure" response before cancelling the flow.
Handy Tips
If you have enabled
redirect: true
on your end, you will receive the success or failure case as a POST request on the callback URL. -
We recommend you provide an option to cancel the payment to your customers on the loading screen.
-
Call the
razorpay.emit(‘payment.cancel’)
method to cancel the payment. You can also call this method if a customer exits your app without completing the transaction. Razorpay will then terminate the payment.
Is this integration guide useful?