FF Banking
Part of FastFlowTech

Wallet Infrastructure
for Modern Platforms

Provision wallets, manage balances, process deposits and withdrawals - all backed by double-entry accounting.

Create a wallet
$ curl -X POST /v1/wallets \
-H "Authorization: Bearer $TOKEN" \
-d '{"userId":"usr_42","email":"[email protected]"}'
// Response
{
"walletId": "wal_7k9m2x",
"userId": "usr_42",
"currency": "BTC",
"balance": { "total": 0, "available": 0, "held": 0 },
"ledgerAccountId": "acc_3f8n1p"
}

Everything you need for wallets

Built on top of FF Ledger's double-entry accounting engine, so every cent is always accounted for.

Instant Wallets

Provision per-user wallets with a single API call. Each wallet maps to a ledger account.

Real-time Balances

Total, available, and held amounts. Always consistent with the underlying ledger.

Deposits & Withdrawals

Credit and debit wallets with full idempotency and audit trail.

Ledger-Backed

Every transaction is a double-entry in FF Ledger. No balance discrepancies, ever.

Multi-Currency

BTC, fiat, or custom units. Currency is per-wallet, not per-platform.

Multi-Tenant

Each org gets isolated wallets and accounts. Provision via the platform SDK.

API Reference

Seven endpoints. That's the entire surface area.

Method Endpoint
POST /v1/wallets
GET /v1/wallets/{userId}
GET /v1/wallets/{userId}/balance
POST /v1/wallets/{userId}/deposit
POST /v1/wallets/{userId}/withdraw
GET /v1/accounts
POST /v1/accounts

Integrate in minutes

Add the NuGet package and inject the client. Three lines to get started.

Program.cs
// Register the banking client
builder.Services.AddFFBanking(builder.Configuration);
// Then inject IBankingClient anywhere
var wallet = await banking.CreateWalletAsync(userId, email);
var balance = await banking.GetBalanceAsync(userId);
await banking.DepositAsync(userId, amount, systemAccountId);