{"id":5372,"date":"2021-01-08T14:15:47","date_gmt":"2021-01-08T08:45:47","guid":{"rendered":"https:\/\/razorpay.com\/blog\/?p=5372"},"modified":"2025-04-10T16:30:10","modified_gmt":"2025-04-10T11:00:10","slug":"upi-collect-razorpay-business-growth","status":"publish","type":"post","link":"https:\/\/razorpay.com\/blog\/upi-collect-razorpay-business-growth\/","title":{"rendered":"Bring Velocity to Your Business With the Improved 10X Faster Razorpay UPI Collect"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">In 2020, UPI payments have become one of the most heard and most used payment flow. With its rising popularity among customers and businesses alike, Razorpay wanted to make UPI even more seamless and quicker for our partners. One way for us to do this was by making some efficient changes in <a href=\"https:\/\/razorpay.com\/upi\/\">Razorpay UPI<\/a> Collect.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Our teams at Razorpay got to work to figure out the roadblocks in UPI payments and how we could correct them. The result was a product that made UPI payments 10 times faster and increased the success rates of UPI payments. Read on to discover how we made the UPI Collect flow faster for our customers.\u00a0<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">Different flows in UPI<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Before we move forward, let\u2019s understand some basic terms. UPI payment can be completed through the following ways:<\/span><span style=\"font-weight: 400;\">\u00a0<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>UPI Intent: <\/b><span style=\"font-weight: 400;\">Customer gets the list of UPI apps pre-installed in their device to select from. Customers need to simply select one UPI app and enter their 4 digit <a href=\"https:\/\/razorpay.com\/learn\/what-is-a-upi-pin\/\">UPI pin<\/a> to complete the transaction. This is primarily available on Android mobile. Razorpay has now launched this feature on mobile sites and IOS as well.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>UPI Collect:<\/b><span style=\"font-weight: 400;\"> In this method, customers need to enter their <a href=\"https:\/\/razorpay.com\/learn\/what-is-upi-id\/\">UPI ID<\/a>\/VPA. The ID is first validated and then a collect notification is sent to the customer\u2019s app to complete the payment. This flow works on all devices and platforms. The issue with this method is that customers often enter incorrect VPAs.<\/span><\/li>\n<\/ul>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-5381 size-full aligncenter\" src=\"https:\/\/razorpay.com\/blog-content\/uploads\/2021\/01\/8qVB54U.gif\" alt=\"\" width=\"578\" height=\"464\" \/><i style=\"font-size: 19px;\">UPI Collect flow: VPA\/UPI ID is validated before initiating the transaction<\/i><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>UPI QR:<\/b><span style=\"font-weight: 400;\"> Customers scan the QR code displayed using any UPI app. Then they enter their 4 digit UPI pin to complete the transaction.\u00a0<\/span><\/li>\n<\/ul>\n<p><span data-sheets-root=\"1\" data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;Related Read: How to Find UPI ID Using Google Pay?&quot;}\" data-sheets-userformat=\"{&quot;2&quot;:332799,&quot;3&quot;:{&quot;1&quot;:0},&quot;4&quot;:{&quot;1&quot;:2,&quot;2&quot;:14277081},&quot;5&quot;:{&quot;1&quot;:[{&quot;1&quot;:2,&quot;2&quot;:0,&quot;5&quot;:{&quot;1&quot;:2,&quot;2&quot;:0}},{&quot;1&quot;:0,&quot;2&quot;:0,&quot;3&quot;:3},{&quot;1&quot;:1,&quot;2&quot;:0,&quot;4&quot;:1}]},&quot;6&quot;:{&quot;1&quot;:[{&quot;1&quot;:2,&quot;2&quot;:0,&quot;5&quot;:{&quot;1&quot;:2,&quot;2&quot;:0}},{&quot;1&quot;:0,&quot;2&quot;:0,&quot;3&quot;:3},{&quot;1&quot;:1,&quot;2&quot;:0,&quot;4&quot;:1}]},&quot;7&quot;:{&quot;1&quot;:[{&quot;1&quot;:2,&quot;2&quot;:0,&quot;5&quot;:{&quot;1&quot;:2,&quot;2&quot;:0}},{&quot;1&quot;:0,&quot;2&quot;:0,&quot;3&quot;:3},{&quot;1&quot;:1,&quot;2&quot;:0,&quot;4&quot;:1}]},&quot;8&quot;:{&quot;1&quot;:[{&quot;1&quot;:2,&quot;2&quot;:0,&quot;5&quot;:{&quot;1&quot;:2,&quot;2&quot;:0}},{&quot;1&quot;:0,&quot;2&quot;:0,&quot;3&quot;:3},{&quot;1&quot;:1,&quot;2&quot;:0,&quot;4&quot;:1}]},&quot;9&quot;:0,&quot;10&quot;:1,&quot;11&quot;:3,&quot;12&quot;:0,&quot;15&quot;:&quot;Calibri&quot;,&quot;19&quot;:0,&quot;21&quot;:0}\">Related Read: <a href=\"https:\/\/razorpay.com\/learn\/how-to-find-upi-id-in-google-pay\/\">How to Find UPI ID Using Google Pay?<\/a><\/span><\/p>\n<h2><span style=\"font-weight: 400;\">The problem statement<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Recently, our teams figured out that the time taken to complete UPI Collect payment is pretty high as compared to that of UPI Intent flow. One of the early observations indicated that the latency of the <a href=\"https:\/\/razorpay.com\/learn\/what-is-virtual-payment-address-vpa\/\">VPA (Virtual Payment Address)<\/a> validation API is very high, causing a major delay.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Razorpay used to rely on the bank&#8217;s API to validate the VPA before initiating UPI Collect payment. In a few cases, the Bank\u2019s API even takes up to 30 seconds to respond. This was primarily because for each and every request, Razorpay has to request the Bank\/NPCI system for validation.\u00a0<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-5384 size-full\" src=\"https:\/\/razorpay.com\/blog-content\/uploads\/2021\/01\/UPI-collect-flow.png\" alt=\"UPI\" width=\"1600\" height=\"784\" srcset=\"https:\/\/blog.razorpay.in\/wp-content\/uploads\/2021\/01\/UPI-collect-flow.png 1600w, https:\/\/blog.razorpay.in\/wp-content\/uploads\/2021\/01\/UPI-collect-flow-300x147.png 300w, https:\/\/blog.razorpay.in\/wp-content\/uploads\/2021\/01\/UPI-collect-flow-1024x502.png 1024w, https:\/\/blog.razorpay.in\/wp-content\/uploads\/2021\/01\/UPI-collect-flow-768x376.png 768w, https:\/\/blog.razorpay.in\/wp-content\/uploads\/2021\/01\/UPI-collect-flow-1536x753.png 1536w\" sizes=\"auto, (max-width: 1600px) 100vw, 1600px\" \/><\/p>\n<p style=\"text-align: center;\"><i><span style=\"font-weight: 400;\">The payment flow for UPI Collect payments is illustrated above<\/span><\/i><\/p>\n<h3><span style=\"font-weight: 400;\">The case of Validate VPA API<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">The <a href=\"https:\/\/razorpay.com\/docs\/payments\/payment-methods\/upi\/vpa-validation\/\">Validate VPA<\/a> feature is very integral for any UPI payment. This is because of the following reasons:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Helps in improving UPI Collect Success Rate and leads to better user experience: <\/b><span style=\"font-weight: 400;\">Guide users in case of a spelling mistake or incorrect VPA entered. Roughly <\/span><span style=\"font-weight: 400;\">25% of users enter incorrect VPA in their first attempt<\/span><span style=\"font-weight: 400;\">.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>VPA payouts:<\/b><span style=\"font-weight: 400;\"> Required before VPA payout to make sure the business is making payment to a valid VPA. The API also shares the customer name for further validation.\u00a0<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">However, there are some problems with the Validate VPA API of Banks\/NPCI. Because of these below-listed issues, we need to re-evaluate our approach.<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Incorrect result: <\/b><span style=\"font-weight: 400;\">We have identified cases when the bank API often returns incorrect result<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>High latency: <\/b><span style=\"font-weight: 400;\">We currently validate VPA using three different bank gateways. But the latency is high across all bank gateways.<\/span><\/li>\n<\/ul>\n<p style=\"text-align: center;\"><b>Read More: <\/b><a href=\"\u201chttps:\/\/razorpay.com\/blog\/what-is-upi-and-how-it-works\/\u201d\"><b>What is UPI and How it Works?<\/b><\/a><\/p>\n<h2><span style=\"font-weight: 400;\">The solution: Hunting down latency with UPI Collect<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Latency is the delay between a user&#8217;s action and a web application&#8217;s response to that action.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">However, latency is not an option anymore: The less interactive a site becomes, the more likely users are to migrate to a competitor\u2019s site. It is often said that latency is the mother of interactivity. Have a look at the statistics below to know the kind of impact latency can have on a business.<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Amazon found that every 100 minutes of latency cost them 1% in sales.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Google found an extra 0.5 seconds in search page generation time dropped traffic by 20%.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">A broker could lose $4 million in revenues per millisecond if their electronic trading platform is 5 milliseconds behind the competition.<\/span><\/li>\n<\/ul>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-5382 aligncenter\" src=\"https:\/\/razorpay.com\/blog-content\/uploads\/2021\/01\/Mobile-page-load-time-300x209.png\" alt=\"\" width=\"510\" height=\"355\" srcset=\"https:\/\/blog.razorpay.in\/wp-content\/uploads\/2021\/01\/Mobile-page-load-time-300x209.png 300w, https:\/\/blog.razorpay.in\/wp-content\/uploads\/2021\/01\/Mobile-page-load-time-768x536.png 768w, https:\/\/blog.razorpay.in\/wp-content\/uploads\/2021\/01\/Mobile-page-load-time.png 1000w\" sizes=\"auto, (max-width: 510px) 100vw, 510px\" \/><i style=\"font-size: 19px;\">Mobile page load industry benchmarks<\/i><\/p>\n<p><span style=\"font-weight: 400;\">In order to fix the latency issue associated with the VPA validation API, we did multiple changes at our end. Few of the important ones are listed below:\u00a0<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Save VPA: Allow customers to save their VPA for future transactions<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Our first step was to launch a flow for users to save their UPI details for successive payments. We named this flow as \u2018Saved VPA\u2019. This feature allowed customers to save their UPI IDs for successive payments.\u00a0<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-5387 \" src=\"https:\/\/razorpay.com\/blog-content\/uploads\/2021\/01\/Screenshot_20210108-164008-scaled-e1610104496963-223x300.jpg\" alt=\"UPI Collect VPA\" width=\"422\" height=\"568\" srcset=\"https:\/\/blog.razorpay.in\/wp-content\/uploads\/2021\/01\/Screenshot_20210108-164008-scaled-e1610104496963-223x300.jpg 223w, https:\/\/blog.razorpay.in\/wp-content\/uploads\/2021\/01\/Screenshot_20210108-164008-scaled-e1610104496963-768x1031.jpg 768w, https:\/\/blog.razorpay.in\/wp-content\/uploads\/2021\/01\/Screenshot_20210108-164008-scaled-e1610104496963-1144x1536.jpg 1144w, https:\/\/blog.razorpay.in\/wp-content\/uploads\/2021\/01\/Screenshot_20210108-164008-scaled-e1610104496963.jpg 1182w\" sizes=\"auto, (max-width: 422px) 100vw, 422px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Roughly 8% of customers have already saved their VPAs with us. This means that they don&#8217;t have to enter their UPI IDs again and again to complete their payment. The Saved VPA process further leads to better user experience, faster payment, and more revenue for the businesses.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Saved VPA feature is enabled by default for all users on Razorpay checkout. If you are a business and are managing your own payment UI, please check out the <\/span><a href=\"https:\/\/razorpay.com\/docs\/payment-gateway\/s2s-integration\/payment-methods\/upi\/saved-vpa\/\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400;\">integration document<\/span><\/a><span style=\"font-weight: 400;\"> to start using the Saved VPA feature.\u00a0<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Use Validate VPA API of multiple banks (instead of one)<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">While Save VPA was a great product upgrade, we realized that we were still dependent on the Bank\u2019s Validate VPA API for more than 90% of our requests. The latency for the same was very high, affecting our customers.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">To avoid our dependency on a single bank API, we soon started to use the Validate VPA API of three other banks. This helped us to swiftly move our traffic from one bank services to another, whenever there was downtime or increased timeout with the banks. This helped us take care of bank downtimes and route traffic based on latency.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">But the P95* and P99** was still high for all bank APIs as they were further dependent on the NPCI system for the validation of each and every VPA. We were definitely on the right track here but the number was still above our target. We then looked at other candidates for further optimization and thus, came our next update.<\/span><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-5377 aligncenter\" src=\"https:\/\/razorpay.com\/blog-content\/uploads\/2021\/01\/1-300x99.png\" alt=\"\" width=\"703\" height=\"232\" srcset=\"https:\/\/blog.razorpay.in\/wp-content\/uploads\/2021\/01\/1-300x99.png 300w, https:\/\/blog.razorpay.in\/wp-content\/uploads\/2021\/01\/1-1024x337.png 1024w, https:\/\/blog.razorpay.in\/wp-content\/uploads\/2021\/01\/1-768x253.png 768w, https:\/\/blog.razorpay.in\/wp-content\/uploads\/2021\/01\/1-1536x506.png 1536w\" sizes=\"auto, (max-width: 703px) 100vw, 703px\" \/><\/p>\n<p style=\"text-align: center;\"><i><span style=\"font-weight: 400;\">Overall latency data (in seconds) before the changes were made live (data is in seconds)<\/span><\/i><\/p>\n<p><span style=\"font-weight: 400;\">*P95: It is the 95th percentile latency. That is, for 95% of the requests, the API used to take 3 seconds or lower.\u00a0\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">**P99: It is the 99th percentile latency. That is, for 99% of the requests, the API used to take 10 seconds or lower.\u00a0<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Cache-ing VPAs for faster validation\u00a0<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">It was very important for us to solve the VPA validation API latency as more than 50% of the payments on Razorpay are UPI payments now. After carefully analysing the data, we found out that the repeat rate of customers is very high. Nearly 90% of VPAs get validated again and again.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In order to solve this latency issue, we have started cache-ing or storing the VPA\/UPI ID data of correct VPAs for 30 days. If the same VPA needs to be validated again, we will use our database instead of hitting the Bank\/NPCI API. This helped us in reducing our dependence on NPCI\/Bank API and improving the latency of our API.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">This means that the requests that used to take up to 10 seconds in some cases are now taking less than 100 milliseconds.\u00a0<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">The results for UPI Collect: Promising for preliminary stages<\/span><\/h2>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">In the first phase of this project, the VPAs were cached for 7 days. This helped us to cater to 45% of all Validate VPA requests using our own database. The P95 for these requests is less than 100 milliseconds.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">We have now increased the cache-ing period to 30 days so that we can cater to 80%+ validate VPA requests using our own database, instead of relying on bank\/NPCI system uptime.<\/span><\/li>\n<\/ul>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-5378 aligncenter\" src=\"https:\/\/razorpay.com\/blog-content\/uploads\/2021\/01\/2-300x99.png\" alt=\"UPI Collect VPA\" width=\"704\" height=\"233\" srcset=\"https:\/\/blog.razorpay.in\/wp-content\/uploads\/2021\/01\/2-300x99.png 300w, https:\/\/blog.razorpay.in\/wp-content\/uploads\/2021\/01\/2-1024x337.png 1024w, https:\/\/blog.razorpay.in\/wp-content\/uploads\/2021\/01\/2-768x253.png 768w, https:\/\/blog.razorpay.in\/wp-content\/uploads\/2021\/01\/2-1536x506.png 1536w\" sizes=\"auto, (max-width: 704px) 100vw, 704px\" \/><i style=\"font-size: 19px;\">Preliminary results of the VPA cache-ing project<\/i><\/p>\n<p style=\"text-align: center;\"><b><i>P99 is the 99th percentile latency, i.e. for 99 per cent of users, the latency is 100 ms or lower.<\/i><\/b><\/p>\n<h2><span style=\"font-weight: 400;\">What does it mean for our customers?\u00a0<\/span><\/h2>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Fewer requests to Bank\/NPCI for validating VPA API:<\/b><span style=\"font-weight: 400;\"> 80%+ requests will be validated using our VPA cache. This means that we don&#8217;t have to request Bank\/NPCI for each and every VPA.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Reduced latency or timeout:<\/b><span style=\"font-weight: 400;\"> Validating VPA using our VPA database is faster as compared to NPCI\/Bank API validation (takes up to 30 seconds in some cases). Latency (P95) will go down from 10 seconds to 100 milliseconds<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Correct result:<\/b><span style=\"font-weight: 400;\"> Bank\/NPCI API often give incorrect results for a verified VPA. With this project, only verified VPAs will be stored in our VPA database.<\/span><\/li>\n<\/ul>\n<h2><span style=\"font-weight: 400;\">Make your UPI payments 10x faster with Razorpay UPI Collect<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">With our customer-focused approach, Razorpay customers can expect an improvement in their metrics with our UPI Collect updates. This feature is already enabled by default if you are using Razorpay standard checkout. For Server to Server integrations, please go through the <\/span><a href=\"https:\/\/razorpay.com\/docs\/vpa-validation\/\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400;\">VPA Validation API<\/span><\/a><span style=\"font-weight: 400;\"> document. <\/span><span style=\"font-weight: 400;\">, then leave us a <\/span><a href=\"https:\/\/razorpay.com\/support\/#request\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400;\">query<\/span><\/a><span style=\"font-weight: 400;\"> here and we will get back to you.\u00a0<\/span><\/p>\n<p style=\"text-align: center;\"><span style=\"font-weight: 400;\">Not a Razorpay Customer? <\/span><\/p>\n<div style=\"text-align: center;\"><a style=\"border-radius: 3px; background: #9e58e8; padding: 15px; font-weight: 600; cursor: pointer; text-decoration: none; color: white;\" href=\"https:\/\/razorpay.com\/\">Sign Up Today for The Ultimate Payments Experience!<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>With Razorpay&#8217;s latest UPI Collect updates, customers can expect an improvement in their metrics. Read how business can become 10x faster with UPI Collect.<\/p>\n","protected":false},"author":43,"featured_media":5379,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[26],"tags":[93,126,91],"class_list":{"0":"post-5372","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-payments","8":"tag-upi","9":"tag-upi-collect","10":"tag-upi-payments"},"_links":{"self":[{"href":"https:\/\/razorpay.com\/blog\/wp-json\/wp\/v2\/posts\/5372","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/razorpay.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/razorpay.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/razorpay.com\/blog\/wp-json\/wp\/v2\/users\/43"}],"replies":[{"embeddable":true,"href":"https:\/\/razorpay.com\/blog\/wp-json\/wp\/v2\/comments?post=5372"}],"version-history":[{"count":3,"href":"https:\/\/razorpay.com\/blog\/wp-json\/wp\/v2\/posts\/5372\/revisions"}],"predecessor-version":[{"id":21941,"href":"https:\/\/razorpay.com\/blog\/wp-json\/wp\/v2\/posts\/5372\/revisions\/21941"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/razorpay.com\/blog\/wp-json\/wp\/v2\/media\/5379"}],"wp:attachment":[{"href":"https:\/\/razorpay.com\/blog\/wp-json\/wp\/v2\/media?parent=5372"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/razorpay.com\/blog\/wp-json\/wp\/v2\/categories?post=5372"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/razorpay.com\/blog\/wp-json\/wp\/v2\/tags?post=5372"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}