币安中文帮助中心“如何计算币安现货交易手续费”页面,写明手续费以获得的目标币种支付,并列出买入 10 ETH 收 0.01 ETH、卖出收 34.5255 USDC 两个算例
这张图来自币安中文帮助中心《如何计算币安现货交易手续费》,页面写明手续费“始终以获得的目标币种支付”,并各给了一个买入和卖出的算例,截图时间是 2026 年 10 月。

把你手上这份成交记录摊开,先找“手续费”那一栏后面跟着的是哪个币。买入 ETH/USDT 时,如果那里写的是 ETH,说明手续费是从你买到的 ETH 里直接扣掉的:你付出去的 USDT 一分没少,到手的 ETH 却比成交数量少了一截。这时候成本价不能拿成交均价顶替,要用“付出去的 USDT 总额 ÷ 实际到手的币数量”来算,结果会比成交均价略高。

如果那一栏写的是 BNB,买到的币数没少,但你另外花了一笔 BNB,要把它折成 USDT 加进支出。卖出 ETH/USDT 且没有使用 BNB 抵扣时,手续费从收到的 USDT 里扣,不回改买入成本。以下算例采用假设价格;0.1% 和抵扣后的 0.075% 来自下文两份币安帮助说明中的普通用户算例,查阅于 2026 年 10 月。你自己的费率与抵扣资格要看账户当前的手续费等级和实际成交记录。

成交记录里要对的是哪四栏?

币安《如何计算币安现货交易手续费》写着,每笔交易收了多少手续费,可以在“历史成交”里看;下单页显示的“预估手续费”仅供参考,实际以成交后得到的资产为准。所以算成本价时别看下单页,也别看“订单历史”里那一行汇总,直接看“历史成交”,一笔成交一行。两种历史的区别站内另有一篇订单历史和成交历史怎么看。

每一行要念出来的是这四样:成交价格、成交数量、成交额,以及手续费的数字连同它的币种。最后这一样最容易漏看,数字后面那几个字母才是这篇要用的关键。

手续费扣在买到的币上:分母变小

假设你按 2,000 USDT 的价格买入 0.5 ETH,没有开 BNB 抵扣,费率 0.1%。

  • 付出去的 USDT:0.5 × 2,000 = 1,000 USDT;
  • 手续费:0.5 ETH × 0.1% = 0.0005 ETH,记录里写作 ETH;
  • 实际到手:0.5 − 0.0005 = 0.4995 ETH;
  • 成本价:1,000 ÷ 0.4995 ≈ 2,002.00 USDT。

成交均价是 2,000,成本价约 2,002,差出来的 2 USDT 就是那 0.0005 ETH 折成的钱摊到每个币上。站内的分批成交均价计算器算的是不含手续费的均价,用它得到的是 2,000 这个数;要得到 2,002,得自己把分母换成到手数量。

这个差在单笔里看着小,但它会一直跟着你:账户里只有 0.4995 ETH,想按 0.5 ETH 卖是卖不出去的,挂单前先看可用数量,零头卖不掉时参考现货下单规则报错排查。

开了 BNB 抵扣:币数不少,多出一笔 BNB 要折进去

币安《如何使用 BNB 抵扣手续费》说明,开启抵扣后,系统先按你收到的币种算出打折后的手续费,再按成交时的市价换算成 BNB 扣走;现货钱包里的 BNB 不够时,照全额从收到的币里收。

还是上面那一笔,这次开了抵扣:

  • 抵扣后的手续费:0.5 ETH × 0.075% = 0.000375 ETH,按成交时的比例折成 BNB 扣走;
  • 到手:0.5 ETH,一点没少;
  • 这笔手续费值多少 USDT:0.000375 × 2,000 = 0.75 USDT;
  • 成本价:(1,000 + 0.75) ÷ 0.5 = 2,001.50 USDT。

上面的 0.75 USDT 是用假设成交价折算的费用价值。官方说明还提醒,非 BNB 交易对的折算会用到不同交易对的平均汇率,因此不能认定它与实际扣走的 BNB 按任一 USDT 报价换算后完全相等。核对你手上这份记录时,先抄下实际扣除的 BNB 数量,再用你选定并保留依据的折算价格计算:BNB 数量 × 折算价格(USDT/BNB)= 计入买入支出的费用。这份计算用于核对交易支出,不能代替所在地的报税规则。

