掘金.png

每年报税季,我都要面对一个尴尬的问题:税务局寄来BIR60绿色表格,各种免税额变化的新闻满天飞,想算清楚自己要交多少税得对着税率表一行一行拼。

后来写了一个Prompt和API脚本,30秒搞定。

核心思路: 把香港薪俸税的累进税率表和免税额规则「喂」给Claude,根据输入直接算结果。



方案一:Prompt模板(无需编程)

直接贴到Claude对话里就能用:

你是香港薪俸税计算助手。

已知条件(2026/27课税年度):
- 基本免税额:145,000 港元
- 已婚免税额:290,000 港元
- 子女免税额(每名):140,000 港元
- 额外子女免税额(出生年度):140,000 港元
- MPF雇员供款:收入5%,上限18,000港元/年

累进税率:
- 首50,000:2%
- 次50,000:6%
- 次50,000:10%
- 次50,000:14%
- 剩余:17%

标准税率:15%

请根据用户输入的年收入、婚姻状况、子女数量:
1. 计算应评税入息(收入 - 免税额 - MPF)
2. 按累进税率计算
3. 按标准税率(15%)计算
4. 取较低者作为最终税款
5. 输出清晰步骤和各项金额

实测把「年薪50万、单身、无子女」输入Claude,3秒出结果——应缴约3.7万。自己手算一遍,基本一致。


方案二:Claude API + Python(可集成)

想集成到自己工具里,走API:

import anthropic
import json

# 2026/27课税年度税率配置
TAX_BRACKETS = [
    (50000, 0.02),
    (50000, 0.06),
    (50000, 0.10),
    (50000, 0.14),
    (float('inf'), 0.17)
]

STANDARD_RATE = 0.15
MPF_CAP = 18000  # 年度上限

ALLOWANCES = {
    "single": 145000,
    "married": 290000,
    "single_parent": 145000,
    "child": 140000,
    "newborn_extra": 140000
}

def calculate_tax(income, marital_status="single",
                  num_children=0, newborn=0):
    mpf = min(income * 0.05, MPF_CAP)

    base = ALLOWANCES.get(marital_status, 145000)
    child = num_children * ALLOWANCES["child"]
    newborn_extra = newborn * ALLOWANCES["newborn_extra"]
    total_allowance = base + child + newborn_extra

    taxable = max(0, income - total_allowance - mpf)

    # 累进税率
    remaining, tax_progressive = taxable, 0
    for bracket, rate in TAX_BRACKETS:
        if remaining <= 0:
            break
        portion = min(remaining, bracket)
        tax_progressive += portion * rate
        remaining -= portion

    # 标准税率
    tax_standard = (income - mpf) * STANDARD_RATE

    return {
        "income": income,
        "mpf": mpf,
        "allowance": total_allowance,
        "taxable": taxable,
        "progressive": round(tax_progressive, 2),
        "standard": round(tax_standard, 2),
        "final": round(min(tax_progressive, tax_standard), 2)
    }

# 年薪50万单身
result = calculate_tax(500000)
print(json.dumps(result, indent=2))

输出示例:

{
  "income": 500000,
  "mpf": 18000,
  "allowance": 145000,
  "taxable": 337000,
  "progressive": 36980.0,
  "standard": 72300.0,
  "final": 36980.0
}

踩坑记录

  1. MPF上限别算错: 香港MPF是收入5%,上限18,000港币/年。年收入36万以上就封顶,不是5%一直乘。

  2. 累进vs标准取低: 高收入(年入约200万以上)标准税率15%一刀切反而便宜,比累进阶梯算下来少交。

  3. 免税额不自动生效: 子女免税额、供养父母免税额都要在报税表上自己填,不填就不算。

  4. 2026/27新生子女双倍: 正常14万 + 出生年度额外14万 = 28万。很多人漏报额外部分。


下一步

脚本目前只算个人薪俸税。如果扩展可以做利得税计算、Web小工具、历年税率变化对比。

你有更好的实现方式?评论区聊聊。