Unsupported Token Recoveries
If you sent a token that BitGo does not natively support to your BitGo wallet, the tokens can still be recovered. The process depends on the blockchain network.
ERC20 Tokens (EVM Networks)
This process applies to unsupported ERC20 tokens on EVM-compatible networks (such as Ethereum).
Note: This process does not work for custodial wallets, where the user does not hold keys
Recovery is a two-step process:
- Flush — BitGo Support sweeps the unsupported tokens from your deposit (forwarder) address to your wallet's base address.
- Transfer — You send the tokens from your wallet's base address to an external destination using a contract call in the BitGo UI.
Step 1: Contact BitGo Support
Open a support ticket at support@bitgo.com and provide the following information:
- Enterprise ID
- Wallet ID
- Token name and symbol
- Token contract address (found on a block explorer such as Etherscan, under the transaction's "Interacted With" field)
- Block Explorer link to the Transaction ID (hash) of the deposit
- The receiving address where the unsupported tokens were sent
BitGo Support will flush the tokens to your wallet's base address. You will be notified when this is complete.
Step 2: Recover the Tokens via the BitGo UI
Once Support confirms the flush is complete, you can transfer the tokens out using the withdrawal form:
- In the BitGo UI, open the withdrawal/send form for your wallet.
- In the Send To field, enter the token contract address (not your destination address).
- Set the Amount to 0.
- In the Data field, enter the token transfer calldata (see below).
- Initiate and approve the transaction as you normally would (wallet passphrase, 2FA, or OVC signing depending on your wallet type).
Generating the Token Transfer Calldata
The Data field requires an encoded ERC20 transfer(address, uint256) function call. You will need:
- Destination address — the external address where you want the tokens sent. This must be a non-BitGo address that supports the token.
- Amount — the amount to recover, converted to the token's smallest unit (base units). For example, if the token has 6 decimals and you are recovering 100 tokens, the base-unit amount is 100000000.
You can generate this calldata using any ABI encoding tool or library that supports the ERC20 transfer function signature. For reference, see the Solidity ABI specification. If you need help generating the calldata, BitGo Support can provide it for you.
SPL Tokens (Solana)
This process applies to unsupported SPL tokens on the Solana network. This does not apply to SOL itself, which is fully supported by BitGo. It only applies to SPL tokens (tokens built on the Solana network) that BitGo has not onboarded as a listed asset.
It uses the Non-BitGo Recovery flow in the Wallet Recovery Wizard (WRW), with the addition of the Token Address and Token Program ID fields to specify the unsupported token.
Note: This process applies to self-custody hot wallets only. Self-managed cold wallet users should contact support@bitgo.com for recovery.
Prerequisite: Download the latest version of Wallet Recovery Wizard
Step 1: Generate the Recovery Transaction
- Open WRW and select the correct environment (Mainnet or Testnet).
- Select Non-BitGo Recovery from the left navigation.
- Fill in the following fields:
- Currency: SOL Token
- Key Recovery Service: None
- Box A Value: Your encrypted user key, as found on your wallet keycard.
- Box B Value: Your encrypted backup key, as found on your wallet keycard.
- Box C Value: The BitGo public key for the wallet, as found on your wallet keycard.
- Token Address: The contract address of the unsupported token you are recovering.
- Token Program ID: Select the appropriate program — Sol SPL Token or Sol SPL 2022 Token.
- Wallet Passphrase: The passphrase used to decrypt the encrypted keys.
- Destination Address: The address where the recovered tokens should be sent.
Note: For MPC/TSS wallets (v3, v5, v6), WRW requires enabling the "Is TSS recovery?" checkbox before proceeding.
- (Optional) To extend the transaction broadcast window beyond 60 seconds, fill in the Durable Nonce: Public Key and Durable Nonce: Secret Key fields.
- Click Recover Funds to generate the recovery transaction.
Step 2: Broadcast the Transaction
Broadcast the generated transaction to the Solana network using the sendTransaction RPC method.
You can use any HTTP client such as Postman or cURL to submit the request to a Solana RPC endpoint (e.g., api.mainnet-beta.solana.com).
Use the serialized transaction output from WRW as the first parameter, with base64 encoding and confirmed preflight commitment.
Note: If you did not provide a Durable Nonce, you must broadcast the transaction within 30–60 seconds of generating it. After that window, the blockhash expires and you will receive a "Transaction Simulation Failure" error. If this happens, regenerate the transaction from WRW and broadcast again immediately.
Important Notes
- Destination address: The destination must be a non-BitGo address that supports the token. Sending to another BitGo wallet that does not support the token will recreate the same problem.
- Other token types: For unsupported tokens on networks other than EVM or Solana, contact BitGo Support at support@bitgo.com for guidance.
- Network fees: Standard network fees apply to all recovery transactions.
Was this article helpful?
That’s Great!
Thank you for your feedback
Sorry! We couldn't be helpful
Thank you for your feedback
Feedback sent
We appreciate your effort and will try to fix the article