Transaction Unconfirmed, Pending, Dropped or Failed

When you broadcast a transaction, you receive a transaction hash (tx_hash / tx_id). At this point, the transaction enters the mempool, the waiting area for unconfirmed transactions. From here, it can follow one of three paths:

  • Confirmed: Included in a block and executed successfully.
  • Failed: Included in a block, but "execution reverted". Gas fees are still consumed.
  • Dropped: Never included in a block and eventually removed from the mempool.

📘

Note

Once a transaction is broadcast and a hash is returned, its outcome is entirely determined by the blockchain. Tatum has no influence whether transactions are confirmed, rejected, or dropped.

Transaction Outcomes

1. Confirmed

The transaction is successfully mined into a block. It becomes part of the blockchain’s permanent record.

🚧

Attention

Block reorganisations and forks, though rare and unpredictable, can invalidate a transaction that was initially confirmed. Such transactions may return to the mempool to await inclusion in a later block, or be dropped altogether. Find more about block finality HERE.

2. Failed

The transaction is included in a block but reverts during a Smart Contract execution. Gas fees are not refunded, even though the transaction failed.

This often occurs in Smart Contract calls when:

  • Execution runs out of gas
  • Contract conditions are not met

3. Dropped

The transaction never makes it into a block and is removed from the mempool. Reasons include low fees, invalid nonce, or replacement by another transaction.

📘

Note

Some block explorers may display dropped transactions until nodes clean their mempools.


How to Check a Transaction by Hash

EVM (like Ethereum) via Tatum REST API:

  • Unconfirmed & Dropped: returns an error
  • Failed: returns successfully. However, "status": false

Example: Unconfirmed or Dropped:

curl --location 'https://api.tatum.io/v3/ethereum/transaction/0xb491a90c665ab8a3bcebb42cbc30ded73bf40eae40d45a365895a33595d347dc' \
--header 'x-api-key: {YOUR_API_KEY}'
//Response:
{
    "statusCode": 403,
    "errorCode": "eth.tx.not.found",
    "message": "Transaction 0xb491a90c665ab8a3bcebb42cbc30ded73bf40eae40d45a365895a33595d347dc not found. Possible not exists or is still pending.",
    "dashboardLog": "https://dashboard.tatum.io/logs?id=65###315a"
}

Example: "Failed":

curl --location 'https://api.tatum.io/v3/polygon/transaction/0x1e755e53f435edb8e0d7b77009acd7e9895392383338db670ad5cf3f47707ac0' \
--header 'x-api-key: {YOUR_API_KEY}'
//Response:
{
  "transactionHash": "0x1e755e53f435edb8e0d7b77009acd7e9895392383338db670ad5cf3f47707ac0",
  "blockHash": "0x0985bef90d3b689084208e0e46b5c5c974e20aa5c06b57705ed617c92c769e46",
  "blockNumber": 10234274,
  //Additional tx data
  "status": false, //Indicating that even though the tx was included in a block, it "failed. 
  "hash": "0x1e755e53f435edb8e0d7b77009acd7e9895392383338db670ad5cf3f47707ac0"
}

UTXO (like Bitcoin) via Tatum REST API:

  • Unconfirmed: returns "blockNumber": null
  • Dropped: returns an error

Example: BTC pending in Mempool

curl --location 'https://api.tatum.io/v3/bitcoin/transaction/61749d00c59548b3b5c6f394a218a1c55b0f99020ca49cbec5c0a590c74ee89a' \
--header 'x-api-key: {YOUR_API_KEY}'
//response:
{
    "blockNumber": null, // Still in mempool
    "fee": 4245,
    "hash": "61749d00c59548b3b5c6f394a218a1c55b0f99020ca49cbec5c0a590c74ee89a",
    "hex": "0200000000...

Example: BTC dropped

curl --location 'https://api.tatum.io/v3/bitcoin/transaction/61749d00c59548b3c5c6f394a218a1c55b0f99020ca49cbec5c0a590c74ee89a' \
--header 'x-api-key: {YOUR_API_KEY}'
//response:
{
    "statusCode": 403,
    "errorCode": "btc.tx.not.found",
    "message": "Transaction 61749d00c59548b3c5c6f394a218a1c55b0f99020ca49cbec5c0a590c74ee89a not found. Possible not exists or is still pending.",
    "dashboardLog": "https://dashboard.tatum.io/logs?id=65c75###22ae3d3"
}

Common Reasons Transactions Are Dropped

  1. Insufficient Fees
    • Max fee per gas or priority fee is below the blockchain’s base fee.
    • During congestion, low-fee transactions may remain pending indefinitely and be dropped.
  2. Nonce Issues (EVM only)
    • Incorrect nonce: doesn’t match the expected account state.
    • Duplicate nonce: already used by a mined transaction.
    • Find more about the "nonce" HERE.
  3. Exceeds Block Gas Limit
    • If the gas limit of the transaction exceeds the block gas limit, the transaction cannot be included in a block.
  4. Transaction Replacement
    • If a new transaction with the same nonce and a higher gas price is broadcast, the original transaction may be replaced and dropped from the mempool.
    • Find more about "replacement" errors HERE.

What to Do if Your Transaction Is Stuck

If your transaction stays pending or is dropped, treat it as a normal part of blockchain behavior. The best approach is to diagnose first, then take corrective action:

  1. Check Status in Explorer or Mempool

    • Confirm whether the transaction is still pending, has failed, or was dropped.
  2. Adjust Fees and Retry (EVM)

    • If pending due to low fees, resend the transaction with the same nonce but a higher gas fee.
  3. Verify Nonce Usage (EVM)

    • Make sure the nonce matches the account’s expected count.
    • If there’s a nonce gap, later transactions will not be processed until the missing one is resolved.
  4. Rebroadcast if Dropped

    • When a transaction disappears from the mempool, you can rebroadcast it with adjusted fees.
  5. Handle Failed Transactions

    • If a transaction was included in a block but failed, it cannot be retried. You’ll need to submit a new transaction with corrected parameters.

Important Information

Transactions getting stuck, dropped, or failed should be expected given the nature of blockchains. Applications must be designed to handle these outcomes, by monitoring status, adjusting fees, and rebroadcasting when necessary