Skip to main content

Error Codes in Aptos

This page catalogs common errors encountered in the Aptos blockchain and explains how to resolve them wherever possible. As with all software, the code itself is the source of truth for error handling and will always contain entries not found here. Instead, this matrix aims to help you address those errors most typically found, misunderstood, or both.

For the sources of these errors, see:

Help us update this list by sending pull requests containing the errors you encounter. If you don't know how to resolve the error, as described int the Action column, simply leave it blank.

Move Virtual Machine (VM)

ErrorMeaningPossible Resolution
LOOKUP_FAILEDA function that is being called isn't present on the network being usedCheck that your dependencies on-chain have the same version
UNKNOWN_VALIDATION_STATUSWe don't want the default value to be valid.N/A
INVALID_SIGNATUREThe transaction has a bad signature.Submit a new transaction with a new signature
INVALID_AUTH_KEYBad account authentication key.Submit a new transaction with a new signature, check that the account matches the authentication key and hasn't been rotated
SEQUENCE_NUMBER_TOO_OLDSequence number is too old.Submit a new transaction with a newer sequence number from the account
SEQUENCE_NUMBER_TOO_NEWSequence number is too new.Submit a new transaction with a new signature
INSUFFICIENT_BALANCE_FOR_TRANSACTION_FEEInsufficient balance to pay minimum transaction fee.Fund the account with more APT to pay for the gas fee
TRANSACTION_EXPIREDThe transaction has expired.Submit a new transaction with an expiration time further in the future
SENDING_ACCOUNT_DOES_NOT_EXISTThe sending account does not exist.Create the account prior to sending the transaction again
REJECTED_WRITE_SETThis write set transaction was rejected because it did not meet the requirements for one.N/A
INVALID_WRITE_SETThis write set transaction cannot be applied to the current state.N/A
EXCEEDED_MAX_TRANSACTION_SIZELength of program field in raw transaction exceeded max length.The transaction is too large for a single transaction; if this is a package publish, try to break it into multiple packages
UNKNOWN_SCRIPTThis script is not in our allowlist of scripts.N/A
UNKNOWN_MODULETransaction is trying to publish a new module.N/A
MAX_GAS_UNITS_EXCEEDS_MAX_GAS_UNITS_BOUNDMax gas units submitted with transaction exceeds max gas units bound in VM.Decrease the max gas amount in the transaction below the maximum value in the gas schedule
MAX_GAS_UNITS_BELOW_MIN_TRANSACTION_GAS_UNITSMax gas units submitted with transaction not enough to cover the intrinsic cost of the transaction.Increase the max gas amount above the minimum value in the gas schedule
GAS_UNIT_PRICE_BELOW_MIN_BOUNDGas unit price submitted with transaction is below minimum gas price set in the VM.Increase the gas unit price below the minimum gas unit price in the gas schedule
GAS_UNIT_PRICE_ABOVE_MAX_BOUNDGas unit price submitted with the transaction is above the maximum gas price set in the VM.Decrease the gas unit price below the maximum gas unit price in the gas schedule
INVALID_GAS_SPECIFIERGas specifier submitted is either malformed (not a valid identifier), or does not refer to an accepted gas specifier.N/A
SENDING_ACCOUNT_FROZENThe sending account is frozen.N/A
UNABLE_TO_DESERIALIZE_ACCOUNTUnable to deserialize the account blob.N/A
CURRENCY_INFO_DOES_NOT_EXISTThe currency info was unable to be found.N/A
INVALID_MODULE_PUBLISHERThe account sender doesn't have permissions to publish modules.N/A
NO_ACCOUNT_ROLEThe sending account has no role.N/A
BAD_CHAIN_IDThe transaction's chain_id does not match the one published on-chain.Verify that your chain ID matches the chain ID for your network
SEQUENCE_NUMBER_TOO_BIGThe sequence number is too large and would overflow if the transaction were executed.N/A
BAD_TRANSACTION_FEE_CURRENCYThe gas currency is not registered as a TransactionFee currency.N/A
FEATURE_UNDER_GATINGThe feature requested is intended for a future Aptos version instead of the current one.N/A
SECONDARY_KEYS_ADDRESSES_COUNT_MISMATCHThe number of secondary signer addresses is different from the number of secondary public keys provided.Verify the multi-agent or multi-ed25519 secondary signer addresses match the secondary public keys
SIGNERS_CONTAIN_DUPLICATESThere are duplicates among signers, including the sender and all the secondary signers.Remove any duplicate signers
SEQUENCE_NONCE_INVALIDThe sequence nonce in the transaction is invalid (too new, too old, or already used).N/A
CHAIN_ACCOUNT_INFO_DOES_NOT_EXISTThere was an error when accessing chain-specific account information.N/A
MODULE_ADDRESS_DOES_NOT_MATCH_SENDERthe module publisher is not the account that will eventually hold the module.Confirm the module address in the move contract matches the sender of the transaction
ZERO_SIZED_STRUCTReported when a struct has zero fields.N/A
DUPLICATE_MODULE_NAMEThe sender is trying to publish two modules with the same name in one transaction.Confirm every module has a unique name
BACKWARD_INCOMPATIBLE_MODULE_UPDATEThe sender is trying to publish a module that breaks the compatibility checks.Confirm your new modules being published don't break backwards compatibility
CYCLIC_MODULE_DEPENDENCYThe updated module introduces a cyclic dependency (i.e., A uses B and B also uses A).Check for loops in your module dependencies in the modules being published
INVALID_FRIEND_DECL_WITH_SELFCannot mark the module itself as a friend.Confirm no module has itself marked as a friend in the modules being published
INVALID_FRIEND_DECL_WITH_MODULES_OUTSIDE_ACCOUNT_ADDRESSCannot declare modules outside of account address as friends.Confirm all friends are in the same account address in the modules being published
INVALID_FRIEND_DECL_WITH_MODULES_IN_DEPENDENCIESCannot declare modules that this module depends on as friends.Check friend declarations of the modules being published
CYCLIC_MODULE_FRIENDSHIPThe updated module introduces a cyclic friendship (i.e., A friends B and B also friends A).Check friend declarations of the modules being published
INVALID_PHANTOM_TYPE_PARAM_POSITIONA phantom type parameter was used in a non-phantom position.Confirm phantom types are used only with generics
LOOP_MAX_DEPTH_REACHEDLoops are too deeply nested.Check for many nested loops
TYPE_RESOLUTION_FAILUREFailed to resolve type due to linking being broken after verification.N/A
RESOURCE_DOES_NOT_EXISTWe tried to access a resource that does not exist under the account.Check the contract and possibly change it to handle resources that don't exist
RESOURCE_ALREADY_EXISTSWe tried to create a resource under an account where that resource already exists.Check the contract and possibly change it to handle resources that already exist
UNKNOWN_STATUSA reserved status to represent an unknown vm status. This is std::u64::MAX, but we can't pattern match on that, so put the hardcoded value in.N/A
LINKER_ERRORThis may be due to the function has not been published on chain or by trying to call an invalid function as the result of either an incorrect account address, module name, or function name. This might not happen locally if the sources are available locally but have yet to be published on-chain.There are many reasons, but you should check your account addresses, module names, and function names to determine that they're correct and published

