Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
LABS
Glossary

Fee-On-Transfer Tokens

A fee-on-transfer token is an ERC-20 token that deducts a percentage fee from the transferred amount on every transaction, which can disrupt automated market maker (AMM) pricing if the smart contract logic does not explicitly handle it.
Chainscore © 2026
definition
TOKEN MECHANICS

What is a Fee-On-Transfer Token?

A technical breakdown of a token design that automatically deducts a fee during every transfer, affecting user balances and contract interactions.

A Fee-On-Transfer (FoT) token is an ERC-20 or similar token smart contract that automatically deducts a percentage-based fee from the transaction amount during every transfer or transferFrom call. This fee is distinct from the network's gas fee and is a function of the token's own logic, typically redirecting a portion of the transferred tokens to a designated address such as a treasury, liquidity pool, or burn address. The core mechanism means the recipient receives less than the amount specified by the sender, which can lead to unexpected behavior in decentralized applications (dApps) that assume a 1:1 transfer ratio.

The implementation of this fee mechanism creates critical considerations for DeFi protocols and developers. Because the actual balance change in the token contract does not equal the nominal transfer amount, standard accounting patterns can fail. For instance, a decentralized exchange (DEX) attempting to swap an exact amount of tokens may revert due to slippage tolerance being exceeded, or a lending protocol may inaccurately calculate a user's collateral value. Interacting contracts must query the token's balance before and after a transfer to determine the real received amount, rather than relying on the input parameter.

Prominent examples of Fee-On-Transfer tokens include reflection tokens, which redistribute the fee to all existing holders, and tokens with auto-liquidity features that convert part of the fee into pooled liquidity. While this design can support tokenomics models by funding rewards or ensuring liquidity, it introduces complexity and risk. Developers must explicitly check for this behavior using functions like balanceOf to avoid integration errors, and users should be aware that quoted transfer amounts are not the final received amounts.

key-features
FEE-ON-TRANSFER TOKENS

Key Features & Characteristics

Fee-on-Transfer (FoT) tokens are a class of ERC-20 tokens with a built-in tax mechanism that deducts a percentage from every transfer. This design introduces unique mechanics and considerations for developers and users.

01

Automatic Fee Deduction

The core mechanism where a percentage fee is automatically subtracted from the transferred amount before it reaches the recipient. This fee is typically burned, sent to a treasury, or distributed to holders. For example, a 2% fee on a 100-token transfer results in the recipient receiving 98 tokens, with 2 tokens diverted per the token's logic.

  • Fee is taken from the sender's balance before the transfer is finalized.
  • The recipient's received amount is amount * (1 - feePercentage).
  • This differs from transfer fee tokens where the fee is an additional charge paid by the sender.
02

Impact on DEX Pricing & Slippage

Fee-on-Transfer tokens create a discrepancy between the quoted price on a Decentralized Exchange (DEX) and the actual amount received. Automated Market Makers (AMMs) like Uniswap calculate swap outputs based on pool reserves, unaware of the post-transfer fee.

  • Users receive fewer tokens than the DEX quote predicts.
  • This causes unexpected slippage and can break arbitrage and flash loan logic.
  • DEX interfaces often require custom integration or warnings for these tokens.
03

Common Use Cases & Rationale

Projects implement Fee-on-Transfer mechanics to create specific economic models:

  • Deflationary Supply: Fees are burned, reducing total supply over time (e.g., early versions of SafeMoon).
  • Reward Distribution: Fees are redistributed to existing token holders as a form of reflection or staking reward.
  • Protocol Revenue: Fees are directed to a treasury or developer wallet to fund ongoing operations.
  • Anti-Whale Measures: Large sells incur proportionally larger fees, potentially discouraging market manipulation.
04

Critical Developer Considerations

Smart contracts interacting with FoT tokens must be explicitly designed to handle them, as they violate the standard ERC-20 assumption of "amount sent = amount received."

  • Balance Checks: Contracts should compare pre- and post-transfer balance changes of the recipient, not assume the amount parameter.
  • Pull over Push: Prefer pull-based payment patterns where users approve and then a contract function withdraws the exact amount needed.
  • Integration Risks: Standard DeFi protocols (lending, liquidity pools) can malfunction or be exploited if they don't account for the fee.
