The product
Crypto payments usually lose people at the first step: install a wallet, write down a seed phrase, buy tokens, connect. BePay's idea is to make paying with a wallet feel like any other checkout, for shoppers who don't think of themselves as crypto users and merchants who just want to get paid.
The problem
Two audiences with very different needs. Shoppers need onboarding that feels like a normal sign-up, plus identity verification that doesn't feel like paperwork. Merchants need business verification (KYB), product and listing management, and order operations. Both apps mix ordinary REST APIs with blockchain-backed operations, and wallet data has to stay secure on the device.
My role
As Senior Flutter Developer at Code Encoders, I built both apps: wallet onboarding, KYC and KYB flows, REST API integration, merchant tools, and secure handling of wallet-related data.
I worked in a team of 7+ people over 3–6 months.
What I built
BePay Client (shoppers)
Wallet creation through Web3Auth using Google or Apple sign-in, with no seed phrase on day one
KYC verification screens using DIDIT
Hybrid commerce flows combining REST APIs with blockchain-backed payments
BePay Business (merchants)
Multi-step KYB verification for business onboarding and compliance
Product, listing, and order management with search and filters
Operational screens for running Web3 commerce from a phone
Architecture
Flutter apps, Client and Business
Technical challenges
Making wallets feel normal. Every extra step in Web3 onboarding loses users. Using Web3Auth meant a wallet could be created through an OAuth login people already trust.
Keeping Web2 and Web3 apart. Mixing API calls and blockchain operations in the same layer makes a codebase fragile and hard to test.
Verification that adapts. KYB requirements vary by business, so the onboarding form couldn't be hard-coded.
Protecting wallet data. Session and wallet-related metadata had to be stored securely on the device.
Important engineering decisions
- 1Repository layer split by concern.Web2 REST logic and Web3 wallet operations live in separate repositories, so each can change without breaking the other.
- 2Dynamic, multi-step KYB forms.The form structure is driven by requirements rather than fixed screens, so new verification rules don't need new UI.
- 3Secure on-device storagefor wallet-related metadata and sessions.
- 4Provider for merchant stateacross KYB, products, listings, and orders, with pagination-ready lists for merchants with large catalogs.
Technology stack
Flutter, Dart, Web3Auth, DIDIT KYC and KYB SDKs, REST APIs, Provider, secure storage
Outcome
BePay gave shoppers a wallet in a single social login and gave merchants a mobile back office for verification, listings, and orders.
What I learned
In fintech, the hard part is trust, not code. Every screen in onboarding either builds confidence or creates doubt, and good architecture is what lets you change those screens quickly when compliance rules change.


