AVAX / AVAX-C / AVAX-P: Common Wallet and Transaction Issues
AVAX / AVAX-C / AVAX-P: Common Wallet and Transaction Issues
Problem
Customers using AVAX on BitGo encounter a range of issues spanning the C-Chain (AVAXC) and P-Chain (AVAXP) wallets. Common symptoms include: wallets stuck in "pending chain initialization," transactions remaining in "signed" status without confirming, the AVAXC gas tank balance not displaying correctly in the UI, failed withdrawals due to insufficient gas or policy denials, errors when generating new addresses, funds not appearing after P-Chain to C-Chain exports, and SDK/API errors when sending AVAXC tokens. These issues affect hot wallets, custody wallets, and Go Accounts across both production and test environments.
Diagnostics
- Wallet initialization status: Check whether the wallet contract has been deployed on-chain using the Snowtrace or Avalanche Subnets explorer (e.g.,
https://subnets.avax.network/c-chain/address/<address>). Compare with the wallet state in the BitGo admin tool. - Gas tank balance: Verify the AVAXC enterprise gas tank (fee address) has sufficient funds. Check both the on-chain balance of the fee address and the balance displayed in the BitGo UI. A mismatch indicates an indexer or display issue.
- Transaction state: Use the BitGo admin tool (
bga) to inspect the transaction hash — check if it is in the block chain, in the send queue, and whether wallet transfer records showconfirmedorsigned. Runbga indexercommands as needed. - Nonce issues: Check the fee address nonce on-chain versus what BitGo expects. A nonce hole (gap) can block all subsequent transactions from that fee address.
- Indexer health: Check
https://status.bitgo.com/for any ongoing AVAXC indexer incidents. Indexer delays can cause deposits to not appear, transactions to stay in "signed" state, and address initialization to hang. - Policy evaluation: If the error is
"denied by policy", retrieve the evaluation ID from the error response and look up the triggered policy rules in the admin tool. Identify which whitelist or approval policy is blocking. - API user permissions: For address creation 404 /
"key not found"errors, verify the API token user has Spender or Admin permissions on the specific AVAXC wallet. For account-based coins, users need explicit wallet-level permissions. - Token contract address: For token balance issues (e.g., XSGD on AVAXC), confirm the customer is using the token contract address supported by BitGo, not a different contract for the same asset.
- SDK version and token gating: For SDK errors like
"coin in txPrebuild did not match that in txParams supplied by client", check the SDK version and whether the token (e.g.,avaxc:ticov2) is gated and requires enablement on the user's account. - P-Chain to C-Chain export status: Confirm whether the customer completed both the export step AND the finalize/import step. An export from P-Chain requires a separate import action on the C-Chain wallet.
Resolution
Scenario: avax-avaxc-cchain-pchain#wallet-initialization-stuck
Trigger: A newly created AVAXC wallet remains in "pending chain initialization" and does not deploy on-chain, despite the gas tank being funded.
Signals: pending chain initialization, wallet not initialized, address pending on-chain initialization, contract creation
Steps:
- Verify the gas tank (fee address) for the enterprise has sufficient AVAXC funds by checking the fee address on-chain.
- Check
https://status.bitgo.com/for any active AVAXC incidents that may be causing initialization delays. - If no platform-wide incident exists, escalate to engineering via the internal Slack channel (C053T7939M0) to investigate whether the indexer missed the contract creation transaction.
- Engineering may need to manually reindex the wallet initialization transaction. Once resolved, confirm the wallet shows as initialized in the BitGo UI.
- If the issue was a platform-wide AVAXC outage, advise the customer to retry once the status page shows resolved.
Notes: In one confirmed case, the root cause was that the BitGo indexer missed the contract creation transaction for initializing the wallet. For testnet (tavaxc), an AVAXC address does not exist on-chain until it receives a confirmed transaction — address creation only registers the address internally.
"Our engineering team found our indexer missed the contract creation transaction for initializing the wallet." (ticket #70304)
"The message you are seeing occurs when the address details endpoint is accessed before the address has been initialised on the test Avalanche C Chain. On AVACX network an address does not exist on chain until it receives a confirmed transaction." (ticket #270782)
Scenario: avax-avaxc-cchain-pchain#address-creation-pending-or-slow
Trigger: Customer calls the create address API and the response shows "pendingChainInitialization": true without an address field, or the address takes hours/days to initialize.
Signals: address pending on-chain initialization, pendingChainInitialization, address not returned, slow address generation, addressConfirmationWebhook
Steps:
- Confirm the gas tank has sufficient AVAXC. Address creation on AVAXC requires an on-chain contract deployment funded by the gas tank.
- Check
https://status.bitgo.com/for active incidents. - For the API behavior where the
addressfield is missing from the create-address response: this is expected for AVAXC. The address is deployed on-chain asynchronously. The response will include"pendingChainInitialization": true. The address will be available approximately 15–20 seconds after the call once the on-chain deployment confirms. - Direct the customer to the developer documentation for Avalanche C-Chain wallet construction:
https://developers.bitgo.com/coins/avalanche-contract-chain-(c-chain). - If addresses remain pending for extended periods (hours/days), escalate to engineering. They may need to delete stuck pending addresses and reset the nonce on the fee address.
Notes: For account-based coins like AVAXC, the API token user must have Spender or Admin permissions on the wallet to create an address. If the user lacks permissions, the API returns a 404 "key not found" error.
"Please reference the following Developer Docs link for Avax, specifically the Wallet Construction section which speaks to this: https://developers.bitgo.com/coins/avalanche-contract-chain-(c-chain)" (ticket #268611)
"This endpoint https://developers.bitgo.com/api/v2.wallet.newaddress generates a new address, and will need around 15 seconds for the address to get deployed on chain." (ticket #244159)
Scenario: avax-avaxc-cchain-pchain#api-user-missing-wallet-permissions
Trigger: API calls to create an address or send from an AVAXC wallet return a 404 with "error":"key not found" or similar permission errors.
Signals: key not found, 404, address creation issue, API token, permission, Spender, Admin
Steps:
- Identify the email address of the user who created the API access token being used.
- Check whether that user has Spender or Admin permissions on the affected wallet. For account-based coins (including AVAXC), creating an address requires at least Spender-level access.
- Instruct the customer's wallet admin to add the API token user to the wallet with appropriate permissions (Admin or Spender) via the BitGo UI: navigate to the wallet → Users → Add user.
- After adding the user, have the customer retry the address creation or transaction.
Notes: This must be done for each wallet individually. The enterprise-level "Users can view all wallets" setting can have an additive effect on the user's ability to create addresses. Future improvements to user management are planned but currently users must be managed per wallet.
"Can you add the API Token user to the affected wallet and retry address creation? I am not showing that user has any permission level on the wallet. They should be Admin to be able to create an address." (ticket #188210)
"For Account Based coins, a user looking to create a new address needs Spender or Admin permissions on the wallet." (ticket #188210)
Scenario: avax-avaxc-cchain-pchain#transactions-stuck-signed-nonce-hole
Trigger: AVAXC withdrawal transactions remain in "signed" status and are not confirmed on-chain. The fee address may have a nonce gap or insufficient funds.
Signals: stuck, signed, not broadcasted, nonce hole, pending, fee address, gas tank empty
Steps:
- Check the fee address balance on-chain. If it is zero or insufficient, the customer needs to fund the gas tank externally (from outside BitGo) since sending from another AVAXC wallet within BitGo also requires the same gas tank.
- Check for nonce holes on the fee address using the admin tool. A nonce gap blocks all subsequent transactions.
- If a nonce hole is identified, engineering can fill it by submitting a transaction with the missing nonce.
- If pending address creation transactions are consuming nonces, engineering may need to: cancel all pending address creation transactions, delete the associated addresses, and reset the nonce on the fee address. Get customer approval before proceeding, as there is a risk of lingering transactions in the mempool.
- Once the fee address is funded and the nonce is corrected, have the customer reinitiate the failed transactions (failed is a final state — it cannot be re-triggered).
Notes: Customers should be advised to fund the gas tank with at least 10 AVAX from outside BitGo if the gas tank is empty. Failed transactions are final and must be reinitiated manually via the BitGo UI or API.
"Our plan involves canceling all pending address creation transactions, deleting the associated addresses, and resetting the nonce on your fee address (ETH gas tank). This reset will enable you to perform transactions from your wallets." (ticket #225440)
"We have filled a nonce hole which resolved transaction... We do see following 2 transactions are still stuck and have escalated this to our Engineering team." (ticket #224992)
Scenario: avax-avaxc-cchain-pchain#gas-price-too-low-error
Trigger: AVAXC withdrawals or address generation fail with error: gasPrice must be above 25000000000 (25 Gwei), got 2000000002.
Signals: gasPrice must be above 25000000000, 25 Gwei, 2000000002, gas price, address generation
Steps:
- Check
https://status.bitgo.com/— this error has been associated with known AVAXC incidents where the default gas price calculation returned a value below the network minimum. - As a temporary workaround, advise the customer to set a max fee higher than 50 Gwei when initiating the transaction, or select the "fastest" fee option. This overrides the default gas price.
- If an incident is active, inform the customer that engineering is deploying a fix and provide updates from the status page.
- Once the fix is deployed, have the customer retry with default fee settings.
Notes: This was a platform-side bug where the default fee estimate was too low for the AVAX C-Chain minimum gas price. The fix was deployed by the engineering team.
"The current ETA is 2 hours, meanwhile to get around the error, if you use a max fee of anything higher than 50 the transaction will get processed. Currently the default fee being used is triggereing the error, thus setting the fastest fee, with a max of higher than 50 will get the transaction initiated." (ticket #278235)
Scenario: avax-avaxc-cchain-pchain#indexer-delay-deposits-not-appearing
Trigger: An AVAXC deposit is confirmed on-chain but does not appear in the BitGo wallet, or transactions remain stuck at "signed" due to indexer delays.
Signals: indexer delay, deposit not showing, reindex, transaction not reflected, confirmed on-chain but not in BitGo
Steps:
- Verify the transaction is confirmed on-chain using the Avalanche explorer (e.g.,
https://subnets.avax.network/c-chain/tx/<hash>). - Check
https://status.bitgo.com/for active AVAXC indexer incidents. - If a platform incident is active, inform the customer and monitor the status page for resolution.
- If no incident is listed, use the admin tool to run
bga indexer execute INDEX_TRANSACTION <txhash>to manually reindex the transaction. Note: this command will not automatically correct wallet or address balances — manual balance updates may be needed afterward. - Confirm the transaction reflects correctly in the wallet after reindexing.
Notes: Indexer delays have been a recurring issue for AVAXC. In some cases, engineering identified and resolved the root cause of the indexer falling behind. Always check the status page first.
"Our engineering team report this was a result of an indexer delay on our part which has since been resolved." (ticket #249895)
"We are experiencing an indexer delay for AVAXC. Our engineering team is working diligently to resolve." (ticket #269250)
Scenario: avax-avaxc-cchain-pchain#gas-tank-balance-not-showing-ui
Trigger: The AVAXC gas tank shows 0 or an incorrect balance in the BitGo UI, but the correct balance is visible on a block explorer.
Signals: gas tank balance, not showing, UI, incorrect balance, fee address
Steps:
- Confirm the actual balance of the gas tank fee address on-chain using the Avalanche explorer.
- Escalate to engineering to investigate and fix the gas tank balance display in the BitGo system.
- Once engineering confirms the fix, verify the balance is correctly reflected in the UI.
Notes: This is a backend indexing/display issue. The funds are safe on-chain even if the UI shows an incorrect balance.
"We have fixed the gas tank balance issue, now you should be able to see the correct balance in gas tank for AVAX-c." (ticket #238255)
Scenario: avax-avaxc-cchain-pchain#p-chain-c-chain-export-import-incomplete
Trigger: Customer exported AVAX from P-Chain to C-Chain (or vice versa) but funds do not appear in the destination wallet. The export transaction shows as confirmed.
Signals: export, import, P-chain, C-chain, finalize, funds not reflected, missing balance, avaxp, avaxc
Steps:
- Confirm the export transaction is confirmed on-chain.
- Ask the customer whether they have completed the finalize/import step. Moving AVAX between C-Chain and P-Chain is a two-step process: export from the source chain, then import (finalize) on the destination chain.
- Direct the customer to finalize the export in the destination wallet. In the BitGo UI, navigate to the destination C-Chain wallet and look for the option to finalize pending exports.
- Refer the customer to the AVAX-C transactions guide:
https://bitgo.my.site.com/ResourceCenter/s/article/AVAX-C-Transactions-1677411859486. - If the import step is not available or fails, escalate to engineering.
Notes: You CANNOT send funds directly from an AVAX-P wallet to another AVAX-P wallet. You must export to an AVAX-C wallet first, then export to a new AVAX-P wallet if needed. The export from C-Chain must also be initiated before an import on P-Chain is available.
"The issue was that we had not finzlied the export. This has now been done, so it should all be sorted." (ticket #167506)
"Yes, we can confirm that the transaction has been successfully completed. The next step would be to finalise the export to a destination C-Chain wallet in order to complete the process." (ticket #254694)
"You will need to export from your AVAX-C wallet first. Please refer to this guide and let us know if you have any question - https://bitgo.my.site.com/ResourceCenter/s/article/AVAX-C-Transactions-1677411859486" (ticket #270586)
Scenario: avax-avaxc-cchain-pchain#policy-denial-whitelist
Trigger: AVAXC withdrawal or C-to-P export fails with "denied by policy" error referencing a policy evaluation ID.
Signals: denied by policy, whitelist, policy evaluation ID, auto reject, non-whitelisted address
Steps:
- Obtain the evaluation ID from the error message.
- Look up which policy rules were triggered using the admin tool.
- Common causes:
- The destination address is not whitelisted on the wallet or enterprise.
- The wallet has only one admin and the policy requires admin approval, but the initiator is that same admin, and the policy does not allow the initiator to also approve. Since the state cannot be resolved, the denial is returned.
- Advise the customer to resolve by one or more of:
- Add the destination address to the wallet's whitelist.
- Add an additional Admin to the wallet, or add a Spender who initiates so the Admin can approve.
- Edit the policy to allow the initiator to also provide approval.
- Archive the policy if it is no longer needed.
- For C-to-P exports specifically, ensure the P-Chain destination address is whitelisted at both the wallet and enterprise level if both levels have whitelist policies.
Notes: Custody wallets can only send to whitelisted addresses by default. Enterprise-level and wallet-level whitelist policies are evaluated independently — an address whitelisted at the enterprise level may still be rejected if a wallet-level policy also enforces whitelisting and the address is not whitelisted there (or vice versa).
"This transaction is triggering policy 672c129a-4594-4889-9ef8-9ddc2516b45c which enforces needing the destination address be whitelisted on the wallet. If the address is not whitelisted on the wallet, the policy looks to gain approval from a wallet Admin. Currently, there is only a single wallet admin and the policy is not configured to allow the initiator of the transaction to also provide any needed admin approvals. Since the state cannot be resolved, the denial is returned." (ticket #283150)
Scenario: avax-avaxc-cchain-pchain#sdk-token-transfer-errors
Trigger: SDK token transfers on AVAXC fail with "coin in txPrebuild did not match that in txParams supplied by client" or "insufficient balance" when using individual SDK packages.
Signals: coin in txPrebuild did not match, txParams, avaxc:ticov2, token transfer, SDK, gated token, insufficient balance
Steps:
- Check whether the token is gated. Gated tokens require explicit enablement on the user's account before they can be used via API/SDK. Ask for the email address of the user who created the authenticating access token.
- If the token is gated, request engineering or the appropriate internal team to enable the token on the user's account.
- For the
"coin in txPrebuild did not match"error when using individual SDK packages (@bitgo/sdk-coin-avaxc,@bitgo/sdk-core,@bitgo/sdk-api): this may be a version compatibility issue. The monolithicbitgopackage (e.g.,~39.25.1) may work correctly while individual packages do not. Advise the customer to test with the monolithicbitgopackage as a workaround. - For token transfers via SDK, the correct pattern (per confirmed working code) is:
- Use
bitgo.coin('avaxc:ticov2')to get the coin instance. - Use
wallet.send()withtokenName: 'avaxc:ticov2'.
- Use
- Escalate to engineering if the issue persists with the recommended SDK version and configuration.
Notes: The "insufficient balance" error showing "balance":"0" may occur when accessing the wallet using the wrong coin type (e.g., avaxc instead of avaxc:ticov2), or when the token is gated and not yet enabled.
"This token is gated. A user looking to use this token will need to have this allowed on their account. What is the email address of the user who created the authenticating access token for these?" (ticket #199192)
Scenario: avax-avaxc-cchain-pchain#wrong-token-contract-deposits-not-indexed
Trigger: Customer deposited an AVAXC token (e.g., XSGD) but the balance does not appear in the wallet, despite the transaction being confirmed on-chain.
Signals: balance not showing, token contract, unsupported contract, XSGD, wrong contract address
Steps:
- Identify the token contract address used for the deposit by examining the on-chain transaction.
- Compare it against the token contract address supported by BitGo for that asset. BitGo only indexes deposits sent to the supported contract address.
- If the customer used an unsupported contract, advise them to use the correct supported contract for future deposits.
- For recovery of funds sent to an unsupported contract, escalate to engineering. In some cases, engineering can update the supported contract address, but this requires a release cycle.
Notes: Different token versions or proxy contracts for the same asset may have different contract addresses. Only the contract registered in BitGo's system will be indexed.
"Our engineering team advised that the transactions are not indexed because the contact used is not supported on our end." (ticket #259284)
Scenario: avax-avaxc-cchain-pchain#withdrawal-failing-funds-on-receive-address
Trigger: AVAXC withdrawals repeatedly fail despite sufficient wallet and gas tank balances. Funds may be stuck on a receive (forwarding) address rather than the root address.
Signals: failed withdrawal, sufficient balance, flush, receive address, root address
Steps:
- Check whether the wallet's spendable balance resides on the root (base) address or on a receive/forwarding address.
- If funds are on a receive address and not forwarded to the root, engineering can manually flush the balance from the receive address to the root address.
- After flushing, have the customer reinitiate the withdrawal.
Notes: This scenario was resolved by flushing the balance from a receive address to the root address, after which the customer's transaction succeeded.
"We have flushed the balance from one of the receiving address to your root address. Please try to re-initiate the transaction now." (ticket #277916)
Scenario: avax-avaxc-cchain-pchain#go-account-gas-tank-funding-error
Trigger: Customer attempts to fund the AVAXC gas tank from a Go Account wallet and receives an error.
Signals: Go Account, gas tank, funding error, fee address
Steps:
- This is a known issue where transferring funds from a Go Account directly to the gas tank fee address may fail.
- As a workaround, advise the customer to fund the gas tank fee address from an external (non-BitGo) address, since any withdrawal from an AVAXC wallet on BitGo also pulls from the same gas tank.
- Escalate to engineering for a permanent fix. Engineering has resolved this issue in past cases with a production release.
- Confirm the gas tank has a small balance to allow immediate wallet creation and withdrawals if needed.
Notes: Go Account transactions may not produce a standard on-chain transaction hash visible in block explorers. Internal transactions can be found on the explorer's "Internal Txs" tab.
"Our engineering team found an issue with the ability to transfer funds from the Go Account directly to the Gas Tank Fee address. They are working on a fix which is slated for release to production on Thursday. If the funding of this address is needed before this fix is implemented, they recommend funding the Fee address from a non-Go Account means if possible." (ticket #262080)
Scenario: avax-avaxc-cchain-pchain#gas-tank-withdrawal-to-custody-wallet
Trigger: Customer requests to move excess AVAXC from the enterprise gas tank to a custody wallet.
Signals: gas tank, withdraw, move funds, custody wallet, video verification
Steps:
- To empty or partially withdraw from a gas tank, the customer must schedule a video verification call with BitGo support.
- The customer needs to provide: Enterprise Name, Enterprise ID, Enterprise Email, Gas Tank Balance, Gas Tank Address, and Destination Address.
- Schedule the call using the Calendly link:
https://calendly.com/bitgo-client-delivery/videoid. - During the call, verify the customer's identity and the details provided.
- After verification, execute the gas tank withdrawal to the specified destination address.
Notes: Gas tank withdrawals are an operational action performed by BitGo support after identity verification. The customer cannot self-service this action.
"If you wish to empty your gas tank then you have to schedule a video verification call with and have to verify the below mentioned information. Once all the information will be verified we will transfer your funds from your gas tank to the provided destination address." (ticket #268354)
Scenario: avax-avaxc-cchain-pchain#ftx-settlement-avaxc-spendable-zero
Trigger: FTX creditor sees a confirmed AVAXC balance in their wallet but "Available to spend: 0 AVAXC" and cannot withdraw.
Signals: Available to spend: 0, FTX, settlement, spendable balance, cannot withdraw
Steps:
- Inform the customer that funds are not immediately available for withdrawal after trading/settlement due to settlement processing time.
- Advise the customer to try again in 24–48 hours.
- If the issue persists after 48 hours, request the wallet ID and error details for further investigation.
- Refer the customer to the FTX FAQ:
https://www.bitgo.com/ftx-faq.
Notes: This applies specifically to FTX creditor settlement distributions and is not a general AVAXC issue.
Scenario: avax-avaxc-cchain-pchain#unsupported-token-request
Trigger: Customer asks whether a specific ERC-20 token on AVAX (e.g., COQINU) is supported for custody.
Signals: unsupported token, ERC-20, AVAX, custody, token listing request
Steps:
- Check the BitGo supported assets list to confirm the token is not currently supported.
- Inform the customer that the token is not supported and cannot be custodied at this time.
- Direct the customer to submit a token support request via the Google Form:
https://docs.google.com/forms/d/e/1FAIpQLSezbSISDdbRQa7rescWW1q8hvv2f58tFGI3UWekcs__2xKFLg/viewform. - Note that no timeline or outcome can be guaranteed — the coin team reviews each request thoroughly.
Notes: Unsupported tokens sent to a BitGo wallet address will not be indexed or displayed. Do not promise listing outcomes or timelines.
Scenario: avax-avaxc-cchain-pchain#encryptedprv-missing-key-error
Trigger: Users cannot initiate transfers from AVAX (or other) wallets due to a missing encryptedPrv on their keychain, preventing transaction signing.
Signals: key missing encryptedPrv, unable to initiate transfers, keychain issue, remove and re-add user
Steps:
- The workaround is to remove the affected user from the wallet and re-add them. This resyncs the keychain with the user's current credentials.
- If the user changed their login password after being added to the wallet, the wallet share may reference the old password. Removing and re-adding the user resolves this.
- Suggest the customer clear browser cache and update Chrome to the latest version as a first step, as this can also appear as a caching issue.
- BitGo does not currently have a tool to identify all wallets where a user's keychain is in this broken state. The customer would need to check each wallet manually or provide a list of affected wallets for investigation.
Notes: This issue is not specific to AVAX — it can affect any coin type. It commonly occurs after a user password change when the wallet share was established with the old password.
"When viewing the audit logs we can see that your team changed the password sometime in 2023 (2023-01-04 09:41:23.000), whereas the wallet was shared in 2022. If the user used their login password for this wallet, he should try and use the new login password." (ticket #244683)
Related
- avax-hot-wallet-creation — Gas tank requirements and AVAXC wallet setup procedures.
- avax-c-token-transaction-process — Depositing and withdrawing AVAXC tokens including address reuse behavior.
- avax-transactions — General AVAX-C and AVAX-P send/receive and export/import workflows.