Skip to content

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:

CurrencyCodeDecimalsSmallest Unit
Ugandan ShillingUGX01 UGX
Kenyan ShillingKES20.01 KES
Tanzanian ShillingTSH01 TSH
US DollarUSD20.01 USD
Chinese YuanCNY20.01 CNY
British PoundGBP20.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.