bullpen solana withdraw¶
Last updated: July 13, 2026
Withdraw SOL or an SPL token to a Solana address
Usage¶
Live Help¶
Withdraw SOL or an SPL token to a Solana address
Usage: bullpen solana withdraw [OPTIONS] <DESTINATION> <AMOUNT>
Arguments:
<DESTINATION>
Destination Solana wallet address
<AMOUNT>
Amount to withdraw
Options:
--output <OUTPUT>
Output format for command results
[possible values: table, json]
--token <TOKEN>
SPL token mint to withdraw. Omit for native SOL
--env <ENV>
Target environment to connect to (overrides config.toml)
[env: BULLPEN_ENV=]
[possible values: staging, production]
--yes
Skip confirmation prompt
--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.
--preview
Show the withdraw plan without signing or submitting
--use-own-sol
Skip the sponsored SPL transfer attempt and pay Solana network fees from your own SOL
--i-confirm-destination-supports-token
Bypass the CEX destination guard after verifying the destination supports this token on Solana
--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:
# Check balances before withdrawing
bullpen solana balance
# Preview a native SOL withdraw without signing or submitting
bullpen solana withdraw 7qRkWTrM4DLpmeSnB8xT8p8mpqLQ9JdYatYczS4u1G8e 0.01 --preview
# Preview a USDC withdraw without signing or submitting
bullpen solana withdraw 7qRkWTrM4DLpmeSnB8xT8p8mpqLQ9JdYatYczS4u1G8e 10 --token EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v --preview
# Export the withdraw preview as JSON
bullpen solana withdraw 7qRkWTrM4DLpmeSnB8xT8p8mpqLQ9JdYatYczS4u1G8e 10 --token EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v --preview --output json
# Preview a USDC withdraw that would use your own SOL for fees
bullpen solana withdraw 7qRkWTrM4DLpmeSnB8xT8p8mpqLQ9JdYatYczS4u1G8e 10 --token EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v --use-own-sol --preview
Example Commands¶
bullpen solana balance
bullpen solana withdraw 7qRkWTrM4DLpmeSnB8xT8p8mpqLQ9JdYatYczS4u1G8e 10 --token EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v --preview
bullpen solana withdraw 7qRkWTrM4DLpmeSnB8xT8p8mpqLQ9JdYatYczS4u1G8e 10 --token EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v --preview --output json
JSON Output¶
Contract: JSON Output Contract.
Preview (--preview --output json)¶
Preview output is a single JSON document emitted only when --preview --output json is passed. It uses the read-only Solana signer path and returns before confirmation, Turnkey signing, or transaction submission.
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 |
|---|---|---|---|
action |
string | no | solana_withdraw for withdraw previews |
mode |
string | no | preview when --preview is used |
would_submit |
boolean | no | false for --preview; no transaction was submitted |
signature_requested |
boolean | no | false for --preview; no Turnkey signature was requested |
submit_requested |
boolean | no | false for --preview; no TxService submission was requested |
estimated_value_usd |
string/null | yes | Best-effort USD value for the preview amount |
preview |
object | no | Withdraw preview with source, destination, amount, token, atomics, network notes, and destination warning |
Example¶
bullpen solana withdraw 7qRkWTrM4DLpmeSnB8xT8p8mpqLQ9JdYatYczS4u1G8e 10 --token EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v --preview --output json
{
"action": "solana_withdraw",
"mode": "preview",
"would_submit": false,
"signature_requested": false,
"submit_requested": false,
"estimated_value_usd": "10",
"preview": {
"source": "7qRkWTrM4DLpmeSnB8xT8p8mpqLQ9JdYatYczS4u1G8e",
"destination": "8Y9xQeYxQeYxQeYxQeYxQeYxQeYxQeYxQeYxQeYxQeYx",
"token_mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"token_symbol": null,
"amount_display": "10 USDC",
"amount_atomics": 10000000,
"decimals": 6,
"network_notes": [],
"destination_warning": null
}
}
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.
Solana Withdraw Notes¶
- Native SOL withdraws are client-built and paid by the source wallet.
--previewbuilds the withdraw plan with the read-only Solana signer path and returns before confirmation, Turnkey signing, or transaction submission.- SPL withdraws try the sponsored transfer path first. When sponsorship is unavailable because the recipient needs an ATA, the recipient has never received the token, or the sponsored quota is exhausted, the CLI can retry with a user-paid SPL transfer after confirmation.
--use-own-solskips the sponsor attempt for SPL withdraws and requires about 0.003 SOL in the source wallet for network fees and possible ATA rent.- Success JSON includes
transfer_method:native_sol,sponsored,manual_fallback, ormanual_forced.