Skip to main content
AI agents need wallets to hold funds, sign transactions, and pay for services. Dynamic gives you three patterns. Pick the one that matches who owns the wallet and how the agent authenticates.

Choose a pattern


Server wallets

Definition: Wallets your backend creates and controls. You authenticate with an API token. No Dynamic user is involved; your code signs with MPC key shares. Wallets belong to your developer account. Use this when
  • The agent acts on its own behalf, not as a Dynamic user
  • Flows are fully automated: bots, scheduled tasks, pipelines
  • You need to provision many wallets programmatically
SDK support
Node Python Rust Go · Soon Java Ruby · Soon

Node

Create wallets, sign transactions, and manage key shares from your backend.

Python

Server-side MPC wallets on EVM and Solana.

Rust

Server-side MPC wallets (beta).

Java

Server-side MPC wallets (beta).

Agent wallets

Definition: A server-side agent operates a Dynamic embedded wallet as a Dynamic user. The agent authenticates with a user JWT (not your API token), so every wallet it creates or signs with belongs to that user. The Dynamic user can be:
  • A human — the agent signs them in (email OTP or wallet signature), then acts on their behalf
  • The agent itself — the agent authenticates with an agent signing token (a secp256k1 private key it holds) and mints its own JWT; no human in the loop
  • An identity from your own auth — the agent exchanges a JWT from your external issuer for a Dynamic user JWT
Use this when
  • The agent needs a Dynamic user identity and user-scoped wallets
  • You want wallets that show up as belonging to a user (not your developer account)
  • The agent must sign in headlessly (including fully autonomous agents)
How this differs from server wallets: Same MPC signing stack on the backend, different ownership. Server wallets authenticate with an API token and belong to your developer account. Agent wallets authenticate with a user JWT and belong to a Dynamic user. SDK support
Node

Node

Sign in with a user JWT, create embedded wallets, and sign as that Dynamic user.

Delegated access

Definition: Your agent signs on behalf of an end user who has explicitly approved it. The user’s embedded wallet stays user-owned; they grant your server limited signing rights and can revoke at any time. Use this when
  • The agent acts on behalf of a specific end user
  • You want the user to stay in control of their wallet
  • Multi-user apps where each user has their own wallet the agent uses
How this differs from agent wallets: With agent wallets, the agent is (or signs in as) the Dynamic user and owns the wallet under that user. With delegated access, the end user already owns an embedded wallet and grants your server limited rights to sign for them. SDK support Delegated access has two legs — a client SDK to trigger the user’s consent prompt, and a server SDK to use the delegated materials afterward.
Trigger
React JavaScript React Native Swift Kotlin Flutter Unity
Use
Node Python Rust Go · Soon Java Ruby · Soon

Delegated Access Overview

How delegated access works, security considerations, and dashboard configuration.

Agent payments

Agents often need to pay for API access or services without a human in the loop. Dynamic server wallets plug into HTTP 402 payment flows, including x402 and MPP, so the agent can sign, pay, and retry automatically.

Agent Payments

Wire HTTP 402 payment flows to a Dynamic server wallet.
Last modified on August 19, 2026