年终奖个税试算(单独计税)
原创:对「全年一次性奖金」按单独计税优惠算法试算应纳税额,并可选与「并入综合所得」做粗对比。
2026 年该优惠办法如仍延续,则适用;若国务院/财政部公告停止,Agent 必须先提示用户改走综合所得。
单独计税法(现行优惠算法)
- 将全年一次性奖金收入
B除以 12 个月,得到商数B/12。 - 用该商数对照月度换算后的综合所得税率表,确定适用税率与速算扣除数。
(等价:用年度税率表边界 ÷12 找档,速算扣除数用「月度速算扣除数」) - 应纳税额 =
B × 税率 − 速算扣除数(注意:此处速算扣除数为月度表对应值,不是年度表直接套在总额上)。
月度税率表(由年度表 ÷12)
| 月度应纳税所得额(商数) | 税率 | 速算扣除数 |
|---|---|---|
| ≤3000 | 3% | 0 |
| ≤12000 | 10% | 210 |
| ≤25000 | 20% | 1410 |
| ≤35000 | 25% | 2660 |
| ≤55000 | 30% | 4410 |
| ≤80000 | 35% | 7160 |
| >80000 | 45% | 15160 |
硬约束
- 输入奖金
B ≥ 0;只处理「单独计税」主路径;对比路径需用户提供预估综合所得应纳税所得额或声明无法精确对比。 round2;展示商数、档位、税率、税额、税后奖金。- 文案必须含:一年一次;与工资薪金同一月发放时的实务处理提示(可简述「可合并或单独,以扣缴义务人选择与政策为准」)。
- 禁止保证「一定更省税」;对比仅作估算。
- 政策时效声明:试算基于单独计税优惠办法;停用后本 Skill 应拒绝单独路径。
推荐实现
const MONTHLY = [
{ up: 3000, rate: 0.03, quick: 0 },
{ up: 12000, rate: 0.1, quick: 210 },
{ up: 25000, rate: 0.2, quick: 1410 },
{ up: 35000, rate: 0.25, quick: 2660 },
{ up: 55000, rate: 0.3, quick: 4410 },
{ up: 80000, rate: 0.35, quick: 7160 },
{ up: Infinity, rate: 0.45, quick: 15160 },
]
export function calcBonusAlone(bonus: number) {
if (!Number.isFinite(bonus) || bonus < 0) throw new Error('奖金无效')
const monthly = bonus / 12
const b = MONTHLY.find((x) => monthly <= x.up)!
const tax = +Math.max(0, bonus * b.rate - b.quick).toFixed(2)
return {
monthlyAvg: +monthly.toFixed(2),
rate: b.rate * 100,
quick: b.quick,
tax,
afterTax: +(bonus - tax).toFixed(2),
}
}
附加
- README.md · reference.md · templates/usage.md