Errors
insufficient_liquidity
The pool cannot absorb this trade; reduce the amount or split it into smaller steps
The pool on the other side of the operation cannot absorb it: the swap reserves are too low or too imbalanced, the price would move past the configured limit, or the slippage exceeds the allowed tolerance.
Unlike insufficient_balance this is not about your account — it is about the subnet's liquidity. reduce the amount, split it into smaller steps across blocks, or trade on a subnet with deeper reserves.
Stake trades are slippage-protected by default with a 5% tolerance (SlippageTooHigh): raise it with --rate-tolerance, or disable the protection with --no-slippage-protection (slippage_protection=False in the SDK) to trade through the price move.
Remediation
The pool cannot absorb this trade; reduce the amount or split it into smaller steps
Chain errors
The exact chain error names (from the extrinsic receipt) that classify to insufficient_liquidity; the description says what triggered the failure and where to check. Each name has its own page:
| Chain error | Description |
|---|---|
InsufficientLiquidity | The pool cannot absorb the operation: the swap simulation failed, reserves are smaller than the payout, or the amount exceeds the pool's supported input. Check the subnet pool reserves SubnetTAO, SubnetAlphaIn and SubnetAlphaOut against the amount. |
NotEnoughAlphaOutToRecycle | A recycle or burn of alpha requested more than the subnet's outstanding alpha supply. Compare the amount against the SubnetAlphaOut storage value for the netuid and reduce the recycle amount. |
PriceLimitExceeded | The limit_price given to a swap is not beyond the current pool price in the trade's direction, so the swap would immediately breach it. Compare the limit price argument against the subnet's current alpha price before submitting. |
ReservesOutOfBalance | Swap balancer initialization failed because the subnet's TAO and alpha reserves produce an invalid ratio, for example both reserves are zero when an initial price is supplied. Inspect the subnet's TAO and alpha reserves and the SwapBalancer entry. |
ReservesTooLow | The output-side reserve is below the swap pallet's MinimumReserve, or a swap step produced zero output for a nonzero input. Check the subnet's TAO and alpha reserves against MinimumReserve and reduce the trade size. |
SlippageTooHigh | A stake, unstake, or move with a price limit would execute at a worse rate than the limit allows and allow_partial was false. Compare the limit_price argument with the subnet's current alpha price (btcli subnets price) or permit partial execution. |
SwapInputTooLarge | The swap's net input after fees exceeds 1000 times the input-side reserve, the pallet's hard per-trade cap. Compare the input amount against the subnet's input-side reserve (TAO or alpha) and split the trade if needed. |
SwapReturnedZero | The netted pool swap in execute_batched_orders produced zero output for a non-zero input, meaning the pool lacks liquidity or the derived price limit clamped the swap entirely. Check the subnet pool's reserves and the batch's tightest slippage-derived price limit. |
The same explanation is available in the terminal: btcli explain insufficient_liquidity (or btcli explain <ChainErrorName> for one exact chain error).