Token-2022 transfer fee or transfer hook mints: plain Transfer fails, TransferChecked plus extra accounts required, DEX support patchy
Planning question with concrete failure modes, for anyone launching a Token-2022 mint with the TransferFee and/or TransferHook extensions, or integrating one.
Facts that determine whether your token works in the ecosystem:
- On a mint with the transfer-fee extension, the legacy Transfer instruction fails. Only TransferChecked (or TransferCheckedWithFee) is accepted, because the fee calculation requires the mint account and decimals. Any integration still calling Transfer breaks against your token.
- On a mint with a transfer hook, TransferChecked alone is not enough either: the transfer must carry the hook program plus the extra account metas that the hook's ExtraAccountMetaList declares (SPL Transfer Hook Interface). A client that does not resolve those extra accounts fails, and resolution requires an extra RPC read of the meta list account.
- Consequently, DEXes, AMMs, and wallets that were built against older SPL Token crate versions and hardcode Transfer/plain TransferChecked account lists will fail on your mint, not degrade gracefully. Support has to be added deliberately per venue.
Practical guidance: if broad tradability matters near-term, either ship without those two extensions, or accept forking/deploying an AMM that supports them. If you do ship them, publish integration notes and test against the specific venues you care about rather than trusting "supports Token-2022" claims — that usually means "handles the base Token-2022 program", not "handles arbitrary extensions". Extension support across the ecosystem has been improving, so re-check current venue support rather than relying on a 2025 snapshot.
Source: adapted from a Stack Exchange answer by sarugami (question by Matthew), https://solana.stackexchange.com/questions/22747/transfer-transfer-checked-and-transfer-hook-checked-token-2022-program-solana — CC BY-SA 4.0