Move Standard Library (stdlib)

ErrorMeaning
INVALID_ARGUMENTCaller specified an invalid argument (HTTP: 400).
OUT_OF_RANGEAn input or result of a computation is out of range (HTTP: 400).
INVALID_STATEThe system is not in a state where the operation can be performed (HTTP: 400).
UNAUTHENTICATEDRequest not authenticated due to missing, invalid, or expired authentication token (HTTP: 401).
PERMISSION_DENIEDThe client does not have sufficient permission (HTTP: 403).
NOT_FOUNDA specified resource is not found (HTTP: 404).
ABORTEDConcurrency conflict, such as read-modify-write conflict (HTTP: 409).
ALREADY_EXISTSThe resource that a client tried to create already exists (HTTP: 409).
RESOURCE_EXHAUSTEDOut of gas or other forms of quota (HTTP: 429).
CANCELLEDRequest cancelled by the client (HTTP: 499).
INTERNALInternal error (HTTP: 500).
NOT_IMPLEMENTEDFeature not implemented (HTTP: 501).
UNAVAILABLEThe service is currently unavailable. Indicates that a retry could solve the issue (HTTP: 503).

Aptos accounts

ErrorMeaningPossible Resolution
EACCOUNT_ALREADY_EXISTSAccount already exists.N/A
EACCOUNT_DOES_NOT_EXISTAccount does not exist.Create the account first
ESEQUENCE_NUMBER_TOO_BIGSequence number exceeds the maximum value for a u64.Provide a smaller sequence number
EMALFORMED_AUTHENTICATION_KEYThe provided authentication key has an invalid length.Check your authentication key; it should be a 32-byte vector
ECANNOT_RESERVED_ADDRESSCannot create account because address is reserved.N/A
EOUT_OF_GASTransaction exceeded its allocated max gas.Increase the max gas amount
EWRONG_CURRENT_PUBLIC_KEYSpecified current public key is not correct.Confirm the public key matches the account
EINVALID_PROOF_OF_KNOWLEDGESpecified proof of knowledge required to prove ownership of a public key is invalid.Check your proof of knowledge in key rotation to ensure it has proper signatures
ENO_CAPABILITYThe caller does not have a digital-signature-based capability to call this function.Confirm you have the capability for the called functions
EINVALID_ACCEPT_ROTATION_CAPABILITYThe caller does not have a valid rotation capability offer from the other account.Confirm the account being rotated is correct
ENO_VALID_FRAMEWORK_RESERVED_ADDRESSAddress to create is not a valid reserved address for Aptos framework.N/A
EINVALID_SCHEMESpecified scheme required to proceed with the smart contract operation - can only be ED25519_SCHEME(0) OR MULTI_ED25519_SCHEME(1).Confirm the transaction was signed correctly when creating the account
EINVALID_ORIGINATING_ADDRESSAbort the transaction if the expected originating address is different from the originating address on-chain.Confirm you are rotating the correct account's key
ENO_SUCH_SIGNER_CAPABILITYThe signer capability doesn't exist at the given address.Confirm the address is correct

