Skip to content

bullpen hyperliquid transfer

Last updated: July 13, 2026

Transfer USDC between Hyperliquid spot and perp balances (requires hyperliquid_trading feature)

Usage

bullpen hyperliquid transfer [OPTIONS] --amount <AMOUNT> --to <TO>

Live Help

Transfer USDC between Hyperliquid spot and perp balances (requires hyperliquid_trading feature)

Usage: bullpen hyperliquid transfer [OPTIONS] --amount <AMOUNT> --to <TO>

Options:
      --amount <AMOUNT>
          USD amount to transfer

      --no-multi-wallet-warning
          Suppress the table-mode warning shown when multiple EVM wallet accounts exist

      --output <OUTPUT>
          Output format for command results

          [possible values: table, json]

      --env <ENV>
          Target environment to connect to (overrides config.toml)

          [env: BULLPEN_ENV=]
          [possible values: staging, production]

      --to <TO>
          Destination balance to credit

          [possible values: spot, perp]

      --config <CONFIG>
          Path to a custom config.toml file (overrides $BULLPEN_CONFIG and the default location).

          Explicit --config and BULLPEN_CONFIG paths fail closed: if the file is missing, the CLI exits validation instead of silently loading defaults. Credentials still resolve via BULLPEN_HOME, so set BULLPEN_HOME too when isolating a session.

  -y, --yes
          Skip confirmation prompt

      --dry-run
          Show the planned transfer without signing or submitting. On likely unified accounts, dry-run warns when Hyperliquid may reject spot-to-perp transfer as unnecessary

      --read-only
          Enable read-only mode: blocks all mutating commands

      --non-interactive
          Suppress interactive prompts; does NOT imply --yes for money-moving commands

          [env: BULLPEN_NON_INTERACTIVE=]

  -h, --help
          Print help (see a summary with '-h')

EXAMPLES:
  # Preview a spot-to-perp USDC transfer without signing or submitting
  bullpen hyperliquid transfer --amount 25 --to perp --dry-run

  # Export the transfer dry-run as JSON
  bullpen hyperliquid transfer --amount 25 --to perp --dry-run --output json

UNIFIED ACCOUNT CAUTION:
  Run --dry-run first on accounts that may use Hyperliquid unified collateral.
  If spot USDC is available while separate perp balances are zero, the CLI
  warns that Hyperliquid may reject spot-to-perp transfer as unnecessary.

ENVIRONMENT:
  BULLPEN_HYPERLIQUID_TRANSFER_VERIFY_ATTEMPTS  Post-submit verification attempts (default 5, clamped 1-20)
  BULLPEN_HYPERLIQUID_TRANSFER_VERIFY_POLL_MS   Post-submit verification poll interval in milliseconds (default 1500, clamped 250-10000)

Rate-limit caution: raising attempts or lowering the poll interval increases Hyperliquid /info request load.

Example Commands

bullpen hyperliquid transfer --amount 25 --to perp --dry-run
bullpen hyperliquid transfer --amount 25 --to perp --dry-run --output json

JSON Output

Contract: JSON Output Contract.

Successful output is a single JSON document. The shape below is representative for this command family; commands may add fields without breaking the shared contract.

Schema version: 1 when a command emits schema_version; otherwise treat the current command shape as contract version 1.

Top-level Keys

key type nullable notes
dry_run boolean no True for non-submitting dry-run output
action string no transfer or withdraw
source_wallet object no Active account and source balance type
destination object no Destination balance or Arbitrum address/network
amount_usdc string no Requested USDC amount
would_submit boolean no False in dry-run output
signature_requested boolean no False in dry-run output
exchange_request_submitted boolean no False in dry-run output
balance_check object yes Best-effort balance check; absent when unavailable
warnings array no Dry-run warnings, including unavailable or insufficient balance checks; live reports may include command-specific warnings

Example

Example JSON output
bullpen hyperliquid transfer --amount 25 --to perp --dry-run --output json
{
  "dry_run": true,
  "action": "transfer",
  "source_wallet": {
    "account": "0x1111111111111111111111111111111111111111",
    "balance": "spot"
  },
  "destination": {
    "kind": "hyperliquid_balance",
    "balance": "perp"
  },
  "amount_usdc": "25",
  "would_submit": false,
  "signature_requested": false,
  "exchange_request_submitted": false,
  "balance_check": {
    "spot_usdc_available": "100",
    "perp_raw_usd": "0",
    "perp_account_value": "0"
  },
  "warnings": []
}

Stability

Patch releases may add nullable or optional fields. Minor releases may add required fields or increment schema_version. Major releases may remove or rename fields.