Troubleshooting Transaction Broadcasting Issues on EVM Chains Using Tatum APIs and KMS

Summary

Some customers may face occasional issues with broadcasting transactions on EVM-compatible chains (e.g., Binance Smart Chain, Ethereum), whether signing the transaction directly with a PrivateKey or using Tatum's Key Management System (KMS). After the transaction is broadcasted, it may remain pending, drop or fail as seen on chain explorers like BscScan or Etherscan.


Affected Components:

  • Chains: All EVM-compatible chains (e.g., BSC, Ethereum, Polygon)
  • REST API Endpoints: /v3/{chain}/transaction
  • KMS Version: 8.0.0

Technical Overview

The /v3/{chain}/transaction endpoint involves multiple RPC calls behind the scenes:

  1. eth_gasPrice – Retrieves the current gas price from the network.
  2. estimate_gas – Estimates the gas required for the transaction.
  3. eth_balance – Checks the balance of the sending account.
  4. eth_getTransactionCount – Retrieves the current number of transactions from the sender's address.
  5. Sends the transaction to KMS for signature (optional):
    • KMS is self-hosted. Using KMS for signature and broadcast limits error logging and visibility on Tatum's side.
  6. sendRawTransaction – Broadcasts the signed transaction to the network.

Because this endpoint may perform several operations automatically (depending on the level of manual input from the user), it behaves differently from a direct RPC call such as sendRawTransaction. These automated processes may introduce issues in certain scenarios.


Common Root Cause Issues

  1. Underestimated Gas Fees
    The automatic gas estimation (eth_gasPrice) may return fees that are too low, causing the transaction to be rejected by the network. In such cases:
    • Retry the transaction with adjusted fees.
    • Manually specify the gas price to ensure it meets network requirements.
  2. Incorrect Nonce Fetching
    The nonce value, which determines the transaction order, may not be correctly fetched. This can result in:
    • Transactions being stuck or rejected.
    • The need to manually retrieve and set the correct nonce.

Workarounds

  1. Manually Adjust Gas Fees

    • Use the fee estimation guide for manual gas fee calculations.
    • Set a higher gasPrice and GasLimit manually when submitting the transaction.
  2. Manually Retrieve the Nonce

    • Use the eth_getTransactionCount RPC call to manually fetch the correct nonce before broadcasting your transaction.
  3. Ensure KMS Is Up to Date
    Make sure you are using the latest version of Tatum KMS. Engineering support is only provided for the latest releases. View the latest KMS releases and commands.

  4. Use Tatum RPC Gateway for Full Control
    To avoid issues with automated handling, use Tatum's RPC Gateway for direct transaction broadcasting. This gives you full control over:

    • Gas fees
    • Nonce values
    • Transaction parameters

Example Scenario (BSC Mainnet)

Problem:
A transaction is signed using KMS for BSC Mainnet. The transaction hash is returned successfully, but the transaction remained pending on BscScan, to be dropped later on.

Investigation Results:

  • The transaction was processed by Tatum's nodes, suggesting no node issues.
  • The transaction was later rejected due to insufficient gas fees.

Conclusion:
The issue was likely caused by underpriced gas from automated fee estimation and/or an incorrect nonce.


Contact Support

If you continue to face issues after trying the above solutions, please contact Support with the following details:

  • Chain and endpoint details (/v3/{chain}/transaction)
  • KMS Log (when applicable)
  • Transaction hash and explorer link (e.g., BscScan/Etherscan)
  • Full REST API request payload with response body.
  • Error messages or logs