Wallet-as-a-Service

The new money stack starts here

Run onchain operations and launch financial services,
for you and the businesses you power.

Wallet-as-a-Service interface
One core for every business

Run treasury, trading, tokenization, payments, and user flows under one company-wide wallet layer.

Move at production speed

Launch wallets in milliseconds. Add new chains in days. Scale from sandbox to millions of accounts.

Control every workflow

Every intent must be signed and go through policies, quorums, whitelists, organizations, and more.

Deploy on your own terms

SaaS, hybrid, or on-premises. Meet your regulatory requirements without changing the vendor stack.


Wallets are the new
bank accounts

Wallets that mirror your org chart. Structure wallet fleets by customer, entity, product, or strategy. Every wallet has an owner, a purpose, and a place in your architecture.

Tags & metadata

Classify wallets by product, segment, geography, asset class, or risk band. Search, audit, and operate groupings of any size.

Sub-organizations

Isolate wallets by client, entity, or partner. Each environment carries its own users, policies, and controls.

Lifecycle

Create, freeze, archive, migrate, and recover wallets via API. Every state change is tracked, assignable, and reversible.

Wallets dashboard

One API for every
business model

Cover every customer relationship from one extensible layer — B2B, B2B2C, B2B2B — without rebuilding the stack.

Wallet hierarchies

Group wallets into treasuries, books, portfolios, or master-sub models. Apply policies, reporting, and reconciliation top down.

White-label

Provision wallets for your customers, partners, or their users. Embedded in your product, branded as yours.

Ownership & isolation

Isolate clients, roles, and activity down to the key. Bind wallets to users, orgs, sub-orgs, or teams. Govern from the top.

Wallets dashboard

Choose who
holds the keys

Configure wallet control by product, user journey, regulatory model, or operational risk. One platform, every custody model.

Org-controlled

Wallets owned by your institution. Run treasury, payments, trading, custody, and settlement under your own keys.

User-controlled

Wallets owned by end users through passkeys, biometrics, hardware, or passwords. Your UX, their keys.

Hybrid

Combine institutional controls, user credentials, and policy enforcement for products that require shared responsibility.

Wallets dashboard

Built for humans,
systems, and agents

Configure how every wallet is accessed and operated. User driven, policy driven, service driven, or fully autonomous, all within the limits you set.

User-operated

Employees and end users initiate activity through governed authentication and approval flows.

Service-operated

Automations run backend operations like settlement, rebalancing, sweeping, and scheduled processes.

Agent-operated

AI transacts under strict permissions, policy guardrails, hard limits, and immutable audit trails.

Wallets dashboard

Discover how Keyrails built its stablecoin payments stack.

"Great natively built-in security around the MPC wallets with an additional on-premise option. They have nailed the pricing structure for payments companies. Extremely well working customer success processes. Great coverage on all blockchains. Overall, great tech that just works. Best I have seen."

Stablecoin Payments

Settling high-value import, export, and commodity trade across 100+ emerging markets in hours.

Multichain Wallets

Great coverage on all blockchains with one API.

Programmable Policies

Define roles, approvals, KYT rules, and limits directly through APIs.

Multi-Party Computation

Natively built-in security around the MPC wallets with on-premise option.

Berhan Kongel, CEO of Keyrails
Berhan Kongel CEO, Keyrails

Four steps to production

No long onboarding. No legacy stack to unwind. Build, govern, and ship in days.

Lock down your perimeter

Create a service account. Bind a credential. Scope the permissions. Every request is signed before it touches a wallet.

const serviceAccount = await dfnsApi.auth.createServiceAccount({
  body: {
    name: "Payout service",
    permissionId: "pm-treasury-operator",
    publicKey: "-----BEGIN PUBLIC KEY-----\n..."
  }
});

// Store the credentialId and use the private key to sign future requests
Spin up a service account. Attach a permission set. Store the credential. Hit the sandbox before you hit production.

Create your first wallets

One call. Any network. Funded and addressable in under a second. Scale from one to one billion without rewriting a line.

import { DfnsApiClient } from "@dfns/sdk";

const wallet = await dfnsApi.wallets.createWallet({
  body: {
    network: "Solana",
    name: "USDC payout wallet",
    tags: ["payouts", "production"]
  }
});

// wallet.id, wallet.address, wallet.status, wallet.signingKey
Create wallets. Tag them. Group them. Inherit the security model you set once at the org level.

Code in the rules

Velocity limits. Address allowlists. M-of-N quorums. ABI-aware checks. Write the policy once. It runs on every wallet that inherits it.

const policy = await dfns.policies.createPolicy({
  body: {
    name: 'Large Transaction Approval',
    activityKind: 'Wallets:Sign',
    rule: {
      kind: 'TransactionAmountLimit',
      configuration: { limit: '100000', currency: 'USD' }
    },
    action: {
      kind: 'RequestApproval',
      approvalGroups: [{
        name: 'Treasury',
        quorum: 2,
        approvers: { userId: { in: ['us-xxx-1', 'us-xxx-2', 'us-xxx-3'] } }
      }],
      autoRejectTimeout: 86400
    },
    status: 'Active'
  }
})
Define policies. Attach them. Assign approvers. Watch a transaction fire end-to-end on testnet before moving into production.

Sign, broadcast, settle

Tracked every step. One call composes, simulates, evaluates policy, collects approvals, signs, broadcasts, and tracks delivery.

const transfer = await dfnsApi.wallets.transferAsset({
  walletId: "wa-7g3hf-8sj2k-0a9d8f7g6h5j4k3l",
  body: {
    kind: TransferKind.Erc20,
    to: "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb1",
    amount: "1000000",
    contract: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
    idempotencyKey: "payout-2026-05-21-jdoe-001"
  }
});

// transfer.id, transfer.status, transfer.txHash, transfer.policyEvaluation
Initiate transactions. Listen to webhooks. Handle exceptions through idempotent, replay-proof APIs.
Org → Service Accounts → New Service Account
Org → Service Accounts → New Service Account
Wallets → New Wallet
Wallets → New Wallet
Org → Policies → New Policy
Org → Policies → New Policy
Wallets → Activity
Wallets → Activity

Ready to see DFNS in action?

The new core for every company going onchain.

Documentation

APIs, SDKs, and guides for builders.

Pricing

Per-transaction pricing, no hidden fees.

Contact us