> ## 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 erro

> Enums de erro Anchor para cada programa Raydium on-chain, com causa e mensagem de UX recomendada.

<Info>
  **Esta página foi traduzida automaticamente por IA. A versão em inglês é a fonte oficial.**

  [Ver versão em inglês →](/reference/error-codes)
</Info>

<Info>
  **Fonte de verdade.** As tabelas abaixo são regeneradas a partir do `error.rs` de cada programa nos repositórios públicos do Raydium. Quando um programa é atualizado e uma nova variante é adicionada, execute novamente a extração (link no final de cada tabela) e acrescente à tabela em vez de reordenar — os códigos de erro Anchor são atribuídos pela **ordem no código-fonte**, não pelo nome, portanto reordenar quebra o tratamento de erros dos integradores.
</Info>

## Como funcionam os códigos de erro Anchor

O Anchor atribui a cada variante do enum `ErrorCode` de um programa um código numérico começando em `6000`. Uma transação com falha expõe:

* **Código de erro numérico** (ex.: `0x1771` = 6001) nos logs da transação.
* **Nome do erro** (ex.: `InvalidOwner`) proveniente do IDL.
* **String `#[msg(...)]`** emitida pelo Anchor em `log_messages`.

Integradores devem verificar o **código numérico**, não a string da mensagem (a string pode ser reformulada sem incrementar uma versão).

```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;
}
```

## Erros do CPMM (AMM Padrão)

