Explanation of AAVE-V3 Error Codes

If you are working with Aave-v3 you probably have gotten some cryptic error codes spit back at you from the smart contracts. If you google what they mean, you will probably get sent to the v2 protocol errors page, but these codes are completely different in v3.

For now, the v3 codes are not in the docs, so I’m posting them here. I got these straight from the aave-core-v3 github

CALLER_NOT_POOL_ADMIN = '1'; // 'The caller of the function is not a pool admin'
CALLER_NOT_EMERGENCY_ADMIN = '2'; // 'The caller of the function is not an emergencyadmin'
CALLER_NOT_POOL_OR_EMERGENCY_ADMIN = '3'; // 'The caller of the function is not a pool oremergency admin'
CALLER_NOT_RISK_OR_POOL_ADMIN = '4'; // 'The caller of the function is not a risk or pooladmin'
CALLER_NOT_ASSET_LISTING_OR_POOL_ADMIN = '5'; // 'The caller of the function is not anasset listing or pool admin'
CALLER_NOT_BRIDGE = '6'; // 'The caller of the function is not a bridge'
ADDRESSES_PROVIDER_NOT_REGISTERED = '7'; // 'Pool addresses provider is not registered'
INVALID_ADDRESSES_PROVIDER_ID = '8'; // 'Invalid id for the pool addresses provider'
NOT_CONTRACT = '9'; // 'Address is not a contract'
CALLER_NOT_POOL_CONFIGURATOR = '10'; // 'The caller of the function is not the poolconfigurator'
CALLER_NOT_ATOKEN = '11'; // 'The caller of the function is not an AToken'
INVALID_ADDRESSES_PROVIDER = '12'; // 'The address of the pool addresses provider isinvalid'
INVALID_FLASHLOAN_EXECUTOR_RETURN = '13'; // 'Invalid return value of the flashloanexecutor function'
RESERVE_ALREADY_ADDED = '14'; // 'Reserve has already been added to reserve list'
NO_MORE_RESERVES_ALLOWED = '15'; // 'Maximum amount of reserves in the pool reached'
EMODE_CATEGORY_RESERVED = '16'; // 'Zero eMode category is reserved for volatileheterogeneous assets'
INVALID_EMODE_CATEGORY_ASSIGNMENT = '17'; // 'Invalid eMode category assignment to asset'
RESERVE_LIQUIDITY_NOT_ZERO = '18'; // 'The liquidity of the reserve needs to be 0'
FLASHLOAN_PREMIUM_INVALID = '19'; // 'Invalid flashloan premium'
INVALID_RESERVE_PARAMS = '20'; // 'Invalid risk parameters for the reserve'
INVALID_EMODE_CATEGORY_PARAMS = '21'; // 'Invalid risk parameters for the eMode category'
BRIDGE_PROTOCOL_FEE_INVALID = '22'; // 'Invalid bridge protocol fee'
CALLER_MUST_BE_POOL = '23'; // 'The caller of this function must be a pool'
INVALID_MINT_AMOUNT = '24'; // 'Invalid amount to mint'
INVALID_BURN_AMOUNT = '25'; // 'Invalid amount to burn'
INVALID_AMOUNT = '26'; // 'Amount must be greater than 0'
RESERVE_INACTIVE = '27'; // 'Action requires an active reserve'
RESERVE_FROZEN = '28'; // 'Action cannot be performed because the reserve is frozen'
RESERVE_PAUSED = '29'; // 'Action cannot be performed because the reserve is paused'
BORROWING_NOT_ENABLED = '30'; // 'Borrowing is not enabled'
STABLE_BORROWING_NOT_ENABLED = '31'; // 'Stable borrowing is not enabled'
NOT_ENOUGH_AVAILABLE_USER_BALANCE = '32'; // 'User cannot withdraw more than theavailable balance'
INVALID_INTEREST_RATE_MODE_SELECTED = '33'; // 'Invalid interest rate mode selected'
COLLATERAL_BALANCE_IS_ZERO = '34'; // 'The collateral balance is 0'
HEALTH_FACTOR_LOWER_THAN_LIQUIDATION_THRESHOLD = '35'; // 'Health factor is lesser thanthe liquidation threshold'
COLLATERAL_CANNOT_COVER_NEW_BORROW = '36'; // 'There is not enough collateral to cover anew borrow'
COLLATERAL_SAME_AS_BORROWING_CURRENCY = '37'; // 'Collateral is (mostly) the samecurrency that is being borrowed'
AMOUNT_BIGGER_THAN_MAX_LOAN_SIZE_STABLE = '38'; // 'The requested amount is greater thanthe max loan size in stable rate mode'
NO_DEBT_OF_SELECTED_TYPE = '39'; // 'For repayment of a specific type of debt, the userneeds to have debt that type'
NO_EXPLICIT_AMOUNT_TO_REPAY_ON_BEHALF = '40'; // 'To repay on behalf of a user anexplicit amount to repay is needed'
NO_OUTSTANDING_STABLE_DEBT = '41'; // 'User does not have outstanding stable rate debt onthis reserve'
NO_OUTSTANDING_VARIABLE_DEBT = '42'; // 'User does not have outstanding variable ratedebt on this reserve'
UNDERLYING_BALANCE_ZERO = '43'; // 'The underlying balance needs to be greater than 0'
INTEREST_RATE_REBALANCE_CONDITIONS_NOT_MET = '44'; // 'Interest rate rebalance conditionswere not met'
HEALTH_FACTOR_NOT_BELOW_THRESHOLD = '45'; // 'Health factor is not below the threshold'
COLLATERAL_CANNOT_BE_LIQUIDATED = '46'; // 'The collateral chosen cannot be liquidated'
SPECIFIED_CURRENCY_NOT_BORROWED_BY_USER = '47'; // 'User did not borrow the specifiedcurrency'
SAME_BLOCK_BORROW_REPAY = '48'; // 'Borrow and repay in same block is not allowed'
INCONSISTENT_FLASHLOAN_PARAMS = '49'; // 'Inconsistent flashloan parameters'
BORROW_CAP_EXCEEDED = '50'; // 'Borrow cap is exceeded'
SUPPLY_CAP_EXCEEDED = '51'; // 'Supply cap is exceeded'
UNBACKED_MINT_CAP_EXCEEDED = '52'; // 'Unbacked mint cap is exceeded'
DEBT_CEILING_EXCEEDED = '53'; // 'Debt ceiling is exceeded'
ATOKEN_SUPPLY_NOT_ZERO = '54'; // 'AToken supply is not zero'
STABLE_DEBT_NOT_ZERO = '55'; // 'Stable debt supply is not zero'
VARIABLE_DEBT_SUPPLY_NOT_ZERO = '56'; // 'Variable debt supply is not zero'
LTV_VALIDATION_FAILED = '57'; // 'Ltv validation failed'
INCONSISTENT_EMODE_CATEGORY = '58'; // 'Inconsistent eMode category'
PRICE_ORACLE_SENTINEL_CHECK_FAILED = '59'; // 'Price oracle sentinel validation failed'
ASSET_NOT_BORROWABLE_IN_ISOLATION = '60'; // 'Asset is not borrowable in isolation mode'
RESERVE_ALREADY_INITIALIZED = '61'; // 'Reserve has already been initialized'
USER_IN_ISOLATION_MODE = '62'; // 'User is in isolation mode'
INVALID_LTV = '63'; // 'Invalid ltv parameter for the reserve'
INVALID_LIQ_THRESHOLD = '64'; // 'Invalid liquidity threshold parameter for the reserve'
INVALID_LIQ_BONUS = '65'; // 'Invalid liquidity bonus parameter for the reserve'
INVALID_DECIMALS = '66'; // 'Invalid decimals parameter of the underlying asset of thereserve'
INVALID_RESERVE_FACTOR = '67'; // 'Invalid reserve factor parameter for the reserve'
INVALID_BORROW_CAP = '68'; // 'Invalid borrow cap for the reserve'
INVALID_SUPPLY_CAP = '69'; // 'Invalid supply cap for the reserve'
INVALID_LIQUIDATION_PROTOCOL_FEE = '70'; // 'Invalid liquidation protocol fee for thereserve'
INVALID_EMODE_CATEGORY = '71'; // 'Invalid eMode category for the reserve'
INVALID_UNBACKED_MINT_CAP = '72'; // 'Invalid unbacked mint cap for the reserve'
INVALID_DEBT_CEILING = '73'; // 'Invalid debt ceiling for the reserve
INVALID_RESERVE_INDEX = '74'; // 'Invalid reserve index'
ACL_ADMIN_CANNOT_BE_ZERO = '75'; // 'ACL admin cannot be set to the zero address'
INCONSISTENT_PARAMS_LENGTH = '76'; // 'Array parameters that should be equal length arenot'
ZERO_ADDRESS_NOT_VALID = '77'; // 'Zero address not valid'
INVALID_EXPIRATION = '78'; // 'Invalid expiration'
INVALID_SIGNATURE = '79'; // 'Invalid signature'
OPERATION_NOT_SUPPORTED = '80'; // 'Operation not supported'
DEBT_CEILING_NOT_ZERO = '81'; // 'Debt ceiling is not zero'
ASSET_NOT_LISTED = '82'; // 'Asset is not listed'
INVALID_OPTIMAL_USAGE_RATIO = '83'; // 'Invalid optimal usage ratio'
INVALID_OPTIMAL_STABLE_TO_TOTAL_DEBT_RATIO = '84'; // 'Invalid optimal stable to totaldebt ratio'
UNDERLYING_CANNOT_BE_RESCUED = '85'; // 'The underlying asset cannot be rescued'
ADDRESSES_PROVIDER_ALREADY_ADDED = '86'; // 'Reserve has already been added to reservelist'
POOL_ADDRESSES_DO_NOT_MATCH = '87'; // 'The token implementation pool address and thepool address provided by the initializing pool do not match'
STABLE_BORROWING_ENABLED = '88'; // 'Stable borrowing is enabled'
SILOED_BORROWING_VIOLATION = '89'; // 'User is trying to borrow multiple assets includinga siloed one'
RESERVE_DEBT_NOT_ZERO = '90'; // the total debt of the reserve needs to be 0
Subscribe to unfrigginbelievable
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.