Token taxes — buy and sell fees taken on every transaction — are a standard DeFi mechanic used legitimately for liquidity building, marketing, and reflection rewards. They are also one of the most abused mechanics in crypto scams. The difference between a legitimate 5% tax and a predatory 99% tax is often invisible until it is too late.
This article covers every method scammers use to hide, inflate, and weaponize token taxes — and what to check before you buy anything on DexScanr.
How Token Tax Works
Every ERC-20 or BEP-20 token can include a tax on transfers. When you buy or sell, the contract intercepts the transaction and routes a percentage of the token amount to a designated address — typically a marketing wallet, liquidity pool, or burn address.
uint256 public buyTax = 5; // 5% on buy
uint256 public sellTax = 5; // 5% on sell
function _transfer(address from, address to, uint256 amount) internal {
uint256 tax = 0;
if (to == uniswapPair) {
tax = amount * sellTax / 100;
}
super._transfer(from, taxWallet, tax);
super._transfer(from, to, amount - tax);
}
A 5% tax on both sides is within normal range. The abuse starts when the sell tax is set far higher — or when the deployer retains the ability to change it after launch.
The Tax Visualized
The Four Tax Scam Techniques
1. Hidden High Sell Tax From Launch
The contract launches with a visible buy tax of 3-5% and a hidden sell tax of 90-99%. The sell tax is stored in a separate variable with a different name or inside a proxy implementation that is not shown on Etherscan. Simulation may pass if the simulator reads only the buy tax. The trap activates the moment a real user tries to sell.
If a token’s buy tax and sell tax are stored in variables with different names or in different contract files, treat it as high risk. Always verify the actual sell tax value on-chain, not the advertised number.
2. Post-Launch Tax Increase
The token launches with a fair tax — 3% buy, 3% sell. After enough buyers accumulate, the deployer calls the tax setter function to change the sell tax to 99%. The function exists in the contract from day one. The deployer just waits for the right moment.
function updateTax(uint256 newBuy, uint256 newSell)
external onlyOwner {
require(newBuy <= 100 && newSell <= 100);
buyTax = newBuy;
sellTax = newSell; // can be set to 99 anytime
}
“A token that lets the owner set sell tax to any value post-launch is a loaded gun. The only question is when they pull the trigger.”
3. Graduated Tax Drain
Instead of an obvious 99% tax, the contract uses a graduated system. The sell tax increases with the size of the sell. Small sells have a 5% tax. Sells above a certain threshold trigger a 50-99% tax. This allows small sells to go through — maintaining the illusion of a functioning token — while making it practically impossible to exit a real position.
function getSellTax(uint256 amount) internal view returns (uint256) {
if (amount > largeThreshold) {
return 99; // large sells get 99%
}
return 5; // small sells look normal
}
4. Split Contract Tax Hiding
The main contract is verified and shows a normal tax. The actual transfer logic is delegated to a second unverified implementation contract where the real tax is applied. Etherscan shows the clean version. The tax that executes is in the hidden contract.
Owner can change tax after launch
Any function that lets the deployer modify buy or sell tax post-launch is a direct risk to every holder.
Sell tax stored in proxy implementation
If the contract is a proxy and the implementation is unverified, you cannot see the real sell tax.
Buy tax and sell tax differ significantly
Legitimate projects rarely have a 3% buy tax and a 25%+ sell tax. Asymmetry is a red flag.
Tax wallet is the deployer wallet
Tax routed directly to the deployer with no lock or vesting creates an immediate extraction risk.
What a Legitimate Tax Looks Like
Not every token with a tax is a scam. Legitimate projects use taxes for specific, disclosed purposes. Here is what a safe tax structure looks like:
- Buy and sell tax below 10% combined — anything above 10% total warrants extra scrutiny
- Tax is fixed in the contract — no owner function to change it after launch
- Tax wallet is a multisig or timelock — not a single deployer address
- Tax purpose is clearly defined — liquidity, marketing, or burn with verifiable on-chain routing
- Ownership is renounced or the tax setter is removed — deployer cannot change the tax after launch
A contract where the tax setter function does not exist, or where ownership is fully renounced, cannot have its tax changed post-launch. This is one of the strongest safety signals for tax-related risk.
How DexScanr Reads Tax
DexScanr does not rely on what a project claims its tax is. It reads the actual values stored in the contract at scan time and checks for the presence of any function that could change those values post-launch. Every scan on DexScanr includes:
- Live buy tax — read directly from contract state, not from project documentation
- Live sell tax — same, including proxy implementation analysis where applicable
- Tax setter detection — flags any owner-callable function that can modify buy or sell tax
- Tax wallet analysis — identifies whether tax routes to a deployer wallet, multisig, or burn address
- Graduated tax detection — flags amount-conditional tax logic that applies different rates to large sells
🛡️ See the Real Tax Before You Buy
DexScanr reads live on-chain tax values on every token across ETH, BSC, Base, Polygon, and Arbitrum. Automatically on DexScreener as you browse.
Install DexScanr Free →Summary
Token taxes are not inherently dangerous. Hidden taxes, post-launch tax changes, graduated tax traps, and split-contract tax hiding are. Before buying any token, verify the actual sell tax on-chain, check whether the deployer can change it, and confirm where the tax wallet routes to. If any of those checks fail, the tax structure is a risk factor regardless of what the project claims.