Skip to main content
Zap has a fixed compatibility surface in the on-chain program. Use this page to check whether a user flow maps to one of Zap’s supported instructions.

Instruction Surface

Compatibility Matrix

Whitelisted Zap Out Routes

Zap Out only invokes a swap if the supplied amm_program and the first 8 bytes of payload_data match one of the whitelisted pairs: Unsupported Jupiter instruction variants, custom routers, or arbitrary AMM instructions are rejected with AmmIsNotSupported.

Access Controls and Accounts

The ledger account has has_one = owner checks on mutable instructions. For uninitialized DLMM positions, the position account must be a signer, must be empty, and must not equal the owner or rent payer. Zap Out does not verify the token account owner; integrators should build the surrounding transaction so the route authority and token accounts are the intended user accounts.

Flow Constraints

Token Compatibility

Zap In calculates transfer-fee-excluded amounts for token mints when it needs to reason about net deposit amounts. For Token 2022 mints without a transfer fee extension, the calculation is treated like a normal token amount.
Do not assume every Token 2022 extension is compatible with every underlying DAMM v2, DLMM, or Jupiter route. Zap can coordinate supported instructions, but the downstream program still defines whether a token behavior is valid.

Not a Fit

Use a direct integration instead of Zap when:
  • The target AMM is not DAMM v2 or DLMM.
  • The Zap Out route is not one of the four whitelisted instruction types.
  • The flow needs Zap In swaps through Jupiter or another external router inside the Zap instruction.
  • The DLMM flow needs Zap itself to withdraw liquidity, claim fees, or claim rewards.
  • The token behavior is unsupported by the underlying product or route.
  • The product copy needs to promise best execution, guaranteed output, or automatic route selection.