惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

aimingoo的专栏
aimingoo的专栏
S
Securelist
博客园 - Franky
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
IT之家
IT之家
GbyAI
GbyAI
Microsoft Azure Blog
Microsoft Azure Blog
The Cloudflare Blog
云风的 BLOG
云风的 BLOG
N
News and Events Feed by Topic
AI
AI
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Schneier on Security
Schneier on Security
Attack and Defense Labs
Attack and Defense Labs
Vercel News
Vercel News
腾讯CDC
Google DeepMind News
Google DeepMind News
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
M
MIT News - Artificial intelligence
WordPress大学
WordPress大学
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
N
Netflix TechBlog - Medium
量子位
S
Schneier on Security
Hacker News: Ask HN
Hacker News: Ask HN
Cyberwarzone
Cyberwarzone
S
Security Affairs
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
N
News and Events Feed by Topic
T
Tenable Blog
PCI Perspectives
PCI Perspectives
MyScale Blog
MyScale Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Cyber Attacks, Cyber Crime and Cyber Security
W
WeLiveSecurity
N
News | PayPal Newsroom
P
Proofpoint News Feed
O
OpenAI News
C
CERT Recently Published Vulnerability Notes
B
Blog
Cisco Talos Blog
Cisco Talos Blog
Microsoft Security Blog
Microsoft Security Blog
V
Visual Studio Blog
MongoDB | Blog
MongoDB | Blog
大猫的无限游戏
大猫的无限游戏
A
Arctic Wolf
Y
Y Combinator Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Spread Privacy
Spread Privacy

博客园 - buguge

从 `int` 到 `Duration`:一个缓存 API 的三次演进教会我的事 最差实践(bad-practice):开发者在方法里直接实例化线程池对象,然后...(应用gg了) 【HttpClient最差实践(bad-practice)】开发者在 http 工具方法中直接实例化 HttpClient,然后…… Crypto、Cipher与Password:Java加密开发的三个核心概念 知识VS技能:如何优雅判空? 20260604SR超时问题排查 推敲见文章:从 `try..catch` 看异常日志打印的正确姿势 #解决问题要彻底# 慢SQL治理完成后,如何防止同类问题“死灰复燃”? 从合同甲方是荒谬的“JD”谈起:软件开发不应遗忘的“常识” 别留小尾巴/尽快剪掉小尾巴:从一次“ABA”字段重命名,谈谈“解决问题要彻底” 常见的OOM错误 ( OutOfMemoryError全类型详解) 开发者暴露了一个无需授权访问的裸接口,我问:如果有人暴力请求怎么办? 【SQL性能优化篇】有了!治理慢SQL“WHERE create_time ORDER BY id”的良药---规避“Using filesort”性能杀手 高效查询商户日终余额:一个SQL的优化实践 Hutool 的 `TimedCache` 到期会自动清理吗? ——————hutool cache的"惰性清理"和"定期清理" Fastjson枚举反序列化:当字符串不是枚举常量名时,会发生什么? fastjson-EnumDeserializer类及源码分析 随笔20260309:我们都是围城里的人 `UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only` 异常解析 认识2个单词:goal/target —————— 为什么Maven是 "goal" 而不是 "target"? 聚合系统设计:策略模式(Strategy Pattern)在银行通道对接场景中的应用 这样构建对象,太帅了!—— 阶梯式Builder模式与代码整洁之道 注意!字段数据类型不匹配,这个sql会很慢 还在用ArrayList?用HashSet吧!--性能对比 分页查询还在用create_time去做降序? 从 synchronized 到 ConcurrentHashMap:一个小小的并发控制策略升级优化,证明我还是初级程序员 面试题沟通整理 【研发笔记20260120】值得记录:靠谱程序员的回聘 研发笔记:如何消除长字符串的秘钥数据对RPC负荷、日志量、系统安全所带来的伤害? 未给entity的主属性赋值,Mybatisplus却抛出了type mismatch异常。——————分享一下Mybatisplus主键填充机制 在java中实现c#的int.TryParse方法 Apollo场景建议配置指南:充分发挥分布式配置中心优势
灵活用工平台-连续劳务所得税-计算器-工具类,拿走不谢
buguge · 2025-11-12 · via 博客园 - buguge

