Fees, Pricing, and Fee Discrepancies on the BitGo Platform
Fees, Pricing, and Fee Discrepancies on the BitGo Platform
Problem
Customers frequently contact support with questions about BitGo's fee structure, including custody fees (AUC), network/miner fees, withdrawal fees, trading fees, and the BitGo PayGo fee. A related subset of issues involves fee data discrepancies—where fees reported by the BitGo API or reports differ from on-chain data or between different BitGo reports. These inquiries span multiple coins and chains (BTC, ETH, TRON, SUI, and ERC-20 tokens) and affect both the UI and API workflows.
Diagnostics
- Determine the type of fee inquiry. Is the customer asking about:
- General pricing / fee schedule (custody AUC, trading, withdrawal)?
- A specific on-chain network fee that appears too high or incorrect?
- A discrepancy between BitGo API/report fee data and on-chain block explorer data?
- BitGo service/billing fees (monthly invoices)?
- Identify the customer type. Check whether the customer is an FTX creditor, Cred Inc. user, retail individual, or enterprise/institutional client. Fee structures and applicable resources differ by customer type.
- Check the coin and chain. Network fee behavior varies significantly (e.g., BTC UTXO-based fees, ETH gas fees, TRON Energy-based fees, SUI fees).
- For fee discrepancy reports: Compare the fee returned by the BitGo Transfer API (
feeStringfield) against the on-chain value on the relevant block explorer (e.g., Etherscan, TronScan, mempool.space). Check whether a gas tank is in use (ETH/ERC-20 tokens) and whether TRON Energy was used to pay fees. - For report discrepancies: Compare the Transfer Details report against the Transactions report. Check decimal precision (Transfer Details historically showed only 8 decimal places) and whether gas tank–paid fees are included.
- For BTC fee complaints (too high): Check current network congestion at https://mempool.space/mempool-block/0. If the customer is using the API, ask for the full endpoint, payload (omitting passwords), and response. Determine whether a custom fee or static fee is being used versus BitGo's dynamic fee estimation.
- For API fee estimation errors: Confirm the coin, the endpoint being called, and the exact error message. Some chains (e.g., SUI) require different fee estimation methods than the standard
/tx/feeendpoint. - For BitGo service fee / billing inquiries: Check the customer's enterprise in admin tools to determine their plan (e.g., individual/starter, enterprise) and whether they incur monthly AUC fees or only PayGo fees on withdrawals.
Resolution
Scenario: fee-fees-pricing-bitgo#general-pricing-inquiry
Trigger: Customer asks about general fees, pricing, or fee schedules without a specific technical issue.
Signals: fees, pricing, fee schedule, cost, charges, trading fees, withdrawal fees, custody fees, AUC
Steps:
- Determine the customer type (FTX creditor, retail, enterprise).
- For retail customers, direct them to the retail fee structure page: https://www.bitgo.com/retail-fee-structure/
- For AUC (Assets Under Custody) billing methodology, direct them to: https://bitgo.com/resources/billing-methodology/
- For FTX creditors, provide the applicable withdrawal fees:
- Domestic wires: $16
- International wires: $30
- US Domestic ACH: $1
- ACH withdrawals are only available for U.S. bank accounts.
- No platform fees for holding crypto assets for FTX clients.
- Important: The fee waiver for FTX creditors applies to trading fees only (USD-to-crypto conversion). Bank transfer fees (wire/ACH) are NOT waived and apply to all customers, including FTX creditors.
- Refer them to: https://www.bitgo.com/ftx-faq
- For enterprise or detailed commercial pricing inquiries (maker/taker fees, volume-based discounts, specific service tiers), redirect to the Sales team via: https://www.bitgo.com/connect-with-us or sales@bitgo.com. Ask the customer for their geographic location so the correct regional sales team can follow up.
- Clarify that on-chain network fees (gas fees for ETH, miner fees for BTC) are variable and depend on current network conditions, not set by BitGo. The estimated fee is displayed before confirming a withdrawal.
- For accounts with BitGo PayGo fees: this fee is incurred on every withdrawal to a non-BitGo address, charged at the time of withdrawal as an additional cost alongside the normal on-chain fee. It should appear in the Transaction Report downloadable from the UI (9-dot menu > Reports).
Notes: BitGo does not publish a single public fee schedule covering all products. Trading fees, custody fees, and network fees are distinct. Some enterprise accounts do not incur monthly fees and only pay PayGo fees on withdrawals.
"For Service Fee and Fee Structure are you inquiring about the Bitgo Paygo Fee that is incurred on every withdrawal to a non-Bitgo address? This fee is charged at the time of withdrawal and is an additional fee cost in the transaction along with the normal on-chain fee." (ticket #239622)
"For Retail client fees, you may check here: https://www.bitgo.com/retail-fee-structure/" (ticket #280232)
"Fees for the transfers:- Domestic wires - $16 International wires - $30 US Domestic ACH - $1" (ticket #220605)
Scenario: fee-fees-pricing-bitgo#btc-high-network-fee
Trigger: Customer reports that BTC transaction fees appear extremely high (e.g., 12% of transaction value, or 500 sat/vB when mempool shows 50-80 sat/vB).
Signals: BTC, high fee, huge fee, sat/vB, bitcoin congestion, mempool, miner fee, 500 sat/vB
Steps:
- Check current Bitcoin network congestion at https://mempool.space/mempool-block/0.
- If the network is congested, explain to the customer that BTC fees are determined by network conditions and are outside BitGo's control. Fees are higher during periods of congestion.
- If the customer is using the API and believes fees are disproportionately high relative to current conditions, request:
- Full endpoint exactly as called
- Full payload passed (omitting any passwords)
- Full response
- BitGo SDK/Express/NPM version
- Determine whether the customer is using a static/hard-coded fee or BitGo's dynamic fee estimation. Static fees are discouraged as they can result in either overpayment or transactions that fail to confirm.
- For customers wanting to calculate or control fees via API, direct them to these endpoints:
- If the customer sees an anomalously large "Bitgo fee" amount displayed in the UI preview (e.g., thousands of BTC for a small transaction), this may be a display bug. Escalate to Engineering with the wallet ID, enterprise ID, and screenshots.
Notes: BTC fees are UTXO-based: a wallet with many small UTXOs will produce larger transactions with higher fees than a wallet with fewer large UTXOs. Customers should manage deposit patterns accordingly. Known past issues with custom fee transactions on BTC have been reported; check status.bitgo.com for active incidents.
"This is due to Bitcoin network congestion: https://mempool.space/mempool-block/0 This is unfortunately out of our control." (ticket #228685)
"This reported issue has been fixed. Please try again and let us know how it goes." (ticket #274308)
Scenario: fee-fees-pricing-bitgo#eth-fee-discrepancy-api-vs-onchain
Trigger: Customer reports that fees returned by the BitGo API differ from what is shown on Etherscan or another block explorer for the same transaction.
Signals: fee discrepancy, API fee, Etherscan, on-chain fee, feeString, ETH, ERC-20, incorrect fee
Steps:
- Obtain the specific transaction IDs (txids) where the discrepancy is observed.
- Compare the
feeStringvalue from the BitGo Transfer API response with the fee shown on Etherscan for the same transaction. - Check whether the wallet uses a gas tank. If a gas tank pays the fee, the BitGo Transfer Details report may show 0 in the fee column while the Transactions report shows the actual fee amount.
- If the discrepancy is not explained by gas tank behavior, escalate to Engineering with the full API response, the on-chain fee data, and the list of affected transaction IDs. This has been a known bug that required Engineering fixes in the past.
- After Engineering deploys a fix, ask the customer to re-fetch the transaction data and confirm the fee values are now correct.
Notes: A previous case showed that even after an initial "fix" was deployed, discrepancies persisted for certain transactions. Always ask the customer to verify after Engineering confirms resolution.
"Cumberland stated this is still not resolved. They came back stating - 'I just looked at the first one in the list, 0x7711ac6ea3ce17..., and Bitgo's API is currently reporting a fee of 0.0003177677724154 while Etherscan says 0.00246794081140922. Are we sure the fix has happened?'" (ticket #274081)
Scenario: fee-fees-pricing-bitgo#report-fee-discrepancy-transfer-vs-transaction
Trigger: Customer finds fee differences between the BitGo Transfer Details report and the Transactions report for the same transactions.
Signals: Transfer Details, Transactions report, fee difference, decimal precision, rounding, gas tank, report discrepancy
Steps:
- Explain the two known causes of differences:
- Decimal precision and rounding: The Transfer Details report historically showed only 8 decimal places, whereas the Transactions report showed full decimal precision. This has been updated so Transfer Details now shows full precision. Ask the customer to re-download and verify.
- Gas tank fees: The Transfer Details report does not show an amount in the Fee column if the fee is paid by the gas tank. The Transactions report does show the fee amount regardless of whether the gas tank paid it.
- Advise the customer that the gas tank fee exclusion in the Transfer Details report is by design and will not be changed, because: (a) the report was migrated from the legacy system and changes risk introducing issues; (b) other clients may have automation built around the existing format.
- Suggest workarounds:
- Continue to get fees from the gas tank directly.
- Download the Transactions report and map it to the Transfer Details report to obtain fees for the relevant transactions.
- The Transactions report is generally recommended as the more complete data source.
Notes: This applies specifically to ETH and ERC-20 token transactions where a gas tank is in use.
"Transfer Details is not showing an amount in the Fee column if it's being paid for by the gas tank. Transactions is showing the amount in the Fee column whether it's paid for by the gas tank or not." (ticket #211520)
"The Gas Tank fees will not be included in the Transfer Details report... Other clients may have built automation / tooling around this report staying in a specific format, so if we add the fee it may cause issues for them." (ticket #211520)
Scenario: fee-fees-pricing-bitgo#tron-zero-fee-energy
Trigger: Customer reports that TRON (TRX) transactions show a fee of 0 in the BitGo API, but TronScan shows a non-zero fee.
Signals: TRON, TRX, TronScan, fee 0, Energy, zero fee, incorrect fee data
Steps:
- Explain that on TRON, transaction fees can be paid using Energy rather than TRX directly. When Energy covers the fee, the wallet does not pay TRX, so BitGo records the fee as zero in the transfer entry.
- Verify on TronScan whether Energy was used for the specific transactions in question.
- If the customer can confirm that Energy was not used (i.e., TRX was actually deducted from the wallet) and the fee still shows 0, escalate to Engineering. A past case showed that Engineering located and deployed a fix for incorrect zero-fee reporting on TRON transactions where fees were genuinely paid.
- After a fix is deployed, ask the customer to re-fetch the transaction data and verify the fee is now correct.
Notes: Both scenarios (Energy-paid and bug-related zero fees) have been observed. Always verify the on-chain details before escalating.
"The fee is 1.412 TRX, but it is covered through Energy rather than directly from the wallet. For transfers, the fee entry we create reflects only the amount actually paid by the wallet. Since the wallet doesn't pay this fee, we record it as zero." (ticket #241353)
"The engineering team was able to locate the issue and deploy a fix for the transaction. Can you please recheck now if the fee is correct?" (ticket #241353)
Scenario: fee-fees-pricing-bitgo#sui-fee-estimation-error
Trigger: Customer receives a MissingParams error when calling the fee estimation endpoint for SUI or TSUI.
Signals: SUI, TSUI, fee estimate, MissingParams, /tx/fee, must include at least one param: tx
Steps:
- The standard fee estimation endpoint
GET /api/v2/{coin}/tx/feedoes not work the same way for SUI as it does for BTC, BCH, ZEC, and similar coins. - For SUI, the fee estimation requires a different approach. Direct the customer to the SUI-specific documentation: https://developers.bitgo.com/coins/sui
- The customer should use the script-based method described in the SUI coin documentation to estimate fees rather than calling the generic
/tx/feeendpoint.
Notes: The error message returned is: {"error": "must include at least one param: tx", "name": "MissingParams"}. This is expected behavior for SUI—not a bug.
"Our engineering team advised that you can estimate the fee for sui using a script as described below https://developers.bitgo.com/coins/sui" (ticket #266013)
Scenario: fee-fees-pricing-bitgo#low-fee-webhook-setup
Trigger: Customer wants to configure a low-fee alert/trigger for monitoring network fees via webhooks.
Signals: lowFee, webhook, low fee trigger, network fee alert, threshold
Steps:
- The low-fee notification is set up via the Add wallet webhook API endpoint, not through a UI configuration screen.
- Direct the customer to the webhook documentation: https://developers.bitgo.com/api/v2.wallet.addwebhook
- When adding the webhook, the
typeparameter should be set tolowFee. - The customer can use Postman or a similar tool to send the request. Steps:
- Import the BitGo OpenAPI specification into Postman.
- Navigate to: BitGo API Reference > api > v2 > {coin} > wallet > {walletID} > webhooks > POST Add wallet webhook.
- Set the
typetolowFee, provide an access token and wallet information. - Send the request.
- After setup, the webhook should be visible in the wallet's webhook list in the UI.
- Also refer to: Create Webhooks in BitGo Docs.
Notes: There is no UI-based configuration screen for setting a low-fee threshold. This is API-only.
Scenario: fee-fees-pricing-bitgo#wrw-gas-fee-ignored
Trigger: Customer reports that the "Max Fee Per Gas (Gwei)" field in the Wallet Recovery Wizard (WRW) is being ignored and defaults to a fixed value (e.g., 20 Gwei).
Signals: WRW, Wallet Recovery Wizard, Max Fee Per Gas, Gwei, gas fee ignored, unsigned transaction
Steps:
- Ask the customer for the WRW version they are using.
- This was a known bug fixed in WRW release v4.23.3.
- Direct the customer to download the latest WRW release from: https://github.com/BitGo/wallet-recovery-wizard/releases/tag/v4.23.3 (or the latest available release).
- Ask the customer to test with the updated version and confirm the gas fee field is now respected.
Notes: This issue was confirmed in WRW v4.23.1 and earlier. The fix was included in v4.23.3.
Scenario: fee-fees-pricing-bitgo#service-billing-fee-report
Trigger: Customer asks where to find a report of BitGo service/billing fees for accounting purposes.
Signals: service fees, billing, accounting, invoice, BitGo fee report, AUC fee
Steps:
- BitGo does not provide a downloadable service fee report in the UI.
- Check the customer's enterprise in admin tools to determine their plan:
- Some accounts (e.g., individual/starter plans) may not incur monthly AUC fees and may only have PayGo fees on withdrawals.
- Enterprise accounts with monthly billing should have invoicing handled through the billing team.
- If the customer is on a plan with no monthly fees, explain that the BitGo PayGo fee on withdrawals is the only service fee, and it is included in the Transaction Report (downloadable from the UI via the 9-dot menu > Reports).
- If the customer requires historical billing/service fee data, escalate internally to the billing team (Product Operations / Varun L or equivalent). Provide the enterprise name and year requested.
- If the billing team confirms no fee records, relay this to the customer and clarify their fee structure.
Notes: The Transaction Report in the UI includes PayGo fees alongside on-chain fees. There is no separate dedicated billing/service fee report downloadable by customers. For straightforward fee calculation questions where the invoice clearly shows the calculation (e.g., "Is my Asset Fee based on aggregate balance?"), agents can provide a direct answer by explaining what the invoice shows (e.g., "Your invoice shows: AGGREGATE [May 1-31] Average balance of $1,183,045.09 @ 0.000150 = $177.45"). Only escalate to A/R if the customer disputes the calculation, rate, or average balance amount. For requests involving corporate tax documentation (TIN, tax forms such as 1099/15CA/15CB, or corporate registration information), route to BitGo's Finance, Legal, or Compliance department. Support cannot provide corporate tax or identification information.
"We do not have a report for Bitgo service fees to be downloaded from the UI itself." (ticket #239622)
"For Service Fee and Fee Structure are you inquiring about the Bitgo Paygo Fee that is incurred on every withdrawal to a non-Bitgo address? This fee is charged at the time of withdrawal and is an additional fee cost in the transaction along with the normal on-chain fee. Reviewing your account, this is the only thing I can think of that should be enforced on your Enterprise and Wallets. If so, this should be included within the Transaction Report that can be pulled within the UI from the 9-dot menu > Reports." (ticket #239622)
Scenario: fee-fees-pricing-bitgo#token-pricing-unlisted
Trigger: Customer asks how BitGo prices unlisted or unsupported tokens for custody fee calculations.
Signals: unlisted token, pricing methodology, unsupported token, static price, token not on exchange
Steps:
- BitGo gathers token prices via a pricing vendor that aggregates prices across over 180 venues (including exchanges).
- If the token is not supported on any exchange (likely a private, non-freely-traded token), BitGo will resort to a fixed static price. This price varies depending on the token and is typically guided by the token creator/developer.
- To request support for a new token, direct the customer to submit a request via: https://docs.google.com/forms/d/e/1FAIpQLSezbSISDdbRQa7rescWW1q8hvv2f58tFGI3UWekcs__2xKFLg/viewform
Notes: The fixed static price for unlisted tokens varies per token. There is no published average or standard amount.
"We gather prices for tokens via our pricing vendor. They aggregate prices across over 180 venues, including exchanges, and using their methodology, calculate a price. If the token isn't supported on any exchange, most likely its a private token that isn't freely traded. We will then resort to a fixed static price." (ticket #216164)
Scenario: fee-fees-pricing-bitgo#nonce-hole-429-eth-mpc
Trigger: Customer encounters a 429 "Too many requests, slow down!" error during high-throughput ETH MPC withdrawals, resulting in stuck transactions and nonce holes.
Signals: 429, Too many requests, nonce hole, ETH MPC, stuck transaction, Pending Delivery, high throughput, rate limit
Steps:
- Nonce holes on ETH MPC wallets must be resolved manually using the BitGo UI. Navigate to the wallet, cancel the stuck transaction, and use the "Fill Nonce Hole" option.
- There is no API endpoint to programmatically cancel stuck transactions or fill nonce holes. BitGo does not recommend automating this process because fee values can vary, and automated attempts risk overpayment or further stuck transactions.
- If the first transaction gets stuck due to a nonce hole, subsequent transactions will also remain stuck, potentially triggering additional 429 errors. The nonce hole must be cleared before new transactions can proceed.
- For rate-limiting (429 errors): implement exponential backoff and reduce request frequency. The API does not currently provide a
Retry-Afterheader. - Recommend the customer implement queuing or batching logic on their side to reduce the likelihood of hitting rate limits during high-frequency operations.
- BitGo has provided documentation on nonce filling procedures; check with Engineering if the customer needs the latest version.
Notes: This applies specifically to ETH MPC wallets using the /send-coins endpoint via BitGo Express. Nonce management is handled internally by BitGo when using this endpoint, so the customer cannot manage nonces directly.
"We need to fill the nonce hole manually using the UI. Alternatively, we can handle it on our side, but the work remains the same. You will need to do it via the UI, and we will do it using internal commands. There is no specific endpoint for this, as the fees can vary." (ticket #279022)
Related
- bitcoin-transaction-management — Best practices for BTC UTXO management, dynamic fees, and avoiding unconfirmed transaction backlogs
- gas-tank-management — How gas tanks work for ETH/ERC-20 tokens and their impact on fee reporting
- wallet-recovery-wizard-troubleshooting — WRW version issues and recovery workflows