Overview
Multi-Factor Authentication (MFA) adds an extra layer of security to Embedded Wallets by requiring users to verify their identity through a secondary authentication method.TOTP
Time-based codes from authenticator apps like Google Authenticator, Authy, or 1Password
SMS
Verification codes sent via text message to the user’s phone
How it works
1
Enrollment
- Authenticator app: User scans a QR code and registers the app in their authenticator app
- Text message: User provides their phone number in E.164 format (e.g.,
+14155552671)
2
Verification
- Authenticator app: User confirms by entering a 6-digit code
- Text message: User confirms by entering a 6-digit code sent via SMS
3
Future authentication
- Authenticator app: User provides a 6-digit code for sensitive operations
- Text message: User receives a new 6-digit code via SMS for sensitive operations
Users must be authenticated (signed in) before they can enroll in MFA. Users can enroll in both TOTP and SMS for maximum flexibility.
MFA-protected operations
The following actions automatically trigger MFA verification when the user is enrolled:EVM
EVM
signEvmHashsignEvmTypedDatasignEvmMessagesignEvmTransactionsendEvmTransactionsendUserOperationcreateEvmKeyExportIframe
Solana
Solana
signSolanaMessagesignSolanaTransactionsendSolanaTransactioncreateSolanaKeyExportIframe
Supported authenticator apps
Any TOTP-compatible authenticator app works. These are commonly used:Quickstart
If you’re using@coinbase/cdp-react, use the pre-built enrollment component to let users enable MFA:
- Detecting when MFA verification is needed
- Showing the verification modal
- Completing the operation after successful verification