Using development expertise to strengthen a fintech company
Some startups, at the stage of launching and developing the main functions, focus on the idea of the product and its value and transfer the development to a contractor. This approach reduces the demands on the in-house team and frees up time for go-to-market work. That is what fintech company Revo Technology did when they used Evrone to strengthen their team and bring their banking technology product from offline to online.
Business logic in an app with API-based architecture
In 2013, Revo became one of the first companies in Russia to offer customers an installment payment service for goods purchased on the Internet. The paperless loan application could be filled out quickly, helping partner stores attract more customers.
With this approach, the fintech company was able to interest investors. Vostok Emerging Finance and Baring Vostok first invested $5 million in Revo, and two years later, invested another $20 million.
When Revo contacted Evrone, the service looked like an offline application for tablets. The customer would come to the store, where the seller helped them arrange an installment plan on the spot, and they left with the goods. A very simple Bootstrap personal account was available for online purchases, which, in fact, simply duplicated the actions of a sales assistant.
We got involved in the project at the stage where the loan process needed to be transferred online. Our tasks were to improve the calculator, develop a personal account with an extended set of functions so that clients could pay off debts online, and automate the credit scoring system.
We were faced with the task of making a convenient application that describes the business logic, automates the loan cycle, and takes into account a number of specific details. The app is based on a business calculator with many micro-applications around it.
Breaking a monolith into microservices
Before our team got involved, the project had already existed for about three years, and several third-party contractors were working on the code.
Most of the business logic was not written in the most convenient way. It was client-side in the form of separate js files. In this case, one function could be duplicated in different files, essentially the same, but different in execution. Because of this, the pages took longer to load. The existing solution was supposed to be supported in all browsers on any device, but for users with disabled JavaScript, the function written on the client side simply did not work.
It was also difficult to make changes to the functions, which had to be done frequently, due to the nature of digital banking in Europe. For example, when the Central Bank announced new rates, it was necessary to change financial functions, and the consequences of such alterations could be most unexpected.
Revo had many APIs for different types of loan processing, both offline and online. If you wanted to add something new, like logging, communication, or sending SMS, you had to duplicate these functions in all APIs.
To make it easier for users to understand and interact with API endpoints, we focused on breaking up the monolith and building a bank with microservices. It works much faster than it did with the huge code base of the issuer, where, for one tiny change, you needed to touch about 40 files, and then spend a lot of time on tests.
We separated the personal accounts into one micro-application, and the loan issuance module into another. All calculations were slowly and gradually transferred to the backend. Moreover, we made the transition from monolith to microservices in an interesting way, by cloning the application and removing unnecessary parts.
Now that there is a separation and a new API for financial services, routine tasks are completed quickly. We got rid of the old code and implemented new solutions, and we are now in the process of moving to Kubernetes. In some areas we used old mechanisms, but the decomposition of software into microservices keeps us from having to dive unnecessarily into the legacy code of the system. In general, the work is much easier and takes less time with the improved API-first architecture. Plus, new developers are generally more used to seeing microservices than monoliths.
A convenient personal account
In the first version of the personal account, the buyer had to fill out the application themselves, without a sales assistant. Then their data was sent to scoring, where the general data from all aggregators was collected and the loan limit was determined.
We implemented credit scoring solutions through the API of a third-party credit bureau. We wrote a module that sent data there, after which the bureau collected complete information and gave the client a more accurate limit.
For the new personal accounts, we have developed an fintech API for identification, authentication, registration, and the design of products. Now the main part of our efforts is directed to this API, and the frontend team is working on UI logic.
Empower your retail operations like Revo Russia. Let's innovate payment solutions for your business success.
After we finalized the personal account, it was necessary to give the client additional options to postpone the payment date, connect SMS informing, transfer money to a friend, and pay utility bills and fines.
Automated store connection
To develop the B2B segment, we have created a personal account option for the director of a store or a chain of stores, where Revo partners can view loan analytics and manage options. We also implemented auto-connection to the system. A store representative fills out several forms, then everything is sent for verification and is processed electronically. Implementing Revo in your business is now very easy. We have written plugins and SDKs for Ruby, PHP, .NET and other languages, so that stores can use the lending functionality in their engine.
Integrating loan brokers and retail chains
To increase the number of clients, it was necessary to connect a loan broker. It works like this: a user enters an online store, clicks the "Buy" button, an aggregator of offers drops out, and they select what they are interested in. We have integrated Revo with several such brokers. We also added direct integrations with large companies, for example Ozon, Citylink, and PayU.
An API for the European market
By the time Revoplus entered the Polish market, we had already made a basic public API for business, which provided automation in the banking processes for issuing any loans. Today, it is used very actively in Russia, and Revo partners can allow their clients to obtain loans. Poland eventually split off, and they now have their own repositories. It's a completely different product, but they use the same API.
Ruby is a great tool to write business logic
There is a lot of business logic in Revo, and it is very complex, with a lot of nuances. In this type of situation, Ruby is a great option to use. It is convenient to develop calculations, credit pipelines for banks, and other financial technology and digital banking services, including software for MFOs. Revo chose Evrone to help develop this project because of our team's expertise with Ruby and our experience with fintech innovation and startups.
On the backend we used RoR, Sinatra, Elixir/Phoenix, and we used React on the frontend. The database is in MySQL.
Properly-developed architecture is a key factor for growth
We refactored the monolithic structure into microservices and combined the disparate APIs. As a result, the API-oriented architecture of Revo has become more efficient. It is now quick and easy to implement new functionality to keep up with digital banking trends, and the work processes of MFOs are automated. New directions, integrations, and products have appeared, and the client base has grown.
In 2020, Revo has undergone a rebranding, changing its positioning, identity and name. The company's services will continue to develop under the new brand Mokka, and we continue to contribute to the implementation of new functions.
Each product needs its own approach, which is dictated by the logic of the processes. What will work for some will not work for others. If you want to find out more about what will work best for your service, fill out the form below and we will contact you soon to discuss your best development scenario.