> ## Documentation Index
> Fetch the complete documentation index at: https://docs.privy.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Granular MFA errors

> Handle mfa_required and missing_mfa_enrollment errors from wallet actions that require MFA.

## Error codes

If a request requires MFA and the user hasn't completed it, Privy returns a `401` with one of these error codes:

| Code | What happened | What to do |
| - | - | - |
| `missing_mfa_enrollment` | The authorizing user has not enrolled in MFA. | Enroll the user, then retry with the MFA token from enrollment. |
| `mfa_required` | The user has enrolled, but has no unexpired MFA verification. | Verify the user's MFA, then retry with the new MFA token. |

Retry with a new user key that records the MFA. Resending the same signed request fails again.

The React SDK handles both errors for you. It prompts the user to enroll or verify, then retries the request. With a server SDK, verify or enroll the user, then retry with the new MFA token. See [authorizing actions](https://docs.privy.io/authentication/user-authentication/mfa/granular/authorizing-actions.md).
