← Back to Guides

How to check a token's buy and sell tax

Where the number lives, why your wallet won't show it before you trade, and what to do with it once you have it.

A transfer tax is a rule written into the token's own contract: every time the token moves, the contract keeps a percentage and sends it somewhere — a marketing wallet, a treasury, back into the liquidity pool. It is not charged by the exchange and it is not the network fee. It belongs to the token itself, which is why two tokens traded on the same exchange, from the same wallet, on the same day can behave completely differently.

Most tokens have no transfer tax at all. Among those that do, the buy tax and the sell tax are separate numbers, set separately, and they are often not the same.

Why your wallet doesn't tell you

Before you confirm a swap, your wallet shows you two things: the network fee and the slippage tolerance. Neither of them is the tax. The network fee pays validators. Slippage covers price movement between the quote and the execution. The contract's own cut happens inside the transfer, after the wallet has already displayed its numbers — so less arrives than you were quoted, and nothing on the screen warned you.

That is why people usually describe a tax as something they found out afterwards. There was no field to read it in.

Declared and enforced are two different numbers

A project's site, its documentation and its pinned messages state a tax. The contract enforces one. These come from different places — one written by a person, the other by code — and they can disagree: through an oversight, through a later change nobody updated the site for, or deliberately.

The only way to know the enforced number is to read it out of the contract, or to simulate a trade against it. Simulation is what an automated check does: it runs a buy and a sell against the live contract without spending anything and reports what came back. That is the number that will apply to you.

Why the number can change after launch

Many contracts include a function that lets the owner set the tax after deployment. Where that function exists, today's number is today's number. Changing it takes one transaction, and no announcement is required.

Two things follow. A check describes the state at the moment it ran, which is why the date on a result matters as much as the result. And whether the tax can be changed is a separate fact from what it currently is — worth knowing on its own.

Reading the two numbers

Buy tax applies when you acquire the token, sell tax when you dispose of it. Because they are set independently, a token can be cheap to enter and expensive to leave. At the far end of that scale a sell that does not complete at all stops being a tax question — that is the mechanism people mean when they say a token cannot be sold.

Whether a particular percentage is acceptable is not something a checker can answer, and we are not going to pretend otherwise. Some tokens tax trades to fund a treasury their holders voted for; others tax them to drain buyers. The number is neutral on its own: it tells you what leaves your balance on each side of a trade. What to make of that depends on what the project says it does with the money, and whether that holds up.

What to check alongside it

  • Whether the tax is owner-adjustable, and who the owner is
  • Whether a sell simulation completes at all
  • Whether the number the contract enforces matches the number the project publishes
  • When the contract was deployed, and what has changed since the last check

All four come out of the same free check. Paste a contract address — it reads the live contract and shows the date it read it.