ID do programa: veja [reference/program-addresses](/pt/reference/program-addresses#on-chain-programs). Fonte: `raydium-cp-swap/programs/cp-swap/src/error.rs`.

| Código | Variante                       | String `#[msg]`                                                                                | Causa típica                                                                                                                         | UX recomendada                                                                           |
| ------ | ------------------------------ | ---------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------- |
| 6000   | `NotApproved`                  | Not approved                                                                                   | O chamador não é a autoridade configurada para uma instrução de administrador.                                                       | "Somente o administrador do pool pode executar esta ação."                               |
| 6001   | `InvalidOwner`                 | Input account owner is not the program address                                                 | Uma conta passada pertence ao programa errado (geralmente um programa de token errado ou um PDA de programa incorreto).              | "Interno: incompatibilidade de proprietário da conta — atualize e tente novamente."      |
| 6002   | `EmptySupply`                  | Input token account empty                                                                      | O saldo da conta LP ou de token é zero em uma etapa que requer um valor positivo.                                                    | "Nada a retirar."                                                                        |
| 6003   | `InvalidInput`                 | InvalidInput                                                                                   | Argumento inválido genérico (valor fora do intervalo, flag incorreta).                                                               | "Entrada inválida — verifique os valores e tente novamente."                             |
| 6004   | `IncorrectLpMint`              | Address of the provided lp token mint is incorrect                                             | A conta LP mint passada não corresponde a `pool_state.lp_mint`.                                                                      | "Interno: LP mint incorreto — atualize os dados do pool."                                |
| 6005   | `ExceededSlippage`             | Exceeds desired slippage limit                                                                 | O preço executado é pior do que o `minAmountOut` / `maxAmountIn` do usuário.                                                         | "O preço ultrapassou sua tolerância de slippage. Aumente o slippage ou tente novamente." |
| 6006   | `ZeroTradingTokens`            | Given pool token amount results in zero trading tokens                                         | A matemática de depósito/retirada arredondou um lado para zero (posição muito pequena).                                              | "O valor está abaixo do mínimo para este pool."                                          |
| 6007   | `NotSupportMint`               | Not support token\_2022 mint extension *(gramática no código-fonte)*                           | O pool encontrou uma extensão Token-2022 que não pode ser tratada com segurança (ex.: `TransferHook`, `DefaultAccountState=Frozen`). | "Este token possui uma extensão não suportada pelo Raydium no CPMM."                     |
| 6008   | `InvalidVault`                 | invaild vault *(typo no código-fonte)*                                                         | A conta vault passada não corresponde à registrada em `pool_state`.                                                                  | "Interno: vault incorreto — atualize e tente novamente."                                 |
| 6009   | `InitLpAmountTooLess`          | Init lp amount is too less(Because 100 amount lp will be locked) *(gramática no código-fonte)* | Na inicialização do pool, o supply LP calculado está abaixo da quantidade de bloqueio permanente.                                    | "Liquidez inicial muito pequena. Aumente o depósito."                                    |
| 6010   | `TransferFeeCalculateNotMatch` | TransferFee calculate not match                                                                | O valor pós-transferência observado para um mint com taxa Token-2022 não correspondeu à expectativa pré-calculada.                   | "A taxa de transferência do token mudou durante a transação. Tente novamente."           |
| 6011   | `MathOverflow`                 | Math overflow                                                                                  | Um cálculo intermediário de swap/depósito/taxa causou overflow.                                                                      | "O valor é grande demais para este pool."                                                |
| 6012   | `InsufficientVault`            | Insufficient vault                                                                             | O saldo do vault do pool é insuficiente para cobrir o valor de saída solicitado.                                                     | "Liquidez insuficiente no pool para este tamanho."                                       |
| 6013   | `InvalidFeeModel`              | Invalid fee model                                                                              | O administrador definiu uma combinação de parâmetros `AmmConfig` rejeitada on-chain.                                                 | N/A — caminho exclusivo do administrador.                                                |
| 6014   | `NoFeeCollect`                 | Fee is zero                                                                                    | `collect_protocol_fee` / `collect_fund_fee` chamado com taxas coletáveis zeradas.                                                    | N/A — caminho do administrador; ferramentas devem ignorar.                               |

Fonte de regeneração: [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).

## Erros do CLMM

ID do programa: veja [reference/program-addresses](/pt/reference/program-addresses#on-chain-programs). Fonte: `raydium-clmm/programs/amm/src/error.rs`.

| Código | Variante                                 | String `#[msg]`                                                                         | Causa típica                                                                                                                                        | UX recomendada                                                                                   |
| ------ | ---------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
| 6000   | `NotApproved`                            | Not approved                                                                            | O chamador não é o administrador configurado para esta instrução.                                                                                   | "Somente o administrador do pool pode executar esta ação."                                       |
| 6001   | `InvalidUpdateConfigFlag`                | invalid update amm config flag                                                          | O administrador passou um valor `param` não reconhecido para `update_amm_config`.                                                                   | N/A — caminho exclusivo do administrador.                                                        |
| 6002   | `AccountLack`                            | Account lack                                                                            | Conta restante obrigatória ausente da tx (geralmente tick-array ou extensão oracle).                                                                | "Interno: conta ausente — atualize os dados do pool."                                            |
| 6003   | `ClosePositionErr`                       | Remove liquidity, collect fees owed and reward then you can close position account      | Tentativa de fechar uma posição que ainda possui liquidez, taxas não coletadas ou recompensas não coletadas.                                        | "Retire toda a liquidez e resgate taxas/recompensas antes de fechar a posição."                  |
| 6004   | `InvalidTickIndex`                       | Tick out of range                                                                       | `tick_lower` ou `tick_upper` está fora de `[-443636, 443636]`.                                                                                      | "Intervalo de preço fora dos limites para este pool."                                            |
| 6005   | `TickInvalidOrder`                       | The lower tick must be below the upper tick                                             | `tick_lower >= tick_upper`.                                                                                                                         | "O preço inferior deve ser menor que o preço superior."                                          |
| 6006   | `TickLowerOverflow`                      | The tick must be greater, or equal to the minimum tick(-443636)                         | Underflow do tick inferior.                                                                                                                         | "Preço inferior muito baixo."                                                                    |
| 6007   | `TickUpperOverflow`                      | The tick must be lesser than, or equal to the maximum tick(443636)                      | Overflow do tick superior.                                                                                                                          | "Preço superior muito alto."                                                                     |
| 6008   | `TickAndSpacingNotMatch`                 | tick % tick\_spacing must be zero                                                       | O tick enviado não é múltiplo do `tick_spacing` do pool.                                                                                            | "Ajuste o preço ao incremento válido mais próximo."                                              |
| 6009   | `InvalidTickArray`                       | Invalid tick array account                                                              | PDA incorreto passado para um slot de tick-array.                                                                                                   | "Interno: tick array incorreto — atualize os dados do pool."                                     |
| 6010   | `InvalidTickArrayBoundary`               | Invalid tick array boundary                                                             | Erro por um na indexação do tick-array.                                                                                                             | "Interno: erro de limite do tick-array."                                                         |
| 6011   | `SqrtPriceLimitOverflow`                 | Square root price limit overflow                                                        | `sqrt_price_limit` fornecido pelo chamador está fora do intervalo válido.                                                                           | "Limite de preço fora do intervalo."                                                             |
| 6012   | `SqrtPriceX64`                           | sqrt\_price\_x64 out of range                                                           | O sqrt price atual do pool saiu do intervalo durante o swap.                                                                                        | "Tente o swap novamente."                                                                        |
| 6013   | `LiquiditySubValueErr`                   | Liquidity sub delta L must be smaller than before                                       | Violação de invariante interno ao diminuir liquidez.                                                                                                | "Interno: erro de contabilidade de liquidez."                                                    |
| 6014   | `LiquidityAddValueErr`                   | Liquidity add delta L must be greater, or equal to before                               | Violação de invariante interno ao aumentar liquidez.                                                                                                | "Interno: erro de contabilidade de liquidez."                                                    |
| 6015   | `ForbidBothZeroForSupplyLiquidity`       | Both token amount must not be zero while supply liquidity                               | Chamada de aumento de liquidez com `amount_0_max` e `amount_1_max` ambos zerados.                                                                   | "Forneça ao menos um token."                                                                     |
| 6016   | `LiquidityInsufficient`                  | Liquidity insufficient                                                                  | A posição não possui liquidez suficiente para a retirada solicitada.                                                                                | "O valor de retirada excede a liquidez da posição."                                              |
| 6017   | `PriceSlippageCheck`                     | Price slippage check                                                                    | O preço de execução não passou pela proteção de slippage do chamador.                                                                               | "O preço ultrapassou sua tolerância de slippage. Aumente o slippage ou tente novamente."         |
| 6018   | `TooLittleOutputReceived`                | Too little output received                                                              | `SwapBaseInput`: valor de saída abaixo de `other_amount_threshold`.                                                                                 | "Slippage excedido — saída mínima não atingida."                                                 |
| 6019   | `TooMuchInputPaid`                       | Too much input paid                                                                     | `SwapBaseOutput`: valor de entrada acima de `other_amount_threshold`.                                                                               | "Slippage excedido — entrada máxima ultrapassada."                                               |
| 6020   | `ZeroAmountSpecified`                    | Swap special amount can not be zero                                                     | `amount` zero em uma instrução de swap.                                                                                                             | "Informe um valor maior que zero."                                                               |
| 6021   | `InvalidInputPoolVault`                  | Input pool vault is invalid                                                             | A conta input-vault do swap não corresponde ao vault registrado no pool.                                                                            | "Interno: input vault incorreto — atualize os dados do pool."                                    |
| 6022   | `TooSmallInputOrOutputAmount`            | Swap input or output amount is too small                                                | A matemática do swap arredondou para zero, geralmente por valores muito pequenos.                                                                   | "Valor muito pequeno para fazer swap neste pool."                                                |
| 6023   | `NotEnoughTickArrayAccount`              | Not enough tick array account                                                           | Contas de tick-array restantes insuficientes fornecidas para o intervalo do swap.                                                                   | "Interno: tick-arrays insuficientes — atualize os dados do pool."                                |
| 6024   | `InvalidFirstTickArrayAccount`           | Invalid first tick array account                                                        | A primeira conta tick-array passada não cobre o tick atual.                                                                                         | "Interno: primeiro tick array incorreto — atualize os dados do pool."                            |
| 6025   | `InvalidRewardIndex`                     | Invalid reward index                                                                    | `reward_index` fora de `[0, 2]`.                                                                                                                    | N/A — caminho do administrador.                                                                  |
| 6026   | `FullRewardInfo`                         | The init reward token reach to the max                                                  | O pool já possui o máximo (3) de reward mints configurados.                                                                                         | N/A — caminho do administrador.                                                                  |
| 6027   | `RewardTokenAlreadyInUse`                | The init reward token already in use                                                    | O reward mint duplica um já existente.                                                                                                              | N/A — caminho do administrador.                                                                  |
| 6028   | `ExceptRewardMint`                       | The reward tokens must contain one of pool vault mint except the last reward            | Antes do slot 2, o reward mint deve ser igual a um dos vault mints do pool.                                                                         | N/A — caminho do administrador.                                                                  |
| 6029   | `InvalidRewardInitParam`                 | Invalid reward init param                                                               | Horário de início/fim de emissão ou taxa por segundo inválidos.                                                                                     | N/A — caminho do administrador.                                                                  |
| 6030   | `InvalidRewardInputAccountNumber`        | Invalid collect reward input account number                                             | Número incorreto de contas restantes passadas para `CollectReward`.                                                                                 | "Interno: número de contas incorreto — atualize e tente novamente."                              |
| 6031   | `InvalidRewardPeriod`                    | Invalid reward period                                                                   | Período de emissão de recompensa inválido (`end <= start`, duração zero).                                                                           | N/A — caminho do administrador.                                                                  |
| 6032   | `NotApproveUpdateRewardEmissions`        | Modification of emissions is allowed within 72 hours from the end of the previous cycle | O administrador tentou modificar emissões fora da janela de 72 horas ao redor dos limites de ciclo.                                                 | N/A — caminho do administrador.                                                                  |
| 6033   | `UnInitializedRewardInfo`                | uninitialized reward info                                                               | Slot de recompensa não inicializado, mas referenciado.                                                                                              | N/A — caminho do administrador.                                                                  |
| 6034   | `NotSupportMint`                         | Not support token\_2022 mint extension                                                  | O CLMM encontrou uma extensão Token-2022 que não pode ser tratada.                                                                                  | "Este token possui uma extensão não suportada pelo Raydium CLMM."                                |
| 6035   | `MissingTickArrayBitmapExtensionAccount` | Missing tickarray bitmap extension account                                              | O swap cruzou um intervalo de tick não coberto pelo bitmap base; é necessária a conta de bitmap de extensão.                                        | "Interno: extensão de tick-array ausente — atualize os dados do pool."                           |
| 6036   | `InsufficientLiquidityForDirection`      | Insufficient liquidity for this direction                                               | Não há liquidez suficiente na direção do swap.                                                                                                      | "Liquidez insuficiente para este tamanho de swap."                                               |
| 6037   | `MaxTokenOverflow`                       | Max token overflow                                                                      | O valor de entrada/saída excedeu u64.                                                                                                               | "Valor grande demais para este pool."                                                            |
| 6038   | `CalculateOverflow`                      | Calculate overflow                                                                      | Overflow aritmético em taxa/liquidez.                                                                                                               | "Valor grande demais para este pool."                                                            |
| 6039   | `TransferFeeCalculateNotMatch`           | TransferFee calculate not match                                                         | O valor observado da taxa de transferência Token-2022 não correspondeu ao esperado.                                                                 | "A taxa de transferência do token mudou durante a transação. Tente novamente."                   |
| 6040   | `OrderAlreadyFilled`                     | Order already fully filled, cannot modify                                               | `IncreaseLimitOrder` / `DecreaseLimitOrder` chamado em uma ordem cuja parte não preenchida é zero.                                                  | "Esta ordem limitada já foi preenchida — liquide para receber o valor de saída."                 |
| 6041   | `InvalidOrderPhase`                      | Invalid order phase                                                                     | Modificação de uma ordem cujo ciclo FIFO não corresponde mais ao ciclo atual do tick.                                                               | "Esta ação não pode ser realizada no estado atual da ordem."                                     |
| 6042   | `InvalidLimitOrderAmount`                | Invalid limit order amount                                                              | Valor de entrada da ordem abaixo do mínimo do pool (ou zero) ao abrir/aumentar/diminuir.                                                            | "O tamanho da ordem está abaixo do mínimo do pool."                                              |
| 6043   | `OrderPhaseSaturated`                    | Tick order phase saturated                                                              | O contador `order_phase` do ciclo no tick saturou; novas ordens não podem ser abertas naquele tick até que os ciclos existentes liquidem e renovem. | "Ordens demais ativas neste preço; tente um tick próximo ou aguarde as ordens liquidarem."       |
| 6044   | `InvalidDynamicFeeConfigParams`          | Invalid dynamic fee config params                                                       | `CreateDynamicFeeConfig` / `UpdateDynamicFeeConfig` rejeitado; ou `CreateCustomizablePool` habilitou taxa dinâmica sem uma configuração válida.     | N/A no caminho do administrador; "Configuração de taxa dinâmica inválida" no caminho do usuário. |
| 6045   | `InvalidFeeOn`                           | Invalid fee on which token (must be 0, 1, or 2)                                         | `CreateCustomizablePool` passou um valor `collect_fee_on` fora de `{0, 1, 2}`.                                                                      | "Interno: modo de taxa inválido."                                                                |
| 6046   | `ZeroSqrtPrice`                          | sqrt\_price\_x64 must be greater than 0                                                 | `CreateCustomizablePool` (ou outro caminho que aceita sqrt price inicial personalizável) foi chamado com `sqrt_price_x64 == 0`.                     | "O preço inicial deve ser maior que zero."                                                       |
| 6047   | `ZeroLiquidity`                          | liquidity must be greater than 0                                                        | Um caminho de fornecimento de liquidez foi chamado com `liquidity == 0` sem valor compensatório.                                                    | "O valor de liquidez deve ser maior que zero."                                                   |
| 6048   | `MissingBaseFlag`                        | base\_flag is required when liquidity is zero                                           | Um caminho de abertura de posição por valor calculou `liquidity == 0` e o chamador não forneceu um `base_flag` para indicar qual lado é a base.     | "Forneça uma liquidez diferente de zero ou especifique qual token é a base."                     |
| 6049   | `MissingMintAccount`                     | Mint account is required but not provided                                               | Um caminho com suporte a Token-2022 foi chamado sem a conta mint de entrada/saída necessária para validar extensões e taxas de transferência.       | "Interno: conta mint ausente — atualize os dados do pool."                                       |
| 6050   | `MissingTokenProgram2022`                | Token-2022 program is required but not provided                                         | Igual ao anterior, mas para a conta do programa SPL-Token-2022.                                                                                     | "Interno: programa Token-2022 ausente — atualize e tente novamente."                             |

> **Nota sobre renumeração.** O enum `ErrorCode` do CLMM foi renumerado nesta versão: cinco variantes legadas (`LOK`, `ZeroMintAmount`, `InvalidLiquidity`, `TransactionTooOld`, `InvalidRewardDesiredAmount`) e vários erros tipográficos (`Liquitity`, `enought`, `emissiones`) foram removidos/corrigidos, e onze novas variantes foram acrescentadas. Como o Anchor numera os erros pela ordem no código-fonte, todos os códigos a partir de `6000` foram deslocados em relação às builds anteriores ao lançamento. Clientes que codificaram diretamente os códigos numéricos para uma versão anterior precisam remapear.

Fonte de regeneração: [github.com/raydium-io/raydium-clmm — error.rs](https://github.com/raydium-io/raydium-clmm/blob/master/programs/amm/src/error.rs).

## Erros do AMM v4, Farm v3 / v5 / v6 e LaunchLab

Esses programas estão documentados em seus respectivos capítulos (veja [`products/amm-v4/instructions`](/pt/products/amm-v4/instructions), [`products/farm-staking/instructions`](/pt/products/farm-staking/instructions), [`products/launchlab/instructions`](/pt/products/launchlab/instructions)). Como esses programas utilizam uma combinação de superfícies de erro Anchor e Solana puro, suas tabelas de erro ficam junto à referência de instruções, e não aqui. Os códigos abaixo são reservados por esses capítulos:

| Programa     | Intervalo de códigos (somente Anchor)            | Referência                                                                     |
| ------------ | ------------------------------------------------ | ------------------------------------------------------------------------------ |
| AMM v4       | Códigos u32 personalizados, não no estilo Anchor | [`products/amm-v4/instructions`](/pt/products/amm-v4/instructions)             |
| Farm v3 / v5 | Códigos u32 personalizados                       | [`products/farm-staking/instructions`](/pt/products/farm-staking/instructions) |
| Farm v6      | 6000+ (Anchor)                                   | [`products/farm-staking/instructions`](/pt/products/farm-staking/instructions) |
| LaunchLab    | 6000+ (Anchor)                                   | [`products/launchlab/instructions`](/pt/products/launchlab/instructions)       |

## Mapeando erros do SDK para erros de programa

O SDK TypeScript oficial encapsula erros on-chain em `SendTransactionError` e, para programas Anchor, em `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.
  }
}
```

Se você não estiver usando o cliente Anchor, analise os logs da transação:

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

O padrão `Error Number: (\d+)` é estável entre versões do Anchor e seguro para verificar.

## Regenerando estas tabelas

Quando um programa é atualizado e adiciona um novo erro, reextraia a partir do código-fonte:

```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.
```

Sempre atualize [`reference/changelog`](/pt/reference/changelog) quando uma nova variante for adicionada, para que os integradores que estão atualizando o SDK saibam que precisam atualizar seus tratadores de erro.

Fontes:

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