05

Fee-On-Transfer vs. Transfer Fee

These are two distinct token tax models often confused:

  • Fee-On-Transfer (FoT): Fee is deducted from the transfer amount. The recipient gets less. recipientBalance += amount - fee.
  • Transfer Fee: An additional fee is charged to the sender on top of the transfer amount. The recipient gets the full amount, but the sender pays more. senderBalance -= (amount + fee); recipientBalance += amount.

Both break naive ERC-20 assumptions but in different ways, affecting contract logic for allowances and balance calculations.

06

Identifying & Auditing FoT Tokens

Due to the risks, it's crucial to identify these tokens before integration.

  • Code Analysis: Audit the token's transfer and transferFrom functions for logic that reduces the _amount variable or sends a portion elsewhere.
  • Test Transfers: Perform a small test transfer between two wallets you control to observe the balance change.
  • Community Labels: DEX scanners and block explorers may tag known FoT tokens with warnings.
  • ERC-20 Extensions: Some projects propose standards like ERC-1363 (Payable Token) or ERC-3156 (Flash Loans) to handle fees more predictably.
how-it-works
MECHANISM

How Fee-On-Transfer Tokens Work

An explanation of the smart contract design pattern where a percentage of tokens is automatically deducted and redistributed during every transfer transaction.

A Fee-On-Transfer Token is a type of ERC-20 or similar token where the smart contract enforces an automatic deduction of a percentage of the transferred amount, redistributing it according to predefined rules. This mechanism is executed within the token's core transfer and transferFrom functions. Unlike standard tokens where 100 units sent results in 100 units received, a token with a 5% fee would result in the recipient getting only 95 units, with the remaining 5 units being diverted. This creates a fundamental discrepancy between the transfer amount and the received amount, which must be accounted for by all interacting smart contracts, such as decentralized exchanges (DEXs) or lending protocols.

The deducted fees are typically redistributed to specific addresses or contracts defined in the token's logic. Common destinations include: a project treasury for development funding, a liquidity pool to enhance market stability via automatic buybacks and burns, or existing token holders via a reflection mechanism that proportionally increases their balances. This design can create deflationary pressure or reward long-term holders, but it also introduces significant integration challenges. Protocols that quote prices or calculate user balances based on simple token amounts will fail, as the actual balance changes are not solely from explicit user actions.

For developers and protocols, interacting with fee-on-transfer tokens requires careful design. The key issue is that the standard balanceOf function reports the post-fee balance, but the pre-fee transfer amount is what is typically signed or approved. To safely handle these tokens, contracts must check the recipient's balance before and after the transfer to calculate the actual amount received, rather than relying on the input amount parameter. Failure to implement these checks is a common source of exploits, where protocols credit users for amounts they never actually deposited, leading to insolvency. This makes fee-on-transfer tokens largely incompatible with many DeFi primitives without explicit, audited support.

amm-impact
FEE-ON-TRANSFER TOKENS

Impact on Automated Market Makers (AMMs)

An analysis of how tokens with transfer taxes disrupt the fundamental liquidity and pricing mechanisms of decentralized exchanges.

Fee-on-transfer tokens introduce a fundamental incompatibility with the constant product formula x * y = k used by most Automated Market Makers (AMMs) like Uniswap. This formula assumes the total reserve balance of a liquidity pool changes only through trades or liquidity provisioning. When a token deducts a fee on every transfer, the actual amount received by the pool after a swap is less than the amount sent, violating this core invariant and causing pool imbalance and liquidity drain.

The primary impact is arbitrage inefficiency. In a standard AMM, arbitrageurs correct price deviations between markets, ensuring the pool price reflects the global market price. With a fee-on-transfer token, the arbitrageur's incoming tokens are reduced by the fee, making the profitable arbitrage boundary wider. This leads to the pool price persistently lagging behind the true market price, resulting in bad execution for traders and impermanent loss for liquidity providers (LPs) as the pool's assets drift from their optimal ratio.

