Transaction Queue Limits
Blockchain Account Queue Limit
EVM-compatible blockchains typically use a Mempool system. The Mempool queues transactions sent from a wallet up to a certain limit defined by the full node. If you exceed this limit, you receive an error from the full node. All queued transactions in the Mempool can potentially be included in a single block. Therefore, you can estimate the theoretical transaction throughput asqueueLimit / blockTime. However, various factors can influence whether your
transaction gets included in a block, such as priority fees, network congestion,
and network liveness. In contrast, the Solana blockchain does not use a Mempool
system and, thus, does not have a queue limit. This contributes to its
transaction throughput being significantly higher.
Account queue limit in different blockchains
| Blockchain | EOA wallet | SCA wallet |
|---|---|---|
| Ethereum | 32 transactions | 1 transaction |
| Polygon | 16 transactions | 1 transaction |
| Avalanche | 32 transactions | 1 transaction |
| Solana (no Mempool) | Unlimited | Not supported by PW |
Circle Wallets Transaction Queue Limit
The overall transaction throughput is fundamentally constrained by the blockchain account queue limit and the blockchain’s inherent throughput. To mitigate the impact of these limitations, Circle Wallets provide a queuing mechanism for transactions that exceed the blockchain limit for a certain duration. There is a limit on the number of transactions your wallet can queue in the Circle Wallets service to prevent resource wastage and false expectations. This limit affects the user experience when too many transaction requests are made. When you reach this limit, you receive an error message:“Wait for pending transactions to be included on the blockchain before
submitting new requests. EVM chains restrict the number of queued transactions
per sender address.” (Error code 155264)
INITIATED, CLEARED,
QUEUED, SENT, STUCK.
Client-side Optimizations
While transaction queuing provides a convenient feature, fee fluctuations and network congestion can still impact transaction processing times. Below are some tips to ensure a smooth experience, especially when dealing with a high volume of transaction requests.Higher Fees
Consider setting thefee_level parameter to at least MEDIUM or HIGH. This
ensures that your transactions are processed with higher priority in a
reasonable timeframe, reducing delays for subsequent transactions.
Managing Transactions
This section describes how to monitor and manage transactions that are pending but still processing normally (for example, in theQUEUED or SENT states).
If a transaction remains unconfirmed for an extended period and enters the
STUCK state, see Handling Stuck Transactions.
You can monitor and manage pending transactions in several ways.
Recommended approachUse webhook notifications as the primary method for
tracking transaction status. Webhooks provide real-time updates and are more
efficient than polling API endpoints. If you need to proactively check
transaction status or implement custom retry logic, you can also use the Get or
List API endpoints, but be aware that frequent polling may lead to increased
resource use and rate limiting.
- Monitor Transaction Status: Use the get transaction API if you know the transaction ID, or the list transactions API to query multiple transactions or filter by state.
- Cancellation or Acceleration: Use the cancel transaction API or accelerate transaction API to manage transactions that have been pending for an extended period.
- Transaction notifications: Implement webhook events to confirm the completion of transactions before sending more requests.
Handling Stuck Transactions
In rare cases, a transaction might remain unconfirmed onchain for an extended period because its network fee is too low to meet the current blockchain requirements. When this happens, the transaction enters theSTUCK state.
A STUCK transaction is one that has been sent to the blockchain but could not
be included in a block because the network fee is below the level required for
inclusion. This state specifically refers to transactions that are underpriced
relative to current network conditions, such as when gas prices rise during high
congestion, or when the provided feeLevel or the custom priorityFee and
maxFee values are too low.
To resolve a stuck transaction:
- Accelerate it: Use the
accelerate transaction API
to resubmit the transaction with a higher fee. The acceleration API
automatically applies a
HIGHfee level. - Cancel it: If you prefer not to accelerate the transaction, use the cancel transaction API to cancel it before it’s mined. Note that this action also incurs gas fees.
STUCK state, you must either accelerate or
cancel it. Leaving it unresolved may block subsequent transactions from the same
wallet.
The STUCK state is not a terminal failure but a signal that manual or
programmatic intervention is required to ensure confirmation.
For details on asynchronous transaction states and error codes, see
Transaction States and Errors.