Skip to main content
Withdrawals are submitted via a user-signed EIP-712 payload using createAction / executeAction with action: 'withdrawal' (see SDK / Actions). Agents cannot initiate withdrawals — the user’s wallet must sign each withdrawal directly. This is a protocol-level constraint, not an SDK choice. On Hyperliquid, withdrawals always send USDC to the user’s address on Arbitrum via the Hyperliquid L1 -> Arbitrum bridge. Processing typically takes 3-4 minutes.

withdrawal

SignersUSER — agents cannot initiate withdrawals (protocol constraint)
ParamsWithdrawalParams{ destination, amount }
SDK methodswithdraw()
destination is the Arbitrum address to receive the funds. amount is the USDC amount as a human-readable string (e.g. "100.00").
withdraw() triggers a wallet popup. Unlike trading actions — which are signed silently by the agent — withdrawals require an explicit signature from the user’s connected wallet. Plan for this in your UX flow.
Under unifiedAccount abstraction mode, withdrawals are drawn from the user’s spot USDC balance. Ensure sufficient spot USDC is available before initiating a withdrawal — perps margin must be freed (by closing positions or reducing margin) and transferred to spot first if needed.