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. A wallet can have more than one recovery method, so a user has more than one way to prove ownership. This guide covers setting a recovery method when the wallet is created.

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.

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:
    • 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

Add Signers

Add passkeys or external wallets to an existing wallet