Deposits & Withdrawals
Deposits & Withdrawals
Funding configuration
The single source of truth for deposit destinations and withdrawal thresholds. Live response:
deposit.hypercore.address— the trading address every user deposits to via a Hyperliquid spot transfer; the sender’s wallet determines which account is credited. Always read this address from/configat runtime — never hardcode it.trader_share— the fee-savings split (0.5 = 50% of the venue-fee saving is rebated to the trader).
Track deposits
{account} is the 32-byte account id (a 20-byte wallet address is rejected). Params: limit, offset, from, to. Returns data: { account, deposits: [] } — detected deposits, newest first: tx_hash, amount, source (send | spotTransfer | internalTransfer), status ∈ DETECTED → CONFIRMED (or BELOW_MIN), with detected_at / credited_at timestamps. Poll this to track a just-sent deposit to credit.
Request a withdrawal
Withdrawals are signed by your main wallet (never the trading key) as Withdraw(address user,address destination,uint256 amount,string hyperflowEnvironment,uint256 nonce):
destination— your own wallet for the default HyperCore rail, or the EVM recipient for the Arbitrum rail.amount— USDC base units (6 decimals): 25 USDC signs as25000000.
Body (signature split into {r, s, v} components):
- Body
amountis a decimal string (max 6 dp); the signedamountis the same value in base units. - On the default HyperCore rail, don’t send a destination field — sign your own wallet address as
destination; the server verifies against it. - Arbitrum (EVM) rail: add
destination_chain_id(42161 mainnet / 421614 testnet) anddestination_recipient(the signeddestination). The EVM rail is offered only to email/embedded-wallet accounts; a normal EOA withdraws to its own HyperCore wallet.
Response and lifecycle
A valid request returns status: "REQUESTED" with a withdrawal_id; an inline validation failure returns status: "REJECTED" with reason ∈ BELOW_MIN, ABOVE_MAX, RATE_LIMITED, DAILY_LIMIT_EXCEEDED, BELOW_MIN_AFTER_FEE.
Poll the lifecycle:
{account} is the 32-byte account id. The list returns data: { account, withdrawals: [] } with items withdrawal_id, amount, l1_send_amount, destination, status, failure_reason, l1_tx_hash, created_at, completed_at.
Completed withdrawals carry l1_send_amount (net of any new-wallet fee) and l1_tx_hash. Every withdrawal passes the platform’s 2-of-4 multisig review between ACCEPTED and COMPLETED.
The first-ever credit to a destination wallet with no HyperCore history incurs Hyperliquid’s one-time $1 USDC activation fee — a below-minimum-after-fee request is rejected inline with the fee amount in new_wallet_fee.