BTC:
ETH:
SOL:
BNB:
XRP:
Execution-cost threat

Transfer-fee traps: a quote can hide costs carried by the token

Token-2022 can charge and withhold fees on token transfers, with separate authorities controlling future settings and collection. Read the live mint, scheduled configuration, route, and complete extension surface before entering.

11 min readReviewed July 14, 2026Threat guide

The short answer

The Token-2022 transfer-fee extension deducts a configured fee whenever the token is transferred. The destination token account receives the reduced amount and holds the fee as withheld tokens. An authorized account can later withdraw those fees directly or after they are harvested to the mint.

Transfer fees are a protocol feature, not proof of a scam. They become a trading threat when the fee is undisclosed, misunderstood, poorly supported, mutable, or multiplied by the intended route. Inspect the exact mint state and model both entry and exit at the intended size.

Separate the token fee from every other cost

A transfer fee is not the pool's trading fee, price impact, network fee, priority fee, platform fee, or aggregator fee. Those costs can all appear in the same execution. Label each one and state whether it is paid in SOL, quote token, input token, or output token.

Compare the route's wallet debit and final wallet credit with the pool-side amount and interface quote. The quote-to-fill workflow helps preserve those boundaries. A successful transaction only proves the route executed; it does not prove that the displayed effective rate included every token-level deduction.

Calculate the fee in base units

Read the configured basis points and maximum fee for the active epoch. Apply the percentage to the raw transfer amount, then respect the maximum-fee cap and token decimals. Verify the implementation's rounding using the decoded transaction or official calculation helpers instead of estimating from a rounded UI balance.

The percentage applies to a token transfer, not automatically once per trade. Count the actual transfer instructions in the selected route. A direct pool swap, split route, multi-hop path, liquidity deposit, withdrawal, vault movement, and later wallet transfer can expose different token-transfer counts.

Read the active and scheduled configurations

TransferFeeConfig retains older and newer fee configurations. A fee-setting authority can update the newer configuration, and Solana's current documentation states that an update begins two epochs later. Record the current epoch, active basis points and cap, newer basis points and cap, activation epoch, and the slot or commitment level used for the read.

A current quote is state-bound. It can be accurate now and wrong for a later exit after a scheduled change takes effect. Re-read the mint and re-quote immediately before execution rather than relying on an earlier screenshot or scanner label.

Two fee authorities answer different questions

  • Transfer-fee configuration authority: can update the next fee settings when the authority remains active.
  • Withdraw-withheld authority: can move accumulated withheld tokens to a chosen receiver.

Record both public keys or their revoked state, then identify the controlling program, multisig, or signer where evidence allows. A revoked configuration authority limits future fee changes but does not erase the active fee or explain who can collect withheld tokens.

The fee is only one part of the mint's control surface

Enumerate every Token-2022 extension on the mint and relevant token accounts. Default-account-state can initialize new token accounts frozen. Permanent delegate can grant an authority transfer or burn power over any token account for the mint. Pausable can halt transfers, mints, and burns across the mint.

Analyze those powers separately with the backdoors guide. A modest transfer fee does not neutralize a freeze, delegate, pause, or other extension. Conversely, the existence of Token-2022 or a disclosed fee alone does not prove a honeypot.

Venue support is part of executable liquidity

Confirm that the wallet, router, pool program, scanner, and accounting path all support the exact extensions present. Raydium's liquidity documentation, for example, explicitly notes that Token-2022 transfer fees affect deposit amounts. Interface support for one swap does not establish support for every route or liquidity operation.

Simulate entry and a small reversible exit when appropriate, decode the actual instructions, and compare pre- and post-balances. Then obtain a fresh intended-size exit quote. The partial-exit guide explains why a dust sale cannot prove that the full position is executable at a similar effective rate.

A transfer-fee execution workflow

  1. Fix the asset. Confirm chain, token program, exact mint, decimals, pool, route, and intended trade size.
  2. Enumerate extensions. Read the mint and relevant token-account state directly; do not stop at a scanner's fee badge.
  3. Record fee state. Save current epoch, active and newer basis points, caps, activation epoch, and read slot.
  4. Map authorities. Resolve configuration and withheld-fee withdrawal powers, plus every other extension authority.
  5. Count route transfers. Decode the instructions and model each fee-bearing token movement in base units.
  6. Test the exit. Simulate, use a small reversible test where appropriate, and obtain a fresh intended-size quote before execution.

What belongs in the journal

Record mint and token program, decimals, current epoch and read slot, older and newer fee basis points and caps, activation epoch, both fee authorities, withheld balances and collection destination where relevant, every other mint and account extension, route and transfer count, base-unit calculations, wallet debit and credit, pool and platform fees, simulation result, small-test result, intended-size exit quote, venue support, and the assumptions that can change before execution.

Primary sources

Price the route, authorities, and time

A fee badge is not an execution model.

Read the live configuration, scheduled change, authority set, complete extension surface, and actual transfer path before sizing an entry or exit.

Open the journal