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

# DBC Program Errors

> Understand DBC dynamic_bonding_curve error codes, messages, SDK validation checks, transfer-hook errors, and common causes for integration debugging.

This page lists the Anchor custom errors returned by the `dynamic-bonding-curve` program.

<Tip>
  Anchor custom program errors start at `6000`. When a transaction log contains `custom program error: 0x1771`, convert the hex value to decimal to find the matching code. For example, `PoolError::MathOverflow` maps to code `6000`.
</Tip>

## Error Codes

| Code   | Error                                      | Message                                                   | Common cause                                                                                                                   |
| ------ | ------------------------------------------ | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `6000` | `MathOverflow`                             | Math operation overflow                                   | Amounts, prices, or liquidity values exceed supported integer bounds.                                                          |
| `6001` | `InvalidFee`                               | Invalid fee setup                                         | Base fee, dynamic fee, or fee scheduler parameters are inconsistent.                                                           |
| `6002` | `ExceededSlippage`                         | Exceeded slippage tolerance                               | Swap output is below the minimum output, or exact-out input exceeds the maximum input.                                         |
| `6003` | `ExceedMaxFeeBps`                          | Exceeded max fee bps                                      | Fee numerator is above the program maximum.                                                                                    |
| `6004` | `InvalidAdmin`                             | Invalid admin                                             | Signer is not an admin for an admin-only instruction.                                                                          |
| `6005` | `AmountIsZero`                             | Amount is zero                                            | Swap, claim, or migration amount is zero where a positive amount is required.                                                  |
| `6006` | `TypeCastFailed`                           | Type cast error                                           | Integer conversion failed.                                                                                                     |
| `6007` | `InvalidActivationType`                    | Invalid activation type                                   | Activation type is not slot (`0`) or timestamp (`1`).                                                                          |
| `6008` | `InvalidQuoteMint`                         | Invalid quote mint                                        | Quote mint does not match the config or supported path.                                                                        |
| `6009` | `InvalidCollectFeeMode`                    | Invalid collect fee mode                                  | Collect fee mode is not quote token (`0`) or output token (`1`).                                                               |
| `6010` | `InvalidMigrationFeeOption`                | Invalid migration fee option                              | Migration fee option is outside the supported range, or custom option is used with the wrong destination.                      |
| `6011` | `InvalidInput`                             | Invalid input                                             | Generic parameter validation failure.                                                                                          |
| `6012` | `NotEnoughLiquidity`                       | Not enough liquidity                                      | Swap or migration needs more liquidity than the curve can provide.                                                             |
| `6013` | `PoolIsCompleted`                          | Pool is completed                                         | Attempted a pre-migration action after the curve completed.                                                                    |
| `6014` | `PoolIsIncompleted`                        | Pool is incompleted                                       | Attempted migration or post-completion action before the threshold was reached.                                                |
| `6015` | `InvalidMigrationOption`                   | Invalid migration option                                  | Migration option is not DAMM v1 (`0`) or DAMM v2 (`1`).                                                                        |
| `6016` | `InvalidTokenDecimals`                     | Invalid token decimals                                    | Token decimals are outside supported bounds.                                                                                   |
| `6017` | `InvalidTokenType`                         | Invalid token type                                        | Token type is not SPL Token or Token-2022, or is incompatible with the migration.                                              |
| `6018` | `InvalidFeePercentage`                     | Invalid fee percentage                                    | Partner or creator migration fee split is outside allowed bounds.                                                              |
| `6019` | `InvalidQuoteThreshold`                    | Invalid quote threshold                                   | Migration quote threshold is zero or invalid.                                                                                  |
| `6020` | `InvalidTokenSupply`                       | Invalid token supply                                      | Pre-migration and post-migration supply values are inconsistent.                                                               |
| `6021` | `InvalidCurve`                             | Invalid curve                                             | Curve points are empty, unsorted, out of price range, or have invalid liquidity.                                               |
| `6022` | `NotPermitToDoThisAction`                  | Not permit to do this action                              | Signer is not the expected partner, creator, or authorized actor.                                                              |
| `6023` | `InvalidOwnerAccount`                      | Invalid owner account                                     | Token account owner does not match expected authority.                                                                         |
| `6024` | `InvalidConfigAccount`                     | Invalid config account                                    | Config account does not match the pool or instruction.                                                                         |
| `6025` | `SurplusHasBeenWithdraw`                   | Surplus has been withdraw                                 | Surplus was already claimed.                                                                                                   |
| `6026` | `LeftoverHasBeenWithdraw`                  | Leftover has been withdraw                                | Leftover tokens were already claimed.                                                                                          |
| `6027` | `TotalBaseTokenExceedMaxSupply`            | Total base token is exceeded max supply                   | Config or pool creation would exceed allowed base supply.                                                                      |
| `6028` | `UnsupportNativeMintToken2022`             | Unsupport native mint token 2022                          | Native mint was used with an unsupported Token-2022 path.                                                                      |
| `6029` | `InsufficientLiquidityForMigration`        | Insufficient liquidity for migration                      | Pool does not have enough liquidity to initialize the destination DAMM pool.                                                   |
| `6030` | `MissingPoolConfigInRemainingAccount`      | Missing pool config in remaining account                  | Required config account was not supplied in remaining accounts.                                                                |
| `6031` | `InvalidVestingParameters`                 | Invalid vesting parameters                                | Vesting schedule is malformed or has invalid totals.                                                                           |
| `6032` | `InvalidLeftoverAddress`                   | Invalid leftover address                                  | Leftover receiver is missing or invalid when fixed supply requires it.                                                         |
| `6033` | `InsufficientLiquidity`                    | Liquidity in bonding curve is insufficient                | Curve segment cannot support the requested price movement.                                                                     |
| `6034` | `InvalidFeeScheduler`                      | Invalid fee scheduler                                     | Scheduler periods, duration, or reduction factor are invalid.                                                                  |
| `6035` | `InvalidCreatorTradingFeePercentage`       | Invalid creator trading fee percentage                    | Creator trading fee share is outside allowed bounds.                                                                           |
| `6036` | `InvalidNewCreator`                        | Invalid new creator                                       | New creator address is invalid or equals the old creator.                                                                      |
| `6037` | `InvalidTokenAuthorityOption`              | Invalid token authority option                            | Token authority mode is outside supported values.                                                                              |
| `6038` | `InvalidAccount`                           | Invalid account for the instruction                       | Account does not match expected PDA, mint, vault, or owner.                                                                    |
| `6039` | `InvalidMigratorFeePercentage`             | Invalid migrator fee percentage                           | Migrator fee setting is outside allowed range.                                                                                 |
| `6040` | `MigrationFeeHasBeenWithdraw`              | Migration fee has been withdraw                           | Partner or creator migration fee was already withdrawn.                                                                        |
| `6041` | `InvalidBaseFeeMode`                       | Invalid base fee mode                                     | Base fee mode is not linear scheduler, exponential scheduler, or rate limiter.                                                 |
| `6042` | `InvalidFeeRateLimiter`                    | Invalid fee rate limiter                                  | Rate limiter fields are missing or invalid.                                                                                    |
| `6043` | `FailToValidateSingleSwapInstruction`      | Fail to validate single swap instruction in rate limiter  | Instruction sysvar validation failed for a rate limiter swap.                                                                  |
| `6044` | `InvalidMigratedPoolFee`                   | Invalid migrated pool fee params                          | DAMM v2 graduated-pool fee params are invalid.                                                                                 |
| `6045` | `UndeterminedError`                        | Undertermined error                                       | Generic fallback error.                                                                                                        |
| `6046` | `RateLimiterNotSupported`                  | Rate limiter not supported                                | Rate limiter was used in an unsupported context.                                                                               |
| `6047` | `AmountLeftIsNotZero`                      | Amount left is not zero                                   | Exact-in path did not consume the expected amount. Use partial fill near curve completion.                                     |
| `6048` | `NextSqrtPriceIsSmallerThanStartSqrtPrice` | Next sqrt price is smaller than start sqrt price          | Swap movement would cross below the curve start.                                                                               |
| `6049` | `InvalidMinBaseFee`                        | Invalid min base fee                                      | Minimum base fee is below the program requirement.                                                                             |
| `6050` | `AccountInvariantViolation`                | Account invariant violation                               | CPI account owner, lamports, or data length changed unexpectedly.                                                              |
| `6051` | `InvalidPoolCreationFee`                   | Invalid pool creation fee                                 | Pool creation fee is outside allowed bounds.                                                                                   |
| `6052` | `PoolCreationFeeHasBeenClaimed`            | Pool creation fee has been claimed                        | Pool creation fee was already claimed.                                                                                         |
| `6053` | `Unauthorized`                             | Not permit to do this action                              | Signer lacks the required authority.                                                                                           |
| `6054` | `ZeroPoolCreationFee`                      | Pool creation fee is zero                                 | Attempted to claim a zero pool creation fee.                                                                                   |
| `6055` | `InvalidMigrationLockedLiquidity`          | Invalid migration locked liquidity                        | Liquidity distribution does not satisfy locked-liquidity requirements.                                                         |
| `6056` | `InvalidFeeMarketCapScheduler`             | Invalid fee market cap scheduler                          | DAMM v2 market-cap fee scheduler params are invalid.                                                                           |
| `6057` | `FirstSwapValidationFailed`                | Fail to validate first swap with minimum fee              | First-swap-with-min-fee transaction context failed validation.                                                                 |
| `6058` | `IncorrectATA`                             | Incorrect ATA                                             | Associated token account does not match expected owner or mint.                                                                |
| `6059` | `InsufficientPoolLamports`                 | Pool has insufficient lamports to perform the operation   | Pool account cannot pay required lamports for the operation.                                                                   |
| `6060` | `InvalidPermission`                        | Invalid permission                                        | Operator permission bits are invalid.                                                                                          |
| `6061` | `InvalidWithdrawProtocolFeeZapAccounts`    | Invalid withdraw protocol fee zap accounts                | Protocol zap account list is malformed.                                                                                        |
| `6062` | `MintRestrictedFromZap`                    | SOL,USDC protocol fee cannot be withdrawn via zap         | Restricted mint was used with zap.                                                                                             |
| `6063` | `InvalidZapOutParameters`                  | Invalid zap out parameters                                | Zap output parameters are invalid.                                                                                             |
| `6064` | `CpiDisabled`                              | CPI disabled                                              | Protocol zap CPI is disabled by the downstream zap program.                                                                    |
| `6065` | `MissingZapOutInstruction`                 | Missing zap out instruction                               | Required zap instruction was not found.                                                                                        |
| `6066` | `InvalidZapAccounts`                       | Invalid zap accounts                                      | Zap accounts do not match the expected route.                                                                                  |
| `6067` | `InvalidCompoundingParameters`             | Invalid compounding parameters                            | DAMM v2 compounding fee settings are invalid.                                                                                  |
| `6068` | `InvalidClaimProtocolFeeAccounts`          | Invalid claim protocol fee accounts                       | Protocol fee claim account list does not match the selected mint, pool, receiver, or pool type.                                |
| `6069` | `InvalidInstructionsSysvar`                | Invalid instructions sysvar account                       | Instructions sysvar account is missing or not the canonical sysvar account.                                                    |
| `6070` | `InvalidRemainingAccountsLength`           | Invalid remaining accounts length                         | Transfer-hook remaining account slices require more accounts than were provided.                                               |
| `6071` | `MissingRemainingAccountForTransferHook`   | Missing remaining account for transfer hook               | A base mint has a transfer hook, but required extra accounts were not supplied.                                                |
| `6072` | `NoTransferHookProgram`                    | No transfer hook program                                  | Transfer-hook accounts were supplied for a mint without an active transfer-hook program.                                       |
| `6073` | `DuplicatedRemainingAccountTypes`          | Duplicated remaining account types                        | `TransferHookAccountsInfo` contains duplicate slice types.                                                                     |
| `6074` | `InvalidTransferHookProgram`               | Invalid transfer hook program                             | Transfer-hook program is missing, non-executable, default, or one of the disallowed program IDs.                               |
| `6075` | `InvalidPoolAccount`                       | Invalid pool account                                      | Pool account owner, discriminator, or expected account variant is invalid.                                                     |
| `6076` | `PoolTypeMismatch`                         | Pool type does not match instruction                      | A standard pool was sent to a transfer-hook-only instruction, or a transfer-hook pool was sent to a standard-only instruction. |
| `6077` | `InvalidRemainingAccountSliceType`         | Invalid remaining account slice type for this instruction | Transfer-hook remaining account metadata includes a slice type that the instruction does not accept.                           |

