> **Can't find what you're looking for?** Use `search_docs` on the docs MCP server at `https://www.openfort.io/api/mcp` to find what you need.
>
> **Have feedback?** Use `submit_feedback` on the same MCP server.

# Backend wallets

Backend wallets are **developer-controlled, custodial wallets** that live in your server environment. Openfort generates and encrypts the private keys; your backend authorizes every signature with your own credentials, so wallets can act without a user online to approve each step.

They work in two modes:

| Mode | What it is | Use it for |
| :--- | :--- | :--- |
| **Standalone server wallets** | Wallets your backend creates and fully controls end to end. | Treasury, agents, per-user custodial wallets, automated payouts. |
| **Session-key execution** | Your backend signs for a user's [embedded wallet](/docs/products/embedded-wallet) within a scope the user granted. | Acting on behalf of a signed-in user — recurring actions, automation, agents that trade for a user. |

The same Node SDK covers both: a standalone wallet is created with `accounts.evm.backend.create()`; session-key execution reuses a scoped [session key](/docs/products/embedded-wallet/react/wallet/actions/session-keys) the user's embedded wallet granted, so the server stays inside limits the user set.

## Backend vs. embedded wallets

| | Backend wallets | Embedded wallets |
| :--- | :--- | :--- |
| **Who controls the key** | Your server (custodial) | The user (non-custodial) |
| **Who authorizes signing** | Your backend credentials | The user, per action |
| **Runs without a user online** | Yes | No (unless a session key was granted) |
| **Primary use** | Automation, agents, treasury, payouts | User-facing transactions |

Most production apps use both — embedded wallets for what the user signs, backend wallets for what the server does on its own or on the user's behalf.

## Workflows

Concrete, end-to-end patterns built on backend wallets.

* [Server-side user wallets](/docs/products/server/workflows/server-side-user-wallets) — Provision and manage one custodial wallet per user, entirely from your backend — no client wallet required.
* [Agentic wallets](/docs/products/server/workflows/agentic-wallets) — Give an AI agent its own wallet, bounded by signing policies so it can only do what you allow.
* [User + server signers](/docs/products/server/workflows/user-and-server-signers) — Let a user grant a scoped session key from their embedded wallet, then execute for them from the server.

## Why use backend wallets?

* [Seamless automation](/docs/products/server/accounts) — Perform on-chain actions instantly based on server-side triggers, without waiting for a user to be online or approve.
* [Enterprise-grade security](/docs/products/server/security) — Isolate administrative keys within your secure infrastructure. Leverage Openfort's TEE-based signing for maximum protection.
* [Signing policies](/docs/configuration/policies) — Control which signing operations your wallets can perform with rule-based authorization policies.
* [High throughput](/docs/products/server/accounts) — Manage multiple nonces and sign hundreds of transactions in parallel to scale with your user base.
* [Abstracted complexity](/docs/products/server/setup) — Remove crypto friction. Users interact with your app while your backend handles blockchain orchestration.

## Backend SDKs and API

Start building with our server-side libraries, optimized for performance and secure credential management.

* [Node.js SDK](https://github.com/openfort-xyz/openfort-node) — TypeScript / JavaScript. The primary SDK for backend integration. Features robust typing and built-in support for wallet orchestration.
* [Node SDK examples](https://github.com/openfort-xyz/openfort-node/tree/main/examples) — Runnable code samples. Comprehensive examples for EVM/Solana accounts, signing, policies, gas sponsorship, IAM, and webhooks.
