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

# Kode Error

> Enum error Anchor untuk setiap program on-chain Raydium, lengkap dengan penyebab dan pesan UX yang direkomendasikan.

<Info>
  **Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.**

  [Lihat versi bahasa Inggris →](/reference/error-codes)
</Info>

<Info>
  **Sumber kebenaran.** Tabel di bawah ini dihasilkan ulang dari `error.rs` masing-masing program di repositori publik Raydium. Saat sebuah program diperbarui dan varian baru ditambahkan, jalankan ulang ekstraksi (tautan di bagian bawah setiap tabel) dan tambahkan ke tabel — jangan mengubah urutan baris yang sudah ada. Kode error Anchor ditetapkan berdasarkan **urutan sumber**, bukan nama, sehingga mengubah urutan akan merusak penanganan error di sisi integrator.
</Info>

## Cara kerja kode error Anchor

Anchor menetapkan setiap varian enum `ErrorCode` sebuah program dengan kode numerik yang dimulai dari `6000`. Transaksi yang gagal akan menampilkan:

* **Kode error numerik** (contoh: `0x1771` = 6001) di log transaksi.
* **Nama error** (contoh: `InvalidOwner`) dari IDL.
* **String `#[msg(...)]`** yang di-emit Anchor di `log_messages`.

Integrator sebaiknya mencocokkan berdasarkan **kode numerik**, bukan string pesan (string dapat diubah redaksinya tanpa menaikkan versi).

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

## Error CPMM (Standard AMM)

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

| Kode | Varian                         | String `#[msg]`                                                                        | Penyebab umum                                                                                                                     | UX yang direkomendasikan                                                    |
| ---- | ------------------------------ | -------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
| 6000 | `NotApproved`                  | Not approved                                                                           | Pemanggil bukan authority yang dikonfigurasi untuk instruksi admin.                                                               | "Hanya admin pool yang dapat melakukan tindakan ini."                       |
| 6001 | `InvalidOwner`                 | Input account owner is not the program address                                         | Akun yang diteruskan dimiliki oleh program yang salah (sering kali token program yang salah atau PDA dari program yang salah).    | "Internal: ketidakcocokan pemilik akun — muat ulang dan coba lagi."         |
| 6002 | `EmptySupply`                  | Input token account empty                                                              | Saldo LP atau akun token bernilai nol pada langkah yang membutuhkan jumlah positif.                                               | "Tidak ada yang perlu ditarik."                                             |
| 6003 | `InvalidInput`                 | InvalidInput                                                                           | Argumen buruk secara umum (jumlah di luar rentang, flag salah).                                                                   | "Input tidak valid — periksa jumlah dan coba lagi."                         |
| 6004 | `IncorrectLpMint`              | Address of the provided lp token mint is incorrect                                     | Akun LP mint yang diteruskan tidak cocok dengan `pool_state.lp_mint`.                                                             | "Internal: LP mint salah — muat ulang data pool."                           |
| 6005 | `ExceededSlippage`             | Exceeds desired slippage limit                                                         | Harga eksekusi lebih buruk dari `minAmountOut` / `maxAmountIn` yang ditetapkan pengguna.                                          | "Harga melampaui toleransi slippage Anda. Naikkan slippage atau coba lagi." |
| 6006 | `ZeroTradingTokens`            | Given pool token amount results in zero trading tokens                                 | Perhitungan deposit/penarikan membulatkan satu sisi ke nol (posisi terlalu kecil).                                                | "Jumlah di bawah minimum untuk pool ini."                                   |
| 6007 | `NotSupportMint`               | Not support token\_2022 mint extension *(grammar in source)*                           | Pool menemukan ekstensi Token-2022 yang tidak dapat ditangani dengan aman (contoh: `TransferHook`, `DefaultAccountState=Frozen`). | "Token ini memiliki ekstensi yang tidak didukung Raydium di CPMM."          |
| 6008 | `InvalidVault`                 | invaild vault *(typo in source)*                                                       | Akun vault yang diteruskan tidak cocok dengan yang tercatat di `pool_state`.                                                      | "Internal: vault salah — muat ulang dan coba lagi."                         |
| 6009 | `InitLpAmountTooLess`          | Init lp amount is too less(Because 100 amount lp will be locked) *(grammar in source)* | Saat inisialisasi pool, suplai LP yang dihitung berada di bawah jumlah kunci permanen.                                            | "Likuiditas awal terlalu kecil. Tambah jumlah deposit."                     |
| 6010 | `TransferFeeCalculateNotMatch` | TransferFee calculate not match                                                        | Jumlah pasca-transfer yang diamati untuk mint biaya Token-2022 tidak sesuai dengan ekspektasi yang dihitung sebelumnya.           | "Biaya transfer token berubah di tengah transaksi. Coba lagi."              |
| 6011 | `MathOverflow`                 | Math overflow                                                                          | Perhitungan swap/deposit/biaya intermediate mengalami overflow.                                                                   | "Jumlah terlalu besar untuk pool ini."                                      |
| 6012 | `InsufficientVault`            | Insufficient vault                                                                     | Saldo vault pool terlalu rendah untuk memenuhi output yang diminta.                                                               | "Likuiditas pool tidak cukup untuk ukuran ini."                             |
| 6013 | `InvalidFeeModel`              | Invalid fee model                                                                      | Admin menetapkan kombinasi parameter `AmmConfig` yang ditolak on-chain.                                                           | N/A — jalur khusus admin.                                                   |
| 6014 | `NoFeeCollect`                 | Fee is zero                                                                            | `collect_protocol_fee` / `collect_fund_fee` dipanggil saat biaya yang dapat dikumpulkan bernilai nol.                             | N/A — jalur admin; tooling sebaiknya mengabaikan error ini.                 |