This mechanics directly harm liquidity providers. The missing tokens from the transfer fee create a scenario where the pool's reported k value (the product of reserves) artificially decreases over time, even without price movement. This represents a constant, stealth erosion of the pool's total value. Furthermore, LPs cannot withdraw the full value they deposited, as the fee is applied again when they remove liquidity, leading to an unavoidable loss on exit, separate from impermanent loss.

Protocols and developers implement specific mitigations, which often involve treating the fee-on-transfer token exclusively as the output of a swap. Custom pool logic can track the actual balance received versus the expected amount, or use internal accounting to handle the fee deduction before updating reserves. The feeOnTransfer functions in router contracts, like Uniswap V2's swapExactTokensForTokensSupportingFeeOnTransferTokens, are designed for this, but they require explicit integration by the user or front-end.

The broader ecosystem impact includes security risks and decreased composability. Misplaced assumptions about token behavior can lead to smart contract exploits where protocols fail to receive expected amounts. Many DeFi applications, from lending markets to yield aggregators, are not designed to handle these tokens, leading to their blacklisting. This creates friction and fragments liquidity, as fee-on-transfer tokens often require isolated, custom-built AMM pools to function without causing systemic issues for LPs and traders.

security-considerations
FEE-ON-TRANSFER TOKENS

Security Considerations & Attack Vectors

Fee-on-transfer tokens are ERC-20 tokens that apply a transfer fee, altering the standard token flow and creating security pitfalls for smart contracts that assume standard token behavior.

01

Core Mechanism & Deviation

A fee-on-transfer token is an ERC-20 token that deducts a percentage fee from the transferred amount, meaning the balanceOf the recipient is less than the amount parameter passed to the transfer or transferFrom function. This breaks the standard assumption that balanceOf(to) += amount.

  • Standard Assumption: Transferred amount equals received amount.
  • Fee-on-Transfer Reality: received = amount - (amount * fee_percent).
  • Common Examples: Tokens like SAFEMOON and HONEY implement this pattern.
02

Primary Attack Vector: Balance Checks

The most common exploit occurs when a smart contract checks a user's token balance before a transaction but does not account for the fee. A malicious user can deposit tokens, triggering a function that relies on the pre-fee balance, leaving the contract with less value than expected.

  • Flawed Logic: Contract checks balanceBefore = token.balanceOf(address(this)), calls token.transferFrom(user, amount), then assumes balanceAfter = balanceBefore + amount.
  • Actual Result: balanceAfter = balanceBefore + (amount - fee), creating an accounting shortfall.
  • Impact: Enables theft of protocol funds or causes operations to fail due to insufficient received tokens.
03

Secondary Vector: Slippage & Swap Routers

Decentralized exchange (DEX) routers and aggregators are vulnerable if they calculate expected output amounts based on the input amount parameter rather than the actual tokens received after the fee.

  • Problem: A swap router might quote a user based on sending X tokens, but the pool only receives X - fee, resulting in a failed swap or excessive slippage.
  • Mitigation: Reputable DEXes like Uniswap V2 and later handle these tokens by measuring the actual balance change (balanceAfter - balanceBefore) rather than trusting the amount parameter.
04

Prevention & Safe Handling

Smart contracts must defensively program against fee-on-transfer tokens by measuring balance changes directly.

  • Golden Rule: Never trust the amount parameter. Always calculate the actual received amount as: uint256 balanceBefore = token.balanceOf(address(this)); token.safeTransferFrom(sender, address(this), amount); uint256 received = token.balanceOf(address(this)) - balanceBefore;
  • Explicit Whitelisting/Blacklisting: Protocols often explicitly disallow fee-on-transfer tokens due to their gas overhead and complexity.
  • Testing: Include fee-on-transfer token mocks (e.g., 1% fee) in test suites for any contract that handles arbitrary ERC-20s.
05

Related Concept: Deflationary vs. Fee-on-Transfer

It is critical to distinguish between deflationary tokens and fee-on-transfer tokens, as they present different risks.

  • Fee-on-Transfer: A fee is taken during the transfer and is often sent to a treasury, burn address, or distributed to holders. The recipient's balance is less than the sent amount.
  • Pure Deflationary (Burn): A token may have a burn mechanism that reduces total supply, but this burn might occur on actions other than standard transfers (e.g., on sells only) and may not affect the simple transfer function.
  • Key Difference: A contract must guard against the transfer-time balance discrepancy of fee-on-transfer tokens, not just supply changes.
