Copyright 2019 - Custom text here

What is UPI?

UPI is a mobile-first payments system facilitated for account-to-account transfer. It enables transfer of money to any bank account using a single identifier without knowing any other details like account number, ifsc code etc.

 

How does it work?

  1. You install one of the UPI apps also called as PSP (Payment Service Provider). The list of UPI apps can be found below. 
  2. You register with the UPI app. As part of registration, your phone number will be verified by sending a SMS. This phone number is the one that should be linked to your bank accounts
  3. Create a VPA (Virtual Private Address) with the UPI app e.g. <xyz@pnb> if you are using the PnB UPI app. 
  4. Link your bank accounts. Any one of the participating banks can be used. No account details are needed. Just select the bank and if the account in the bank is linked to the phone number, the account will be added automatically.
  5. Once this is done, you can send and receive money from anyone with a VPA. The VPA need not be from the same UPI app. Any of the UPI apps will do

 

What are the advantages?

There are many advantages to the UPI. It is a very simple system for transferring money.

  1. You don’t need the bank account details of the receiver. You just need his VPA
  2. You don’t need your bank account details to add it to the PSP. Once your phone number is verified, the bank account details that are associated with the phone number are already retrieved
  3. You can change your bank account and not affect any future transactions since the VPA remains the same
  4. It is safer since the account details of the receiver are validated by NPCI. Given a VPA, it returns the actual name of the receiver
  5. It is cheap. The transaction fee is not yet applicable. Even when applicable, it will be as less as 50p per transaction
  6. The money is transferred immediately.

 

What are the disadvantages?

  1. It is not yet supported on IOS. 
  2. Not all banks still are integrated. Some notable misses are Syndicate Bank, Corporation Bank
  3. The implementations for third party app integration is still quite buggy

 

Which banks are currently integrated with UPI?

  1. Allahabad Bank
  2. Andhra Bank
  3. Axis Bank
  4. Bank of Baroda
  5. Bank of Maharashtra
  6. Bhartiya Mahila Bank
  7. Canara Bank
  8. Catholic Syrian Bank
  9. Central Bank of India
  10. DCB Bank
  11. Federal Bank
  12. HDFC Bank
  13. ICICI Bank
  14. IDFC Bank
  15. IndusInd Bank
  16. Karnataka Bank
  17. Kotak Mahindra Bank
  18. Oriental Bank of Commerce
  19. Punjab National Bank
  20. RBL
  21. South Indian Bank
  22. Standard Chartered
  23. State Bank of India
  24. TJSB Sahakari Bank
  25. UCO Bank
  26. Union Bank of India
  27. United Bank of India
  28. Vijaya Bank
  29. YES Bank

 

Which are the PSPs

Some of the major ones are:

  1. Axis Pay
  2. ICICI Pockets
  3. SBI Pay
  4. Lotza (Federal Bank)
  5. Maha UPI
  6. Phone Pe (Flipkart/Yes Bank)
  7. TruPay (Yes Bank)
  8. PnB UPI
  9. empower (Canara Bank)
  10. Union Bank UPI
  11. United UPI
  12. Andhra Bank UPI
  13. SIB M-Pay

 

How to integrate with your app

UPI is ideal for apps that facilitate payments between buyer and seller. It removes the need for a payment gateway and allows for direct transfer between the two transacting parties. This reduces cost and the overhead

for market places. 

 

To integrate, an app simply needs to be able to launch any UPI App that is already installed on the mobile. It will invoke this by passing in the parameters like amount, destination VPA etc. The external UPI app will be launched and once the payment is complete, the transaction status will be returned to your app. The java code to invoke external UPI apps is shown below:

 

        String url = "upi://pay?pa=" + sellerVPA +

                "&pn=" + sellerName +

                "&am=" + amount +

                "&tr=" + transactionId +

                "&tn=" + transactionDescriptin;

        Intent intent = new Intent(Intent.ACTION_VIEW);

        intent.setData(Uri.parse(url));

        Intent chooser = Intent.createChooser(intent, "Pay using UPI");

        startActivityForResult(chooser, REQUEST_CODE);

 

This will show a selection of apps that are installed on the phone supporting UPI. Once you confirm and enter you mpin, you will get the transaction status back. You can process that  using the code below:

 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

    Log.d(TAG, "request code: " + requestCode);

    Log.d(TAG, "result code: " + resultCode);

 

    if (requestCode != REQUEST_CODE) {

        return;

    }

 

// Here RESULT_OK is -1

    if (resultCode != Activity.RESULT_OK) { 

        // Transaction Failed

        return;

    }

  

    // Transaction successful

    if (data != null) {

        Log.d(TAG, "txnId: " + data.getStringExtra("txnId"));

        Log.d(TAG, "responseCode: " + data.getStringExtra("responseCode"));

        Log.d(TAG, "ApprovalRefNo: " + data.getStringExtra("ApprovalRefNo"));

        Log.d(TAG, "Status: " + data.getStringExtra("Status"));

        Log.d(TAG, "txnRef: " + data.getStringExtra("txnRef"));

    }

}

 

Issues with App Integration

 

Most of the UPI apps have an issue when integrating with a third party app. The following apps don’t work at all

 

Pockets -Says “Invalid QR code”

SBI Pay - Says “Invalid Application”

Lotza - Says “PSP Name - Invalid application”

Maha UPI - Says “Please try after some time”

Phone Pe - Launches the App but doesn’t pick up the details passed in to the intent and so does not initiate transaction automatically

TruPay - The app does not open

empower - The app crashes

Andhra Bank UPI - Says “PSP Name - Invalid application”

SIB M-Pay - Says “PSP Name - Invalid application”

 

The following apps work but do not return a successful status code. They return failed even for successful transactions

Axis Pay

 

HDFC Mobile UPI app seems to work in most cases but has seen to hang a few times when connecting to NPCI gateway.

 

The following apps work and return successful transaction status for payments. But they have an issue that in some cases even when the amount is not transferred successfully, the status is shown as success. None of the apps return the correct transactionId or referral number in the result

 

PnB UPI 

Union Bank UPI

United Bank UPI

 

 

We recommend using one of the above 4 for integration. But, we would suggest not to have workflows that depend on correct transaction status. So make sure you have a flow that asks for the receiver to confirm the payment. This will be needed for some time till the UPI apps get more mature. We will update the list as we continue testing

 

More details can be found in the NPCI Technical Specification Document