CCIP v1.5.1 Error Codes and Messages API Reference
When invoking the ccipSend
function, it is possible to encounter various errors. These might be thrown either by the CCIP router or by one of the downstream contracts called by the CCIP router. Below is a compiled list of potential errors you might encounter. Referencing this list will enable you to capture and handle these exceptions gracefully.
Router Errors
Error | Parameters | Error Selector | Description |
---|---|---|---|
UnsupportedDestinationChain | uint64 destChainSelector | 0xae236d9c | Thrown when sending to an unsupported destination chain. |
InsufficientFeeTokenAmount | - | 0x07da6ee6 | Thrown when the fee token amount provided is less than required. |
InvalidMsgValue | - | 0x1841b4e1 | Thrown when msg.value is non-zero for non-native fee token payments. |
BadARMSignal | - | 0xc1483715 | Thrown when the RMN (Risk Management Network) has cursed the network. |
SafeERC20FailedOperation | - | 0x70c9c181 | Thrown when an ERC20 token transfer fails. |
OnRamp Errors
Error | Parameters | Error Selector | Description |
---|---|---|---|
CursedByRMN | - | 0x53ad11d8 | Thrown when the RMN (Risk Management Network) has cursed the destination chain. |
RouterMustSetOriginalSender | - | 0xa4ec7479 | Thrown when the router has not set the original sender address. |
MustBeCalledByRouter | - | 0x1c0a3529 | Thrown when the caller is not the configured router address. |
InvalidChainSelector | uint64 destChainSelector | 0xd9a9cd68 | Thrown when the destination chain selector does not match the configured one. |
InvalidExtraArgsTag | - | 0x5247fdce | Thrown when an invalid extra arguments tag is used. |
MessageTooLarge | uint256 maxSize uint256 actualSize | 0x86933789 | Thrown when the message size exceeds the maximum allowed size. |
MessageGasLimitTooHigh | - | 0x4c4fc93a | Thrown when the gas limit exceeds the maximum per-message gas limit. |
CannotSendZeroTokens | - | 0x5cf04449 | Thrown when attempting to send a token with amount zero. |
MaxFeeBalanceReached | - | 0xe5c7a491 | Thrown when the onRamp has reached its maximum fee storage capacity. |
UnsupportedNumberOfTokens | - | 0x4c056b6a | Thrown when too many tokens are involved in the transfer. |
UnsupportedToken | address token | 0xbf16aab6 | Thrown when attempting to send an unsupported token. |
ExtraArgOutOfOrderExecutionMustBeTrue | - | 0xee433e99 | Thrown when enforceOutOfOrder is true but allowOutOfOrderExecution is false. |
SourceTokenDataTooLarge | address token | 0x36f536ca | Thrown when the source token data exceeds the configured maximum size. |
Rate Limiter Errors
Error | Parameters | Error Selector | Description |
---|---|---|---|
BucketOverfilled | - | 0x9725942a | Thrown when the token bucket contains more tokens than its capacity. |
OnlyCallableByAdminOrOwner | - | 0xf6cd5620 | Thrown when a function is called by an address that is not the admin or owner. |
TokenMaxCapacityExceeded | uint256 capacity uint256 requested address tokenAddress | 0x1a76572a | Thrown when attempting to consume more tokens than the bucket's maximum capacity. |
TokenRateLimitReached | uint256 minWaitInSeconds uint256 available address tokenAddress | 0xd0c8d23a | Thrown when attempting to consume more tokens than currently available in the bucket. |
AggregateValueMaxCapacityExceeded | uint256 capacity uint256 requested | 0xf94ebcd1 | Thrown when attempting to consume more aggregate value than the bucket's maximum capacity. |
AggregateValueRateLimitReached | uint256 minWaitInSeconds uint256 available | 0x15279c08 | Thrown when attempting to consume more aggregate value than currently available in the bucket. |
Token (ERC20) Errors
Error | Description |
---|---|
ERC20: burn amount exceeds balance | Thrown when the amount to be burned exceeds the pool balance. |
ERC20: transfer amount exceeds allowance | Thrown when the transfer amount exceeds the allowance. |
BurnMintERC20 Errors
Error | Parameters | Error Selector | Description |
---|---|---|---|
MaxSupplyExceeded | uint256 supplyAfterMint | 0xcbbf1113 | Thrown when a mint operation would cause the total supply to exceed the maximum supply limit. |
InvalidRecipient | address recipient | 0x17858bbe | Thrown when attempting to transfer or approve tokens for the contract itself (address(this)). |
Token Pool Errors
Error | Parameters | Error Selector | Description |
---|---|---|---|
InvalidToken | address token | 0x961c9a4f | Thrown when the token being locked or burned is not supported by the pool. |
CursedByRMN | - | 0x53ad11d8 | Thrown when the RMN (Risk Management Network) has cursed the network. |
SenderNotAllowed | address sender | 0xd0d25976 | Thrown when the sender is not on the allowlist (when allowlist is enabled). |
ChainNotAllowed | uint64 remoteChainSelector | 0xa9902c7e | Thrown when the remote chain selector is not supported. |
CallerIsNotARampOnRouter | address caller | 0x728fe07b | Thrown when the caller is not a valid onRamp for the given chain on the Router. |