API Version: v1.6.0

CCIP v1.6.0 SVM Errors API Reference

Errors

Router

The Router program uses error codes starting from 7000 (Anchor's base custom error code 6000 + offset 1000).

Common Errors

Error CodeSymbolDescription
7000UnauthorizedThe signer is not authorized to perform this operation.
7002InvalidVersionThe on-chain state has a version number higher than expected or zero (uninitialized).
7017InvalidInputsChainSelectorThe provided chain selector is invalid (e.g., zero when it shouldn't be).

Message Sending Errors (ccip_send, get_fee)

Error CodeSymbolDescription
7001InvalidRMNRemoteAddressThe RMN Remote program address does not match the configured address.
7003InvalidInputsMintThe mint account input is invalid or doesn't match expected requirements.
7004FeeTokenMismatchThe fee token doesn't match the expected token for the transfer.
7005ReachedMaxSequenceNumberThe sequence number cannot be incremented further (u64 overflow). This is very unlikely.
7006InvalidInputsTokenIndicesThe sub-slice token index calculations are invalid, or token_indexes.len() doesn't match the number of tokens.
7007InvalidInputsPoolAccountsThe passed "pool sub-slice" accounts do not match the expected PDAs for the token pool's configuration.
7008InvalidInputsTokenAccountsThe user token or pool token account is invalid (wrong ATAs or minted by a different token).
7009InvalidInputsTokenAdminRegistryAccountsThe token_admin_registry passed does not match the expected PDA or has invalid state.
7010InvalidInputsLookupTableAccountsThe Address Lookup Table (ALT) provided is invalid or does not match what the token_admin_registry expects.
7011InvalidInputsLookupTableAccountWritableOne or more accounts in the lookup table are incorrectly marked as writable / non-writable.
7012InvalidInputsTokenAmountAn attempt was made to send a token amount of zero.
7014InvalidInputsAtaAddressThe associated token account address does not match what was expected.
7015InvalidInputsAtaWritableThe user's fee-token ATA is not flagged as writable when it needs to be debited.
7017InsufficientLamportsUsers paying with native SOL have insufficient lamports to cover the required fee transfer.
7018InsufficientFundsInsufficient funds in a token account.
7019SourceTokenDataTooLargeThe returned "dest_pool_data" from lockOrBurnOut is larger than the allowed CCIP_LOCK_OR_BURN_V1_RET_BYTES, or larger than the dest_bytes_overhead.
7022SenderNotAllowedThe sender (caller) is not in the allowed_senders list for that destination chain, and the allow-list is enabled.

Token Administration Errors

Error CodeSymbolDescription
7020InvalidTokenAdminRegistryInputsZeroAddressThe proposed administrator cannot be the zero address.
7021InvalidTokenAdminRegistryProposedAdminAn already owned registry cannot have its administrator proposed again, or invalid admin state.

Administrative Operation Errors

Error CodeSymbolDescription
7013InvalidInputsTransferAllAmountWhen using transfer_all flag, the desired amount must be zero.
7023InvalidCodeVersionThe specified code version is invalid or not supported.
7024InvalidCcipVersionRollbackInvalid rollback attempt on the CCIP version; may have already been rolled back.
7006RedundantOwnerProposalThe proposed owner is the same as the current owner.

Account Derivation Errors

Error CodeSymbolDescription
7025InvalidAccountListForPdaDerivationThe account list provided for PDA derivation is invalid or incomplete.
7026InvalidDerivationStageUnexpected or invalid account derivation stage specified.
7027InvalidNonceVersionThe nonce account has an invalid version that doesn't match expected values.
7028InvalidTokenPoolAccountDerivationResponseToken pool returned an unexpected or invalid derivation response.
7029AccountDerivationResponseTooLargeThe account derivation response is too large to fit in the instruction response.

BurnMint Token Pool

The BurnMint Token Pool program uses error codes starting from 6000 (Anchor's default base).

Error CodeSymbolDescription
6000InvalidMultisigInvalid multisig mint authority or multisig account.
6001MintAuthorityAlreadySetThe mint authority has already been transferred to the specified multisig.
6002FixedMintTokenToken has no mint authority (fixed supply), preventing minting operations.
6003UnsupportedTokenProgramThe token program is not supported (must be SPL Token or Token-2022).
6004InvalidToken2022MultisigInvalid multisig account data for Token-2022 program.
6005InvalidSPLTokenMultisigInvalid multisig account data for SPL Token program.
6006PoolSignerNotInMultisigPool signer PDA must appear at least threshold times as a signer in the multisig.
6007MultisigMustHaveAtLeastTwoSignersMultisig account must have at least 2 valid signers.
6008MultisigMustHaveMoreThanOneSignerMultisig account must require at least 1 signature (threshold ≥ 1).
6009InvalidMultisigOwnerMultisig account owner must match the token program ID.
6010InvalidMultisigThresholdInvalid multisig threshold: required signatures cannot exceed total signers.
6011InvalidMultisigThresholdTooHighInvalid multisig threshold: required signatures cannot exceed available outside signers.

Shared Token Pool Errors

The Base Token Pool library defines shared errors (CcipTokenPoolError) that are used by both BurnMint and Lock-Release token pool implementations. These errors are returned by validation functions and common operations across all pool types.

Error CodeSymbolDescription
6012InvalidInitPoolPermissionsPool authority does not match token mint owner during initialization.
6013InvalidRMNRemoteAddressThe provided RMN Remote address is invalid or doesn't match configuration.
6014UnauthorizedThe signer is not authorized to perform this operation.
6015InvalidInputsInvalid input parameters provided to the instruction.
6016InvalidVersionInvalid state version encountered during operation.
6017InvalidPoolCallerCaller is not an authorized ramp on the router.
6018InvalidSenderSender is not allowed when allowlist is enabled.
6019InvalidSourcePoolAddressInvalid source pool address provided for cross-chain operation.
6020InvalidTokenInvalid token address or token mismatch.
6021InvalidTokenAmountConversionFailed to convert token amounts between different decimal systems.
6022AllowlistKeyAlreadyExistedAttempted to add a key that already exists in the allowlist.
6023AllowlistKeyDidNotExistAttempted to remove a key that doesn't exist in the allowlist.
6024RemotePoolAddressAlreadyExistedRemote pool address already exists in the configuration.
6025NonemptyPoolAddressesInitPool addresses must be empty during initialization.
6026InvalidDerivationStageUnexpected account derivation stage encountered.
6027RLBucketOverfilledRate limit bucket overfilled during operation.
6028RLMaxCapacityExceededRequest exceeds maximum rate limit capacity.
6029RLRateLimitReachedRate limit reached, transfer temporarily blocked.
6030RLInvalidRateLimitRateInvalid rate limit rate configuration.
6031RLDisabledNonZeroRateLimitNon-zero rate limit values provided when rate limiting is disabled.
6032LiquidityNotAcceptedLiquidity operations are not currently accepted by this pool.
6033TransferZeroTokensNotAllowedTransferring zero tokens is not allowed in liquidity operations.

Get the latest Chainlink content straight to your inbox.