Inspiration
Many migrant workers, freelancers, and small merchants in emerging markets face high fees, delays, and complexity when sending or receiving money internationally. Traditional financial services often overlook local currency needs and ease of use. Inspired by the power of cryptocurrencies and mobile money adoption in Africa, we wanted to build a secure, affordable, and easy-to-use mobile app that empowers users to manage multiple assets, send and receive payments instantly via the Lightning Network, and access local currency valuations.
What it does
Pesagram is a cross-platform mobile app that provides users with multi-asset wallets supporting Bitcoin (on-chain and Lightning) and USDT. Users can send and receive funds seamlessly, perform atomic swaps between BTC and USDT, schedule recurring payments, and make payouts to mobile money or bank accounts. The app integrates Bitnob’s robust APIs for wallet management, compliance, payments, and real-time currency conversion to UGX. It offers biometric security, push notifications, spend analytics, and supports multiple languages, making financial services inclusive and accessible.
How we built it
We used Flutter for a responsive and performant mobile-first user interface, allowing deployment on both iOS and Android devices from a single codebase. The backend is built on Node.js/Express, securely interfacing with Bitnob’s APIs for crypto wallet management, Lightning payments, and KYC compliance. We implemented Bloc state management in Flutter to keep the frontend scalable and maintainable. We relied on secure storage and biometric authentication to protect user data. Real-time price feeds and webhook listeners ensure up-to-date wallet balances and transaction statuses. Localization was enabled using the intl package.
Challenges we ran into
Integrating cross-border payments with multiple asset types (BTC, USDT) and payment rails was complex, especially ensuring real-time synchronization and error handling across on-chain and Lightning networks. Handling KYC workflows required close alignment with Bitnob’s APIs and managing asynchronous webhook events. Implementing secure recurring payment scheduling while maintaining user-friendly interfaces presented design challenges. We also faced challenges enabling seamless multi-language support and offline resilience for users with intermittent connectivity.
Accomplishments that we're proud of
- Successfully built a secure, scalable wallet supporting Bitcoin, stablecoins, and Lightning payments.
- Enabled real-time UGX currency valuation directly in the app.
- Integrated user biometric authentication and 2FA for enhanced security.
- Developed an intuitive recurring payment feature catering to migrant workers’ needs.
- Launched a multi-language app delivering financial inclusion for underserved communities.
- Ensured end-to-end compliance with KYC and AML regulations via Bitnob’s infrastructure.
What we learned
We gained deep insights into the complexities of integrating blockchain payments with traditional fiat rails, especially navigating user experience trade-offs for high security and transparency. Managing asynchronous external events like KYC updates and payment confirmations through webhooks sharpened our backend architecture skills. We embraced best practices for Flutter state management and secure mobile app development. Most importantly, we learned the value of designing fintech solutions with a strong focus on real user needs in emerging markets.
What's next for Pesagram
Next, we plan to expand support for additional stablecoins and local currencies, integrate virtual card issuance for digital spending, and onboard more local merchants for QR-code based payments. We aim to enhance our AI-driven fraud detection and add richer spend analytics and budgeting tools. Community building and partnerships with telecommunication providers will help scale user adoption. Continued localization and offline-first improvements will make Pesagram even more accessible to diverse users across Africa and beyond.
Built With
- bitnobapi
- flutter
- javascript
- node.js
- sandbox
Log in or sign up for Devpost to join the conversation.