06

Historical Context & Notable Exploits

Fee-on-transfer vulnerabilities have led to significant financial losses, cementing their place as a critical smart contract audit item.

  • PancakeBunny Exploit (2021): A flash loan attack exploited a vault's faulty balance accounting for fee-on-transfer tokens, leading to a loss of ~$200M.
  • General Prevalence: The rise of "reflection" and tax tokens in 2021-2022 made this a common attack vector for yield aggregators and lending protocols.
  • Industry Response: Major security firms like Trail of Bits and OpenZeppelin publish specific guidelines for handling these tokens, and they are a standard part of audit checklists.
examples
FEE-ON-TRANSFER TOKENS

Examples & Real-World Protocols

These tokens implement a transfer fee mechanism, where a percentage of each transaction is withheld. This section details prominent examples and the protocols that popularized the design.

02

DeFi Staple: Tether (USDT) on TRON

Tether (USDT) issued on the TRON network employs a 0.1% fee-on-transfer. This is a critical, real-world example of a major stablecoin using the mechanism for pragmatic reasons:

  • The fee acts as a spam deterrent, disincentivizing micro-transactions that could congest the low-cost TRON network.
  • It provides a revenue stream for Tether to support operations.
  • This contrasts with USDT on Ethereum, which typically has no transfer fee, highlighting how fee structures are chain-specific.
04

Common Fee Structures & Impacts

Fee-on-transfer tokens implement various fee models with distinct economic effects:

  • Redistribution (Reflection): Fees are distributed to holders, creating a passive yield (e.g., SafeMoon).
  • Liquidity Acquisition: Fees are auto-swapped and added to an LP to increase price stability.
  • Burn Mechanism: Fees are permanently destroyed, creating a deflationary supply.
  • Treasury/Revenue: Fees are sent to a protocol treasury for development. Each model alters the token's velocity, liquidity depth, and holder incentives.
06

Regulatory & Tax Consideration

The automatic fee mechanism creates unique legal and accounting challenges:

  • Securities Regulation: Redistribution models can resemble dividend payments, potentially qualifying the token as a security in some jurisdictions.
  • Taxable Events: Each fee deduction and redistribution may constitute a taxable event for both sender and recipient, creating significant reporting complexity.
  • Consumer Protection: The opaque reduction in received value has been flagged by regulators as potentially misleading to average investors.
developer-mitigations
DEVELOPER MITIGATIONS & BEST PRACTICES

Fee-On-Transfer Tokens

This section details the security risks posed by tokens with non-standard transfer logic and outlines critical strategies for smart contract developers to safely interact with them.

A Fee-On-Transfer (FOT) token is an ERC-20 token that applies a fee or tax on every transfer, meaning the amount received by the destination address is less than the amount sent. This non-standard behavior breaks the fundamental assumption of many DeFi protocols that balanceOf changes are predictable based on transfer calls, leading to vulnerabilities like incorrect liquidity calculations, failed arbitrage, and protocol insolvency. Developers must treat any token not from a known, verified source as potentially implementing this logic.

The primary mitigation is to measure token inflows and outflows by checking balance changes directly. Instead of relying on the amount parameter of a transfer or transferFrom call, a contract should record its token balance before and after the interaction. For example, when swapping tokens in a liquidity pool, the contract should calculate the actual received amount as balanceAfter - balanceBefore. This method, often called the balance-delta or balance-check pattern, is the most robust defense against FOT tokens and other rebasing mechanisms.

Specific integration patterns require careful adaptation. For lending protocols, collateral value must be computed using the contract's actual token balance, not the cached amount deposited. When adding liquidity to an Automated Market Maker (AMM), both token amounts should be calculated via balance delta to ensure the correct ratio is supplied; failure to do so can result in impermanent loss or failed transactions. It is also critical to perform these checks in a single transaction to prevent front-running and sandwich attacks that could exploit temporary balance states.

