What is FWallet?
FWallet is multi-tenant financial wallet infrastructure built for companies operating in emerging markets where money movement spans mobile money (MoMo), banks, and cash-assisted branch operations.
It is a backend API that gives you everything you need to manage wallets, move money, and maintain a provably correct financial ledger — out of the box.
Who is FWallet for?
- Enterprise developers building payment or wallet features into existing products
- B2B integrators connecting mobile money providers, banks, and cash operations into a single platform
- Fintech product teams launching wallet products in East Africa (Uganda, Kenya, Tanzania) and beyond
Core Capabilities
Wallet Management
Create and manage wallets for users, branches, and companies. Each wallet is single-currency and backed by a double-entry ledger account, so balances are always provably correct.
Deposits
Accept funds via mobile money webhooks (auto-credited on signature verification) or bank slip verification (branch manager confirms against imported bank statements). Both flows are idempotent and produce immutable ledger entries.
Transfers
Move money between wallets with automatic fee calculation. Every transfer posts balanced debit/credit lines to the ledger. Transfers require an Idempotency-Key header to prevent duplicates.
Configurable Fee Engine
Define fee schedules per tenant with percentage and flat components, min/max bounds, and per-currency overrides. Fees are calculated and posted as ledger entries alongside the transfer they belong to.
Double-Entry Append-Only Ledger
Every money movement — deposit, transfer, payout, fee — is recorded as a journal entry with balanced debit and credit lines. Entries are never mutated or deleted. Corrections are posted as reversing entries. This gives you an immutable audit trail suitable for regulatory compliance.
Multi-Currency Support
FWallet supports multiple currencies with correct decimal handling:
| Currency | Code | Decimals | Smallest Unit |
|---|---|---|---|
| Ugandan Shilling | UGX | 0 | 1 UGX |
| Kenyan Shilling | KES | 2 | 0.01 KES |
| Tanzanian Shilling | TSH | 0 | 1 TSH |
| US Dollar | USD | 2 | 0.01 USD |
| Chinese Yuan | CNY | 2 | 0.01 CNY |
| British Pound | GBP | 2 | 0.01 GBP |
All amounts are stored as integers in the smallest currency unit (e.g., 50,000 UGX is stored as 50000, $100.00 USD is stored as 10000). The API never uses floating-point arithmetic on money.
White-Label / Resale Model
Each tenant (organization) is fully isolated with its own wallets, ledger, fee schedules, approval policies, and transaction limits. You can run FWallet as a platform and onboard multiple businesses, each with their own configuration.
Architecture at a Glance
FWallet is a Bun monorepo with these packages:
@fwallet/api— Hono API server with OpenAPI-typed routes and Scalar interactive docs@fwallet/db— Drizzle ORM schema, migrations, and database client (PostgreSQL)@fwallet/shared— Shared Zod schemas, error types, and money utilities
Every API endpoint is fully typed from request validation (Zod) through to the OpenAPI spec, which means client SDKs can be auto-generated from the schema.
Next Steps
Ready to start? Head to the Quick Start guide to make your first API call in under 5 minutes.