Integrate with Turbo UPI

Steps to integrate Razorpay Turbo UPI with your app.

With Razorpay Turbo UPI, businesses experience faster and simpler payments. It condenses the payment process from 5 steps to just 1, eliminating app redirections. Enjoy a seamless in-app payment experience, reduce dependencies on third-party UPI apps, and gain complete visibility of the payment journey.

You can seamlessly integrate Turbo UPI with Razorpay iOS Standard SDK. Explore the full potential of

and know How it Works.

Turbo UPI Standard Checkout Flow

  • Integrate with . Ensure that you integrate with SDK version 1.0.0 or higher.
  • Import the following frameworks:
    • Common library/NPCI framework
    • Axis olive framework
    • Razorpay Turbo UPI framework

Watch Out!

The minimum supported iOS version for Turbo UPI is 11 and above.

Ensure your customers

to get started.

Turbo UPI wrapper plugin is available as a cocoapod, which can be integrated with any iOS application with a minimum deployment target of iOS 11 later. Add the code given below in the project’s podfile to get this cocoapod:

pod razorpay-turbo-pod

Follow these steps to integrate with Razorpay Turbo UPI:

  1. Initialise the Checkout object to enable the Turbo UPI functionality.

    // The `razorpay` variable can be declared a Global Variable in the ViewController.
    var razorpay: RazorpayCheckout?
    self.razorpay = RazorpayCheckout.initWithKey(checkoutKey ?? "", andDelegateWithData: self, plugin: RazorpayTurboUPI.turboUIPlugin())
  2. Use the following code to link the newly created UPI account with your app. This function can be called from any application section, offering multiple entry points for customers to link their UPI account with your app. Linking it in advance allows customers to pay directly with the linked UpiAccount without repeating the linking process.

    self.razorpay?.upiTurbo?.linkNewUpiAccount(mobileNumber: <customer-mobile>, color: <hex-code>, completionHandler: { response, error in
    // Handle the onboarded accounts Response

Payment Flow

Razorpay SDK will handle all the changes related to UpiTurbo internally. To integrate with the payment flow,


Razorpay provides a single exposed function that allows you to manage linked UPI accounts and access all non-transactional flows seamlessly.

View the non-transactional flow

Manage UPI Accounts

The SDK manages the linked UpiAccounts on the application by triggering manageUpiAccounts(), which follows the following internal non-transaction flows for UpiAccounts:

  • Fetch balance: Check the customer's account balance.
  • Change UPI pin: Provide the customer the ability to change their UPI PIN.
  • Reset UPI pin: Let your customers reset the pin for their account.
  • Delete the account from the application: Let your customers delink, that is, remove a selected UPI account from your application.
self.razorpay?.upiTurbo?.manageUpiAccount(mobileNumber: <customer-mobile>, color: "<hex-code>")

The SDKs given below provide access to exposed models for seamless integration.


errorCodeTypes of error codes
  • BAD_REQUEST_ERROR: Failure from the client's end (SDK).
  • GATEWAY_ERROR: Failure either from the Secure Component or the Bank.
  • SERVER_ERROR: Failure at PSP.
errorDescriptionBrief description of the error.
errorReasonSpecifies the specific reason for the error.
errorSourceIndicates the origin of the error. Possible values:
  • gateway
  • issuer_bank
  • beneficiary_bank
  • customer_psp
  • customer
  • internal
errorStepHighlights the stage where the error occurred.

[This is the latest version of the list and was last updated on February 27th, 2024]

Is this integration guide useful?