Sumber regenerasi: [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).

## Error CLMM

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

| Kode | Varian                                   | String `#[msg]`                                                                         | Penyebab umum                                                                                                                                            | UX yang direkomendasikan                                                                 |
| ---- | ---------------------------------------- | --------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
| 6000 | `NotApproved`                            | Not approved                                                                            | Pemanggil bukan admin yang dikonfigurasi untuk instruksi ini.                                                                                            | "Hanya admin pool yang dapat melakukan tindakan ini."                                    |
| 6001 | `InvalidUpdateConfigFlag`                | invalid update amm config flag                                                          | Admin meneruskan nilai `param` yang tidak dikenal ke `update_amm_config`.                                                                                | N/A — jalur khusus admin.                                                                |
| 6002 | `AccountLack`                            | Account lack                                                                            | Akun remaining yang diperlukan tidak ada dalam tx (biasanya tick-array atau ekstensi oracle).                                                            | "Internal: akun hilang — muat ulang data pool."                                          |
| 6003 | `ClosePositionErr`                       | Remove liquidity, collect fees owed and reward then you can close position account      | Mencoba menutup posisi yang masih memiliki likuiditas, biaya belum diklaim, atau reward belum diklaim.                                                   | "Tarik semua likuiditas dan klaim biaya/reward sebelum menutup posisi."                  |
| 6004 | `InvalidTickIndex`                       | Tick out of range                                                                       | `tick_lower` atau `tick_upper` berada di luar `[-443636, 443636]`.                                                                                       | "Rentang harga di luar batas untuk pool ini."                                            |
| 6005 | `TickInvalidOrder`                       | The lower tick must be below the upper tick                                             | `tick_lower >= tick_upper`.                                                                                                                              | "Harga bawah harus lebih rendah dari harga atas."                                        |
| 6006 | `TickLowerOverflow`                      | The tick must be greater, or equal to the minimum tick(-443636)                         | Underflow tick bawah.                                                                                                                                    | "Harga bawah terlalu rendah."                                                            |
| 6007 | `TickUpperOverflow`                      | The tick must be lesser than, or equal to the maximum tick(443636)                      | Overflow tick atas.                                                                                                                                      | "Harga atas terlalu tinggi."                                                             |
| 6008 | `TickAndSpacingNotMatch`                 | tick % tick\_spacing must be zero                                                       | Tick yang diajukan bukan kelipatan `tick_spacing` pool.                                                                                                  | "Sesuaikan harga ke increment valid terdekat."                                           |
| 6009 | `InvalidTickArray`                       | Invalid tick array account                                                              | PDA yang salah diteruskan untuk slot tick-array.                                                                                                         | "Internal: tick array salah — muat ulang data pool."                                     |
| 6010 | `InvalidTickArrayBoundary`               | Invalid tick array boundary                                                             | Kesalahan off-by-one pada pengindeksan tick-array.                                                                                                       | "Internal: error batas tick-array."                                                      |
| 6011 | `SqrtPriceLimitOverflow`                 | Square root price limit overflow                                                        | `sqrt_price_limit` yang diberikan pemanggil berada di luar rentang valid.                                                                                | "Batas harga di luar rentang."                                                           |
| 6012 | `SqrtPriceX64`                           | sqrt\_price\_x64 out of range                                                           | Sqrt harga pool saat ini keluar dari rentang di tengah swap.                                                                                             | "Coba ulang swap."                                                                       |
| 6013 | `LiquiditySubValueErr`                   | Liquidity sub delta L must be smaller than before                                       | Pelanggaran invarian internal pada decrease-liquidity.                                                                                                   | "Internal: error akuntansi likuiditas."                                                  |
| 6014 | `LiquidityAddValueErr`                   | Liquidity add delta L must be greater, or equal to before                               | Pelanggaran invarian internal pada increase-liquidity.                                                                                                   | "Internal: error akuntansi likuiditas."                                                  |
| 6015 | `ForbidBothZeroForSupplyLiquidity`       | Both token amount must not be zero while supply liquidity                               | Panggilan increase-liquidity dengan `amount_0_max` dan `amount_1_max` keduanya nol.                                                                      | "Sediakan setidaknya satu token."                                                        |
| 6016 | `LiquidityInsufficient`                  | Liquidity insufficient                                                                  | Posisi tidak memiliki cukup likuiditas untuk memenuhi penarikan.                                                                                         | "Jumlah penarikan melebihi likuiditas posisi."                                           |
| 6017 | `PriceSlippageCheck`                     | Price slippage check                                                                    | Harga eksekusi gagal melewati penjaga slippage pemanggil.                                                                                                | "Harga melampaui toleransi slippage Anda. Naikkan slippage atau coba lagi."              |
| 6018 | `TooLittleOutputReceived`                | Too little output received                                                              | `SwapBaseInput`: jumlah output di bawah `other_amount_threshold`.                                                                                        | "Slippage terlampaui — output minimum tidak terpenuhi."                                  |
| 6019 | `TooMuchInputPaid`                       | Too much input paid                                                                     | `SwapBaseOutput`: jumlah input di atas `other_amount_threshold`.                                                                                         | "Slippage terlampaui — input maksimum dilampaui."                                        |
| 6020 | `ZeroAmountSpecified`                    | Swap special amount can not be zero                                                     | `amount` bernilai nol pada instruksi swap.                                                                                                               | "Masukkan jumlah yang lebih besar dari nol."                                             |
| 6021 | `InvalidInputPoolVault`                  | Input pool vault is invalid                                                             | Akun input-vault swap tidak cocok dengan vault yang tercatat di pool.                                                                                    | "Internal: input vault salah — muat ulang data pool."                                    |
| 6022 | `TooSmallInputOrOutputAmount`            | Swap input or output amount is too small                                                | Perhitungan swap dibulatkan ke nol, biasanya karena jumlah dust yang sangat kecil.                                                                       | "Jumlah terlalu kecil untuk di-swap di pool ini."                                        |
| 6023 | `NotEnoughTickArrayAccount`              | Not enough tick array account                                                           | Akun remaining tick-array yang disediakan untuk rentang swap tidak cukup.                                                                                | "Internal: tick-array tidak cukup — muat ulang data pool."                               |
| 6024 | `InvalidFirstTickArrayAccount`           | Invalid first tick array account                                                        | Akun tick-array pertama yang diteruskan tidak mencakup tick saat ini.                                                                                    | "Internal: tick array pertama salah — muat ulang data pool."                             |
| 6025 | `InvalidRewardIndex`                     | Invalid reward index                                                                    | `reward_index` di luar `[0, 2]`.                                                                                                                         | N/A — jalur admin.                                                                       |
| 6026 | `FullRewardInfo`                         | The init reward token reach to the max                                                  | Pool sudah memiliki maksimum (3) reward mint yang dikonfigurasi.                                                                                         | N/A — jalur admin.                                                                       |
| 6027 | `RewardTokenAlreadyInUse`                | The init reward token already in use                                                    | Reward mint menduplikasi yang sudah ada.                                                                                                                 | N/A — jalur admin.                                                                       |
| 6028 | `ExceptRewardMint`                       | The reward tokens must contain one of pool vault mint except the last reward            | Sebelum slot 2, reward mint harus sama dengan salah satu vault mint pool.                                                                                | N/A — jalur admin.                                                                       |
| 6029 | `InvalidRewardInitParam`                 | Invalid reward init param                                                               | Waktu mulai/selesai emisi atau laju per-detik tidak valid.                                                                                               | N/A — jalur admin.                                                                       |
| 6030 | `InvalidRewardInputAccountNumber`        | Invalid collect reward input account number                                             | Jumlah akun remaining yang diteruskan ke `CollectReward` salah.                                                                                          | "Internal: jumlah akun salah — muat ulang dan coba lagi."                                |
| 6031 | `InvalidRewardPeriod`                    | Invalid reward period                                                                   | Periode emisi reward tidak valid (`end <= start`, durasi nol).                                                                                           | N/A — jalur admin.                                                                       |
| 6032 | `NotApproveUpdateRewardEmissions`        | Modification of emissions is allowed within 72 hours from the end of the previous cycle | Admin mencoba mengubah emisi di luar jendela 72 jam di sekitar batas siklus.                                                                             | N/A — jalur admin.                                                                       |
| 6033 | `UnInitializedRewardInfo`                | uninitialized reward info                                                               | Slot reward belum diinisialisasi tetapi sudah direferensikan.                                                                                            | N/A — jalur admin.                                                                       |
| 6034 | `NotSupportMint`                         | Not support token\_2022 mint extension                                                  | CLMM menemukan ekstensi Token-2022 yang tidak dapat ditangani.                                                                                           | "Token ini memiliki ekstensi yang tidak didukung Raydium CLMM."                          |
| 6035 | `MissingTickArrayBitmapExtensionAccount` | Missing tickarray bitmap extension account                                              | Swap melewati rentang tick yang tidak tercakup bitmap dasar; akun bitmap ekstensi diperlukan.                                                            | "Internal: ekstensi tick-array hilang — muat ulang data pool."                           |
| 6036 | `InsufficientLiquidityForDirection`      | Insufficient liquidity for this direction                                               | Tidak ada cukup likuiditas di arah swap yang diminta.                                                                                                    | "Likuiditas tidak cukup untuk ukuran swap ini."                                          |
| 6037 | `MaxTokenOverflow`                       | Max token overflow                                                                      | Jumlah input/output melebihi u64.                                                                                                                        | "Jumlah terlalu besar untuk pool ini."                                                   |
| 6038 | `CalculateOverflow`                      | Calculate overflow                                                                      | Overflow pada aritmetika biaya/likuiditas.                                                                                                               | "Jumlah terlalu besar untuk pool ini."                                                   |
| 6039 | `TransferFeeCalculateNotMatch`           | TransferFee calculate not match                                                         | Jumlah yang diamati dari transfer fee Token-2022 tidak sesuai ekspektasi.                                                                                | "Biaya transfer token berubah di tengah transaksi. Coba lagi."                           |
| 6040 | `OrderAlreadyFilled`                     | Order already fully filled, cannot modify                                               | `IncreaseLimitOrder` / `DecreaseLimitOrder` dipanggil pada order yang bagian belum terisinya sudah nol.                                                  | "Limit order ini sudah terisi — lakukan settle untuk menerima output."                   |
| 6041 | `InvalidOrderPhase`                      | Invalid order phase                                                                     | Mengubah order yang fase kohort FIFO-nya tidak lagi cocok dengan fase kohort tick saat ini.                                                              | "Tindakan ini tidak dapat dilakukan pada status order saat ini."                         |
| 6042 | `InvalidLimitOrderAmount`                | Invalid limit order amount                                                              | Input order di bawah minimum pool (atau nol) saat dibuka/ditambah/dikurangi.                                                                             | "Ukuran order di bawah minimum pool."                                                    |
| 6043 | `OrderPhaseSaturated`                    | Tick order phase saturated                                                              | Penghitung `order_phase` kohort pada tick sudah jenuh; order baru tidak dapat dibuka di tick tersebut sampai kohort yang ada di-settle dan di-roll over. | "Terlalu banyak order aktif di harga ini; coba tick terdekat atau tunggu order selesai." |
| 6044 | `InvalidDynamicFeeConfigParams`          | Invalid dynamic fee config params                                                       | `CreateDynamicFeeConfig` / `UpdateDynamicFeeConfig` ditolak; atau `CreateCustomizablePool` mengaktifkan dynamic fee tanpa konfigurasi yang valid.        | N/A pada jalur admin; "Konfigurasi dynamic fee tidak valid" pada jalur pengguna.         |
| 6045 | `InvalidFeeOn`                           | Invalid fee on which token (must be 0, 1, or 2)                                         | `CreateCustomizablePool` meneruskan nilai `collect_fee_on` di luar `{0, 1, 2}`.                                                                          | "Internal: mode biaya tidak valid."                                                      |
| 6046 | `ZeroSqrtPrice`                          | sqrt\_price\_x64 must be greater than 0                                                 | `CreateCustomizablePool` (atau jalur lain yang menerima sqrt harga awal yang dapat dikustomisasi) dipanggil dengan `sqrt_price_x64 == 0`.                | "Harga awal harus lebih besar dari nol."                                                 |
| 6047 | `ZeroLiquidity`                          | liquidity must be greater than 0                                                        | Jalur penyediaan likuiditas dipanggil dengan `liquidity == 0` tanpa jumlah kompensasi.                                                                   | "Jumlah likuiditas harus lebih besar dari nol."                                          |
| 6048 | `MissingBaseFlag`                        | base\_flag is required when liquidity is zero                                           | Jalur open-position-by-amount menghitung `liquidity == 0` dan pemanggil tidak menyertakan `base_flag` untuk menentukan sisi mana yang menjadi base.      | "Sediakan likuiditas yang bukan nol atau tentukan token mana yang menjadi base."         |
| 6049 | `MissingMintAccount`                     | Mint account is required but not provided                                               | Jalur yang mendukung Token-2022 dipanggil tanpa akun mint input/output yang diperlukan untuk memvalidasi ekstensi dan biaya transfer.                    | "Internal: akun mint hilang — muat ulang data pool."                                     |
| 6050 | `MissingTokenProgram2022`                | Token-2022 program is required but not provided                                         | Sama seperti di atas, tetapi untuk akun program SPL-Token-2022.                                                                                          | "Internal: program Token-2022 hilang — muat ulang dan coba lagi."                        |

