Neobank app

Neobank app for building credit score
2025
React Native
Laravel
UI/UX design
Microservice architecture

Project Idea

Our client is an entrepreneur from the US who decided to launch a new business.

In the USA, residents can’t get a credit card if they have a low credit rating. Client decided to create a service to help users get a higher credit rating or just get and use a credit card.

Our goals

Create a simple and attractive interface
Build a stable and secure system
Protect users financial data

UI/UX design

We carefully thought-out theapp’s navigation to make it assimple as possible.

We started by creating a mind map to organize our ideas, define the essential features of the neobank app, and show connections between screens.

We then created a logo and selected brand colors to establish a cohesive visual identity.

However, we can’t show brand-related details, since these are under an NDA.

However, we can’t show brand-related details, since these are under an NDA.

To figure out the app's style, we used references and anti-references for UI designs our client provided. We madea minimalistic interface with a bright green accent color that symbolizes growth and financial wellness.

UI kit

Banking apps need regular updates without compromising user experience. To help our client add new features while keeping the app consistent and compliant with requirements, we gathered a UI-kit with all design elements.

Key features

Sign in / Sign up

Users can create an account in the app using their phone number.

After that, they can authenticate using a PIN code, Face ID, or Touch ID.

KYC

To use the app, users need to go through a KYC process. First, they fill in their personal info like full name, date of birth, home address, ID and SSN.

Next, the app processes the user’s application and sends a notification when it’s approved or declined.

Home screen

On the home screen, users can view their cards, recent transactions, and rewards. The card balance is hidden and can be revealed by tapping on it.

Cards

Users can issue and reissue the Neobank cards and link their external bank accounts.

Opening a Neobank account, users get a secured charge card that requires a security deposit as collateral.

Transactions

The app lets users receive salary directly into their account, set up auto payments, and make instant transfers and top-ups. It also provides detailed analytics about transactions and recurring payments, helping users track their spending.

It also provides detailed analytics about transactions and recurring payments, helping users track their spending.

Rewards

The app features a cashback system where users can earn rewards by making purchases from both online and offline partners listed in the app. Users can also find the nearby partners on the map.

Users can also find the nearby partners on the map.

Profile

In the profile, users can see and edit their personal info, change card and notifications settings, set a profile picture, and connect their paycheck.

Password recovery

If a user forgets their password, they can recover it via phone or email.

Development

For this project, we chose our regular tech stack — React Native for mobile development, Laravel for backend, and Cloud SQL for databases. These technologies cover a wide range of needs for developing software, including banking applications.

Data privacy

Upon registration, users upload sensitive data, like passport photos and personal information, so it’s extremely important to protect it. We don’t store any private data on any servers. We receive data from the user and immediately send it further for KYC verification and to the bank.
Each app service has a separate database which stores only the data that is needed for its operation. This data set diversification makes it useless for hacker attacks and unauthorized access, as a single database contains raw data without user context.
Team members don’t have full access to all parts of the project, as we use the least privilege approach and fine grained access. To access any of the services, developers must first verify themselves and request access from the DevOps engineer. Only the DevOps engineer and team leaders control the production environment.
Finally, to prevent data from being lost, we use backups and set up replication in Cloud SQL. Replication is a process of copying and maintaining database instances across multiple servers. It helps us ensure databases are resilient, perform well under high demand, and are better protected against disruptions.

Certifications

For this project, we needed to certify the app with SOC 2 — it ensures that the service follows strict information security policies and procedures required for US financial services. Other important standards that needed to be considered were PCI DSS and ISO/IEC 27001. Our team has already passed the certification, and now we are waiting for the bank’ team to be certified.

Banking solution

To implement banking functionality, we needed to use a Banking as a Service (BaaS) solution. We helped our client evaluate providers from a technical point to find ones that fit the project. After negotiations with different providers, our client chose Bond as a BaaS platform. We used it as a gateway between the app and major US banks like Evolve Bank & Trust. Bond complies with the needed regulations, automates KYC, employs advanced encryption and security measures to protect user data and transactions.

