Compatibility: Last 2 versions of all modern (evergreen) browsers
Market: Danmark, Europe
Technologies: C#, ASP.NET Core, Microsoft cloud services including Cosmos DB, Azure functions, Azure durable functions, Azure service bus, FE Angular
Development approach: Agile/Scrum, Domain-driven design (DDD)
Project duration: 4 years (ongoing)
Status: In development (with some core functionalities in production)
Open banking is defined as a set of processes that enable a reliable exchange of financial information and services, with user permission.
Traditionally, to gain insight into consumers' account information, financial institutions had to collect users’ usernames and passwords to scrape. But this method proved to be a high-security risk, plus the results of screen scraping were often inaccurate, making it impossible to see the bigger financial picture. Open banking relies on APIs that are a more secure option as they enable direct data sharing without account credentials.
For banks and financial institutions, this means more accurate risk analysis, a more personalized approach, improved customer service, and stronger customer relations. For consumers, open banking simplifies the opening and transferring of checking accounts, provides a better overview of their financial situation, and a better service offer modified to meet their requirements and financial capabilities.
For small businesses, in particular, open banking solutions save time on accounting and minimize fraud through better account monitoring and the ability to identify problems early on.
And this is where our story begins. Some of our best developers who specialize in building fintech solutions worked on an ERP product component that handles the core accounting and financial management functions.
The company is an ERP (Enterprise Resource Planning) provider that aims to modernize a payroll and HR system. Their solution is intended to automate and optimize manual work processes and provide an overview of all payroll elements in one place. Ultimately, this automation should help increase transparency and offer the flexibility to customize the system as necessary. Their API offers multiple integration options which enables work across systems.
This particular project involved building an application that will handle the main accounting and management functions of an ERP planning system.
The first version of the company’s ERP system was launched in 2017. To this day, certain core functionalities are in production, with most product features still in development.
The Inviggo development team worked specifically on developing an app that would serve as a secure and efficient accounting solution for enterprises.
This involved building features that would enable:
Regardless of the number of successfully finished projects in your portfolio, there’s always room for further professional development. Our team made sure they set aside enough time to educate themselves about the systems, platforms, and approaches they haven’t had that much practice with. They took this opportunity to better understand and perfect their work with the CQRS pattern, NGRX store, and other concepts through advanced courses and practical work on smaller stories.
The two greatest challenges we would like to single out here are:
Initially, the system was run on Azure Cosmos DB (NoSQL) which doesn’t provide some of the features transactional databases does. With system expansion, maintaining relations between the data became more difficult. For this reason, the decision was made to migrate parts of the system to an SQL database and in that way ease any future data updates.
While domain-driven design is not a new concept for our team, every project comes with a learning curve. To write a good piece of code, DDD requires good management of ubiquitous language, streamlined communication with the domain expert, and familiarity with the domain itself.
The core of our tech stack is comprised of:
But let’s dive a bit deeper into our workflow:
DDD helped us truly understand our work
To develop an advanced, industry-specific solution, our team heavily relied on the domain-driven design approach to application development. We collaborated closely with domain experts to gather business requirements early and using ubiquitous language, everyone involved in the project was able to clearly understand the system.
Furthermore, we opted for an agile, iterative approach to development, which broke down this complex project into several phases and gave us room for continuous adaptability. Yes, we know that the financial world traditionally relied on linear methodologies, but we believe that rapid developments in banking and fintech created the need for a great structural change.
The agile approach to fintech app development offered us a space for testing new strategies and hypotheses, and more importantly - to meet the changing needs of the market.
From our experience, .NET showed to be a smart choice for fintech applications. It is an extremely scalable framework, compatible with multiple languages (eg. C#, C++ F#, Visual Basic). It is popular due to the versatility of its ever-expanding library that is quite beneficial for rapid development projects.
.NET also offers good code management and is a preferable choice among many dev teams as it shortens the code required to build complex apps. As such, it makes it fairly easy to build secure applications that run on multiple platforms.
Finally, we leveraged the benefits of Aiia features, an open banking platform that partnered with major EU banks and financial institutions to gather consumer data. It was specifically chosen for its Account Information Service API that enables the creation of personalized services and simplifies instant account-to-account payments from banks across Europe.
Aiia offers secure payments directly from their bank accounts. It is GDPR and PSD2 compliant, which means it provides full transparency and control of user data. With Aiia, our application gained direct access to the European market.
At the moment of writing, the product is still in the development phase and we will continue to work on the continual advancement of its features.
We’ve already made significant breakthroughs when it comes to the development of additional VAT rate modules and upgrades made to currency-related features. We’re particularly proud of the successful Aiia integration that enables users to easily input their bank accounts and leverage all system benefits.
Stay tuned for updates on results, and until then…