Beyond balance checks, developers should implement allowance management cautiously. Since the spent allowance may not equal the received amount, protocols should avoid logic that depends on a precise allowance being fully consumed. Furthermore, price oracle integrations must source prices from liquidity pools that also account for transfer fees, or use time-weighted average price (TWAP) oracles that smooth out anomalies. Explicitly blacklisting known problematic tokens in factory contracts or routers is a common, though not exhaustive, safety measure.

Testing is paramount. Developers should include fork testing against mainnet forks using real FOT tokens (e.g., certain charity or reflection tokens) to validate contract behavior. Fuzzing tools can be configured to simulate tokens with random fee percentages. Ultimately, the principle of defensive programming dictates that smart contracts must not trust external inputs and must verify all state changes, making the balance-delta check a standard best practice for any token interaction in a permissionless environment.

TOKEN MECHANICS

Comparison: Fee-On-Transfer vs. Similar Token Types

A technical comparison of token standards and their economic models based on transfer behavior.

Feature / MechanismFee-On-Transfer TokenStandard ERC-20 TokenRebasing Token

Primary Transfer Effect

Fee deducted from transferred amount

Amount sent equals amount received

Holder's balance adjusts to maintain value peg

Fee Destination

Treasury, LP, burn, or stakers

None (gas only)

N/A (value adjustment)

Holder Perception

Slippage on every transfer

Predictable 1:1 transfer

Balance fluctuates, wallet value stable

Common Use Case

Protocol revenue, anti-dump mechanics

General utility, governance, stablecoins

Algorithmic stablecoins, elastic supply

Tax Classification

Explicit transaction tax

No inherent tax

Implicit supply adjustment

Implementation Complexity

Moderate (hook in transfer function)

Low (base standard)

High (oracle integration, periodic rebase)

Impact on DEX Routing

Can break naive routers; requires fee-aware quotes

Standard routing works

Standard routing works, but balance display is complex

FEE-ON-TRANSFER TOKENS

Common Misconceptions

Fee-on-transfer tokens are a class of ERC-20 tokens that apply a fee during every transfer, but this simple mechanism leads to widespread confusion regarding balance calculations, approvals, and smart contract integration.

A fee-on-transfer token is an ERC-20 token that deducts a percentage or fixed fee from the transferred amount before it reaches the recipient, with the fee typically sent to a designated address (e.g., treasury, burn address, or liquidity pool). The mechanism works by overriding the standard transfer or transferFrom functions. For example, a 1% fee on a 100 token transfer means the recipient receives 99 tokens, and 1 token is diverted elsewhere. This contrasts with standard tokens where the sent amount equals the received amount. Prominent examples include SAFEMOON and many reflection tokens. Smart contracts that do not account for this will have incorrect balance assumptions, leading to failed transactions or locked funds.

FEE-ON-TRANSFER TOKENS

Frequently Asked Questions (FAQ)

A Fee-on-Transfer (FoT) token is a cryptocurrency that applies a fee during every token transfer, which can cause unexpected losses for smart contracts that do not account for the rebasing mechanism. This section answers common developer questions about identifying, handling, and securing interactions with these tokens.

A Fee-on-Transfer (FoT) token is an ERC-20 token that deducts a percentage fee from the transferred amount before crediting the recipient, effectively rebasing the token's total supply with each transaction. The mechanism works by overriding the standard transfer and transferFrom functions. For example, a 2% fee on a 100 token transfer means the sender's balance decreases by 100, but the recipient receives only 98 tokens; the remaining 2 tokens are typically sent to a treasury, burn address, or redistributed to holders. This differs from a reflection token, which applies fees by adjusting balances of all holders proportionally. Prominent examples include SAFEMOON and its many forks. Contracts that assume the received balance equals the sent amount will have accounting errors, as the actual token balanceOf the contract post-transfer will be less than expected.

ENQUIRY

Get In Touch
today.

Our experts will offer a free quote and a 30min call to discuss your project.

NDA Protected
24h Response
Directly to Engineering Team
10+
Protocols Shipped
$20M+
TVL Overall
NDA Protected Directly to Engineering Team
Fee-On-Transfer Tokens: Definition & AMM Security Risks | ChainScore Glossary