Skip to main content
A Request asks the owner of a user-owned wallet for standing access. Once the user consents, matching transactions sign without another prompt. Anything the Request does not cover goes to user review. Each template below includes Developer Portal steps when the forms can express it, and JSON you can publish with the CLI. For app-owned wallets, see Guardrail templates. Each policy goes on a Development (beta) API key. Read the Developer Portal walkthrough or the CLI guide for the full lifecycle. In the CLI commands, replace KEY_ID with your key ID and RECORD_ID with the policy.recordId from the create response. Users grant or decline consent through Para; see the React and React Native guides to handle it in your app.
Amounts are integer strings in base units: wei for ETH (18 decimals) and 6 decimals for USDC. 10000000000000000 is 0.01 ETH, and 100000000 is 100 USDC.

Small native transfers without a prompt

Lets the app send small amounts of ETH on Base without asking each time. Once the user approves the Request, transfers up to 0.01 ETH sign directly. Larger transfers go to user review.
  1. Open Permissions for your Development key, select the Requests tab, and select Add (or New Request if Requests already exist).
  2. In User consent request language, enter Send up to 0.01 ETH per transfer on Base. Under Networks, select Base (8453), then select Continue.
  3. Set the action to Transfer ETH. Select Add Condition, choose Transaction amount and is at most, enter 0.01 with the unit set to ETH, and keep per transaction.
  4. Select Review, then Save Draft. Select Activate on the draft.
To use another wallet type, select a Solana, Cosmos, Stellar, or Sui network in the Portal and choose Native transfer. Amounts use that network’s base units, such as lamports on Solana.

Daily USDC allowance

Gives the app a daily USDC budget on Base. After the user approves the Request, USDC transfers sign directly while the 24-hour total stays at or below 100 USDC. Transfers beyond that total, and transfers of other tokens, go to user review.
  1. Open Permissions for your Development key, 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. Under Networks, select Base (8453), then select Continue.
  3. Set the action to Transfer tokens and enter 0x833589fcd6edb6e08f4c7c32d4f71b54bda02913 in Contract Address. Function Name is fixed to transfer.
  4. Select Add Condition, choose Transaction amount, and set the rate to per time window with 1 days. Choose is at most and enter 100000000 in token base units.
  5. Select Review, then Save Draft. Select Activate on the draft.
The window is a fixed 24-hour budget per network and token. Smart account user operations do not count toward it, except ERC-20 transfers sent through Para gas sponsorship.
On Solana, Cosmos, or Stellar, choose Token transfer and enter the token in Token Asset in the format the field shows, such as solana:token:<mint>. Sui has no token transfer action.

Transfers to known recipients

Covers ETH transfers on Base to a fixed list of addresses. After the user approves the Request, those transfers sign without a prompt. Transfers to any other address go to user review.
  1. Open Permissions for your Development key, select the Requests tab, and select Add (or New Request).
  2. In User consent request language, enter Send ETH on Base to approved recipients. Under Networks, select Base (8453), then select Continue.
  3. Set the action to Transfer ETH. Select Add Condition, choose Recipient address and is one of, and enter the addresses in lowercase, separated by commas.
  4. Select Review, then Save Draft. Select Activate on the draft.
This template sets no amount limit. To cap each transfer, add a Transaction amount condition to the same action; all conditions must hold. On other wallet types, choose Native transfer and enter addresses in that network’s format.

Standing access to your app’s contracts

Covers one function on your contract, such as minting from your collection. Once the user approves the Request, calls to mint on that contract sign directly. Calls to other functions or contracts go to user review.
  1. Open Permissions for your Development key, select the Requests tab, and select Add (or New Request).
  2. In User consent request language, enter Mint items from our contract on Base. Under Networks, select Base (8453), then select Continue.
  3. Set the action to Call a contract. Enter your contract in Contract Address in lowercase, and enter mint in Function Name.
  4. To cover another function or contract, select Add Action and repeat step 3.
  5. Select Review, then Save Draft. Select Activate on the draft.
Para matches the function by decoding the call with the contract’s verified ABI from the network’s block explorer. If Para cannot decode a call, for example because the contract is not verified, the call does not match and goes to user review.
You can narrow the call further with Transaction amount or Contract argument conditions. On Solana, Cosmos, Stellar, and Sui, the Portal offers Execution target instead. It pins the program or contract the transaction calls, without function or argument conditions.

Co-signer approval above a threshold

Sends large ETH transfers on Base to a co-signer instead of the wallet owner. Once the user approves the Request, a transfer above 0.1 ETH signs after one person with the cosigner role approves it. Transfers of 0.1 ETH or less are not covered and go to user review. The Developer Portal forms cannot express approval requirements, so publish this template with the CLI. Para must enable conditional approvals for your app first; until then, validation rejects the policy.
request-cosigner-approval.json
Your backend assigns the cosigner role and binds the wallet to the authorization scope that holds that assignment; see permissions administration. The person who starts the transfer cannot approve it, so the co-signer must be a different user. To let smaller transfers sign without a prompt, add the rule from the first template to this policy. See conditional approvals to build the approver experience.

User-adjustable daily limit

Lets the user choose how much ETH the app can send on Base each day. Once the user approves the Request, native transfers sign directly while the 24-hour total stays within the user’s limit, which starts at 0.05 ETH. Transfers beyond it go to user review. The Developer Portal forms cannot declare adjustable amounts, so publish this template with the CLI. Para must enable user-adjustable limits for your app first; until then, validation rejects the policy.
request-adjustable-daily-limit.json
The parameter makes the 24-hour amount adjustable, and value is its default. The default is not a ceiling: the user can choose any non-negative integer amount in wei. Para’s consent screen shows an input for the limit, and your app can read and update it for the signed-in user. See adjust personal limits for React. React Native apps open the same hosted consent flow; see open standalone permissions flows. The JSON reference lists the other amounts you can make adjustable.