KYC

We use Persona KYC to verify the identity of new users through checking their SSN and ID, ensuring that the users are who they claim to be. Simultaneously, Sardine KYC runs fraud detection checks to ensure the new users are not associated with fraudulent activities or risky behaviors. Once the users pass the KYC checks, we use Bond BaaS to create and manage bank accounts, issue cards, and enable financial transactions via its banking APIs.

Integrations

To implement banking functionality, we needed to use a Banking as a Service (BaaS) solution. We helped our client evaluate providers from a technical point to find ones that fit the project. After negotiations with different providers, our client chose Bond as a BaaS platform. We used it as a gateway between the app and major US banks like Evolve Bank & Trust. Bond complies with the needed regulations, automates KYC, employs advanced encryption and security measures to protect user data and transactions.

  • Bond as a BaaS platform.
  • Auth0 as our authentication gateway to streamline the authentication process across all microservices.
  • Persona for KYC. It uses multiple methods such as document verification, biometric checks, and database cross-referencing.
  • Sardine for KYC and risk profile. Detects and prevents fraudulent activities in real time and creates risk profiles for users.
  • Getkard to enable cashbacks in the app. The platform provides real-time cashback rewards, allowing users to see their rewards instantly.
  • Pinwheel for direct deposit switching. Pinwheel automates the direct deposit switching process, eliminating the need for manual paperwork and minimizing errors and delays.
  • Plaid for linking financial accounts. We chose it for a comprehensive range of features, security measures, and minimum downtime.
  • Google Pub/Sub for data exchange between microservices, which minimizes interaction time by triggering events within the system. This setup allows various microservices to respond only when needed.
  • Laravel Telescope for real-time monitoring within each microservice. In our development environment, its logging made it easy to catch minor errors during client-server interactions. Now it helps optimize the app in the staging environment.

Challenges we faced

During the development, we implemented and tested several innovations, including a new architecture and the UI-Kitten library for user interfaces. We created our own wrapper over RTK Query to streamline API interactions and conducted our first end-to-end tests with Detox.
We used a new architectural method to better follow the "single responsibility" principle from SOLID by splitting the service layer into smaller parts. This approach makes the system easier to understand, maintain, and debug because changes to one part are less likely to affect others. It ensures that each component does one thing well, leading to a more organized and manageable codebase.
We also improved the way we test asynchronous processes by separating tests into synchronous and asynchronous sections. This change reduced the number of tests and made them simpler for developers to understand.
We also had to integrate multiple third-party services working with their SDKs, which added another layer of complexity to the project.

Results

The project went into production back in November, then we started a closed beta test — the application had live users, they opened their cards and made transactions, but the app wasn’t published in the App Store. The app was approved in the store in April and now any user can download it — we’ve passed the review, it confirms that the app meets all the important requirements and has no problems with the law.

For now, our client's marketers are thinking over a strategy for how they will catch up with new users. 1,285 accounts have already been created — these are live users who have passed verification. We are continuing to work on the project and are constantly upgrading the app by adding new features.

Project in numbers

The project went into production back in November, then we started a closed beta test — the application had live users, they opened their cards and made transactions, but the app wasn’t published in the App Store. The app was approved in the store in April and now any user can download it — we’ve passed the review, it confirms that the app meets all the important requirements and has no problems with the law.

7 microservices
8 SDKs of third-party services
3 mobile developers
4 backend developers
3 DevOps engineer
1 team leader
2 UI/UX designers
1 project manager
Thanks
for watching!
This site uses cookies to store information on your device. Some are essential, while others help us enhance your experience by providing insights into how our website is used.
Necessary Cookies
Always Active
Enable core functionality like navigation and access to secure areas. The website may not function properly without these and can only be disabled through browser settings.
Analytics Cookies
Help us improve our website by collecting and reporting usage information.
This site uses cookies to store information on your device.