<Note>
  The SDK `1.5.9` bundled IDL lists DBC errors through `6076`. The local program source also defines `InvalidRemainingAccountSliceType` as the next error variant. If you decode from the bundled IDL only, handle unknown custom errors defensively or regenerate the IDL from the matching program source.
</Note>

## TypeScript SDK Validation Helpers

The TypeScript SDK performs many checks before building transactions. These helpers return booleans or throw SDK-side errors before the program returns a custom error.

| Helper                                                                 | Related program errors                                                                                                             |
| ---------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| `validateConfigParameters`                                             | `InvalidFee`, `InvalidCollectFeeMode`, `InvalidMigrationOption`, `InvalidTokenDecimals`, `InvalidCurve`, `InvalidPoolCreationFee`. |
| `validateFeeScheduler`                                                 | `InvalidFeeScheduler`, `InvalidMinBaseFee`, `ExceedMaxFeeBps`.                                                                     |
| `validateFeeRateLimiter`                                               | `InvalidFeeRateLimiter`, `RateLimiterNotSupported`.                                                                                |
| `validateDynamicFee`                                                   | `InvalidInput`, `MathOverflow`.                                                                                                    |
| `validateMigrationFeeOption`                                           | `InvalidMigrationFeeOption`, `InvalidMigratedPoolFee`.                                                                             |
| `validateMigratedPoolFee`                                              | `InvalidMigratedPoolFee`, `InvalidFeeMarketCapScheduler`, `InvalidCompoundingParameters`.                                          |
| `validateTransferHookProgram`, `validateTransferHookProgramExecutable` | `InvalidTransferHookProgram`.                                                                                                      |
| `validateLiquidityVestingInfo`                                         | `InvalidVestingParameters`, `InvalidMigrationLockedLiquidity`.                                                                     |
| `validateTokenSupply`                                                  | `InvalidTokenSupply`, `InvalidLeftoverAddress`, `TotalBaseTokenExceedMaxSupply`.                                                   |
| `validateBaseTokenType`                                                | `InvalidTokenType`, `UnsupportNativeMintToken2022`.                                                                                |
| `validateSwapAmount`                                                   | `AmountIsZero`.                                                                                                                    |
