Skip to main content
CoinPool provisions Solana wallets and sends USDT / USDC over SPL when BitGo custody is enabled. Self-custody Solana key generation is not supported.

Enable on the server

Set in .env (after confirming BitGo Solana on your enterprise):
FF_SOLANA_ENABLED=true
CUSTODY_PROVIDER=bitgo

BITGO_SOL_COIN=tsol          # or sol on mainnet
BITGO_SOL_USDT_TOKEN=usdt
BITGO_SOL_USDC_TOKEN=usdc
BITGO_SOL_TOKEN_DECIMALS=6

SOLANA_NETWORK=devnet        # informational / future RPC watcher
SOLANA_RPC_URL=https://api.devnet.solana.com
Existing BitGo flags (FF_BITGO_NEW_WALLETS, FF_BITGO_TRANSFERS_P2P, FF_BITGO_TRANSFERS_B2B, FF_BITGO_BALANCE_READS, webhooks) apply to Solana wallets the same way as TRON and Ethereum.

User onboarding

New users receive three default wallets:
  • Ethereum Wallet (network: ethereum)
  • TRON Wallet (network: tron)
  • Solana Wallet (network: solana)
Each wallet has ledger rows for native (ETH/TRX/SOL), USDT, and USDC.

Wallet provisioning

POST /api/v1/auth/wallets/for-owner creates a wallet on the network you pass (e.g. "network": "solana" for an existing user who needs a Solana address). Set "provision_all_networks": true when you want ethereum, tron, and solana wallets in one call (e.g. a new vendor spending-wallet set). The network field selects which wallet is primary in the response (wallet + balances). The full set is returned in wallets when provision_all_networks is true. Additional Solana wallets can also be created via POST /api/v1/auth/wallets with "network": "solana".

Multisig (treasury / B2B)

BitGo treasury multisig supports network: solana with multisig type bitgo_sol. B2B transfers from BitGo-managed multisig wallets route through BitGo sendcoins (same as bitgo_evm and bitgo_tron). Self-custody Gnosis / TRON native multisig remains ETH/TRON only.

Transfers

P2P and B2B transfer endpoints accept "network": "solana" and "asset": "USDT" or "USDC". Sends route through BitGo sendcoins the same as other chains. Important: always pass network explicitly for Solana. The API does not infer Solana from a base58 address (TRON also uses base58).

Not in v1

  • Self-custody Solana wallets or SPL signing
  • Escrow watcher SPL deposit detection (off-ramp escrow on Solana)
  • On-ramp address inference from destination address alone

Verify BitGo first

Before production traffic, confirm in BitGo testnet:
  1. Create a tsol custodial wallet
  2. Receive SPL USDC/USDT
  3. Send to a second address
  4. Webhook + reconciler update transfer status
Document the exact coin and token strings from your BitGo enterprise — they can differ by environment.