23.02.2017 Views

Hurdles we met trying to integrate with UPI

Make instant and secure payments from any of your linked accounts with VPA process using Axis UPI app. No need to remember your bank account number & IFSC.

Make instant and secure payments from any of your linked accounts with VPA process using Axis UPI app. No need to remember your bank account number & IFSC.

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Hurdles</strong> <strong>we</strong> <strong>met</strong> <strong>trying</strong> <strong>to</strong> <strong>integrate</strong> <strong>with</strong><br />

<strong>UPI</strong><br />

Unified Payments Interface (<strong>UPI</strong>) allows money transfer bet<strong>we</strong>en any two bank accounts <strong>with</strong>out the<br />

hassles of typing in a plethora of details related <strong>to</strong> the receivers account. <strong>UPI</strong> works using a Virtual<br />

Private Address (VPA) that looks so<strong>met</strong>hing like company@bank, and that is all anyone needs <strong>to</strong> know <strong>to</strong><br />

transfer money <strong>to</strong> “company”. The money au<strong>to</strong>magically is routed <strong>to</strong> the bank account that “company”<br />

has mapped <strong>to</strong> the VPA.<br />

This brings <strong>with</strong> it a super potential for being the de-fac<strong>to</strong> mechanism for allowing money transfer<br />

bet<strong>we</strong>en a buyer and seller <strong>with</strong>out a third party getting involved. Imagine a digital marketplace that<br />

collects rent from shops, but transactions bet<strong>we</strong>en buyers and shops are no concern of owners of the<br />

marketplace. Isn’t this how it works in the real world? Now, <strong>UPI</strong> brings the possibility of this happening<br />

in the digital world <strong>with</strong>out the need of a complicated payment gateway.<br />

Our enthusiasm <strong>met</strong> <strong>with</strong> hurdles, some that <strong>we</strong> could cross and some not yet. But the possibilities are<br />

exciting.<br />

<strong>UPI</strong> apps of banks<br />

Unfortunately for me, the exercise hit a hurdle as soon as it began. <strong>UPI</strong> doesn’t yet have apps for iOS,<br />

and I was using an iPhone. I had <strong>to</strong> get hold of an Android device for testing.<br />

Most <strong>UPI</strong> apps need a SIM in place <strong>to</strong> verify the phone number and query bank accounts. For reasons<br />

best known <strong>to</strong> banks and crea<strong>to</strong>rs of <strong>UPI</strong> apps some accounts are just not ready! Polite error messages<br />

ask one <strong>to</strong> connect <strong>with</strong> bank branch or the app provider. The way out was <strong>with</strong> the help of a co-worker<br />

for whom BHIM, PNB and HDFC <strong>UPI</strong> apps <strong>we</strong>re setup <strong>with</strong> accounts and transactions <strong>we</strong>re working.<br />

Available documentation<br />

The next step was <strong>to</strong> find out how a merchant app could <strong>integrate</strong> <strong>with</strong> a Best Upi App. We tried a<br />

simple use case. All that needed <strong>to</strong> be achieved was from <strong>with</strong>in an app <strong>to</strong> initiate a <strong>UPI</strong> transaction, at<br />

the end of which a message <strong>with</strong> status could be displayed. Typical scenario – a product is bought and<br />

the buyer needs <strong>to</strong> pay the seller directly. Buyer needs <strong>to</strong> be displayed a message about the transaction<br />

status. This works ok when both buyer and seller are face <strong>to</strong> face, they can use a <strong>UPI</strong> app of choice, scan<br />

a QR code and make payment. But how does it work when it has <strong>to</strong> happen via a merchant app?<br />

The expected flow is<br />

1. Buyer selects a product and places order <strong>with</strong>in the merchant app<br />

2. Merchant app invokes <strong>UPI</strong> <strong>with</strong> required information. (receiver VPA, amount, reference)


3. Android displays all apps capable of handling <strong>UPI</strong><br />

4. Buyer selects the <strong>UPI</strong> app of choice <strong>to</strong> make the transaction<br />

5. <strong>UPI</strong> app does the transaction and presents the buyer <strong>with</strong> confirmation<br />