本文关键词:个人所得(个人收入);劳务报酬所得;互联网平台劳务报酬所得;个人所得税(本文简称“个税”);
本文主要讲新规下互联网平台从业人员的劳务报酬所得的计算方法。

灵活用工平台-连续劳务所得税计算器-工具类

0x01 新法令及对灵工行业的影响

国务院810号令及配套的国税总局15号、16号公告,共同构建了互联网平台税收治理的新框架,对灵活用工行业影响深远。这套组合拳旨在引导灵活用工行业从“野蛮生长”走向“合规发展”,将带来深刻的行业洗牌与模式创新。

下面这个表格梳理了这三个核心文件的关键要点。

文件名称 核心定位 对灵活用工领域的关键影响
国务院第810号令
《互联网平台企业涉税信息报送规定》
顶层设计,奠定基础 要求平台企业按季度报送从业人员的身份与收入信息,奠定了“数据透明”的监管基石。
国税总局公告2025年第15号
(报送涉税信息事项)
明确范围,划定边界 明确了网络商品销售、网络直播、灵活用工平台等八类平台企业需要报送信息,并细化报送内容。
国税总局公告2025年第16号
(扣缴申报、代办申报事项)
实操细则,重塑规则 优化了个人所得税预扣预缴方式,并建立了增值税代办申报机制,直接减轻了从业者税负。

⚖️ 平台企业的新责任与合规挑战

这三个文件叠加,意味着平台企业的责任发生了根本性转变,从信息中介转变为税务治理的关键节点

  • 信息报送义务:平台企业必须按季度向税务机关报送其平台内经营者和从业人员的身份信息(如姓名、身份证号)和收入信息(如收入金额、时间)。未按规定报送可能面临最高50万元的罚款甚至停业整顿的处罚。
  • 税务代办与扣缴义务:平台需要为从业人员办理个人所得税的累计预扣预缴申报,并可为月销售额10万元以下的从业者代办增值税免征申报
  • 合规成本与门槛提升:平台需投入资源进行系统升级以满足数据报送要求,并需采取人脸识别等技术进行实名核验,合规成本显著增加。同时,政策也抬高了行业准入门槛,要求平台具备相应的技术能力和风控体系。

💰 对灵活就业者的实际税负影响

新规的核心变化之一,是优化了灵活用工人员个人所得税的预扣预缴方式,这对不同收入水平的从业者影响各异。

  • 中低收入者税负显著下降:新规采用 “累计预扣法” 计算个税,这与工薪阶族的计税逻辑类似。具体公式参见后文。这种方式考虑了月度收入波动,避免了旧法下单笔收入预缴税负过高的问题,尤其惠及中低收入群体。
  • 高收入者税负可能增加,监管加强:对于高收入自由职业者(如头部主播),由于劳务报酬所得需适用3%-45% 的累进税率,且此前部分地区可能适用的低税率核定征收方式被明确叫停,其税负可能会增加。同时,税务机关也会加强对高收入人群的税收监管。

0x02 如何计算你的劳务所得税(本文也简称为“个税”)——“累计预扣法”公式

国家税务总局2025年第16号公告 规定 互联网平台从业人员 劳务报酬所得税采用累计预扣法进行预缴计算,公式为:

本期应预扣预缴税额 =(累计收入 - 累计免税收入 - 累计费用 - 累计减除费用 - 累计其他扣除)× 预扣率 - 速算扣除数 - 累计减免税额 - 累计已预扣预缴税额

* 灵活用工平台可简化为计算公式:

本期应预扣预缴税额 = (累计收入金额×80% - 5000×连续收入月份) × 适用税率 - 适用速算扣除数 - 累计已缴税金额

