Prerequisites
- A Crossmint API key with
wallets.createscope - 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.- React
- Node.js
- React Native
- Flutter
- REST
Using Or using
createOnLogin on the provider (recommended):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. Setchannel: "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.- React
- Node.js
- React Native
- Flutter
- REST
Using Or using
createOnLogin on the provider: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.How Recovery Works on a New Device
When a user accesses their wallet from a new device where no device signer exists:- The user authenticates via your app — the SDK retrieves the wallet
- The SDK detects no local device signer on this device
- 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
- The recovery method authorizes a new device signer for this device
- 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
Advanced: recovery methods can also send transactions
Advanced: recovery methods can also send transactions
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.- React
- Node.js
- REST
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

