ETH Gas Tank: Withdrawals, Funding, and Common Issues
ETH Gas Tank: Withdrawals, Funding, and Common Issues
Problem
Customers frequently need to withdraw funds from their Ethereum (or other EVM-chain) Network Gas Tank, fund an empty or low-balance gas tank, or resolve issues where funds were sent to the wrong gas tank address. The Gas Tank is a shared enterprise-level fee address that pays network gas fees for all Ethereum-based wallets (including ERC-20 tokens like USDT) within an enterprise. Customers cannot withdraw from the gas tank via the BitGo UI or API — all gas tank withdrawals require BitGo Support intervention, a video identity verification call, and manual processing by the internal team.
Diagnostics
- Confirm the enterprise ID and coin: Ask the customer for their Enterprise ID and verify it in the admin tooling. Each enterprise has a single gas tank address per base coin (ETH, POLYGON, ETC, ARBETH, OPETH, etc.).
- Check gas tank balance on-chain: Look up the enterprise's fee address on the relevant block explorer (e.g.,
https://etherscan.io/address/<fee_address>) to confirm the current balance. - Determine wallet type (Multisig vs. MPC): For Multisig wallets, transaction fees are pulled from the enterprise Network Gas Tank. For MPC wallets, the transaction fee is pulled from the wallet's base address — the gas tank is not used.
- Check if the customer is on a supported tier: Gas tank recovery is performed for enterprise/premium customers. PayGo-tier customers may not be eligible for gas tank withdrawal assistance.
- Verify the customer is video-verified: Check internal records (Google Drive verification folder) for existing video verification recordings. Only previously video-verified users on the enterprise can authenticate the request.
- Check for low-balance notifications: BitGo sends a daily email notification when the gas tank balance falls below 0.12 ETH. If the customer reports missing notifications, verify their email notification settings in the admin tools and check whether the email address is receiving other BitGo notifications (e.g., from notifications@bitgo.com).
- Determine if this is a withdrawal, funding issue, wrong-chain deposit, or balance inquiry — the resolution path differs for each.
Resolution
Scenario: tank-gas-eth-tanks#standard-withdrawal
Trigger: Customer requests to withdraw ETH (or other EVM-chain native token) from their enterprise gas tank to an external address.
Signals: withdraw gas tank, empty gas tank, sweep gas tank, flush gas tank, recover funds from fee address, leaving BitGo
Steps:
- Request the following information from the customer:
- Enterprise Name
- Enterprise ID
- Enterprise Email
- ETH GAS Tank Balance
- ETH GAS Tank Address
- Destination Address
- Amount to withdraw (full sweep or partial)
- Verify the provided details against internal records (enterprise lookup in admin tools, fee address on-chain balance).
- Send the customer the Calendly scheduling link for a video verification call:
https://calendly.com/bitgo-client-delivery/videoid - Instruct the customer to have their government-issued photo ID ready and to reference their ticket number when scheduling.
- If the customer is not already video-verified by BitGo, they must bring a previously verified user onto the call to authorize their identity.
- After successful video verification, upload the recording to the designated Google Drive folder and tag the internal team (Nandish Dave or equivalent) to process the withdrawal using
bga wallet recoverfromaddressorbga wallet recoverfromfeeaddresscommands. - Once processed, provide the customer with the on-chain transaction hash/link as confirmation.
- Inform the customer that a full sweep may leave a small residual "dust" amount due to the fee estimation process during transaction construction. This is expected behavior.
Notes: This process applies to ETH, POLYGON, ARBETH, ETC, and other EVM-chain gas tanks. Gas tank withdrawal is only available in production — not on testnet. The withdraw process may leave some small dust amount of funds still in the tank. In some cases, engineering escalation may be required if the standard recovery command fails (e.g., server errors or unsupported coin errors).
"When we attempt to recover funds from the gas tank, we consistently encounter challenges sweeping the entire balance due to the fee estimation process during transaction construction. Consequently, there is inevitably some residual dust left behind." (ticket #241340)
"The withdraw process does leave some small dust amount of funds still in the tank." (ticket #228158)
"Just to let you now we only recover ETH from gas tank in prod." (ticket #242857)
Scenario: tank-gas-eth-tanks#low-balance-stuck-transactions
Trigger: Customer's ETH transactions are stuck or failing due to insufficient gas tank balance, or BitGo proactively detects low fee address balance.
Signals: low funds, insufficient balance in the gas tank, stuck transactions, fee address running low, not enough gas to process the transaction
Steps:
- Confirm the enterprise's fee address and check the on-chain balance.
- Inform the customer that BitGo recommends maintaining at least 0.7 to 1 ETH in the gas tank to avoid stuck transactions or processing issues.
- Instruct the customer to fund the gas tank fee address from an external source (not from a BitGo wallet if there is no gas to pay for the internal transfer).
- Once the gas tank has been funded, verify the balance on-chain and confirm transactions are flowing again.
- If the customer reports not receiving low-balance email notifications, escalate to the engineering team for investigation. The low balance threshold is 0.12 ETH, and a daily notification email is sent when the balance drops below this level.
Notes: The notification email subject line is "Your fee address balance is running low". If a customer funded the gas tank from a BitGo wallet but the transfer is pending, verify whether the gas tank had enough ETH to pay for that transfer itself — for first-time funding, funds should come from an outside source or exchange.
"We noticed that the funds in your fee address are running low... We recommend to add 0.7 to 1 eth at least to avoid any issues." (ticket #214955)
"You will need to fund the fee address from any other wallet but BitGo." (ticket #214955)
"The last email I found with title 'Your fee address balance is running low' is from May 19th 2022." (ticket #225029)
Scenario: tank-gas-eth-tanks#wrong-chain-deposit
Trigger: Customer accidentally sent ETH to an Ethereum Classic (ETC) gas tank address, or sent the wrong coin to a gas tank address on a different chain.
Signals: accidentally sent, wrong gas tank, ETC gas tank, wrong deposit address, recovery from wrong chain
Steps:
- Gather the enterprise ID, the wrong gas tank address, the correct gas tank address, and the transaction hash of the mistaken deposit.
- Escalate to the engineering team to assess whether recovery is feasible. Note that recovery from a wrong-chain gas tank (e.g., ETH on ETC gas tank) may not have established procedures and may be attempted on a case-by-case basis.
- Warn the customer that if the amount is small, the gas cost of recovery may exceed the value of the funds, making recovery uneconomical.
- If engineering confirms recovery is possible, follow the standard verification process (information collection + video verification call) before proceeding.
- Provide the customer with the recovery transaction hash once complete.
Notes: Engineering has noted that recovery of ETH from an ETC gas tank is not a standard operation and may require a one-time engineering effort. For very small amounts (e.g., 0.2 ETH during high gas periods), recovery may not be cost-effective.
"As of now, our engineering team has not helped our client with ETH recovery from the ETC gas tank. However, they would like to try this recovery once, but they have also mentioned that since it's only 0.2 ETH and the gas price is high in the market they won't be able to recover much because in order to recover the 0.2 ETH the gas price is anyway high in the market which may cost you more to recover." (ticket #217313)
Scenario: tank-gas-eth-tanks#gas-tank-not-visible-or-needs-enabling
Trigger: Customer cannot see the Gas Tank option in the BitGo UI, or gas tank feature needs to be enabled for their enterprise (especially on testnet).
Signals: gas tank not available, no gas tank option, enable gas tank, test account
Steps:
- Ask the customer for their Enterprise ID (test or production).
- Enable the gas tank feature for their enterprise internally.
- Inform the customer: "You can find the Gas Tanks by logging in and navigating to the 9-dot menu."
Notes: This is commonly requested for test environments where the gas tank may not be provisioned by default.
"This should now be added. You can find the Gas Tanks by logging in and navigating to the 9-dot menu." (ticket #225238)
Scenario: tank-gas-eth-tanks#mpc-wallet-fee-handling
Trigger: Customer using an MPC wallet receives "insufficient balance in the gas tank" when the gas tank is not the fee source for their wallet type.
Signals: MPC wallet, insufficient balance, gas tank, base address, OPETH, token withdrawal
Steps:
- Determine whether the customer's wallet is Multisig or MPC.
- If MPC: Explain that for MPC wallets, the transaction fee is pulled from the wallet's base address, not the enterprise Network Gas Tank.
- Instruct the customer to deposit the native chain token (e.g., OPETH for Optimism, ETH for Ethereum) into the wallet's base address to facilitate sending.
- If Multisig: Confirm the gas tank has sufficient funds and troubleshoot accordingly.
Notes: This distinction is critical — MPC wallets do not use the enterprise gas tank. The gas tank only applies to Multisig wallets.
"For MPC wallets, the transaction fee is pulled from the wallet's base address. For Multisig wallets, the transaction fee is pulled from the Network Gas Tank for the coin." (ticket #256714)
Scenario: tank-gas-eth-tanks#api-amount-units
Trigger: Customer is using the API to send funds to the gas tank and is confused about whether the amount parameter should be in WEI or GWEI.
Signals: sendcoins, amount, WEI, GWEI, Gas Tank Deposit Address, API, express.wallet.sendcoins
Steps:
- Confirm that when sending to a Gas Tank Deposit Address via the BitGo API, the amount should be specified in GWEI (not WEI).
- Provide the ETH converter tool for verification:
https://eth-converter.com/ - Note that this differs from standard
sendcoinsbehavior where amounts are typically in base units (WEI for ETH).
Notes: BitGo documentation states that gas tank top-ups should be in GWEI. This is a common source of confusion since the standard API sendcoins amount is in base units (WEI).
"You will want to GWEI for your calculations." (ticket #221037)
Scenario: tank-gas-eth-tanks#gas-tank-general-questions
Trigger: Customer asks general questions about how the gas tank works, whether funds can be returned, or whether the fee address is visible on-chain.
Signals: how does gas tank work, fee address visible, on-chain, can I get ETH back, gas tank return
Steps:
- Explain that each enterprise has an associated Ethereum fee address (gas tank) shared among all Ethereum wallets in the enterprise. Fees for wallet creation, address generation, and transaction sending are paid from this address.
- The gas tank fee address is visible on-chain as the source of gas fee payments — BitGo does not coordinate fees off-chain.
- If the customer leaves BitGo, they can request a gas tank withdrawal through the standard process (information collection + video verification + support processing).
- If funding a gas tank for the first time, the funds should come from an outside source or exchange — otherwise there would be no gas to fund a transfer to the tank.
- The gas tank applies to ERC-20 tokens as well (e.g., USDT on ETH uses the ETH gas tank).
- Each enterprise has a single gas tank address per base coin.
Notes: The gas tank is enterprise-level, not wallet-level. ETH deposited directly into an ETH wallet (not the gas tank) cannot be used for gas fees in Multisig wallets unless transferred to the gas tank.
"You must maintain a positive balance in your Gas Tank to process transactions from wallets that require gas (like Ethereum). BitGo uses the coins in your Gas Tank—not your wallet's own balance—to pay the network gas fees." (ticket #271712)
"Each Enterprise has a ETH Gas Tank which provides the fees for all ETH Wallets on that Enterprise. When a withdrawal is made from an ETH wallet, the fees are pulled from the Gas Tank. If funding a gas tank for the first time, the funds should come from an outside source or exchange otherwise there would be no gas in the tank to fund a transfer to the tank." (ticket #262192)
Scenario: tank-gas-eth-tanks#paygo-tier-not-eligible
Trigger: A PayGo-tier customer requests gas tank withdrawal but is not eligible for this service at their account tier.
Signals: paygo, account tier, not supported, unable to move forward
Steps:
- Verify the customer's account/pricing tier in admin tools.
- If the customer is on a PayGo (free) tier, inform them that gas tank withdrawal is not available at their current account tier.
- If the amount is very small, confirm internally whether an exception can be made (typically exceptions are not granted for trivial amounts).
Notes: Gas tank recovery is generally available for enterprise/premium-tier customers only.
"We do not provide the ability to withdrawn funds from your Network Gas Tank at your current account tier." (ticket #16910)
Scenario: tank-gas-eth-tanks#token-flush-spendable-zero
Trigger: Customer's ERC-20 token balance shows as confirmed but spendable balance is 0, often related to gas tank or forwarder issues.
Signals: spendable 0, token flush, USDT, forwarder, flush token
Steps:
- Verify the wallet ID and check the spendable balance vs. confirmed balance.
- If spendable is 0 but confirmed shows a balance, the tokens likely need to be flushed from a forwarder address.
- Use the admin tool to flush the token:
bga admin forwardToken --wallet <wallet_id> --tokenAddress <token_contract_address> --addresses <forwarder_address> - After flushing, re-check that the spendable balance now matches the confirmed balance.
- Ensure the fee address has sufficient ETH to cover the flush transaction gas cost.
Notes: This scenario often surfaces alongside gas tank inquiries because the root cause is insufficient gas to auto-flush tokens from forwarder addresses.
Scenario: tank-gas-eth-tanks#api-sendcoins-gas-tank-behavior
Trigger: Developer is constructing an ETH (or other EVM-chain) transaction via the /api/v2/{coin}/sendcoins endpoint and is unsure how to handle gas, whether to reserve ETH from the wallet balance, or how to format the payload for MPC/TSS wallets.
Signals: sendcoins, /api/v2, full balance, reserve for gas, MPC payload, TSS payload, type transfer, native asset transfer, gas parameters
Steps:
- Confirm the enterprise Gas Tank for the relevant base coin has a sufficient balance on-chain before constructing the transaction. Gas Tank coverage applies to both testnet and production when the Gas Tank is funded.
- For Multisig wallets, construct the sendcoins request without any gas-related parameters. The Gas Tank is automatically invoked to cover gas costs, so the full wallet ETH balance may be passed as the amount field without reserving ETH for gas.
- For MPC/TSS wallets, include "type": "transfer" in the request body. This is required for native asset transfers on MPC/TSS wallet types. Example payload: {"address": "0x...", "amount": "1000000000000000000", "type": "transfer"}.
- If the transaction fails despite a funded Gas Tank, verify the wallet type (Multisig vs MPC) and cross-check against scenario #mpc-wallet-fee-handling, since MPC wallets pull fees from the wallet base address rather than the Gas Tank.
Notes: Gas fees are drawn from the enterprise Gas Tank rather than the sending wallet's balance for Multisig sendcoins calls. No explicit gas-related parameters are required to enable Gas Tank coverage. The "type": "transfer" requirement is specific to native asset transfers on MPC/TSS wallets and is a common source of confusion for developers porting existing Multisig integrations to MPC.
"When using the /api/v2/{coin}/sendcoins endpoint for ETH transactions, the Gas Tank is automatically invoked to cover gas costs. You can pass the full wallet ETH balance as the amount field without reserving ETH for gas. No explicit gas-related parameters are required. For ETH on MPC/TSS wallets specifically, you must include 'type': 'transfer' in the request body, as this is required for native asset transfers on those wallet types." (ticket #366126)
Related
- ethereum-fees-and-gas-tank — Core KB article on gas tank purpose and funding instructions
- ethereum-erc20-wallets-tss — Differences between Multisig and TSS/MPC wallet fee handling
- token-flush-forwarder-issues — Related issue when tokens are stuck with spendable balance of 0