← All case studies
Case Study / Crypto To Naira

Flutter Crypto App for iOS, Android, Web & Desktop

A Flutter fintech app that turns crypto and gift cards into Naira in a lender's own bank account: generate a deposit address, watch the rate, sell, and withdraw, with identity and bank verification wired in.

Flutter Crypto App for iOS, Android, Web & Desktop interface with crypto wallet and coins
Project Overview & Specs
Platforms
iOS · Android
Client
Quchange Technologies, Lagos
Architecture
Provider, page + provider per screen
Market
Nigeria, crypto to Naira
Codebase
149 Dart files, ~17K lines

01 / The Challenge

Money leaves the app and has to land in the right account

QuickChain's users are Nigerian traders, freelancers and businesses converting crypto into spendable Naira. Every step in that flow is a place where real money goes missing: a mistyped deposit address, a bank account number that belongs to someone else, an unverified identity behind a payout, or a rate that moved between reading it and selling. The app had to make each of those steps hard to get wrong, on the mid-range Android devices most of the market actually carries.

Crypto deposit addresses are unforgiving, one transposed character and the funds are gone with no recovery path

Payouts go to Nigerian bank accounts, so an account number had to be verified as belonging to the user before any money moved

Regulated cash-out means identity verification, but a heavy in-app KYC SDK is exactly where first-time users abandon

Rates move constantly, so users needed live charts and alerts rather than a number that silently goes stale

A fintech backend ships features faster than app-store review allows, so the app could not hard-code its own navigation

02 / Here is What We Did

A thin, typed client layer under a provider-per-screen UI

We built QuickChain in Flutter with Provider, pairing every page with its own provider so state stays local to the screen that owns it, and routing through go_router. Underneath sits a hand-rolled HTTP layer, a builder-style Request, a header builder and a request executor returning a typed Success/Failure result, so no screen ever touches a raw response, and ten repositories, one per domain, are the only things that know an API exists.

Navigation is server-driven: a menu-visibility endpoint keyed by platform and app version decides which modules a given build shows, so features can be switched on without a release.

STEP 01

Account, Captcha & Verification

Built sign-up, sign-in and password recovery gated by a server-issued image captcha, with device fingerprinting on login, optional biometric unlock, and a KYC flow where the Veriff session is created server-side and the app surfaces start, pending, verified and failed states.

STEP 02

Sell Crypto & Gift Cards

Wired the sell flow into the client's crypto infrastructure: per-asset deposit addresses rendered as scannable QR with copy-to-clipboard, live price charts, rate alerts, and on-chain transaction history, alongside a gift-card flow that uploads card photos for valuation.

STEP 03

Wallet, Payouts & Release Control

Added the Naira wallet with separate cashback and referral balances, bank-account verification before payout, withdrawal with history, push notifications, and a forced-update gate plus server-driven menu visibility to control what each build exposes.

03 / Features

Everything between a wallet address and a bank account

01

Per-asset deposit addresses generated on demand and rendered as a scannable QR code with copy-to-clipboard, removing the hand-typed address as a failure mode entirely.

02

Live price charts per coin backed by a rate endpoint, plus a rate-alert feature that notifies a user when their target price is hit rather than making them watch the screen.

03

Gift-card selling as a second cash-out path, browse the supported card list, submit card photos through a multipart upload, and track the valuation alongside crypto transactions.

04

A Naira wallet split into main, cashback and referral balances, each with its own balance call and withdrawal history, so users can see where earned money came from.

05

Bank-account verification before any payout, the account number is checked against the bank's records so a withdrawal cannot be sent to a mistyped or third-party account.

06

Identity verification through Veriff with the session created server-side, keeping the heavyweight verification flow out of the app binary while the app tracks and reflects its status.

07

Server-issued image captcha on sign-up, sign-in and password reset, combined with device fingerprinting at login as a second signal on every session.

08

A forced in-app update gate driven by an app-version endpoint, plus biometric unlock, offline detection and push notifications through Firebase Messaging.

04 / Technologies

Flutter with a hand-built client layer over a fintech backend

Flutter
Dart
Provider
GoRouter
Dio
Veriff
Messaging
Analytics
Biometrics
Charts
QR Codes
Network
Dotenv
Device ID

05 / Results & Impact

A production fintech app on both stores

149
Dart files across a provider-per-screen architecture
41
API endpoints behind 10 domain repositories
21
Routes wired through go_router
35
Shared widgets keeping the dark fintech UI consistent
iOS & Android
Live on both stores from a single Flutter codebase
Verified payouts
Bank account and identity checked before money moves
Server-driven
Menu visibility and forced updates controlled without a release
App StoreGoogle Play

The fastest, cleanest, and most reliable way to convert crypto to cash in West Africa, built with global infrastructure standards.

QuickChain, Quchange Technologies
Have something similar in mind?

Let's build the fintech app your users trust with real money.

Tell us where value moves in your product and we'll bring the engineering to make every step of it verifiable.

Start a project