Instruction Surface
Compatibility Matrix
Whitelisted Zap Out Routes
Zap Out only invokes a swap if the suppliedamm_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.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.