扣了 BNB 却还是收了全额?官方页面列了几种情况:BNB 余额不够时按全额收;某个币的价值低于 0.00000001 BNB 时,这笔交易不享受 BNB 折扣,手续费可能以该币或 BNB 收取;用现货网格这类交易机器人时,先从机器人账户收全额手续费,再将退款存入现货钱包,同时收取折扣后的 BNB 手续费。核账时要把原扣费、退款和另扣的 BNB 一起看,记录入口在“订单”→“交易机器人订单”→“手续费返还记录”。BNB 抵扣本身怎么核对,站内BNB 抵扣手续费生效了吗那篇讲得更细。

一笔单分几次成交,手续费先按币种分开

一张限价单可能分成几笔成交,在历史成交里对应几行。假设同一个买单成交了两次,两笔均按 0.1% 扣 ETH:

价格(USDT)数量(ETH)成交额(USDT)手续费(ETH)
2,0000.36000.0003
2,0100.24020.0002
合计0.51,0020.0005

到手 0.5 − 0.0005 = 0.4995 ETH,成本价 = 1,002 ÷ 0.4995 ≈ 2,006.01 USDT/ETH;不含手续费的成交均价是 1,002 ÷ 0.5 = 2,004 USDT/ETH。这两行扣的都是 ETH,可以把 ETH 手续费相加,再从成交数量合计中减去。

如果前一行扣 BNB、后一行扣 ETH,就不能把两个手续费数字直接相加。先按币种分开:ETH 手续费合计从到手数量里扣;BNB 手续费逐笔折成 USDT 后计入支出。含费单位成本 =(USDT 成交额合计 + BNB 手续费折算的 USDT 合计)÷(ETH 成交数量合计 − ETH 手续费合计)。例如第一行改为扣除折算值 0.45 USDT 的 BNB,第二行仍扣 0.0002 ETH,则为(1,002 + 0.45)÷(0.5 − 0.0002)≈ 2,005.70 USDT/ETH。

卖出时手续费扣 USDT:成本价不变,变的是到手

卖出 ETH/USDT 且没有使用 BNB 抵扣时,手续费从收到的 USDT 里扣。接着表格中两笔买入均扣 ETH 的那份记录,假设把到手的 0.4995 ETH 按 2,100 USDT 全部卖出,卖出费率为 0.1%:

  1. 成交额:0.4995 × 2,100 = 1,048.95 USDT;
  2. 手续费:1,048.95 × 0.1% = 1.04895 USDT;
  3. 到手:1,048.95 − 1.04895 = 1,047.90105 USDT;
  4. 和买入时付出的 1,002 USDT 相比,这一来一回多出 45.90105 USDT。

卖出手续费不需要回头去改那 2,006.01 USDT/ETH 的买入成本价。买入时扣的 ETH 已经减少了可卖数量;卖出时只从这次成交额里扣 USDT 手续费,不要再把买入费用减第二遍。手续费本身怎么按费率和成交额算,站内的现货手续费试算器可以把单笔先复算一遍。

自己算的和页面上显示的对不上,先查这几处

  • 手续费币种:同一笔单的几行里,有没有一部分扣 BNB、一部分扣币;
  • 用的是不是“预估手续费”:下单页那个数只是估算,以历史成交为准;
  • 分母用的是成交数量还是到手数量:手续费扣币时两者不同;
  • 是否混进了别的买入:同一个币的充值、闪兑、赠送到账都会让余额变化,但它们的成本不在这几行成交记录里。

平台在资产页或持仓页上显示的成本、盈亏,用的是它自己的算法,是否计入手续费、怎么处理充值进来的币,以平台对那个数字的说明为准。本文的算法只从成交记录倒推“付出去多少、到手多少”,两个数字对不上时,先确认二者算的是不是同一件事,再判断谁错。

风险提醒:成本价只说明你过去买入花了多少,不说明现在该不该卖。

关于成本价,还会碰到的几个问题

手续费应该算进成本价,还是单独记成一笔费用?

要回答每个到手的币花了多少,就按本文公式把买入手续费计入单位成本。也可以另建一栏汇总手续费,便于核对支出;只是计算同一笔盈亏时,已经计入成本的费用不能再扣一次。报税所需的成本和费用归类另按所在地规则处理。

手续费扣了币之后剩下的零头卖不掉怎么办?

零头低于交易对的最小下单数量或不符合数量步长时,现货下单会被拒。先核对可用数量和该交易对规则,再查看账户是否提供小额资产兑换及其条件;不用为了凑整额外买入。排查方法见现货下单规则报错排查。

用 BNB 买别的币,手续费扣的是哪一个?

仍然按收到的币种计算。比如用 BNB 买 ETH,收到的是 ETH,手续费按 ETH 算;开了 BNB 抵扣的话,再按 ETH 与 BNB 的市价比例折成 BNB 扣。