个税工资预扣试算(2026)
原创本地试算:居民个人取得工资薪金,按累计预扣法估算本期应预扣税额。
不是增值税;不是官方 APP;结果仅供对账参考。
2026 年口径(延续现行,写死供对照)
| 项目 | 标准 |
|---|---|
| 基本减除费用 | 5000 元/月(年 60000) |
| 税率 | 综合所得七级超额累进 3%~45%(见下表) |
| 专项扣除 | 个人缴纳的基本养老/医疗/失业/公积金等(输入) |
| 专项附加扣除 | 按纳税人已填报额度按月累计(输入;见 reference 常用额) |
年度税率表(综合所得 / 累计预扣同表)
| 级数 | 累计应纳税所得额 | 税率 | 速算扣除数 |
|---|---|---|---|
| 1 | ≤36000 | 3% | 0 |
| 2 | ≤144000 | 10% | 2520 |
| 3 | ≤300000 | 20% | 16920 |
| 4 | ≤420000 | 25% | 31920 |
| 5 | ≤660000 | 30% | 52920 |
| 6 | ≤960000 | 35% | 85920 |
| 7 | >960000 | 45% | 181920 |
硬约束
- 累计预扣公式(居民工资薪金):
- 累计应纳税所得额 = 累计收入 − 累计免税收入 − 累计减除费用 − 累计专项扣除 − 累计专项附加扣除 − 累计其他扣除
- 累计应预扣预缴税额 = 累计应纳税所得额 × 税率 − 速算扣除数
- 本期应预扣 = 累计应预扣预缴税额 − 累计已预扣预缴税额 - 金额
round2(分);本期结果可为 0(累计已足额),不得为负时按 0(或按当地实务说明退税走汇算)。 - 必须展示:适用级数、税率、速算扣除数、累计应纳税所得额、本期税额。
- 标明:2026 年规则延续;政策若调整以税务总局为准;汇算清缴可能退补税。
- 禁止冒充「官方核定」;禁止给出偷逃税建议。
推荐实现
const BRACKETS = [
{ up: 36000, rate: 0.03, quick: 0 },
{ up: 144000, rate: 0.1, quick: 2520 },
{ up: 300000, rate: 0.2, quick: 16920 },
{ up: 420000, rate: 0.25, quick: 31920 },
{ up: 660000, rate: 0.3, quick: 52920 },
{ up: 960000, rate: 0.35, quick: 85920 },
{ up: Infinity, rate: 0.45, quick: 181920 },
]
export function pickBracket(taxableYtd: number) {
return BRACKETS.find((b) => taxableYtd <= b.up)!
}
export function calcWageWithhold(input: {
incomeYtd: number
expenseYtd: number // 累计减除费用 = 5000 * 月数
specialYtd: number
additionalYtd: number
otherYtd?: number
taxPaidYtd: number // 累计已预扣
}) {
const taxable = Math.max(
0,
round2(input.incomeYtd - input.expenseYtd - input.specialYtd - input.additionalYtd - (input.otherYtd || 0)),
)
const b = pickBracket(taxable)
const taxYtd = round2(taxable * b.rate - b.quick)
const due = round2(Math.max(0, taxYtd - input.taxPaidYtd))
return { taxable, taxYtd, due, rate: b.rate * 100, quick: b.quick }
}
const round2 = (n: number) => +n.toFixed(2)
Agent 步骤
- 收集:本月收入、任职月份、专项、专项附加、累计已扣税。
- 按累计法计算并输出表格式结果 + 公式说明。
- 提醒年度汇算与专项附加需在个税 APP 填报。
附加
- README.md · reference.md · templates/usage.md