这是关税自动计算Python脚本,按HS编码查税率,自动算关税、消费税、增值税和到岸总成本,并输出明细。
```python
-*- coding: utf-8 -*-
"""
进口环节税费自动计算
支持:从价税 / 从量税 / 复合税、原产地优惠税率、消费税、进口增值税、汇率折算
"""
from dataclasses import dataclass, field
from decimal import Decimal, ROUND_HALF_UP
CENT = Decimal("0.01")
D = Decimal
def yuan(x) -> Decimal:
"""四舍五入到分"""
return D(x).quantize(CENT, rounding=ROUND_HALF_UP)
----------------------------------------------------------------------
税率规则
----------------------------------------------------------------------
@dataclass(frozen=True)
class TaxRule:
hs_code: str
name: str
duty_rate: Decimal = D("0") # 从价关税税率
duty_per_unit: Decimal = D("0") # 从量关税(元/计量单位)
vat_rate: Decimal = D("0.13") # 进口环节增值税率
excise_rate: Decimal = D("0") # 从价消费税率
excise_per_unit: Decimal = D("0") # 从量消费税(元/计量单位)
preferential: dict = field(default_factory=dict) # 原产国代码 -> 优惠关税税率
示例税则库(真实业务请替换为海关税则 / 接口数据)
TARIFF_DB = {
"8517.1200": TaxRule("8517.1200", "智能手机", D("0")),
"8703.2341": TaxRule("8703.2341", "小汽车(1.5L以下)", D("0.15"),
excise_rate=D("0.03")),
"2204.2100": TaxRule("2204.2100", "葡萄酒", D("0.14"),
excise_rate=D("0.10"),
preferential={"CL": D("0"), "AU": D("0"), "GE": D("0")}),
"2402.2000": TaxRule("2402.2000", "卷烟", D("0.25"),
excise_rate=D("0.56"), excise_per_unit=D("0.003")),
}
----------------------------------------------------------------------
计算结果
----------------------------------------------------------------------
@dataclass
class DutyResult:
hs_code: str
origin: str
duty_rate: Decimal # 实际适用的关税税率
cif: Decimal # 完税价格(人民币)
duty: Decimal # 关税
excise: Decimal # 消费税
vat: Decimal # 增值税
total_tax: Decimal # 税费合计
landed_cost: Decimal # 到岸总成本 = 完税价格 + 税费
def report(self) -> str:
lines = [
f"商品 : {self.hs_code} 原产地: {self.origin or '---'}",
f"适用关税税率: {self.duty_rate:.2%}",
f"完税价格 CIF: ¥{self.cif:,.2f}",
f"关 税 : ¥{self.duty:,.2f}",
f"消 费 税 : ¥{self.excise:,.2f}",
f"增 值 税 : ¥{self.vat:,.2f}",
f"税费合计 : ¥{self.total_tax:,.2f}",
f"到岸总成本 : ¥{self.landed_cost:,.2f}",
]
return "\n".join(lines)
----------------------------------------------------------------------
核心计算
----------------------------------------------------------------------
def calc_import_tax(hs_code: str,
price,
quantity=1,
fx_rate=1,
origin: str = None) -> DutyResult:
"""
:param hs_code: HS 编码(税则库键值)
:param price: 成交单价(外币或人民币)
:param quantity: 数量(单位需与从量税计量单位一致,如 升 / 千克 / 条)
:param fx_rate: 外币 -> 人民币汇率,人民币计价填 1
:param origin: 原产国代码,用于判定协定优惠税率
"""
rule = TARIFF_DB.get(hs_code)
if rule is None:
raise KeyError(f"税则库中未找到 HS 编码: {hs_code}")
qty = D(str(quantity))
fx = D(str(fx_rate))
1. 完税价格(CIF,人民币)
cif = yuan(D(str(price)) * qty * fx)
2. 确定适用关税税率(协定税率优先)
origin_key = (origin or "").upper()
duty_rate = rule.preferential.get(origin_key, rule.duty_rate)
3. 关税 = 从价税 + 从量税
duty = yuan(cif * duty_rate + rule.duty_per_unit * qty)
4. 消费税
if rule.excise_rate > 0:
组成计税价格 = (完税价格 + 关税 + 从量消费税) / (1 - 从价消费税率)
base = (cif + duty + rule.excise_per_unit * qty) / (D("1") - rule.excise_rate)
excise = yuan(base * rule.excise_rate + rule.excise_per_unit * qty)
elif rule.excise_per_unit > 0:
excise = yuan(rule.excise_per_unit * qty)
else:
excise = yuan(0)
5. 进口环节增值税
vat = yuan((cif + duty + excise) * rule.vat_rate)
total_tax = yuan(duty + excise + vat)
return DutyResult(
hs_code=hs_code,
origin=origin_key,
duty_rate=duty_rate,
cif=cif,
duty=duty,
excise=excise,
vat=vat,
total_tax=total_tax,
landed_cost=yuan(cif + total_tax),
)
----------------------------------------------------------------------
演示
----------------------------------------------------------------------
if name == "main":
例 1:法国葡萄酒,单价 50 欧元,120 瓶,汇率 7.8
r1 = calc_import_tax("2204.2100", price="50", quantity=120,
fx_rate="7.8", origin="FR")
print("【例1】", r1.report(), "\n")
例 2:同款酒来自智利,享受协定零关税
r2 = calc_import_tax("2204.2100", price="50", quantity=120,
fx_rate="7.8", origin="CL")
print("【例2】", r2.report(), "\n")
例 3:卷烟,从价 + 从量复合税,1000 条
r3 = calc_import_tax("2402.2000", price="200", quantity=1000, fx_rate=1)
print("【例3】", r3.report())
```
进口税费计算工具的核心模块
这个脚本把进口税费计算拆成几个好用的部分,您只需要提供商品信息就能直接出结果。
· 税则库:用TaxRule记录每个HS编码对应的从价税、从量税、增值税、消费税及优惠税率,示例里放了智能手机、葡萄酒、卷烟等常见品类。
· 计算函数:calc_import_tax接收HS编码、单价、数量、汇率和原产地,自动完成完税价格、关税、消费税、增值税及到岸总成本的计算。
· 结果报告:返回DutyResult对象并附report()方法,直接打印各项税费明细,方便核对和记录。
· 优惠判定:传入原产地代码后,系统会优先匹配协定税率,像智利葡萄酒就能享受零关税。
优化建议: 示例税则库仅含少量商品,您可以将TARIFF_DB替换为真实海关税则数据或接入查询接口,并同步更新相关税率字段。
文章仅供参考学习用。