Binance Support FAQ page “How to Calculate Binance Spot Trading Fees?” stating that trading fees are always charged in the asset you receive, with a regular-user example of buying 10 ETH at a 0.1% fee rate
The English Binance Support article “How to Calculate Binance Spot Trading Fees?”, captured in October 2026, states that the fee is always charged in the asset you receive and works through a buy example at 0.1%.

Lay the trade record in front of you and look at the fee column first — specifically, at the asset code written after the number. On an ETH/USDT buy, if that code reads ETH, the fee was taken straight out of the ETH you bought: every USDT you paid is still accounted for, but the ETH that landed in your wallet is a little less than the filled quantity. In that case the average fill price is not your cost. Divide the total USDT you paid by the amount of ETH you actually received, and the result comes out slightly higher.

If the code reads BNB, you received the full quantity, but you spent some BNB on top, and that needs converting to USDT and adding to your outlay. When you later sell ETH/USDT without the BNB discount, the fee comes out of the USDT you receive and leaves your buy cost alone. The prices in the worked examples below are made up; the 0.1% rate and the 0.075% discounted rate come from the regular-user examples in the two Binance help articles cited further down. Your own rate and whether the discount applies depend on your account’s current fee tier and the completed trade itself.

Which four columns in Trade History do you need?

Binance’s support article How to Calculate Binance Spot Trading Fees? says the fee charged on each trade can be seen in Trade History, and that the Est. Fee on the trading page is for reference only — the real fee depends on what you actually receive once the trade executes. So leave the order ticket aside, and don’t work from the single summary line in Order History either. Go to Trade History, where each fill gets its own row. If the two histories still blur together, see Binance order history vs trade history.

On every row, read out four things: price, filled quantity, total, and the fee together with its asset. That last one is the easiest to skim past, and those few letters after the number decide which method below applies to you.

When the fee is taken from the coin you bought

Say you buy 0.5 ETH at 2,000 USDT, with BNB fee payment switched off and a 0.1% fee rate.

  • USDT paid: 0.5 × 2,000 = 1,000 USDT
  • Fee: 0.5 ETH × 0.1% = 0.0005 ETH, listed in the record as ETH
  • ETH received: 0.5 − 0.0005 = 0.4995 ETH
  • Cost per ETH: 1,000 ÷ 0.4995 ≈ 2,002.00 USDT

The fill price is 2,000; the cost is about 2,002. Those 2 extra USDT are the 0.0005 ETH fee spread across every coin you kept. The average price calculator works out the fill average before fees, so it will give you 2,000; to reach 2,002 you need to swap the divisor for the quantity you received.

The gap looks tiny on one trade, yet it stays with the position. With 0.4995 ETH in the account, a sell order for 0.5 ETH won’t go through, so check the available amount before placing it. If a leftover fraction refuses to sell, Binance spot order filter errors explained covers the quantity rules involved.

When BNB pays the fee

According to Binance’s How to Use BNB to Pay for Fees and Earn up to 25% Discount?, with Using BNB Deduction enabled the system first works out the discounted fee in the asset you receive, then converts it to BNB and deducts that. If there isn’t enough BNB, you are charged the original fee instead.

Take the same purchase, this time with the discount on:

  • Discounted fee: 0.5 ETH × 0.075% = 0.000375 ETH, converted to BNB and deducted
  • ETH received: the full 0.5 ETH
  • Value of that fee in USDT: 0.000375 × 2,000 = 0.75 USDT
  • Cost per ETH: (1,000 + 0.75) ÷ 0.5 = 2,001.50 USDT

The 0.75 USDT is the fee valued at the assumed fill price. Binance also notes that for non-BNB pairs the conversion uses an average rate rather than the spot rate at that moment, which can cause a slight difference — so don’t expect the BNB actually deducted to match any one USDT quote exactly. When you check your own record, copy down the exact BNB amount deducted, then value it at a conversion price you have chosen and can show your source for: BNB amount × conversion price (USDT per BNB) = the fee to add to the purchase cost. This reconciles your trading outlay; it is not a substitute for the tax rules where you live.

