# CCIP v1.6.0 Aptos Errors API Reference
Source: https://docs.chain.link/ccip/api-reference/aptos/v1.6.0/errors

> For the complete documentation index, see [llms.txt](/llms.txt).

## Errors

### router

Errors that can occur in the main `router` module during a `ccip_send` call.

#### `ccip_send_with_message_id`

| Error Code | Symbol                            | Description                                                                                                                          |
| ---------- | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| **2**      | `E_UNSUPPORTED_DESTINATION_CHAIN` | The provided `dest_chain_selector` does not correspond to a configured and supported destination chain in the router's state.        |
| **3**      | `E_UNSUPPORTED_ON_RAMP_VERSION`   | The on-ramp version for the specified destination chain is not supported by the current router implementation. The call was aborted. |

### onramp

Errors originating from the `onramp` module, which handles the core logic for sending messages and tokens.

#### `get_fee_internal`

| Error Code | Symbol            | Description                                                   |
| ---------- | ----------------- | ------------------------------------------------------------- |
| **12**     | `E_CURSED_BY_RMN` | The transfer is blocked by the Risk Management Network (RMN). |

#### `resolve_fungible_asset`

| Error Code | Symbol            | Description                                                               |
| ---------- | ----------------- | ------------------------------------------------------------------------- |
| **13**     | `E_INVALID_TOKEN` | The provided token address is not a valid fungible asset metadata object. |

#### `resolve_fungible_store`

| Error Code | Symbol                  | Description                                                                                                                           |
| ---------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| **14**     | `E_INVALID_TOKEN_STORE` | The provided token store address (or the primary store if `0x0` was passed) is not a valid fungible store object for the given token. |

#### `ccip_send`

| Error Code | Symbol                          | Description                                                                                                            |
| ---------- | ------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| **4**      | `E_UNKNOWN_DEST_CHAIN_SELECTOR` | The destination chain configuration for the given `dest_chain_selector` does not exist.                                |
| **6**      | `E_SENDER_NOT_ALLOWED`          | The allow-list is enabled for the destination chain, and the caller's address is not in the list of permitted senders. |
| **10**     | `E_UNSUPPORTED_TOKEN`           | The token being transferred is not registered with the token admin registry and has no associated token pool.          |
| **15**     | `E_UNEXPECTED_WITHDRAW_AMOUNT`  | The amount of tokens withdrawn from the user's account did not match the expected amount.                              |
| **16**     | `E_UNEXPECTED_FUNGIBLE_ASSET`   | The fungible asset withdrawn from the user's account does not match the expected asset metadata.                       |
| **18**     | `E_MUST_BE_CALLED_BY_ROUTER`    | An internal consistency check failed; the on-ramp can only be called by its designated router.                         |
| **19**     | `E_TOKEN_AMOUNT_MISMATCH`       | The number of items in `token_addresses` does not match the number of items in `token_store_addresses`.                |
| **20**     | `E_CANNOT_SEND_ZERO_TOKENS`     | An attempt was made to send a token amount of zero, which is not allowed.                                              |

### fee\_quoter

Errors related to fee calculation and processing of message arguments.

#### `get_token_receiver`

| Error Code | Symbol                            | Description                                                                                                                 |
| ---------- | --------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| **11**     | `E_UNKNOWN_CHAIN_FAMILY_SELECTOR` | The destination chain's family (e.g., EVM, SVM) is unknown or not supported, preventing correct processing of `extra_args`. |

#### `process_message_args`

| Error Code | Symbol                          | Description                                                                                          |
| ---------- | ------------------------------- | ---------------------------------------------------------------------------------------------------- |
| **24**     | `E_MESSAGE_FEE_TOO_HIGH`        | The calculated fee in Juels exceeds the maximum allowed fee per message configured in the FeeQuoter. |
| **25**     | `E_SOURCE_TOKEN_DATA_TOO_LARGE` | The return data from a token pool's `lockOrBurn` function is larger than the allowed size.           |

### token\_admin\_registry

Errors that occur when interacting with the token registry to manage token pool states.

#### `start_lock_or_burn`

| Error Code | Symbol                               | Description                                                                                                      |
| ---------- | ------------------------------------ | ---------------------------------------------------------------------------------------------------------------- |
| **3**      | `E_INVALID_TOKEN_POOL`               | The token pool address is not a valid, registered `TokenPoolRegistration` object.                                |
| **9**      | `E_NOT_IN_IDLE_STATE`                | The token pool is not in an idle state and cannot start a new `lockOrBurn` operation because it is already busy. |
| **12**     | `E_NON_EMPTY_LOCK_OR_BURN_INPUT`     | Internal state inconsistency: The `lock_or_burn_input` storage was expected to be empty but was not.             |
| **13**     | `E_NON_EMPTY_LOCK_OR_BURN_OUTPUT`    | Internal state inconsistency: The `lock_or_burn_output` storage was expected to be empty but was not.            |
| **14**     | `E_NON_EMPTY_RELEASE_OR_MINT_INPUT`  | Internal state inconsistency: The `release_or_mint_input` storage was expected to be empty but was not.          |
| **15**     | `E_NON_EMPTY_RELEASE_OR_MINT_OUTPUT` | Internal state inconsistency: The `release_or_mint_output` storage was expected to be empty but was not.         |

#### `finish_lock_or_burn`

| Error Code | Symbol                          | Description                                                                                                              |
| ---------- | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| **10**     | `E_NOT_IN_LOCK_OR_BURN_STATE`   | An attempt to finish a `lockOrBurn` operation failed because the token pool was not in the correct `LOCK_OR_BURN` state. |
| **17**     | `E_MISSING_LOCK_OR_BURN_OUTPUT` | The `lockOrBurn` operation could not be completed because the expected output data from the token pool was missing.      |

### token\_admin\_dispatcher

This module dispatches calls to the appropriate token pool.

#### `dispatch_lock_or_burn`

The errors this function can revert with originate from the `token_admin_registry` module during the `start_lock_or_burn` and `finish_lock_or_burn` calls. Refer to the `token_admin_registry` table for a list of possible errors.