Skip to main content
Version: 1.1.1

Error Reference

All SDK errors extend CCIPError with a machine-readable code, structured context, and isTransient flag. For handling patterns, retries, and contract error parsing, see Error Handling.

Chain and Network

ErrorCodeWhen ThrownRecovery
CCIPChainNotFoundErrorCHAIN_NOT_FOUNDChain selector/ID not in supported networksVerify chain is supported by CCIP
CCIPChainFamilyUnsupportedErrorCHAIN_FAMILY_UNSUPPORTEDChain family not implementedUse supported chain family (EVM, Solana, Aptos, Sui, TON)
CCIPChainFamilyMismatchErrorCHAIN_FAMILY_MISMATCHOperation across incompatible chain familiesEnsure source/dest chains are compatible
CCIPRpcNotFoundErrorRPC_NOT_FOUNDNo RPC endpoint configuredProvide RPC URL

Transaction and Block

All transient — wait and retry.

ErrorCodeWhen ThrownRecovery
CCIPTransactionNotFoundErrorTRANSACTION_NOT_FOUNDTransaction hash doesn't existVerify hash, wait for confirmation
CCIPBlockNotFoundErrorBLOCK_NOT_FOUNDBlock doesn't exist or not finalizedWait for block finalization
CCIPTransactionNotFinalizedErrorTRANSACTION_NOT_FINALIZEDTransaction not yet finalizedWait for finality

Message

ErrorCodeTransientWhen ThrownRecovery
CCIPMessageNotFoundInTxErrorMESSAGE_NOT_FOUND_IN_TXNoTransaction has no CCIP messagesVerify correct transaction hash
CCIPMessageIdNotFoundErrorMESSAGE_ID_NOT_FOUNDYesMessage ID not found in searchProvide OnRamp hint, expand search range
CCIPMessageDecodeErrorMESSAGE_DECODE_FAILEDNoFailed to decode message dataCheck message format compatibility
CCIPMessageBatchIncompleteErrorMESSAGE_BATCH_INCOMPLETEYesNot all messages in batch foundRetry with larger search range
CCIPMessageNotInBatchErrorMESSAGE_NOT_IN_BATCHNoMessage not found in commit batchVerify message ID and sequence number range
CCIPMessageNotVerifiedYetErrorMESSAGE_NOT_VERIFIED_YETYesMessage not yet verified by off-chain systemWait and retry (retryAfterMs: 15000)
CCIPMessageInvalidErrorMESSAGE_INVALIDNoMessage structure is invalidVerify message fields

Lane and Routing

ErrorCodeWhen ThrownRecovery
CCIPOffRampNotFoundErrorOFFRAMP_NOT_FOUNDNo OffRamp for source→dest laneVerify lane exists on CCIP
CCIPLaneNotFoundErrorLANE_NOT_FOUNDLane doesn't existCheck CCIP lane configuration
CCIPOnRampRequiredErrorONRAMP_REQUIREDOnRamp address needed but not providedProvide OnRamp address

Commit and Merkle

ErrorCodeTransientWhen ThrownRecovery
CCIPCommitNotFoundErrorCOMMIT_NOT_FOUNDYesMessage not yet committedWait for DON to commit
CCIPMerkleRootMismatchErrorMERKLE_ROOT_MISMATCHNoCalculated root doesn't match committed rootVerify all messages in batch are included
CCIPMerkleProofEmptyErrorMERKLE_PROOF_EMPTYNoNo proof elementsCheck message inclusion
CCIPMerkleTreeEmptyErrorMERKLE_TREE_EMPTYNoNo messages to hashVerify batch contains messages

Token

ErrorCodeWhen ThrownRecovery
CCIPTokenNotFoundErrorTOKEN_NOT_FOUNDToken address invalid or not foundVerify token address
CCIPTokenNotConfiguredErrorTOKEN_NOT_CONFIGUREDToken not configured in registryCheck TokenAdminRegistry
CCIPTokenNotInRegistryErrorTOKEN_NOT_IN_REGISTRYToken not in admin registryRegister token with CCIP
CCIPTokenDecimalsInsufficientErrorTOKEN_DECIMALS_INSUFFICIENTToken decimals too low for transferUse different token or adjust amount
CCIPTokenPoolChainConfigNotFoundErrorTOKEN_REMOTE_NOT_CONFIGUREDRemote chain not configured for tokenConfigure remote chain in pool

Execution

