# Error codes

What the numbered custom transaction errors from the Bittensor chain mean.

_Source: https://beta.taostats.io/docs/understanding-taostats/taostats-pro/error-codes_

_Last reviewed: 2026-10-05_

When the chain refuses a transaction before it gets into a block, it returns `Invalid transaction: Custom error: N`. The number tells you why. A transaction refused this way is never included on chain, so it costs no fee.

Errors raised after a transaction is in a block, such as `NotEnoughBalanceToStake`, appear by name on the extrinsic in Taostats instead.

| Code | Name | Meaning |
| --- | --- | --- |
| 0 | ColdkeyInSwapSchedule | The coldkey has a coldkey swap announced. Until the swap completes or is cancelled, the coldkey can only make swap calls or MEV-shield submissions. See [Coldkeys](https://beta.taostats.io/docs/concepts/wallets-accounts/coldkeys). |
| 1 | StakeAmountTooLow | The amount is below the minimum, or the hotkey doesn't have enough stake to set weights. The minimum stake is 2,000,000 rao (0.002 TAO). |
| 2 | BalanceTooLow | The coldkey's free balance can't cover the stake. |
| 3 | SubnetNotExists | The subnet doesn't exist. |
| 4 | HotkeyAccountDoesntExist | The hotkey isn't registered anywhere on Bittensor. |
| 5 | NotEnoughStakeToWithdraw | You don't have enough stake to remove, move or transfer that amount. |
| 6 | RateLimitExceeded | The transaction was sent too soon after the last one of its kind, such as committing or setting weights too fast. |
| 7 | InsufficientLiquidity | The subnet pool doesn't have enough liquidity for this trade. |
| 8 | SlippageTooHigh | The price would move past your limit. Try a smaller amount or a wider limit. |
| 9 | TransferDisallowed | The subnet doesn't allow stake transfers. |
| 10 | HotKeyNotRegisteredInNetwork | The hotkey isn't registered on the chosen subnet. |
| 11 | InvalidIpAddress | The axon IP address can't be parsed. |
| 12 | ServingRateLimitExceeded | `serve_axon` or `serve_prometheus` was sent too soon after the last one. |
| 13 | InvalidPort | The axon port can't be parsed. |
| 14 | ZeroMaxAmount | The amount that can be executed is zero. |
| 15 | InvalidRevealRound | The reveal round in a timelocked weight commit isn't valid. |
| 16 | CommitNotFound | There is no weight commit matching this reveal. |
| 17 | CommitBlockNotInRevealRange | The reveal came too early, before the commit's reveal window. |
| 18 | InputLengthsUnequal | The lists in a batch call (for example UIDs, values and salts) aren't the same length. |
| 19 | UidNotFound | The hotkey isn't registered on the subnet it is setting weights for. |
| 20 | EvmKeyAssociateRateLimitExceeded | `associate_evm_key` was sent too soon after the last one. |
| 21 | ColdkeySwapDisputed | The coldkey's swap is disputed. The coldkey is frozen until root resets it. |
| 22 | InvalidRealAccount | The account a proxy is acting for isn't valid for this call. |
| 23 | FailedShieldedTxParsing | The chain couldn't decode an MEV-shield encrypted transaction. |
| 24 | InvalidShieldedTxPubKeyHash | An MEV-shield transaction was encrypted to the wrong key. See [MEV shield](https://beta.taostats.io/docs/concepts/chain-runtime/mev-shield). |
| 25 | NonAssociatedColdKey | The hotkey isn't associated with the signing coldkey. |
| 26 | DelegateTakeTooLow | The delegate take is below the minimum. |
| 27 | DelegateTakeTooHigh | The delegate take is above the maximum. |
| 255 | BadRequest | Any other reason the chain refused the transaction. |
