Skip to main content
Granular MFA policies use the ALLOW_WITH_MFA rule action to require MFA for specific wallet actions. Privy allows a request that matches an ALLOW_WITH_MFA rule only if the user authorizing it has completed MFA. A user who hasn’t enrolled in MFA must enroll first. When more than one rule matches a request, Privy applies the most restrictive action. DENY takes precedence over ALLOW_WITH_MFA, and ALLOW_WITH_MFA takes precedence over ALLOW. Privy denies a request that matches no rule, so pair ALLOW_WITH_MFA rules with ALLOW rules for actions that don’t need MFA.

Require MFA for every wallet action

Every user must enroll in MFA before using a wallet with this policy. A wildcard ALLOW_WITH_MFA rule also denies actions that policies can’t evaluate yet, such as swaps.

Require MFA to sign a specific message

Signing Hello, world! requires MFA. Every other action, including signing other messages, doesn’t.

Require MFA for wallet export

Exporting a private key or seed phrase requires MFA. Every other action doesn’t.

Require MFA for large transfers

Transfers of more than 1000 OUSD require MFA. Smaller transfers don’t. The transfer API accepts the amount in amount or source.amount, so the policy checks both. This policy covers only the transfer method, so add rules for any other methods the wallet uses.

Require MFA for large ETH transfers

Sending more than 1 ETH requires MFA. Smaller transactions don’t.

Let a user own the policy

Updating or deleting a user-owned policy requires the owner’s MFA. Creating it doesn’t. This stops a user from removing an ALLOW_WITH_MFA rule without MFA.