What does transfer do?
Thetransfer command validates an ERC20 token transfer against the policy engine. It sets action to transfer automatically, so you only provide the recipient, amount, token, and reason. This is a convenience wrapper around validate for the most common operation.
Options
| Flag | Required | Description |
|---|---|---|
--to | Yes | Recipient address (0x…) |
--amount | Yes | Amount in token units |
--token | Yes | Token symbol (e.g. USDC) or contract address |
--reason | Yes | Why this transfer is being sent |
--chain | No | Chain name or ID (preflight mode) |
--raw | No | Use raw EVM validation (legacy) |
Raw mode flags (only with --raw)
| Flag | Required | Default | Description |
|---|---|---|---|
--nonce | Yes | - | Transaction nonce |
--maxFeePerGas | Yes | - | Max fee per gas (wei) |
--maxPriorityFeePerGas | Yes | - | Max priority fee per gas (wei) |
--gasLimit | No | 65000 | Gas limit |
--chainId | No | From credentials | Chain ID |
Preflight mode (default)
In preflight mode, the command sends an action-based validation request. No gas parameters needed.Output
error and blockReason:
intentId and a next field pointing to mandate approve.
Raw mode (legacy)
Deprecated. Use preflight mode instead. Raw mode is kept for legacy self-custodial flows.
transfer(address,uint256) calldata, computes the intentHash, and sends a raw validation request. On success, it returns the unsigned transaction for manual signing.
Raw mode output
unsignedTx with your private key, broadcast it, then post the txHash with mandate event.
Next Steps
Post Transaction Hash
Report the txHash after signing and broadcasting.
Check Intent Status
Poll the intent state until confirmed.
MandateWallet SDK
Automate the full flow programmatically with the TypeScript SDK.