> ## Documentation Index
> Fetch the complete documentation index at: https://docs.raydium.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Códigos de error

> Enums de error de Anchor para cada programa on-chain de Raydium, con causa y mensaje UX recomendado.

<Info>
  **Esta página fue traducida automáticamente por IA. La versión en inglés es la fuente autorizada.**

  [Ver versión en inglés →](/reference/error-codes)
</Info>

<Info>
  **Fuente de verdad.** Las tablas a continuación se regeneran desde el archivo `error.rs` de cada programa en los repositorios públicos de Raydium. Cuando un programa se actualiza y se añade una nueva variante, vuelve a ejecutar la extracción (enlace al final de cada tabla) y añade filas al final en lugar de reorganizar — los códigos de error de Anchor se asignan por **orden en el código fuente**, no por nombre, por lo que reorganizarlos rompe el manejo de errores de los integradores.
</Info>

## Cómo funcionan los códigos de error de Anchor

Anchor asigna a cada variante del enum `ErrorCode` de un programa un código numérico a partir de `6000`. Una transacción fallida expone:

* **Código de error numérico** (p. ej. `0x1771` = 6001) en los logs de la transacción.
* **Nombre del error** (p. ej. `InvalidOwner`) desde el IDL.
* **Cadena `#[msg(...)]`** que Anchor emitió en `log_messages`.

Los integradores deben comparar contra el **código numérico**, no contra la cadena del mensaje (el texto puede reformularse sin cambiar la versión).

```ts theme={null}
// Example: detect the CPMM slippage error and surface a clean UX message.
const CPMM_EXCEEDED_SLIPPAGE = 6005;

try {
  await sdk.cpmm.swap({ ... });
} catch (err: any) {
  const code = err?.error?.errorCode?.number ?? err?.code;
  if (code === CPMM_EXCEEDED_SLIPPAGE) {
    showToast("Price moved past your slippage tolerance. Increase slippage or retry.");
    return;
  }
  throw err;
}
```

## Errores de CPMM (AMM estándar)