理解这个公式,关键就在于“累计应纳税所得额①”和最终的“应纳税额③”。

  1. 计算累计应纳税所得额①
    这是计算税款的基础。公式表现为从总收入中减去法律允许扣除的部分:
    累计应纳税所得额 = 累计收入金额×80% - 5000×连续收入月份

  2. 计算累计应纳税额②
    确定①后,就可以根据税率表计算最终需要缴纳的税款。公式为:
    累计应纳税额 = ① × 适用税率 - 速算扣除数

  3. 连续劳务模式下计算本次应纳税额
    应纳税额 = ② - 累计已预缴税额

注:累计应纳税所得额 又称 税基。
image

上面说到的“税率表”指的是个人综合所得税率表。因为对于通过互联网平台提供服务的收入,属于劳务报酬所得,劳务所得又属于个人综合所得。

个人综合所得税率表适用‌3%到45%的超额累进税率‌‌,具体税率表如下:

级数 全年应纳税所得额 税率 (%) 速算扣除数
1 不超过36,000元的部分 3% 0
2 超过36,000元至144,000元的部分 10% 2,520
3 超过144,000元至300,000元的部分 20% 16,920
4 超过300,000元至420,000元的部分 25% 31,920
5 超过420,000元至660,000元的部分 30% 52,920
6 超过660,000元至960,000元的部分 35% 85,920
7 超过960,000元的部分 45% 181,920

示例说明

假设某主播1-3月每月收入1万元:

  • 累计收入 = 10,000 × 3 = 30,000元;
  • 累计费用 = 30,000 × 20% = 6,000元;
  • 累计减除费用 = 5,000 × 3 = 15,000元;
  • 应纳税所得额 = 30,000 - 6,000 - 15,000 = 9,000元;
  • 按3%税率计算,该主播1-3月应预扣税额 = 9,000 × 3% = 270元‌。

0x03 “累计预扣法”劳务个税计算 - 工具类开发

数据词典命名

  • 所得,即个人收入:income

  • 所得税,即个人所得税,简称个税/税款:incomeTax, 也可简写为 tax

“应纳税所得额”与“应纳税额”的区别:简单来说,​“应纳税所得额”是计算税款的基础数额,而“应纳税额”是最终需要缴纳的税款金额。前者属于收入额,后者属于税款。

  • “应纳税所得额”可定义为 taxableIncome

  • “应纳税额”:可定义为 tax

  • 扣除金额:deduct

灵工平台劳务所得税/个税 --计算器Util类

import com.emax.trans.FeeRate;
import com.emax.trans.Money;
import lombok.*;

import static com.yft.util.BigDecimalUtil.atLeastZero;

/**
 * 灵工平台 个人劳务所得税计算工具类 - 按照 累计预扣法 计算 个人劳务报酬所得 的 预扣预缴税款
 *
 * @author wubingyu
 * @date 2025/7/23
 */
@Slf4j
public class UserIncomeTaxCalculator {

    /**
     * 累计扣除基数:5000元
     */
    public static final Money DEDUCT_5000_YUAN = Money.ofYuan(5000);
    /**
     * 费用减除比例:20%
     */
    public static final FeeRate DEDUCT_PERCENTAGE_20 = FeeRate.PERCENTAGE.of(20);

    /**
     * 初始化 - 个税阶梯配置
     */
    private static final List<LadderConfig> ladderConfigs = Arrays.asList(
            new LadderConfig(0, 36_000, 3, 0),
            new LadderConfig(36_000, 144_000, 10, 2_520),
            new LadderConfig(144_000, 300_000, 20, 16_920),
            new LadderConfig(300_000, 420_000, 25, 31_920),
            new LadderConfig(420_000, 660_000, 30, 52_920),
            new LadderConfig(660_000, 960_000, 35, 85_920),
            new LadderConfig(960_000, 999_999_999, 45, 181_920) // 该区间的最大金额,使用 一个超级大的数字
    );

