For more information about managing transactions, see
Transaction Rate Limits and Optimizations.
Transaction states
Transactions go through various states after initiation to indicate if they’ve begun processing, are identifiable on the blockchain, complete, failed, or require further action, such as when a transaction becomesSTUCK.
Specific actions, like canceling or accelerating a transaction, can only be
taken when a transaction is in a specific state.
Canceling a transaction can only occur when a transaction is in the INITIATED,
QUEUED, or SENT states.
Accelerating a transaction can only occur when a transaction is in the SENT or
STUCK state.
If a transaction cannot be successfully completed, it enters the FAILED state
and has accompanying errorReason and errorDetails fields that describe the
failure.
The following table describes the possible states of a transaction:
CONFIRMED may be omitted or arrive out of order. On instant finality
blockchains such as Arc, Circle Wallets transitions directly from SENT to
COMPLETE, skipping CONFIRMED. On other blockchains, webhook delivery order
is not guaranteed, so a CONFIRMED notification may arrive after COMPLETE or
be omitted entirely. Design your application to treat both CONFIRMED and
COMPLETE as signals that a transaction has been included in a block.Transaction errors
If a transaction cannot be completed and enters the FAILED state, the transaction object has accompanyingerrorReason and errorDetails fields that
describe the failure.
Challenge states
Challenges go through several statuses to indicate whether they have been presented to the user, completed, and more. If a challenge cannot be successfully completed, it enters theFAILED state
and has accompanying errorCode and errorMessage fields that describe the
failure.
ESTIMATION_ERROR details
When a transaction fails withESTIMATION_ERROR, the errorDetails field
provides specific information about why the transaction estimation failed.
Below are the common errorDetails values grouped by category, along with their
causes and recommended remedies.
Insufficient balance errors
These errors occur when the wallet or contract doesn’t have enough tokens to complete the transaction.Blocklist and access control errors
These errors occur when an account is restricted from performing certain actions.Common cause: Sending USDC to the USDC contract addressThe USDC contract address itself is intentionally on Circle’s denylist to
prevent developers from accidentally sending USDC tokens to the contract
address. Tokens sent to a token contract address would be permanently locked and
unrecoverable through normal means.
Allowance and approval errors
These errors occur when token spending approvals are missing or insufficient.Signature and authentication errors
These errors occur when cryptographic signatures are invalid or expired.Smart account (ERC-4337) errors
These errors occur with smart contract wallets using account abstraction.Invalid parameters
These errors occur when transaction parameters are incorrect.Timeout and execution errors
These generic errors can occur during transaction execution.
For guidance on diagnosing and resolving failed transactions, see
Troubleshoot failed transactions.