ErrorCodeWhen ThrownRecovery
CCIPExecTxRevertedErrorEXEC_TX_REVERTEDManual execution transaction revertedCheck gas limit, receiver contract
CCIPExecTxNotConfirmedErrorEXEC_TX_NOT_CONFIRMEDExecution tx didn't confirmIncrease gas, retry
CCIPReceiptNotFoundErrorRECEIPT_NOT_FOUNDExecution receipt not foundWait for execution, check OffRamp

Attestation (USDC / LBTC)

All transient — wait and retry.

ErrorCodeWhen ThrownRecovery
CCIPUsdcAttestationErrorUSDC_ATTESTATION_FAILEDUSDC attestation service errorRetry after delay
CCIPLbtcAttestationErrorLBTC_ATTESTATION_ERRORLBTC attestation service errorRetry after delay
CCIPLbtcAttestationNotFoundErrorLBTC_ATTESTATION_NOT_FOUNDLBTC attestation not yet availableWait and retry
CCIPLbtcAttestationNotApprovedErrorLBTC_ATTESTATION_NOT_APPROVEDLBTC attestation pending approvalWait and retry (retryAfterMs: 30000)

Wallet and Signer

ErrorCodeWhen ThrownRecovery
CCIPWalletInvalidErrorWALLET_INVALIDWallet not a valid signerProvide ethers Signer or use viemWallet(client)
CCIPWalletNotSignerErrorWALLET_NOT_SIGNERWallet can't sign transactionsUse wallet with signing capability
CCIPInsufficientBalanceErrorINSUFFICIENT_BALANCEInsufficient funds for transactionAdd funds to wallet

Version

ErrorCodeWhen ThrownRecovery
CCIPVersionUnsupportedErrorVERSION_UNSUPPORTEDCCIP version not supportedUse supported version (v1.2, v1.5, v1.6)
CCIPVersionFeatureUnavailableErrorVERSION_FEATURE_UNAVAILABLEFeature not available in versionUpgrade to newer CCIP version
CCIPHasherVersionUnsupportedErrorHASHER_VERSION_UNSUPPORTEDHasher not implemented for versionUse supported version

HTTP and API

ErrorCodeTransientWhen ThrownRecovery
CCIPHttpErrorHTTP_ERRORYesHTTP request failedRetry with backoff
CCIPTimeoutErrorTIMEOUTYesOperation timed outIncrease timeout, retry
CCIPApiClientNotAvailableErrorAPI_CLIENT_NOT_AVAILABLENoAPI client disabled (apiClient: null)Use RPC-based methods or enable API

Solana-Specific

ErrorCodeWhen ThrownRecovery
CCIPSolanaComputeUnitsExceededErrorSOLANA_COMPUTE_UNITS_EXCEEDEDTransaction exceeded compute unitsIncrease compute units in extraArgs
CCIPSolanaLookupTableNotFoundErrorSOLANA_LOOKUP_TABLE_NOT_FOUNDAddress lookup table not foundVerify router configuration
CCIPSplTokenInvalidErrorTOKEN_INVALID_SPLInvalid SPL tokenVerify token is valid SPL token

Aptos-Specific

ErrorCodeWhen ThrownRecovery
CCIPAptosAddressInvalidErrorADDRESS_INVALID_APTOSInvalid Aptos address formatUse valid Aptos address
CCIPAptosExtraArgsV2RequiredErrorEXTRA_ARGS_APTOS_V2_REQUIREDEVMExtraArgsV2 required for AptosUse EVMExtraArgsV2 with allowOutOfOrderExecution

Viem Adapter

ErrorCodeWhen ThrownRecovery
CCIPViemAdapterErrorVIEM_ADAPTER_ERRORViem client misconfiguredEnsure chain and account are defined on client

Transient Error Codes

These error codes have isTransient: true and may succeed on retry:

CodeDefault Retry Delay
BLOCK_NOT_FOUND12s
BLOCK_TIME_NOT_FOUND12s
TRANSACTION_NOT_FOUND5s
TRANSACTION_NOT_FINALIZED5s
MESSAGE_ID_NOT_FOUND30s
MESSAGE_BATCH_INCOMPLETE5s
MESSAGE_NOT_VERIFIED_YET15s
COMMIT_NOT_FOUND60s
RECEIPT_NOT_FOUND5s
USDC_ATTESTATION_FAILED30s
LBTC_ATTESTATION_ERROR30s
LBTC_ATTESTATION_NOT_FOUND30s
LBTC_ATTESTATION_NOT_APPROVED30s
HTTP_ERROR5s
TIMEOUT5s
SOLANA_LOOKUP_TABLE_NOT_FOUND5s
SOLANA_REF_ADDRESSES_NOT_FOUND5s

Use getRetryDelay(error) to get the appropriate delay for a specific error instance (respects retryAfterMs hints).