# Smart Wallet (/wallets)

> For the complete documentation index, see [llms.txt](/llms.txt)



Users sign in with familiar login methods, then get a self-custodial web3 wallet they can use to interact onchain while your app gets a Wagmi-compatible wallet stack you can fully control.

## How it works [#how-it-works]

Adding ZeroDev Wallet takes three steps. Use the hook-based SDK for a fully custom wallet experience, or drop in the prebuilt [Wallet UI Kit](/wallets/auth/wallet-ui-kit/getting-started) when you want a ready-made login flow. See it in the [live demo](https://smart-wallet-demo.zerodev.app/), or follow the [quickstart](/wallets/quickstart) to build it yourself.

<Cards>
  <Card icon="key" title="1. Authenticate">
    A user signs in with a passkey, social login, email OTP, or magic link.
  </Card>

  <Card icon="vault" title="2. Provision">
    A self-custodial smart account is created for them instantly, with their keys secured in isolated hardware.
  </Card>

  <Card icon="send" title="3. Transact">
    Your app sends gasless transactions and [batched calls](/wallets/wallet-api/batch-transactions) through standard [Wagmi](https://wagmi.sh) and [viem](https://viem.sh) APIs.
  </Card>
</Cards>

## How we keep keys secure [#how-we-keep-keys-secure]

Every wallet's private key is created and stored inside secure hardware — an isolated environment called a *trusted execution environment*, or TEE. When a user signs a message or transaction, signing happens inside that environment and only the signature leaves. The private key itself is never exposed to your app, to ZeroDev, or to anyone else.

That's what makes every wallet **self-custodial**: only the authenticated user can approve a signature, and users can [export their wallet](/wallets/export) at any time to take full custody of their keys.

## What you can build [#what-you-can-build]

<Cards>
  <Card icon="key" title="Onboarding">
    * Authenticate with [passkeys](/wallets/auth/passkeys), [Google OAuth](/wallets/auth/google-oauth), [email OTP](/wallets/auth/email-otp), or [magic links](/wallets/auth/magic-link).
    * Drop in the prebuilt [Wallet UI Kit](/wallets/auth/wallet-ui-kit/getting-started) for a faster login integration with less code.
    * Let users [export their wallet](/wallets/export) at any time.
  </Card>

  <Card icon="send" title="Wallet actions">
    * [Send transactions](/wallets/wallet-api/send-transaction), [batch multiple calls](/wallets/wallet-api/batch-transactions), and [sign messages](/wallets/wallet-api/sign-message) through the tooling you already use.
    * Fund wallets across chains with a [smart routing address](/onramp/smart-routing-address), and extend accounts with Kernel's [permissions](/smart-accounts/permissions/intro) and [modules](/smart-accounts/use-plugins/overview).
    * Let ZeroDev handle [session management](/wallets/session-management) for you.
  </Card>
</Cards>

## Why ZeroDev Wallet [#why-zerodev-wallet]

Most embedded wallets start with a signer and leave smart account infrastructure for you to assemble later. ZeroDev Wallet is built around the full account lifecycle, so you can build a bespoke, app-native onchain experience:

<Cards>
  <Card icon="vault" title="Smart from the first transaction">
    Users get a smart account the moment they sign in — no separate upgrade step, no migrating from an EOA later.
  </Card>

  <Card icon="transaction" title="App-like, one-click flows">
    Sponsor gas and batch multiple onchain actions into a single tap, so users get flows that feel like a modern app instead of a string of wallet pop-ups, approvals, and gas prompts.
  </Card>

  <Card icon="key" title="One platform, not a stack to assemble">
    Wallet onboarding, smart accounts, gas sponsorship, and session management all live behind a single SDK — nothing to stitch together across a separate wallet provider, signer, bundler, and paymaster, and no two systems to keep in sync.
  </Card>

  <Card icon="creditCard" title="Everything gets easier at once">
    One integration means unified billing, usage tracking, and maintenance, a single SDK and set of docs to learn, and one place to monitor what your users are doing.
  </Card>

  <Card icon="send" title="UX you fully control">
    You own every step — auth, signing, transacting, and permissions — so you can design experiences native to your product rather than handing users off to a generic wallet.
  </Card>
</Cards>

### What's coming [#whats-coming]

ZeroDev Wallet combines the best of off-chain and on-chain infrastructure — secure hardware for key management and smart accounts for on-chain execution — which unlocks wallet features that are difficult or impossible with other solutions. We're building toward:

<Cards>
  <Card icon="vault" title="Server Wallets">
    Developer-controlled wallets that make it easy to manage your own wallets for operations and fleet management, with session keys on smart accounts so your backend can perform delegated transactions on a user's behalf.
  </Card>

  <Card icon="key" title="Hybrid on-chain / off-chain policy engine">
    Pair off-chain rules with on-chain enforcement for fine-grained control over spending and permissions.
  </Card>

  <Card icon="chain" title="Resource-lock chain abstraction">
    Let users spend a single balance across chains without bridging or holding gas on each network.
  </Card>

  <Card icon="transaction" title="An expanded UI Kit">
    More prebuilt, data-driven components, including portfolio management, transaction history, chain-abstracted balances, and more.
  </Card>
</Cards>

Interested in exploring these, or have another feature request? [Contact us](https://zerodev.app/contact).

## ZeroDev SDK vs ZeroDev Wallet [#zerodev-sdk-vs-zerodev-wallet]

ZeroDev Wallet is built on ZeroDev's own smart account SDK. The signer, smart accounts, gas sponsorship, and everything in between come first-party from a single vendor.

That means you don't have to sign up for, pay for, and integrate a separate third-party signer or wallet provider just to onboard users — it's all one stack and one integration, maintained by the same team.

It also makes working with [Kernel](/smart-accounts/use-plugins/overview), our modular smart account, much easier: the wallet and the smart account share one SDK, so permissions, modules, and gas sponsorship work together out of the box instead of being wired across separate vendors.

## Pricing [#pricing]

ZeroDev Wallet is included in every ZeroDev plan. It draws from your existing credit allotment — there's no separate subscription.

| Action                                                  | Credits |
| ------------------------------------------------------- | ------- |
| Signature — off-chain (personal sign, typed data, etc.) | 10      |
| Sending a transaction (user operation)                  | 20      |
| Sign **and** send a transaction                         | 30      |

* **Free plans:** if you run out of credits, signing pauses until your credits refresh the following month. Your users can always [export their keys](/wallets/export) to keep full control of their wallets.
* **Paid plans:** you keep signing and transacting past your allotment and are billed for overage credits.
* **Rate limits:** default per-user rate limits protect against spam draining your credits. They're flexible — [contact us](https://zerodev.app/contact) to adjust them for your app.

## Get started [#get-started]

* **[Quickstart](/wallets/quickstart)** — add ZeroDev Wallet to a React app in about 5 minutes.
* **[Live demo](https://smart-wallet-demo.zerodev.app/)** — a self-custodial wallet powered by social logins and gas sponsorship.
