Skip to main content
An allowance lets your app spend small amounts from a user’s wallet without a prompt for every transfer. The user approves the allowance once, and anything above it still goes to them for review.
Native limits count positive native value: on EVM from any transaction, contract calls included, and on Solana, Cosmos, Stellar and Sui from native transfers. Token limits count ERC-20 transfer calls on EVM, including ERC-20 transfers sent through Para gas sponsorship, and token transfers on Solana, Cosmos and Stellar. Sui has no token limits. Gas and fees never count. Apart from those sponsored transfers, smart account user operations do not count toward EVM limits. A token limit that names an asset counts only that asset. Each network, asset and window has its own budget, so a limit of 1 ETH per day on Ethereum and Base allows 1 ETH per day on each network. Payments a Safe makes count only toward the Safe limits, safe.spend.native and safe.spend.erc20, which keep one budget per Safe. See Metered facts for the full rules.

Allow small ETH transfers

Use this for frequent, low-value payments, such as tips or in-game purchases. ETH transfers on Base of up to 0.01 ETH sign without a prompt once the user approves.
  1. On your Development key, open Permissions, select the Requests tab, and select Add or New Request.
  2. In User consent request language, enter Send up to 0.01 ETH per transfer on Base. In Networks, clear Ethereum (1), select Base (8453), and select Continue.
  3. Select Transfer ETH. Select Add Condition, change the condition to Transaction amount, keep is at most and per transaction, and enter 0.01 with the unit set to ETH.
  4. Select Review, then Save Draft, then Activate on the draft.
Test it on your Development key: send 0.005 ETH from a test user’s wallet and approve the consent screen, then the transfer. Send 0.005 ETH again and it signs without a prompt. A 0.05 ETH transfer still opens a review.

Allow a daily USDC budget

Use this when the user should set aside a fixed amount of USDC per day for your app, such as for subscriptions or automated payments. USDC transfers on Base sign without a prompt until the day’s total would pass 100 USDC. USDC has 6 decimals, so the budget is 100000000.
The form saves the same allowance without the asset field. Its rule already pins the USDC contract, so only USDC counts toward the budget either way.
  1. On your Development key, open Permissions, select the Requests tab, and select Add or New Request.
  2. In User consent request language, enter Send up to 100 USDC per day on Base. In Networks, clear Ethereum (1), select Base (8453), and select Continue.
  3. Select Transfer tokens and enter 0x833589fcd6edb6e08f4c7c32d4f71b54bda02913 in Contract Address. Function Name is fixed to transfer.
  4. Select Add Condition, change the condition to Transaction amount, choose per time window with 24 hours, keep is at most, and enter 100000000 token base units.
  5. Select Review, then Save Draft, then Activate on the draft.
The budget resets at 00:00 UTC. It belongs to the wallet, not the policy, so two policies that meter USDC on Base over the same window share one daily total. To show what is left today, read the policy’s usage with getUserPolicyUsage. Each meter returns usedBaseUnits, remainingBaseUnits and resetAt.
Test it on Base Sepolia with a lower budget: set chainId to 84532, change both USDC addresses to 0x036cbd53842c5426634e7929541ec2318f3dcf7e, and set the budget to 1000000 (1 USDC). After consent, a 0.6 USDC transfer signs without a prompt and a second one opens a review.

Publish your allowances

The consent screen shows your User consent request language and each rule, so check that both read well before you request a production review. Production is a separate environment, so production users see the consent screen there the first time a matching request arrives.