BNB switched on, but the full fee was still charged? The same help article lists the cases. With too little BNB, the original fee applies. If an asset is worth less than 0.00000001 BNB, its trades don’t qualify for the BNB discount, and the fee may be charged in that asset or in BNB. With trading bots such as Spot Grid, DCA or a rebalancing bot, the fee is first taken from the Trading Bots account at the standard rate, and the refund is credited to your Spot account afterwards; the BNB fee history sits under Orders → Trading Bots Order → Fees Return History. When reconciling a bot trade, put the original fee, the refund and any BNB charged side by side. Checking whether the discount took effect at all is covered in How to verify a BNB trading-fee discount.

One order, several fills: group the fees by asset first

A limit order can fill in pieces, and each piece is a separate row in Trade History. Suppose one buy order filled twice, both rows charging 0.1% in ETH:

Price (USDT)Quantity (ETH)Total (USDT)Fee (ETH)
2,0000.36000.0003
2,0100.24020.0002
Total0.51,0020.0005

Received: 0.5 − 0.0005 = 0.4995 ETH, so the cost is 1,002 ÷ 0.4995 ≈ 2,006.01 USDT per ETH, against a pre-fee fill average of 1,002 ÷ 0.5 = 2,004 USDT per ETH. Because both rows charged ETH, the two fees can be added together and taken off the total quantity.

Mixed rows are different. If the first row was paid in BNB and the second in ETH, the two fee figures can’t simply be summed. Sort them by asset: the ETH fees come off the quantity received, and each BNB fee is converted to USDT and added to the outlay. Cost per unit including fees = (total USDT spent + USDT value of the BNB fees) ÷ (total ETH filled − total ETH fees). If the first row had instead taken BNB worth 0.45 USDT while the second still took 0.0002 ETH, that gives (1,002 + 0.45) ÷ (0.5 − 0.0002) ≈ 2,005.70 USDT per ETH.

Selling: the fee comes out of the USDT, not your cost basis

Selling ETH/USDT without the BNB discount takes the fee from the USDT you receive. Continuing from the table above, where both buys paid their fees in ETH, suppose you sell the whole 0.4995 ETH at 2,100 USDT with a 0.1% fee:

  1. Total: 0.4995 × 2,100 = 1,048.95 USDT
  2. Fee: 1,048.95 × 0.1% = 1.04895 USDT
  3. Received: 1,048.95 − 1.04895 = 1,047.90105 USDT
  4. Against the 1,002 USDT spent on the buys, the round trip leaves you 45.90105 USDT ahead

There’s no need to go back and revise the 2,006.01 USDT buy cost because of the sell fee. The ETH fee on the buy has already reduced what you could sell; the sell fee is taken only from this sale’s proceeds, so don’t deduct the buy fee a second time. To recompute any single fee from the rate and the trade total, the spot fee calculator does it line by line.

Your figure and Binance’s don’t match? Check these first

  • Fee asset: within one order, did some rows pay in BNB and others in the coin?
  • Estimate or actual: is any number taken from Est. Fee on the order ticket rather than from Trade History?
  • Divisor: did you divide by the filled quantity or by the quantity received? They differ whenever the fee came out of the coin.
  • Other inflows: deposits, Convert trades or rewards in the same coin change your balance, but their cost isn’t in these fill rows.

Any cost or profit figure Binance shows on an asset or position page follows its own method — whether fees are included and how deposited coins are treated is whatever Binance’s own explanation for that figure says. The method here only works backwards from your fills: what went out and what came in. When the two numbers disagree, first establish whether they are measuring the same thing, then decide which one is wrong.

Risk note: A cost basis tells you what your past buys cost. It says nothing about whether to sell now.

Other questions about cost basis

Should the fee be part of the cost basis or recorded as a separate expense?

If the question is what each coin you received cost you, fold the buy fee into the unit cost as shown above. Keeping a separate fee column as well makes spending easier to check; just don’t subtract a fee again in a profit calculation once it is already inside the cost. How costs and fees must be classified for tax depends on local rules.

The fee left a fraction of a coin that won’t sell. What can be done?

A spot order is rejected when the amount is below the pair’s minimum order quantity or doesn’t fit its step size. Check the available amount and the pair’s rules first, then see whether your account offers a small-balance conversion and on what terms; there’s no need to buy more just to round the amount up. Binance spot order filter errors explained walks through the rules.

If you buy another coin with BNB, which asset is the fee charged in?

For an ETH/BNB buy, the fee calculation starts with the ETH you receive. Without BNB fee payment, the fee is deducted in ETH. If the BNB discount applies, the discounted ETH fee is converted to BNB and deducted in BNB instead. Paying for the purchase with BNB does not by itself mean BNB pays the fee.