Check Token Restrictions Before Your First Swap
A swap quote cannot reveal token rules: check transfer taxes, wallet limits, sell permissions and privileged controls before approving or trading.
Tokenbearing Editorial5 min read#03fc37

Check a token’s transfer rules and privileged controls before approving it for a swap. A quote estimates the output along a route; it does not establish that the token will let your wallet buy, sell or transfer the quoted amount. Those rules live in the token contract, and the swap router must call that contract to move tokens.
For a wallet-level view of the interface and transaction sequence, see this Blackhole Swap wallet walkthrough. The same distinction applies across swap interfaces: the application prepares a transaction, while the token contract decides whether its transfers succeed under the rules active when that transaction executes.
Which token rules can change a swap?
Transfer rules determine whether tokens move and how many arrive. A standard ERC-20 transfer can be modified by a token contract to charge a fee, cap the amount, restrict certain addresses or reject transfers while trading is disabled. Some contracts also apply different rules to buys, sells and wallet-to-wallet transfers.
That difference matters because a swap is a series of contract calls, not one indivisible “trade” instruction understood by the token. In a typical exact-input flow, the router uses an allowance to call transferFrom and collect the input token, then calls the pool or pools along the route. The output token’s contract must also permit its transfer to the receiving wallet. A restriction on any required transfer can make the transaction revert.
Fee-on-transfer behavior creates a separate accounting problem. The router or pool may expect to receive the stated input amount, but the token can deduct a fee before the tokens arrive. Some router paths account for this behavior; others do not. A quote that assumes the full input reaches the pool can therefore overstate output or fail execution. Rebasing tokens, which change balances outside ordinary transfers, can also conflict with pool accounting.
Restrictions may be conditional or changeable. A contract could enforce a maximum transaction size, a per-wallet holding cap, a list of blocked addresses or a rule that prevents transfers to a pool. An administrator may also have authority to change fees, pause transfers, alter limits or update an implementation behind a proxy. The presence of an owner function does not prove it will be used maliciously, but it identifies who can change the conditions you are relying on.
What should you inspect before approving?
Inspect the token contract at the address for the correct network, then check both its transfer behavior and who can change it. A name or ticker is not a reliable identifier: unrelated contracts can use the same labels. Verify the address against a source you trust before interacting.
Read the verified contract source when available, focusing on the transfer paths and administrative functions. Check for conditions in transfer and transferFrom, including fees, wallet or transaction caps, trading switches, deny lists and exemptions. If the token is a proxy, inspect the implementation and the authority that can change it; the proxy’s visible code alone may not describe the active transfer logic.
Then review the actual approval and swap transactions. Approval grants a spender permission to move tokens up to an allowance; it does not prove that a sale will work. Confirm which spender receives the allowance, whether the amount is limited, and which router and route the swap will call. A simulation can expose a revert for the current state and parameters, but it cannot guarantee success if the contract’s state changes before execution.
- Confirm the network and full token contract address.
- Check transfer fees and limits for the specific amount and direction.
- Identify owner, role or proxy powers that can alter transfer behavior.
- Review the spender, allowance amount, route and simulated result.
Why can a buy succeed while a sell fails?
A buy and a sell exercise different transfer paths, so success in one direction does not establish that the reverse trade is permitted. On a buy, the wallet or router sends the payment asset into the pool, and the pool sends the new token out. On a sell, the wallet’s token must pass to the router or pool before the payment asset can return.
A token can allow the pool to send tokens to buyers while rejecting transfers from holders to that pool. It can also allow a small trade and reject a larger one under a transaction cap, or apply a sell fee that the chosen route cannot accommodate. A displayed quote tests pricing and routing assumptions; it is not a guarantee that the token’s transfer checks will pass at execution.
For a first trade, test the exact direction and route with a small amount only after checking the contract and approval. Set a minimum output that reflects the amount you are willing to receive, and do not raise slippage simply to push through a failure: that changes the acceptable price movement, not the token’s transfer permissions. If a sell remains unconfirmed or fails simulation, treat that as a contract-level restriction to investigate, not a quoting problem to bypass.
The practical check is simple: establish that the token can transfer from your wallet into the intended route, that the route can deliver the output, and that any administrator cannot quietly change the relevant rules. A quote answers what the pool estimates; the token contract decides whether the swap can happen.