工资到手计算器(五险一金 + 个税)
这个技能做什么
对用户自己给的税前月薪做算术:
- 到手工资:个人每月缴多少养老、医疗、失业、公积金;单位替你缴多少(含工伤、生育);个税按累计预扣法算 1 到 12 月逐月表格;每月到手、全年到手合计、公积金账户全年进账。
- 反算税前:想每月到手多少(全年平均,或第一个月),税前月薪至少要多少。
- 年终奖:单独计税和并入工资两种算法各交多少税、哪种省;落在「多发反而少拿」区间时提醒。
数字一律来自脚本输出,不要心算。
这个技能不做什么
- 不联网,不查任何城市的最新基数;内置的四个城市是查证日的公布值,只作示例,结尾都写「以当地为准」。
- 其他城市的缴费基数上下限、单位比例不猜,请用户照当地社保、公积金部门公布的数字填。
- 不算劳务报酬、经营所得、股权激励、离职补偿金的税,不算个税年度汇算(年度汇算用专门的汇算技能)。
- 不给谈薪建议,不评价单位缴得多还是少。
- 不推荐任何律师、会计、中介或机构。
现行口径(核对日期 2026-09-30,出处见 references/rules-sources.md)
| 项目 | 口径 |
|---|---|
| 缴费基数 | 默认等于税前月薪,低于当地下限按下限,高于上限按上限;用户说了实际基数就按实际基数 |
| 个人比例(示例) | 养老 8%,医疗 2%(北京另加每月 3 元),失业 北京上海 0.5%、广深 0.2% |
| 公积金 | 单位和个人比例相同,在 5% 到 12% 之间由单位定;示例:北京 12%、上海 7%、深圳广州 5% |
| 个税 | 累计预扣法:每月减除 5000 元,减去五险一金个人部分和专项附加扣除,按综合所得年度税率表(3% 到 45%)算累计应交,再减去前几个月已交 |
| 年终奖 | 可单独计税(奖金除以 12 找月度税率档)或并入工资;单独计税政策执行到 2027 年底 |
用户说大白话 → 你翻成命令
脚本路径:{baseDir}/scripts/salary.py。不要让用户记参数,由你从对话里取数。
| 用户这样说 | 你跑这个 |
|---|---|
| 「北京月薪两万,到手多少?」 | python {baseDir}/scripts/salary.py calc --salary 20000 --city 北京 |
| 「上海税前 15000,社保按最低基数交,公积金 7%,12 月能拿多少?」 | python {baseDir}/scripts/salary.py calc --salary 15000 --city 上海 --base 7546 --hpf-rate 7 --month 12 |
| 「深圳 3 万,每月专项附加扣除 3000(房租 1500 加老人 1500),全年到手多少?」 | python {baseDir}/scripts/salary.py calc --salary 30000 --city 深圳 --special 3000 |
| 「想在广州每月到手 1 万,税前要谈多少?」 | python {baseDir}/scripts/salary.py reverse --net 10000 --city 广州 |
| 「月薪 2 万,年终奖 5 万,单独算税还是并进工资划算?」(北京) | python {baseDir}/scripts/salary.py bonus --salary 20000 --bonus 50000 --city 北京 |
| 「我在成都,月薪 12000,社保基数上下限是 4700 到 23000,公积金 8%」 | python {baseDir}/scripts/salary.py calc --salary 12000 --city 成都 --si-min 4700 --si-max 23000 --hpf-rate 8 |
| 「7 月才入职,月薪 18000,北京,今年个税怎么扣?」 | python {baseDir}/scripts/salary.py calc --salary 18000 --city 北京 --start-month 7 |
| 「四个城市的基数都是多少?」 | python {baseDir}/scripts/salary.py cities |
参数速查(给你看的,不念给用户):
| 参数 | 含义 |
|---|---|
calc / reverse / bonus / cities |
算到手 / 反算税前 / 年终奖对比 / 看城市口径 |
--salary |
税前月薪(calc、bonus 必填) |
--city |
北京、上海、深圳、广州用内置示例;其他城市名照写,再补基数上下限 |
--base --hpf-base |
实际社保缴费基数、公积金基数(不给就等于月薪) |
--special |
每月专项附加扣除合计 |
--start-month --month |
今年几月开始在这家单位领工资;重点看哪个月 |
--si-min --si-max --hpf-min --hpf-max |
改基数上下限 |
--pension-rate --medical-rate --medical-fixed --unemp-rate --hpf-rate |
改个人比例(百分数,8% 写 8) |
--er-pension --er-medical --er-unemp --er-injury --er-maternity |
改单位比例 |
--net --basis |
反算:想到手多少;按全年平均(avg,默认)还是第一个月(first) |
--bonus --year |
年终奖金额、年份 |
--json |
输出结构化结果 |
退出码:0 正常,2 输入有误(错误信息两行:「出错了:…」「下一步:…」,原样转告用户)。
使用流程
- 问清楚:税前月薪、在哪个城市。社保基数、公积金比例、专项附加扣除没说就用默认,并告诉用户用的是默认、以工资条为准。
- 跑脚本,把表格原样给出。先一句话说结论(例如「1 月到手 15182.09 元,全年平均每月 14657.30 元」)。
- 用户追问「公积金改成 5% 呢」「基数按最低呢」,改参数重跑,不要心算。
说话方式
- 对用户只说「税前」「到手」「五险一金」「公积金」「个税」「年终奖」这类说法,不念参数名。
- 城市口径是示例:每次都保留脚本结尾那句「以当地为准」。
边界
- 各地、各单位的舍入方式(到分还是到元)、缴费基数的核定月份不同,结果可能差几分到几元,以工资条为准。
- 社保基数按「年度」调整(多数城市 7 月起),脚本全年用同一套基数,跨年度调整月份的差额不单独算。
- 工资每月一样多是默认假设;每月工资不同、中途调薪,请分段跑或以个税 App 为准。
- 公积金超过 12% 的部分不能在个税前扣除,脚本不接受超过 12% 的比例。