Program ID: ver [reference/program-addresses](/es/reference/program-addresses#on-chain-programs). Fuente: `raydium-cp-swap/programs/cp-swap/src/error.rs`.

| Código | Variante                       | Cadena `#[msg]`                                                                             | Causa típica                                                                                                                             | UX recomendado                                                                                 |
| ------ | ------------------------------ | ------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
| 6000   | `NotApproved`                  | Not approved                                                                                | El invocador no es la autoridad configurada para una instrucción de administrador.                                                       | "Solo el administrador del pool puede realizar esta acción."                                   |
| 6001   | `InvalidOwner`                 | Input account owner is not the program address                                              | Una cuenta pasada es propiedad del programa incorrecto (generalmente un programa de token erróneo o un PDA de programa equivocado).      | "Error interno: propietario de cuenta no coincide — recarga e inténtalo de nuevo."             |
| 6002   | `EmptySupply`                  | Input token account empty                                                                   | El saldo de la cuenta LP o de token es cero en un paso que requiere un monto positivo.                                                   | "No hay nada que retirar."                                                                     |
| 6003   | `InvalidInput`                 | InvalidInput                                                                                | Argumento incorrecto genérico (monto fuera de rango, flag incorrecto).                                                                   | "Entrada no válida — revisa los montos e inténtalo de nuevo."                                  |
| 6004   | `IncorrectLpMint`              | Address of the provided lp token mint is incorrect                                          | La cuenta LP mint pasada no coincide con `pool_state.lp_mint`.                                                                           | "Error interno: LP mint incorrecto — recarga los datos del pool."                              |
| 6005   | `ExceededSlippage`             | Exceeds desired slippage limit                                                              | El precio ejecutado es peor que el `minAmountOut` / `maxAmountIn` del usuario.                                                           | "El precio superó tu tolerancia de slippage. Aumenta el slippage o inténtalo de nuevo."        |
| 6006   | `ZeroTradingTokens`            | Given pool token amount results in zero trading tokens                                      | La matemática de depósito/retiro redondeó un lado a cero (posición demasiado pequeña).                                                   | "El monto está por debajo del mínimo para este pool."                                          |
| 6007   | `NotSupportMint`               | Not support token\_2022 mint extension *(gramática en el fuente)*                           | El pool encontró una extensión de Token-2022 que no puede manejar de forma segura (p. ej. `TransferHook`, `DefaultAccountState=Frozen`). | "Este token tiene una extensión que Raydium no admite en CPMM."                                |
| 6008   | `InvalidVault`                 | invaild vault *(typo en el fuente)*                                                         | La cuenta vault pasada no coincide con la registrada en `pool_state`.                                                                    | "Error interno: vault incorrecto — recarga e inténtalo de nuevo."                              |
| 6009   | `InitLpAmountTooLess`          | Init lp amount is too less(Because 100 amount lp will be locked) *(gramática en el fuente)* | En la inicialización del pool, el suministro LP calculado está por debajo del monto de bloqueo permanente.                               | "Liquidez inicial demasiado pequeña. Aumenta el depósito."                                     |
| 6010   | `TransferFeeCalculateNotMatch` | TransferFee calculate not match                                                             | El monto post-transferencia observado para un mint con comisión de Token-2022 no coincidió con la expectativa precalculada.              | "La comisión de transferencia del token cambió a mitad de la transacción. Inténtalo de nuevo." |
| 6011   | `MathOverflow`                 | Math overflow                                                                               | Un cálculo intermedio de swap/depósito/comisión sufrió desbordamiento.                                                                   | "El monto es demasiado grande para este pool."                                                 |
| 6012   | `InsufficientVault`            | Insufficient vault                                                                          | El saldo del vault del pool es demasiado bajo para cubrir la salida solicitada.                                                          | "No hay suficiente liquidez en el pool para este tamaño."                                      |
| 6013   | `InvalidFeeModel`              | Invalid fee model                                                                           | El administrador configuró una combinación de parámetros `AmmConfig` que es rechazada on-chain.                                          | N/A — ruta solo para administradores.                                                          |
| 6014   | `NoFeeCollect`                 | Fee is zero                                                                                 | Se llamó a `collect_protocol_fee` / `collect_fund_fee` con comisiones colectables en cero.                                               | N/A — ruta de administrador; las herramientas deben ignorarlo.                                 |

Fuente de regeneración: [github.com/raydium-io/raydium-cp-swap — error.rs](https://github.com/raydium-io/raydium-cp-swap/blob/master/programs/cp-swap/src/error.rs).

## Errores de CLMM

Program ID: ver [reference/program-addresses](/es/reference/program-addresses#on-chain-programs). Fuente: `raydium-clmm/programs/amm/src/error.rs`.

| Código | Variante                                 | Cadena `#[msg]`                                                                         | Causa típica                                                                                                                                                     | UX recomendado                                                                                              |
| ------ | ---------------------------------------- | --------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
| 6000   | `NotApproved`                            | Not approved                                                                            | El invocador no es el administrador configurado para esta instrucción.                                                                                           | "Solo el administrador del pool puede realizar esta acción."                                                |
| 6001   | `InvalidUpdateConfigFlag`                | invalid update amm config flag                                                          | El administrador pasó un valor `param` no reconocido a `update_amm_config`.                                                                                      | N/A — ruta solo para administradores.                                                                       |
| 6002   | `AccountLack`                            | Account lack                                                                            | Falta una cuenta restante requerida en la tx (generalmente un tick-array o extensión de oráculo).                                                                | "Error interno: cuenta faltante — recarga los datos del pool."                                              |
| 6003   | `ClosePositionErr`                       | Remove liquidity, collect fees owed and reward then you can close position account      | Se intentó cerrar una posición que aún tiene liquidez, comisiones no cobradas o recompensas no cobradas.                                                         | "Retira toda la liquidez y reclama comisiones/recompensas antes de cerrar la posición."                     |
| 6004   | `InvalidTickIndex`                       | Tick out of range                                                                       | `tick_lower` o `tick_upper` está fuera de `[-443636, 443636]`.                                                                                                   | "Rango de precio fuera de los límites para este pool."                                                      |
| 6005   | `TickInvalidOrder`                       | The lower tick must be below the upper tick                                             | `tick_lower >= tick_upper`.                                                                                                                                      | "El precio inferior debe ser menor que el precio superior."                                                 |
| 6006   | `TickLowerOverflow`                      | The tick must be greater, or equal to the minimum tick(-443636)                         | Desbordamiento inferior del tick.                                                                                                                                | "El precio inferior es demasiado bajo."                                                                     |
| 6007   | `TickUpperOverflow`                      | The tick must be lesser than, or equal to the maximum tick(443636)                      | Desbordamiento superior del tick.                                                                                                                                | "El precio superior es demasiado alto."                                                                     |
| 6008   | `TickAndSpacingNotMatch`                 | tick % tick\_spacing must be zero                                                       | El tick enviado no es múltiplo del `tick_spacing` del pool.                                                                                                      | "Ajusta el precio al incremento válido más cercano."                                                        |
| 6009   | `InvalidTickArray`                       | Invalid tick array account                                                              | Se pasó un PDA incorrecto para un slot de tick-array.                                                                                                            | "Error interno: tick array incorrecto — recarga los datos del pool."                                        |
| 6010   | `InvalidTickArrayBoundary`               | Invalid tick array boundary                                                             | Error de uno en la indexación del tick-array.                                                                                                                    | "Error interno: error en el límite del tick-array."                                                         |
| 6011   | `SqrtPriceLimitOverflow`                 | Square root price limit overflow                                                        | El `sqrt_price_limit` proporcionado por el invocador está fuera del rango válido.                                                                                | "El límite de precio está fuera de rango."                                                                  |
| 6012   | `SqrtPriceX64`                           | sqrt\_price\_x64 out of range                                                           | El sqrt price actual del pool se desplazó fuera de rango a mitad del swap.                                                                                       | "Vuelve a intentar el swap."                                                                                |
| 6013   | `LiquiditySubValueErr`                   | Liquidity sub delta L must be smaller than before                                       | Violación de invariante interna al reducir liquidez.                                                                                                             | "Error interno: error en la contabilidad de liquidez."                                                      |
| 6014   | `LiquidityAddValueErr`                   | Liquidity add delta L must be greater, or equal to before                               | Violación de invariante interna al aumentar liquidez.                                                                                                            | "Error interno: error en la contabilidad de liquidez."                                                      |
| 6015   | `ForbidBothZeroForSupplyLiquidity`       | Both token amount must not be zero while supply liquidity                               | Llamada a increase-liquidity con `amount_0_max` y `amount_1_max` ambos en cero.                                                                                  | "Proporciona al menos un token."                                                                            |
| 6016   | `LiquidityInsufficient`                  | Liquidity insufficient                                                                  | La posición no tiene suficiente liquidez para satisfacer el retiro.                                                                                              | "El monto a retirar supera la liquidez de la posición."                                                     |
| 6017   | `PriceSlippageCheck`                     | Price slippage check                                                                    | El precio de ejecución no pasó la protección de slippage del invocador.                                                                                          | "El precio superó tu tolerancia de slippage. Aumenta el slippage o inténtalo de nuevo."                     |
| 6018   | `TooLittleOutputReceived`                | Too little output received                                                              | `SwapBaseInput`: monto de salida por debajo de `other_amount_threshold`.                                                                                         | "Slippage superado — mínimo de salida no alcanzado."                                                        |
| 6019   | `TooMuchInputPaid`                       | Too much input paid                                                                     | `SwapBaseOutput`: monto de entrada por encima de `other_amount_threshold`.                                                                                       | "Slippage superado — máximo de entrada excedido."                                                           |
| 6020   | `ZeroAmountSpecified`                    | Swap special amount can not be zero                                                     | `amount` en cero en una instrucción de swap.                                                                                                                     | "Introduce un monto mayor que cero."                                                                        |
| 6021   | `InvalidInputPoolVault`                  | Input pool vault is invalid                                                             | La cuenta del vault de entrada del swap no coincide con el vault registrado del pool.                                                                            | "Error interno: vault de entrada incorrecto — recarga los datos del pool."                                  |
| 6022   | `TooSmallInputOrOutputAmount`            | Swap input or output amount is too small                                                | La matemática del swap redondeó a cero, típicamente con montos muy pequeños de polvo.                                                                            | "Monto demasiado pequeño para hacer swap en este pool."                                                     |
| 6023   | `NotEnoughTickArrayAccount`              | Not enough tick array account                                                           | No se proporcionaron suficientes cuentas restantes de tick-array para el rango del swap.                                                                         | "Error interno: tick-arrays insuficientes — recarga los datos del pool."                                    |
| 6024   | `InvalidFirstTickArrayAccount`           | Invalid first tick array account                                                        | La primera cuenta de tick-array pasada no cubre el tick actual.                                                                                                  | "Error interno: primer tick array incorrecto — recarga los datos del pool."                                 |
| 6025   | `InvalidRewardIndex`                     | Invalid reward index                                                                    | `reward_index` fuera de `[0, 2]`.                                                                                                                                | N/A — ruta de administrador.                                                                                |
| 6026   | `FullRewardInfo`                         | The init reward token reach to the max                                                  | El pool ya tiene el máximo (3) de mints de recompensa configurados.                                                                                              | N/A — ruta de administrador.                                                                                |
| 6027   | `RewardTokenAlreadyInUse`                | The init reward token already in use                                                    | El mint de recompensa duplica uno existente.                                                                                                                     | N/A — ruta de administrador.                                                                                |
| 6028   | `ExceptRewardMint`                       | The reward tokens must contain one of pool vault mint except the last reward            | En slots previos al 2, el mint de recompensa debe coincidir con uno de los mints vault del pool.                                                                 | N/A — ruta de administrador.                                                                                |
| 6029   | `InvalidRewardInitParam`                 | Invalid reward init param                                                               | Tiempo de inicio/fin de emisión o tasa por segundo incorrectos.                                                                                                  | N/A — ruta de administrador.                                                                                |
| 6030   | `InvalidRewardInputAccountNumber`        | Invalid collect reward input account number                                             | Número incorrecto de cuentas restantes pasadas a `CollectReward`.                                                                                                | "Error interno: número de cuentas incorrecto — recarga e inténtalo de nuevo."                               |
| 6031   | `InvalidRewardPeriod`                    | Invalid reward period                                                                   | Período de emisión de recompensas no válido (`end <= start`, duración cero).                                                                                     | N/A — ruta de administrador.                                                                                |
| 6032   | `NotApproveUpdateRewardEmissions`        | Modification of emissions is allowed within 72 hours from the end of the previous cycle | El administrador intentó modificar las emisiones fuera de la ventana de 72 horas alrededor de los límites del ciclo.                                             | N/A — ruta de administrador.                                                                                |
| 6033   | `UnInitializedRewardInfo`                | uninitialized reward info                                                               | Se referenció un slot de recompensa no inicializado.                                                                                                             | N/A — ruta de administrador.                                                                                |
| 6034   | `NotSupportMint`                         | Not support token\_2022 mint extension                                                  | CLMM encontró una extensión de Token-2022 que no puede manejar.                                                                                                  | "Este token tiene una extensión que Raydium CLMM no admite."                                                |
| 6035   | `MissingTickArrayBitmapExtensionAccount` | Missing tickarray bitmap extension account                                              | El swap cruzó un rango de ticks no cubierto por el bitmap base; se requiere la cuenta de bitmap de extensión.                                                    | "Error interno: extensión de tick-array faltante — recarga los datos del pool."                             |
| 6036   | `InsufficientLiquidityForDirection`      | Insufficient liquidity for this direction                                               | No existe suficiente liquidez en la dirección del swap.                                                                                                          | "Liquidez insuficiente para el tamaño de este swap."                                                        |
| 6037   | `MaxTokenOverflow`                       | Max token overflow                                                                      | El monto de entrada/salida superó u64.                                                                                                                           | "El monto es demasiado grande para este pool."                                                              |
| 6038   | `CalculateOverflow`                      | Calculate overflow                                                                      | Desbordamiento aritmético en comisiones/liquidez.                                                                                                                | "El monto es demasiado grande para este pool."                                                              |
| 6039   | `TransferFeeCalculateNotMatch`           | TransferFee calculate not match                                                         | El monto observado de la comisión de transferencia Token-2022 no coincidió con el esperado.                                                                      | "La comisión de transferencia del token cambió a mitad de la transacción. Inténtalo de nuevo."              |
| 6040   | `OrderAlreadyFilled`                     | Order already fully filled, cannot modify                                               | Se llamó a `IncreaseLimitOrder` / `DecreaseLimitOrder` en una orden cuya porción no ejecutada es cero.                                                           | "Esta orden limitada ya está completada — liquídala para recibir la salida."                                |
| 6041   | `InvalidOrderPhase`                      | Invalid order phase                                                                     | Se modificó una orden cuya fase de cohorte FIFO ya no coincide con la cohorte actual del tick.                                                                   | "No se puede realizar esta acción en el estado actual de la orden."                                         |
| 6042   | `InvalidLimitOrderAmount`                | Invalid limit order amount                                                              | El monto de entrada de la orden está por debajo del mínimo del pool (o es cero) al abrir/aumentar/disminuir.                                                     | "El tamaño de la orden está por debajo del mínimo del pool."                                                |
| 6043   | `OrderPhaseSaturated`                    | Tick order phase saturated                                                              | El contador `order_phase` de la cohorte en el tick está saturado; no se pueden abrir más órdenes en ese tick hasta que las cohortes existentes liquiden y roten. | "Demasiadas órdenes activas en este precio; prueba un tick cercano o espera a que las órdenes se liquiden." |
| 6044   | `InvalidDynamicFeeConfigParams`          | Invalid dynamic fee config params                                                       | `CreateDynamicFeeConfig` / `UpdateDynamicFeeConfig` rechazado; o `CreateCustomizablePool` habilitó la comisión dinámica sin una configuración válida.            | N/A en ruta de administrador; "Configuración de comisión dinámica no válida" en ruta de usuario.            |
| 6045   | `InvalidFeeOn`                           | Invalid fee on which token (must be 0, 1, or 2)                                         | `CreateCustomizablePool` pasó un valor `collect_fee_on` fuera de `{0, 1, 2}`.                                                                                    | "Error interno: modo de comisión no válido."                                                                |
| 6046   | `ZeroSqrtPrice`                          | sqrt\_price\_x64 must be greater than 0                                                 | Se llamó a `CreateCustomizablePool` (u otra ruta que acepta un sqrt price inicial personalizable) con `sqrt_price_x64 == 0`.                                     | "El precio inicial debe ser mayor que cero."                                                                |
| 6047   | `ZeroLiquidity`                          | liquidity must be greater than 0                                                        | Se llamó a una ruta de provisión de liquidez con `liquidity == 0` y sin monto compensatorio.                                                                     | "El monto de liquidez debe ser mayor que cero."                                                             |
| 6048   | `MissingBaseFlag`                        | base\_flag is required when liquidity is zero                                           | Una ruta de apertura de posición por monto calculó `liquidity == 0` y el invocador no proporcionó un `base_flag` para indicar cuál lado es la base.              | "Proporciona una liquidez distinta de cero o especifica cuál token es la base."                             |
| 6049   | `MissingMintAccount`                     | Mint account is required but not provided                                               | Se llamó a una ruta con soporte Token-2022 sin la cuenta de mint de entrada/salida necesaria para validar extensiones y comisiones de transferencia.             | "Error interno: cuenta de mint faltante — recarga los datos del pool."                                      |
| 6050   | `MissingTokenProgram2022`                | Token-2022 program is required but not provided                                         | Igual que el anterior, pero para la cuenta del programa SPL-Token-2022.                                                                                          | "Error interno: programa Token-2022 faltante — recarga e inténtalo de nuevo."                               |

> **Nota sobre la renumeración.** El enum `ErrorCode` de CLMM fue renumerado en esta versión: se eliminaron/corrigieron cinco variantes heredadas (`LOK`, `ZeroMintAmount`, `InvalidLiquidity`, `TransactionTooOld`, `InvalidRewardDesiredAmount`) y varios errores tipográficos (`Liquitity`, `enought`, `emissiones`), y se añadieron once nuevas variantes al final. Dado que Anchor numera los errores por orden en el código fuente, todos los códigos a partir de `6000` se han desplazado respecto a las versiones previas al lanzamiento. Los clientes que tenían códigos numéricos codificados de forma fija para una versión anterior deben actualizar su mapeo.

Fuente de regeneración: [github.com/raydium-io/raydium-clmm — error.rs](https://github.com/raydium-io/raydium-clmm/blob/master/programs/amm/src/error.rs).

## Errores de AMM v4, Farm v3 / v5 / v6 y LaunchLab

Estos programas están documentados en sus capítulos respectivos (ver [`products/amm-v4/instructions`](/es/products/amm-v4/instructions), [`products/farm-staking/instructions`](/es/products/farm-staking/instructions), [`products/launchlab/instructions`](/es/products/launchlab/instructions)). Como esos programas utilizan una combinación de Anchor y superficies de error de Solana nativo, sus tablas de errores están junto a la referencia de instrucciones y no aquí. Los códigos a continuación están reservados por esos capítulos:

| Programa     | Rango de códigos (solo Anchor)               | Referencia                                                                     |
| ------------ | -------------------------------------------- | ------------------------------------------------------------------------------ |
| AMM v4       | Códigos u32 personalizados, no estilo Anchor | [`products/amm-v4/instructions`](/es/products/amm-v4/instructions)             |
| Farm v3 / v5 | Códigos u32 personalizados                   | [`products/farm-staking/instructions`](/es/products/farm-staking/instructions) |
| Farm v6      | 6000+ (Anchor)                               | [`products/farm-staking/instructions`](/es/products/farm-staking/instructions) |
| LaunchLab    | 6000+ (Anchor)                               | [`products/launchlab/instructions`](/es/products/launchlab/instructions)       |

## Mapeo de errores del SDK a errores del programa

El SDK oficial de TypeScript envuelve los errores on-chain en `SendTransactionError` y, para programas Anchor, en `AnchorError`:

```ts theme={null}
import { AnchorError } from "@coral-xyz/anchor";

try {
  await sdk.cpmm.swap({ ... });
} catch (err) {
  if (err instanceof AnchorError) {
    console.log(err.error.errorCode.number, err.error.errorCode.code, err.error.errorMessage);
    // 6005 ExceededSlippage "Exceeds desired slippage limit"
  } else {
    // Raw SendTransactionError — inspect err.logs for the "custom program error: 0x..." line.
  }
}
```

Si no usas el cliente Anchor, analiza los logs de la transacción:

```
Program <ProgramID> invoke [1]
Program log: AnchorError caused by account: pool_state. Error Code: ExceededSlippage. Error Number: 6005. Error Message: Exceeds desired slippage limit.
```

El patrón `Error Number: (\d+)` es estable entre versiones de Anchor y es seguro usarlo para comparaciones.

## Regeneración de estas tablas

Cuando un programa se actualiza y añade un nuevo error, vuelve a extraerlo del código fuente:

```bash theme={null}
# Clone and grep the error enum in order.
git clone --depth=1 https://github.com/raydium-io/raydium-cp-swap
awk '/#\[msg\(/{ gsub(/^[ \t]*#\[msg\("|"\)\][ \t]*/,""); m=$0; getline; gsub(/,/,""); gsub(/^[ \t]+/,""); print "6000+++\t" $0 "\t" m }' \
  raydium-cp-swap/programs/cp-swap/src/error.rs
# Replace 6000+++ with monotonically-increasing 6000,6001,... Append new rows to the table above.
```

Actualiza siempre [`reference/changelog`](/es/reference/changelog) cuando se añada una nueva variante, para que los integradores que actualicen el SDK sepan que deben refrescar sus manejadores de errores.

Fuentes:

* [raydium-cp-swap error.rs (CPMM en mainnet)](https://github.com/raydium-io/raydium-cp-swap/blob/master/programs/cp-swap/src/error.rs)
* [raydium-clmm error.rs (CLMM en mainnet)](https://github.com/raydium-io/raydium-clmm/blob/master/programs/amm/src/error.rs)
