Skip to main content
Deposits to Hyperliquid are made using the LI.FI swap and bridge functionality. Deposits are routed directly to Hyperliquid Core, they do not need to go through Arbitrum. Use PerpsClient.getDepositFlow() instead of hard-coding the destination token. The Hyperliquid provider always returns a lifiSwap flow, whether or not the account exists yet.
flow.destination is the SDK’s exported HYPERLIQUID_USDC constant: { chainId: ChainId.HPL, address: 0xaf88d065e77c8cC2239327C5EDb3A432268e5831, decimals: 6 }, the 6-decimal USDC perps contract on the Hyperliquid venue chain.
Select the destination token by chainId and address, never by symbol. The same chain also lists an 8-decimal spot USDC at 0x6d1e7cde53bA9467B783Cb7c530CE05400000000; a destination resolved by symbol can land on the wrong token and scale.
The provider advertises minDepositUsd: '5': Hyperliquid’s Arbitrum bridge rejects smaller amounts. If the user already has USDC on Arbitrum, they can deposit directly via the Hyperliquid bridge with a normal transfer.

Deposit before setup

An address without a Hyperliquid account reports accountExists: false from checkSetup() with no setup steps. The account exists only after its first deposit, which pays Hyperliquid’s one-time account creation fee. Deposit first, then run Setup.

Which balance is usable for trading

Only under unifiedAccount or portfolioMargin (a user-signed accountMode change) is spot USDC usable as perps margin. In Standard (disabled) mode, the state of an account that never set a mode, spot and perps USDC are separate balances and perps trading uses the perps balance. See Account Abstraction. Across the hyperliquid category and HIP-3 categories such as xyz, collateral is held per dex in Standard mode.
Deposit functionality is not part of the Perps API — use the existing LI.FI SDK or API to execute deposits.