Double-entry, by construction
Every transaction writes two or more legs summing to zero per commodity. Signed-balance convention with floor enforcement. No transaction can leave the books unbalanced.
Platform
WalletD is two layers that ship together: LedgerD, a domain-agnostic double-entry ledger of record, and the WalletD money paths that post to it. Nothing wallet-shaped is baked into the ledger. You register your own transaction types, account purposes, and currencies.
LedgerD, the ledger of record
A true double-entry engine with integer money, two-phase postings, bitemporal history, and a verifier that re-checks its own invariants on a schedule. It runs as its own service, on its own database. The money paths cannot reach around it.
Every transaction writes two or more legs summing to zero per commodity. Signed-balance convention with floor enforcement. No transaction can leave the books unbalanced.
Pending, then post or void, with reservation-bounded posts and TTL enforcement. The consistency primitive behind authorize/capture, holds, and settlement.
Each transaction carries a caller-supplied effective date plus an immutable recorded-at. Statements and period closes key on effective time.
Every mutation requires an idempotency key and replays byte-identically. A stored-result probe lets a caller safely recover after a lost commit.
Append-only triggers plus a serving role that cannot rewrite history. A verifier re-checks conservation, balances, floors and lifecycle every few minutes and fails loudly on drift.
One ledger per tenant, physically isolated on its own database and role. A foreign ledger id does not exist as far as the API will ever admit.
WalletD, the money paths
Every flow a wallet product needs, each one posting to the ledger and each one idempotent. Fees, holds, caps, and clawbacks are enforced inside the transaction, not bolted on after.
Fund wallets via Stripe (card and hosted checkout). Balance credited only on verified gateway confirmation, never a client callback, with a reconciliation sweep for missed webhooks.
Synchronous wallet-to-wallet transfers within a tenant, by id or alias (handle, phone, email). Velocity caps enforced inside the transaction under ordered locks.
Single-step capture, or authorize then capture later. Partial capture releases the remainder, holds expire on a TTL, line items must reconcile to the amount, and the platform fee is deducted from settlement.
Full or partial, capped at the captured amount, recorded as contra postings rather than ledger rewrites, with proportional fee return and reward clawback.
Rule-based cashback, points accrual, and points-to-cash conversion, evaluated at the moment of capture. Scopes, caps, and campaign windows, with caps enforced concurrency-safe in the ledger.
Weekly or monthly billing with structural at-most-once charging per period, dunning retries, and pause, resume, or cancel that re-anchors without catch-up charges.
Onboard merchants, publish offerings to a discovery directory, and split three-level commission, with catalog-authoritative pricing and per-merchant sales summaries.
Money out to merchants posts to the ledger first, then produces a settlement statement with an external reference for reconciliation. Semi-closed by design.
Tiered balance and velocity limits checked before the processor is ever called, plus staff-granted credit lines that allow bounded negative balances, every change audited.
HMAC-signed events with a replay window and constant-time verification, at-least-once delivery with dedupe ids, and their own worker pool so a slow receiver can never stall a money path.
Platform and operations
The pieces you would otherwise assemble yourself, human identity, API credentials, an edge gateway with rate limiting, and an operations console, come with the platform.
Keycloak owns every human account; a dedicated credential service issues Argon2id-hashed tenant API keys and short-lived signed user tokens, with live key rotation and a full credential audit stream.
A hardened API gateway with a distributed rate limiter whose budget holds across replicas, spoofed-identity header stripping, and money-moving routes that fail closed under pressure.
Tenant provisioning, a ledger summary with the float equation, a tenant-wide transaction explorer, audit logs, and tier or fee-plan configuration, every privileged action recorded.
WalletD is in early access and has not yet carried real customer money. We would rather you knew the exact shape of the product than discover it in a sales call.
The full roadmap to general availability is on the security and trust page.
Early access
We are working with a small number of teams building wallet and money products on WalletD. If that is you, let's talk. You will get direct access to the people who built it.