6. <strong>UPI</strong> app passes control back <strong>to</strong> the merchant app <strong>with</strong> a response having information about the<br />

transaction<br />

The Linking Specification document provided by the NPCI almost explains how this can be done. The<br />

document explains how merchant apps can use URL deep linking <strong>to</strong> invoke <strong>UPI</strong> apps on Android devices.<br />

It also provides a table on what response is expected, except it does not say where and how this<br />

response can be used. Crea<strong>to</strong>rs of the document may have missed including some information because<br />

it was that obvious for them and they assumed it would be so for others.<br />

Trial and error<br />

We now had a needle (response) in a haystack (<strong>UPI</strong> apps) problem, and <strong>we</strong> did not even know how <strong>to</strong><br />

identify the needle. We did not know if each of the <strong>UPI</strong> app would provide the response in a similar style<br />

and location. We wished the linking specification document would have made this clear and set it in<br />

s<strong>to</strong>ne.<br />

After a few trials and meetings <strong>with</strong> helpful developers <strong>we</strong> figured the “response”, and thankfully two of<br />

the three Best Upi App <strong>we</strong> tried provided the response in identical pattern. The one that failed <strong>to</strong><br />

provide a response was BHIM, which presented the confirmation but refused <strong>to</strong> give control back <strong>to</strong> the<br />

merchant app.<br />

Identical pattern of response by two out of three Best Upi App was good progress. Another step<br />

forward.<br />

Ho<strong>we</strong>ver, the information in these responses had nothing in them for the merchant app <strong>to</strong> reconcile<br />

<strong>with</strong> the request. The transaction references <strong>we</strong>re those of the <strong>UPI</strong> app and not one provided by the<br />

merchant app. There wasn’t one para<strong>met</strong>er that could be used <strong>to</strong> relate back <strong>with</strong> the transaction<br />

initiated from the merchant app.<br />

<strong>UPI</strong> is evolving<br />

<strong>UPI</strong> is a fantastic initiative and eventually when all works <strong>we</strong>ll <strong>we</strong> will wonder how <strong>we</strong> did business<br />

<strong>with</strong>out it. But for now, the integration is at best flaky, and improving it does not seem like one entity’s<br />

responsibility. So, when it is everyone’s responsibility <strong>we</strong> know what happens.<br />

If testing apps on android was already a problem of plenty due <strong>to</strong> a variety of devices and versions of<br />

OS’s, the number of <strong>UPI</strong> apps available complicated it further.


BHIM announcement could not have come at a better time, making me wonder why NPCI didn’t lead<br />

the <strong>UPI</strong> initiative <strong>with</strong> BHIM. Why would you make each participating bank create their own <strong>UPI</strong> app and<br />

then provide an alternate that makes theirs redundant?<br />

Adherence <strong>to</strong> guidelines<br />

This is what brings in fear. Unlike a payment gateway where the merchant is working <strong>with</strong> a single entity<br />

and is developing an app <strong>to</strong> match gateway requirements, <strong>with</strong> <strong>UPI</strong> there is a dependency on a variety of<br />

third party apps and their adherence <strong>to</strong> guidelines and quality. Merchant app could initiate a transaction<br />

and never find out its outcome. Is there a way for a merchant app <strong>to</strong> query NPCI <strong>to</strong> find out the status?<br />

Wishful thinking<br />

A simpler solution for merchant integration will be for NPCI <strong>to</strong> provide a direct <strong>we</strong>b gateway asking the<br />

same information as specified in the Linking Specification document and providing the same response<br />

<strong>with</strong> additional para<strong>met</strong>ers <strong>to</strong> help merchants reconcile the transaction. Involving another <strong>UPI</strong> app in<br />

bet<strong>we</strong>en is complicating matters and it truly isn’t required. Guess what, a <strong>we</strong>b gateway will work for iOS<br />

<strong>to</strong>o!<br />

NPCI should own this and true <strong>to</strong> <strong>UPI</strong>’s name “unify” - make their gateway the single point of query. It’s<br />

really “sarkaari” <strong>to</strong> expect merchants <strong>to</strong> start a transaction at one place and expect <strong>to</strong> find the outcome<br />

from another place.<br />

Source: http://tinyurl.com/z38zd6l

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!