BTC - Transaction already exists in mempool

  • Errors: 40X
  • ErrorCode: btc.blockchain.broadcast.error
  • Message: Unable to broadcast transaction. Transaction already exists in mempool
  • Cause: txn-mempool-conflict

When attempting to broadcast a Bitcoin transaction, you may face a mempool rejection issue. When this happens, the rejection comes from the validator method testmempoolaccept. Tatum only adds a bit of clarity to the messaging.

else if (
        rejectReason === 'txn-already-known' ||
        rejectReason === 'txn-already-in-mempool' ||
        rejectReason === 'txn-same-nonwitness-data-in-mempool' ||
        rejectReason === 'txn-mempool-conflict'
      ) {
        throw this.createError(BtcBasedErrors.TX_ALREADY_IN_MEMPOOL()).withCauseMessage(rejectReason)


Find more information at the following link.

Good to know

There can be several reasons for this rejection coming from the mempool validator:

  • Invalid Transaction Format: The transaction you're trying to broadcast might have an invalid format or structure. Bitcoin transactions are required to adhere to specific standards, and any deviation from these standards could result in an error when trying to broadcast the transaction.
  • Double Spending: Bitcoin's security model relies on preventing double spending, where the same funds are used in multiple transactions. If the transaction you're trying to broadcast is attempting to double-spend the same inputs, it will likely be rejected.
  • Insufficient Fees: Transactions on the Bitcoin network require a certain amount of transaction fees to incentivize miners to include them in a block. If the transaction fee is too low, miners might not prioritize your transaction, leading to rejection.
  • Transaction Inputs Already Spent: If the inputs of the transaction you're trying to broadcast have already been spent in a previous transaction that's confirmed on the blockchain, your transaction will be considered invalid and rejected.
  • Network Connectivity Issues: If there are network connectivity issues between your node and the rest of the Bitcoin network, it might prevent the transaction from being broadcasted successfully.

To troubleshoot and identify the specific reason for your error, inspect the details of the transaction you're trying to broadcast, including its inputs, outputs, fees, and format.