Skip to main content
Available in🇮🇳 India

General

QuickBuy on Standard Checkout shows a generic Pay Now button on your page. When the customer taps it, the recommended instrument opens in the Razorpay Checkout modal.Embedded Quick Buy shows the recommended instrument directly on your page, wherever you choose to place it.
Yes. Businesses on all three integrations can use Embedded Quick Buy. You need to add the lightweight Razorpay Custom SDK, which powers the Quick Buy button.
No. You do not store any card data. You fetch the recommended instrument from Razorpay, and saved cards reach you as Razorpay tokens. So there is no PCI-DSS requirement.
Embedded Quick Buy is available on:
No. Embedded Quick Buy is an addition to your current checkout. It appears before checkout and hands over to your existing Razorpay Checkout when the customer taps Change payment method or has no recommended instrument. Your current checkout flow is unaffected until you deploy the Quick Buy button. You do not need to change your Orders API integration.
Razorpay returns up to 3 instruments, ranked by how likely the customer is to complete the payment. Razorpay decides the count and the instruments. You cannot configure them.To offer more options than the top recommendation, send the customer to the full checkout through Change payment method rather than showing all 3 as separate buttons.
  • Without an order_id, the response is limited to UPI intent apps. Saved cards are not returned.
  • Without a customer_id, pass the customer’s contact number. If neither is available, or the customer has no recommended instruments, the response returns an empty items array. Treat this as a normal response, not an error, and show your regular checkout button.
No. Take the customer straight to the full Razorpay Checkout. An extra screen adds a step and can cause drop-offs. Razorpay Checkout already shows recommended instruments at the top, along with all other payment methods.
No. COD is not part of the Quick Buy flow, and you handle COD separately by default. If you want to offer COD on Razorpay Checkout, you can enable it separately.
Yes. You can test the full flow, including fetching recommended instruments, creating orders and submitting payments, in Test Mode with your test API keys. Going live with Quick Buy does not affect your existing checkout. It takes effect only when you deploy the Quick Buy button to production.

Mobile Web

Quick Buy on mobile web is built on Custom Checkout (razorpay.js). Include razorpay.js, create customers and fetch recommended instruments to power the Quick Buy button. Your Standard Checkout remains the fallback when the customer taps Change payment method. Know more about the mobile web integration.
On mobile web, the browser cannot check which apps are installed. Native SDKs can, and they drop apps that are not installed. On mobile web, show every UPI app returned. If the app is not installed, the device handles the failed deep link. You do not need to handle this case.

React Native SDK

Yes. Quick Buy is powered by the Custom UI SDK. Use react-native-customui to fetch recommended instruments and power the Quick Buy button. Continue to use react-native-razorpay to open the full Standard Checkout when the customer taps Change payment method.
Use react-native-customui version 2.2.9 or later. It includes getRecommendedInstruments(), the fix for the iOS pod install framework conflict and consistent UPI app detection on Android.
You may see this error:
Error
It occurs when react-native-customui is linked manually while autolinking also picks it up. To fix it, remove the manual linking.
  1. From android/settings.gradle, remove:
    settings.gradle
  2. From android/app/build.gradle, remove:
    build.gradle
  3. From MainApplication.kt, remove the package if you added it only for the Custom UI SDK:
    MainApplication.kt
  4. Clean and rebuild:
    Terminal
This can happen when both react-native-razorpay and react-native-customui are installed. Update the pods by running pod install again to pull the latest SDK version, which resolves the conflict. No other change is needed.
On Android, initRazorpay() initialises the SDK on the UI thread and does not return a promise. If you call getRecommendedInstruments() immediately after it, initialisation may not be complete.Call initRazorpay() earlier in the flow, for example when the checkout screen loads or when you first fetch your API key. Call getRecommendedInstruments() after a short delay or in a later interaction.
Check that the options include a customer object with a contact field. It is mandatory by default, although this depends on your account configuration. If it is required and missing, the call fails.
JavaScript