Why Us Services Portfolio Blog Technologies Development process Start a Project →
UA EN RU
← All projects
Fintech · Ukraine

FINTECH · NDA

Two online financing brands of a licensed company supervised by the NBU. We support and enhance the websites and customer portals of both brands, and we rewrote one brand's iOS and Android apps in Flutter and maintain them on the App Store and Google Play.
2brands: websites and portals
NBUlicence and supervision
FlutteriOS + Android from one codebase
2stores: App Store and Google Play
Work type
Website and portal support, Flutter apps
Direction
Fintech
Market
Ukraine
Tags
NBU-supervised fintechTwo brands, two systemsFlutter: iOS + Android
FINTECH · NDA — Website and portal support, Flutter apps
About the client

The FINTECH · NDA business

The company is a licensed non-bank financial institution supervised by the NBU and listed in the state register. Under two digital brands it offers online financing to individuals, and its customers' entire journey, from application to final payment, is remote and runs through each brand's own customer portal. For a business like this, a convenient product and regulatory compliance are one task, not two.

  • NBU licence and supervision
  • Two online financing brands
  • A fully remote customer journey
Case study

Project story

One company, two online financing brands: each has its own website and its own customer portal, where customers complete their entire journey. We support and enhance the websites and portals of both brands, and we rewrote one brand's existing iOS and Android apps in Flutter and maintain them on the App Store and Google Play. The company is a licensed financial institution supervised by the National Bank of Ukraine (NBU). We don't disclose its name: the project is under NDA.

The client: a financial company in a regulated market

The company is listed in the NBU register as a non-bank financial institution and operates under the regulator's licence. Under two brands it offers online financing to individuals, and the entire customer journey is remote: from the application to the final payment, nobody has to visit an office or sign a paper document. The project also covers one brand's iOS and Android apps. Customers already use them, so every release reaches real users straight away.

The requirements for a product like this come from several directions at once. The NBU sets what a website must disclose and how a customer is identified without meeting in person, the law sets how a contract is concluded and amended, and the App Store and Google Play set what a financial app is allowed to do. Each of these requirements ends up as a specific screen, field or step in the customer journey.

Two brands, two separate systems

The two brands run as two separate systems that don't depend on each other: each has its own website and its own customer portal. All they share is the licence, the regulator and the legal requirements. Here is what ANIART is responsible for in these systems:

LayerWhat's insideANIART's role
Public websites (one per brand)Each with its own voice and audience, and the same mandatory sections required by the NBUSupport and enhancements
Customer portals (a separate one for each brand)The entire customer journey: sign-in, application, identification, signing, payout, repayment, changes to terms, cards, contract historySupport and enhancements
One brand's mobile apps (iOS and Android)A native shell around that brand's portal: JS bridge, push notifications, deep linksRewritten in Flutter; we maintain them on the App Store and Google Play
Two independent systems under one licence: when a regulatory or legal requirement changes, it has to be reflected in each of them, and both have to comply with it. That is why regulatory expertise matters here as much as knowing the code.

The customer journey: from sign-in to the final payment

Below is the customer journey in the portal of the brand whose apps we rewrote. The other brand's portal is a separate system that meets the same legal and regulatory requirements.

  1. Sign-in. A phone number and a one-time code sent by SMS or via a messenger, instead of a password.
  2. Application. An online application form. Only one contract can be open at a time.
  3. Identification. Several remote options to choose from, including BankID NBU, Diia and video verification; some of them are supplemented by a selfie with a liveness check. How deep the check goes depends on the amount: below a threshold, basic online identification is enough; above it, an extended check is required.
  4. Terms and signing. The customer chooses the terms and can apply a loyalty program promo code. Then come two steps, each with its own one-time code: first the pre-contract information document, then the contract itself.
  5. Payout. Only to the customer's own card or IBAN. Saved cards are shown masked, and the card can be changed through a request signed with a one-time code.
  6. Repayment and changes. Payment in the portal, or without signing in by entering the contract details, with reCAPTCHA protection; the server chooses the payment provider. Early repayment, additional funds within the customer's approved limit and restructuring are also available online, the latter with a new payment schedule and a supplementary agreement signed with a code.