    /**
     * 根据 国家税务总局2025年第16号公告关于互联网平台从业人员劳务报酬所得税预扣预缴的公式,
     * 计算公式简化为:(累计收入金额 *80% -5000*连续交易月份) * 适用税率 - 适用速算扣除数 - 累计已缴税金额
     *
     * @param totalIncome      累计收入金额
     * @param continuousMonths 连续交易月份
     * @param totalTaxPaid     累计已缴税金额
     * @return 个税(应纳税额)
     */
    public static UserTaxCalculateRes calculateUserTax(Money totalIncome, int continuousMonths, Money totalTaxPaid) {
        /**累计成本(累计费用)= 累计收入 *20% */
        Money totalIncomeCost = totalIncome.multiplyBy(DEDUCT_PERCENTAGE_20);
        /**累计减除费用 = 5000*连续交易月份 */
        Money totalIncomeDeduct = Money.ofFen(DEDUCT_5000_YUAN.getFen() * continuousMonths);
        // 1.计算 累计应纳税所得额 = (累计结算金额 * 80%) - (连续月份*5000)   = 累计收入 - 累计成本 - 累计减除费用
        Money totalTaxableIncome = totalIncome.subtract(totalIncomeCost).subtract(totalIncomeDeduct);
        if (totalTaxableIncome.compareTo(Money.ZERO) <= 0) {
            return new UserTaxCalculateRes(Money.ZERO, totalIncomeCost, totalIncomeDeduct, Money.ZERO, Money.ZERO, ladderConfigs.get(0));
        }
        // 2.获取命中档 (3%-45%阶梯)
        LadderConfig ladderConfig = matchLadderConfig(totalTaxableIncome);
        // 3.计算 累计应纳税额 : 应纳税收入 * 阶梯费率 - 速算扣除数
        Money totalIncomeTax = totalTaxableIncome
                .multiplyBy(ladderConfig.taxRate)
                .subtract(ladderConfig.deductAmount);
        Assert.isTrue( totalIncomeTax.compareTo(Money.ZERO) >= 0, "计算出来的累计应纳税额小于0,这不应该发生!" );
        // 4.计算本次应纳税额(扣除已预缴税额)
        Money tax = atLeastZero(totalIncomeTax.subtract(totalTaxPaid));
        return new UserTaxCalculateRes(tax, ladderConfig, totalIncomeCost, totalIncomeDeduct, totalTaxableIncome, totalIncomeTax);
    }

    private static LadderConfig matchLadderConfig(Money amount) {
        for (LadderConfig config : ladderConfigs) {
            if (amount.compareTo(config.getEndAmt()) <= 0) {
                return config;
            }
        }
        throw new RuntimeException("阶梯费率配置有误!");
    }


    @Getter
    public static class LadderConfig {
        private final Money beginAmt;
        private final Money endAmt;
        private final FeeRate taxRate;
        private final Money deductAmount;

        public LadderConfig(double beginAmt, double endAmt, int ratePercent, double deductAmount) {
            this.beginAmt = Money.ofYuan(beginAmt);
            this.endAmt = Money.ofYuan(endAmt);
            this.taxRate = FeeRate.PERCENTAGE.of(ratePercent);
            this.deductAmount = Money.ofYuan(deductAmount);
        }
    }

    @Getter
    @AllArgsConstructor
    public static class UserTaxCalculateRes {
        /** 本次应缴个税 = {@link #totalIncomeTax} - 累计已缴税金额 */
        private Money tax;
        /** 适用个税税率 */
        private LadderConfig taxConfig;
        /** 累计成本(累计费用)= 累计收入 * 20% */
        private Money totalIncomeCost;
        /** 累计减除费用 = 5000 * 连续交易月份 */
        private Money totalIncomeDeduct;
        /** 应纳税额or累计应纳税所得额 = 累计收入 - {@link #totalIncomeCost} - {@link #totalIncomeDeduct} */
        private Money totalTaxableIncome;
        /** 累计应纳税额----- 在减去累计已预缴税额之后是{@link #tax} */
        private Money totalIncomeTax;
    }
}

ref: 劳务报酬大变天!互联网平台开启累计预扣新时代