> **Catatan tentang penomoran ulang.** Enum `ErrorCode` CLMM telah dinomori ulang dalam rilis ini: lima varian lama (`LOK`, `ZeroMintAmount`, `InvalidLiquidity`, `TransactionTooOld`, `InvalidRewardDesiredAmount`) dan beberapa typo (`Liquitity`, `enought`, `emissiones`) telah dihapus/diperbaiki, dan sebelas varian baru ditambahkan. Karena Anchor menomori error berdasarkan urutan sumber, setiap kode pada atau setelah `6000` telah bergeser relatif terhadap build pra-rilis. Klien yang melakukan hard-code kode numerik terhadap versi sebelumnya perlu melakukan pemetaan ulang.

Sumber regenerasi: [github.com/raydium-io/raydium-clmm — error.rs](https://github.com/raydium-io/raydium-clmm/blob/master/programs/amm/src/error.rs).

## Error AMM v4, Farm v3 / v5 / v6, LaunchLab

Program-program ini didokumentasikan di bab masing-masing (lihat [`products/amm-v4/instructions`](/id/products/amm-v4/instructions), [`products/farm-staking/instructions`](/id/products/farm-staking/instructions), [`products/launchlab/instructions`](/id/products/launchlab/instructions)). Karena program-program tersebut menggunakan campuran Anchor dan surface error Solana biasa, tabel error mereka berada di dekat referensi instruksi, bukan di sini. Kode-kode di bawah ini dicadangkan oleh bab-bab tersebut:

| Program      | Rentang kode (hanya Anchor)        | Referensi                                                                      |
| ------------ | ---------------------------------- | ------------------------------------------------------------------------------ |
| AMM v4       | Kode u32 custom, bukan gaya Anchor | [`products/amm-v4/instructions`](/id/products/amm-v4/instructions)             |
| Farm v3 / v5 | Kode u32 custom                    | [`products/farm-staking/instructions`](/id/products/farm-staking/instructions) |
| Farm v6      | 6000+ (Anchor)                     | [`products/farm-staking/instructions`](/id/products/farm-staking/instructions) |
| LaunchLab    | 6000+ (Anchor)                     | [`products/launchlab/instructions`](/id/products/launchlab/instructions)       |

## Memetakan error SDK ke error program

TypeScript SDK resmi membungkus error on-chain ke dalam `SendTransactionError` dan, untuk program Anchor, `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.
  }
}
```

Jika Anda tidak menggunakan klien Anchor, parse log transaksi berikut:

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

Pola `Error Number: (\d+)` stabil di berbagai versi Anchor dan aman untuk dicocokkan.

## Meregenerasi tabel ini

Saat sebuah program diperbarui dan menambahkan error baru, ekstrak ulang dari sumber:

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

Selalu perbarui [`reference/changelog`](/id/reference/changelog) saat varian baru ditambahkan, agar integrator yang memperbarui SDK tahu bahwa mereka perlu me-refresh penanganan error mereka.

Sumber:

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