Solana - Transaction has not been confirmed yet (Error 403)

When broadcasting a Solana transaction, you may face an error as seen below. This happens when a transaction takes longer than 60 seconds to get confirmed. Tatum core-API and the SDK can only wait for so long to get a response. The transaction may be confirmed or dropped by the Solana network.

Example error:

{
    "statusCode": 403,
    "errorCode": "erc20.transfer.error",
    "message": "Failed to transfer the token",
    "cause": "Transaction {##tx_hash##} has not been confirmed yet. The transaction could still be accepted by the Solana network. We advise to manually check if the transaction has been dropped or accepted before you try to send the transaction again"
}

Solana Transaction Broadcast Workflow

  1. Tatum users are encouraged to attempt sending their transactions over Solana, in sequence, one by one.
    • Sending transactions in parallel can cause duplicated transaction IDs.
  2. Tatum checks data coherence on the request and sends it to the Solana network.
  3. A check on Tatum's side loops "x" times up to 60s waiting for a transaction confirmation.
    1. This can take a minimum of 1s.
    2. Tatum core-API and SDK wait limit is 60 seconds, where at this point you will get an error 403. Beyond this moment, the Solana network can still accept or drop the transaction.
  4. Tatum returns a response with a transaction ID/hash OR with a 403 error.
  5. If you get an error, you will have to manually check if the transaction was accepted or rejected by the Solana network beyond the moment we returned the error.
    1. You may need to re-sign the transaction.
    2. This is an expected behavior with the Solana network.

📘

Additional information on Dropped transactions is available in the following article.