Skip to main content
A recovery method lets users regain access to their wallet when their operational (device) signer is no longer available — for example, when they switch to a new phone or clear their browser data. The recovery method authorizes the enrollment of a new device signer on the new device. You can choose from email OTP, SMS OTP, or a server signer depending on your application’s needs, and a wallet can have more than one recovery method. This guide covers setting recovery methods when the wallet is created.
In the React, React Native, and Node.js SDKs, the recovery wallet-creation property is deprecated. Pass recoveryMethods instead — it takes a list, so a single recovery method is written as recoveryMethods: [{ type: "email" }].

Prerequisites

  • A Crossmint API key with wallets.create scope
  • For email OTP: the user’s email address
  • For SMS OTP: the user’s phone number in E.164 format (e.g., +1234567890)
  • For server signer: a signer secret stored on your server

Email OTP Recovery Method

The user verifies ownership of their email address via a one-time password sent by Crossmint. This is the most common recovery method for consumer applications.
Using createOnLogin on the provider (recommended):
Or using createWallet directly:

SMS OTP Recovery Method

The user verifies ownership of their phone number via a one-time password delivered by SMS (or optionally WhatsApp). This is ideal for mobile-first applications. By default, OTPs are sent via SMS. Set channel: "whatsapp" in the phone signer config to deliver the OTP through WhatsApp instead.
WhatsApp delivery is not supported in Brazil, Mexico, India, or Indonesia. Phone numbers in those countries receive the OTP over SMS even when channel: "whatsapp" is set.
Using createOnLogin on the provider:
Or using createWallet directly:

Server Recovery Method

Use a server signer as the recovery method when your backend should manage recovery without a user-facing OTP flow. This fits company wallets, agents, backend automation, and hybrid architectures.
For more on generating and managing server signer secrets, see the Server Signer guide.

Multiple Recovery Methods

Add more than one entry to recoveryMethods to register several recovery methods on the same wallet. You can combine multiple email and phone recovery methods, and a single one of them is enough to authorize recovery, add or remove signers, and add or remove other recovery methods. See Manage Recovery Methods for changing recovery methods after creation, and for useRecoveryMethod(), which selects the one that authorizes an operation when a wallet has several.
Multiple recovery methods are available on Solana and Stellar. EVM wallets accept a single recovery method today; support for multiple recovery methods on EVM is coming soon.
Using createOnLogin on the provider:

Server Wallets

Server wallets cannot use email or phone recovery methods. Combine a server signer with an external-wallet recovery method instead — for example a key held in your cloud KMS — so that either one can recover the wallet:
See Cloud KMS for how to set up a KMS-held key.

How Recovery Works on a New Device

When a user accesses their wallet from a new device where no device signer exists:
  1. The user authenticates via your app — the SDK retrieves the wallet
  2. The SDK detects no local device signer on this device
  3. On the first transaction (or when recover() is called), the SDK triggers the recovery flow with the selected recovery method:
    • Email OTP: Crossmint sends a one-time code to the user’s email
    • SMS OTP: Crossmint sends a one-time code to the user’s phone
    • Server signer: your backend signs the recovery approval automatically
  4. The recovery method authorizes a new device signer for this device
  5. All subsequent transactions on the new device are frictionless
The previous device’s signer remains valid. Each device maintains its own independent device signer.

Choosing a Recovery Method

A recovery method is an onchain signer, so it can authorize transactions and not only signer changes. For an email or phone recovery method, the one-time code prompt is the familiar experience users already expect when they recover an account, which is why it works well for recovery. That same prompt appears on every operation, so it is a poor fit for day-to-day approvals — an operational signer approves those without interrupting the user.To sign with a recovery method, select it explicitly: activate it in the SDK, or set the signer field to its locator in the REST API.

Next Steps

Device Signer

Understand how the default client-side signer works

Server Signer

Set up server-side signing with key derivation

Manage Recovery Methods

Add or remove recovery methods on an existing wallet