Skip to content

Troubleshoot an integration

Trace rejected operations to snapshot, amount, account, and policy mismatches.

A quote succeeds but execution rejects

Check the snapshot slot, current price, liquidity coverage, price limit, token balances, and slippage limits. For a hooked pool, also compare Clock, policy state, version, actor, and proof context. Execution validates current state; a quote does not reserve it.

See quote consistency and wallet context.

The token amount is off by a power of ten

Read decimals from the mint, parse the user's decimal string once, and keep integer atoms through the transaction. Avoid converting financial amounts through JavaScript Number. Do not apply decimals a second time to an amount already returned in atoms. Use client amounts.

A tick-page account is missing

Load the canonical directory and the pages required by directional traversal. Preserve page order, ownership, writability, and duplicate checks. A price limit can still require the next initialized page to establish the traversal boundary. Read tick arrays.

A hook or permission check rejects

Match the pool's hook program, ABI version, profile, enabled phases, and immutable fee caps. Supply every extra account with the corresponding descriptor in exact order. A writable outer account cannot exceed the pool's per-phase access ceiling. Use hook troubleshooting.

A liquidity deposit needs both assets

A position containing the current price needs both reserve assets. A range entirely to one side can accept one asset. If you want a conversion plus deposit, use a zap with an explicit split and limits; a liquidity change does not silently perform a swap.

A reward was logged but no balance changed

Check transaction success before interpreting callback logs. A later failure can roll back reward issuance and reserve settlement. Then inspect the expected reward mint, recipient token account, issuance counter, and sponsor funding. See reward credits.

An operation is absent from the interface

Consult protocol capabilities, instructions, and limitations. Unsupported behavior must reject explicitly; do not infer a callable instruction from a concept heading.