Collect with context
Connect each collection to the merchant, its fee and its ledger record. Scope local payment rails with your contracted providers.
B2B WALLET INFRASTRUCTURE
Build your merchant wallet business on a foundation you can account for. Collections, balances and payout workflows, connected to one double-entry ledger.
Early access · Design partners
01 / THE OPERATING LAYER
Give product, engineering and finance a shared view of how money moves. Start with the merchant workflow that matters to your business.
Connect each collection to the merchant, its fee and its ledger record. Scope local payment rails with your contracted providers.
Follow available and reserved funds back to double-entry postings. Give merchants a clear view of their money.
Explore approvals, restrictions and uncertain provider outcomes in the simulated merchant demo.
Walk through statement matching, fee exceptions and an evidence export. See what finance needs before a pilot.
Evidence, not adjectives
An independent audit recomputed the entire ledger directly from raw records, no trusting the software's own checker. Every figure below is cited to that audit and to the load baseline, and every number is from testing on synthetic data.
Independent SQL audit, 2026-08-18. Conservation, reconciliation, authorisation and lifecycle checks all returned zero over 5 ledgers.
Cached balances vs. balances recomputed from full history. Total absolute drift: 0.
Domain records reconciled against ledger postings on both count and amount. Zero missing, duplicate, or non-positive grants.
Synthetic benchmark on managed Postgres (Aurora Serverless v2), 2026-08-26. 100% completion through 1,600 tx/s, with the writer near a quarter of capacity. Correctness invariants held throughout.
02 / BUILT FOR YOUR ENGINEERS
A documented REST API connects your experience to the wallet engine and its separate ledger of record. Inspect the integration before committing to a design partnership.
Open the docs# Fund a wallet, then send money. Balances only move on the ledger.
curl -sS -X POST "$WALLETD_API/v1/users" \
-H "Authorization: Bearer $WALLETD_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: usr-42-create" \
-d '{"external_id":"user-42","kind":"consumer","display_name":"Ada Lovelace","handle":"ada"}'
curl -sS -X POST "$WALLETD_API/v1/transfers" \
-H "Authorization: Bearer $WALLETD_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: xfer-ada-grace-001" \
-d '{"from":"user-42","to":"@grace","amount":2500,"currency":"USD"}'client := walletd.New(os.Getenv("WALLETD_API"), os.Getenv("WALLETD_API_KEY"))
var transfer walletd.Transfer
err := client.Do(ctx, http.MethodPost, "/v1/transfers", map[string]any{
"from": "user-42",
"to": "@grace",
"amount": 2500, // minor units, $25.00, never a float
"currency": "USD",
}, &transfer, "xfer-ada-grace-001") // idempotency key
if err != nil {
return fmt.Errorf("transfer: %w", err)
}client = WalletD() # reads WALLETD_API / WALLETD_API_KEY
transfer = client.request(
"POST",
"/v1/transfers",
{
"from": "user-42",
"to": "@grace",
"amount": 2500, # minor units, $25.00
"currency": "USD",
},
idempotency_key="xfer-ada-grace-001",
)
print(transfer["status"]) # "settled"const res = await fetch(`${API}/v1/transfers`, {
method: "POST",
headers: {
Authorization: `Bearer ${API_KEY}`,
"Content-Type": "application/json",
"Idempotency-Key": "xfer-ada-grace-001",
},
body: JSON.stringify({
from: "user-42",
to: "@grace",
amount: 2500, // minor units, $25.00
currency: "USD",
}),
});
const transfer = await res.json();$transfer = $walletd->request('POST', '/v1/transfers', [
'from' => 'user-42',
'to' => '@grace',
'amount' => 2500, // minor units, $25.00
'currency' => 'USD',
], idempotencyKey: 'xfer-ada-grace-001');
echo $transfer['status']; // "settled"var body = Map.of(
"from", "user-42",
"to", "@grace",
"amount", 2500, // minor units, $25.00
"currency", "USD");
Transfer transfer = client.post(
"/v1/transfers", body, "xfer-ada-grace-001", Transfer.class);One platform
A documented REST API connects your experience to the wallet engine and its separate ledger of record. Inspect the integration before committing to a design partnership.
Who it is for
BEFORE WE TALK
B2B wallet infrastructure is the software behind a business’s wallet product: balances, transaction records, payment workflows and operational controls. WalletD connects those money paths to a separate double-entry ledger.
WalletD is designed for licensed payment service providers and suitably sponsored operators with an existing merchant distribution channel. Marketplace and rewards teams can also explore the underlying platform.
WalletD supports branded product experiences and dedicated partner deployments. We scope hosting, integrations and support with each partner. The ordinary software subscription does not include source-code distribution.
WalletD is in early access. The merchant demo uses simulated providers and funds. A live-money pilot requires contracted providers, approved identity checks, production readiness and the partner’s operating permissions.
WalletD supplies software and contracted support. The partner owns regulated operations, provider agreements and the permissions required for its service. WalletD is not a substitute for those arrangements.
Early access
Bring us your collection-to-payout workflow. We are working with design partners building merchant wallet and payment products. Talk directly with the engineers building the platform.