In regulated fintech, a regulatory requirement is not a paragraph in a policy but the way the interface behaves. The order “pre-contract information first, then the contract” is not a designer's whim: it records that the customer received all the terms before signing. A change that “simplifies” a step like this does not just break a screen; it breaks the proof that the customer saw everything before signing. That is why every enhancement here is a regulatory decision as well as a product one.

The regulator and the law: what stands behind the websites and portals

RequirementWhat it means for the websites and portals
Disclose the essential characteristics of the services on the website, along with warnings, calculation examples, a link to the NBU register and the complaints procedureBoth brands' websites carry an information disclosure section in line with NBU requirements; the cost calculator shows the real annual percentage rate (APR)
No unilateral changes to contract termsAdditional funds, restructuring and any other change go only through an offer the customer signs in the portal: a document and a signature, not a switch in the admin panel
Accessibility for people with disabilities (NBU requirements)The websites have an accessibility mode: higher contrast, light and dark themes, a larger font size

What we did: we rewrote the apps in Flutter

One of the brands already had iOS and Android apps. We rewrote both in Flutter and maintain them: we build and publish them, take them through App Store and Google Play review, and fix and update them.

Rewriting an app people already use is harder than launching a new one: users have active contracts, payment schedules, saved cards and history in it. The architecture helps here. The brand's portal is a web application built on Laravel and Vue 3, and the new app is a native shell around it: the financial rules and data stay in the brand's portal, and the app only takes care of what needs native code.

One codebase, two platforms

The iOS and Android versions are built from a single Flutter codebase, so most fixes and new features are done once for both platforms.

A bridge to the portal

The app runs the same portal as the browser. Through a JS bridge, the portal knows where a session came from: the app or the web.

Back from Diia

After confirming in Diia, the customer returns to the app and carries on with the application instead of getting lost between apps.

Push notifications

Native notifications via Firebase Cloud Messaging, a separate channel alongside web push on the brand's website.

Deep links

Universal Links and App Links: a link from the brand's website or a message opens the right screen in the app.

Modern platforms

The new versions are built for current iOS and Android; the minimum supported Android version has been raised.

Two speeds of change

When we change how customers apply, sign or repay, we do it in the portal, and the change reaches app users without a new store release. We change the native layer (notifications, deep links, the return from Diia) in the single Flutter codebase for iOS and Android, and handle the platform-specific parts and publishing separately for each platform.

Releasing a financial app is a discipline of its own

The App Store and Google Play review financial apps more strictly than ordinary ones: Google Play has a dedicated Financial Services policy, and Apple has specific App Review rules. So every release faces close scrutiny, and that review is far from a formality. We take each release from the build all the way to publication in both stores.

Support and enhancements

Beyond the apps, we work continuously on the websites and portals of both brands:

  • enhancements: new user flows, sections and fixes in both systems;
  • external services: BankID NBU and Diia, omnichannel chat and messengers, web push, Google Tag Manager and GA4, data exchange with accounting (ERP) systems. We make sure these connections keep working after every change;
  • security: reCAPTCHA on sign-in, registration and payment without signing in, device fingerprinting, one-time codes at every signing step, Cloudflare in front of the public websites. We build enhancements so that no new feature opens a way around these layers.

The result

One brand's apps have been rewritten in Flutter: one codebase for iOS and Android, their own native layer (notifications, deep links, the return from Diia) and the same portal as in the browser. One ANIART team looks after both independent systems (each brand's website and customer portal) as well as one brand's apps, from a brand's web page all the way to a release on the App Store and Google Play.

2
apps, iOS and Android, that we rewrote in Flutter
2
brands: websites and portals under support and enhancement
1
ANIART team for the websites, portals and apps
2
stores, the App Store and Google Play, where we run releases

Developing a financial product in a regulated environment, running several brands, or planning to rewrite a live app in Flutter? See how we work on fintech projects and mobile apps, or get in touch.

Results

Results in numbers

2
brands: websites and portals
NBU
licence and supervision
Flutter
iOS + Android from one codebase
2
stores: App Store and Google Play
Technologies

Technology stack

Free estimate

Get an estimate for your project

Leave your contacts — we will get in touch, clarify the details and send a rough quote and timeline.

By submitting you agree to data processing.