Aptos coins

ErrorMeaningPossible Resolution
ECOIN_INFO_ADDRESS_MISMATCHAddress of account which is used to initialize a coin CoinType doesn't match the deployer of module.Create the coin using a CoinType in the same account creating the coin.
ECOIN_INFO_ALREADY_PUBLISHEDCoinType is already initialized as a coin.N/A
ECOIN_INFO_NOT_PUBLISHEDCoinType hasn't been initialized as a coin.Create the coin with CoinType first before using it
ECOIN_STORE_ALREADY_PUBLISHEDAccount already has CoinStore registered for CoinType.N/A
ECOIN_STORE_NOT_PUBLISHEDAccount hasn't registered CoinStore for CoinType.Register the account for the CoinType
EINSUFFICIENT_BALANCENot enough coins to complete transaction.Transfer less coins, or acquire more coins prior to the transfer
EDESTRUCTION_OF_NONZERO_TOKENCannot destroy non-zero coins.N/A
EZERO_COIN_AMOUNTCoin amount cannot be zero.Don't burn coins or conduct other actions with zero coins
EFROZENCoinStore is frozen. Coins cannot be deposited or withdrawn.Account is frozen for this token; talk to the coin owner
ECOIN_SUPPLY_UPGRADE_NOT_SUPPORTEDCannot upgrade the total supply of coins to different implementation.N/A
ECOIN_NAME_TOO_LONGName of the coin is too long.Coin name must be less than or equal to 32 characters
ECOIN_SYMBOL_TOO_LONGSymbol of the coin is too long.Coin symbol must be less than or equal to 10 characters

Aptos tokens

ErrorMeaning
EALREADY_HAS_BALANCEThe token has balance and cannot be initialized.
ECOLLECTIONS_NOT_PUBLISHEDThere isn't any collection under this account.
ECOLLECTION_NOT_PUBLISHEDCannot find collection in creator's account.
ECOLLECTION_ALREADY_EXISTSThe collection already exists.
ECREATE_WOULD_EXCEED_COLLECTION_MAXIMUMExceeds the collection's maximal number of token_data.
EINSUFFICIENT_BALANCEInsufficient token balance.
EINVALID_TOKEN_MERGECannot merge the two tokens with different token IDs.
EMINT_WOULD_EXCEED_TOKEN_MAXIMUMExceed the token data maximal allowed.
ENO_BURN_CAPABILITYNo burn capability.
ETOKEN_DATA_ALREADY_EXISTSTokenData already exists.
ETOKEN_DATA_NOT_PUBLISHEDTokenData not published.
ETOKEN_STORE_NOT_PUBLISHEDTokenStore doesn't exist.
ETOKEN_SPLIT_AMOUNT_LARGER_THAN_TOKEN_AMOUNTCannot split token to an amount larger than its amount.
EFIELD_NOT_MUTABLEThe field is not mutable.
ENO_MUTATE_CAPABILITYNot authorized to mutate.
ENO_TOKEN_IN_TOKEN_STOREToken not in the token store.
EUSER_NOT_OPT_IN_DIRECT_TRANSFERUser didn't opt-in direct transfer.
EWITHDRAW_ZEROCannot withdraw 0 token.
ENFT_NOT_SPLITABLECannot split a token that only has 1 amount.
ENO_MINT_CAPABILITYNo mint capability
ECOLLECTION_NAME_TOO_LONGThe collection name is too long.
ENFT_NAME_TOO_LONGThe NFT name is too long.
EURI_TOO_LONGThe URI is too long.
ENO_DEPOSIT_TOKEN_WITH_ZERO_AMOUNTCannot deposit a token with 0 amount.
ENO_BURN_TOKEN_WITH_ZERO_AMOUNTCannot burn 0 token.
EWITHDRAW_PROOF_EXPIRESWithdraw proof expires.
EOWNER_CANNOT_BURN_TOKENToken is not burnable by owner.
ECREATOR_CANNOT_BURN_TOKENToken is not burnable by creator.
ECANNOT_UPDATE_RESERVED_PROPERTYReserved fields for token contract. Cannot be updated by user.
EURI_TOO_SHORTURI too short.
ETOKEN_OFFER_NOT_EXISTToken offer doesn't exist.