You need to enable JavaScript to run this app. WooCommerce中为欧盟企业订单添加VAT REVERSE CHARGE税务行的实现问询
优惠活动
大模型
产品
解决方案
定价
更多

WooCommerce中为欧盟企业订单添加VAT REVERSE CHARGE税务行的实现问询

欧盟跨境B2B订单补充VAT REVERSE CHARGE合规行的落地实现方案

核心实现前提

EU VAT Number插件的默认逻辑是,校验通过的欧盟其他国家B2B订单会清空所有原有增值税行项,这一逻辑本身符合反向征收规则的税额计算要求,仅缺少合规要求的明确标注行。所有自定义逻辑只需在插件清空税行的操作完成后,追加对应0金额的标注行即可,不需要修改插件核心计算逻辑。

实现步骤

1. 逻辑判断规则(避免误加行项)

所有满足以下全部条件的订单,才需要追加税行:

  • 买家账单地址国家为欧盟成员国,但不是荷兰(荷兰本土订单现有流程无需调整)
  • 订单关联的企业VAT号已经通过插件校验,具备反向征收资格
  • 订单当前总税额为0(即插件已经完成原有税行的清除操作)
  • 订单此前未被添加过该标注行,避免重复生成

2. 钩子挂载选择

为了避开插件处理逻辑的覆盖冲突,需要选择优先级低于EU VAT Number插件的执行时机,同时覆盖普通订单和订阅订单的生成场景:

  • 普通结账生成新订单的场景:使用woocommerce_checkout_create_order钩子,设置执行优先级为20,保证在插件完成税行清除后再执行自定义逻辑
  • WooCommerce Subscriptions生成首次付款订单、后续自动续订订单的场景:使用woocommerce_subscriptions_created_order钩子,同样设置优先级为20,保证续订订单的流程一致性

3. 自定义代码实现

注意:以下代码需放置在当前子主题的functions.php文件,或独立的自定义功能插件文件中,不要直接修改WooCommerce、EU VAT Number、Subscriptions的核心文件,避免插件更新后代码丢失

// 为符合条件的欧盟跨境B2B订单添加VAT REVERSE CHARGE标注行
add_action( 'woocommerce_checkout_create_order', 'add_reverse_charge_tax_label', 20 );
add_action( 'woocommerce_subscriptions_created_order', 'add_reverse_charge_tax_label', 20 );
function add_reverse_charge_tax_label( $order ) {
    // 跳过荷兰本土订单
    if ( $order->get_billing_country() === 'NL' ) return;
    // 跳过非欧盟国家订单
    $eu_countries = WC()->countries->get_european_union_countries();
    if ( ! in_array( $order->get_billing_country(), $eu_countries ) ) return;
    // 跳过VAT校验不通过的订单
    if ( ! $order->get_meta( '_vat_number_is_valid' ) ) return;
    // 跳过已添加过标注行的订单,防止重复
    if ( $order->get_meta( '_added_reverse_charge_label' ) ) return;
    // 新增0税额的合规标注行
    $reverse_charge_tax = new WC_Order_Item_Tax();
    $reverse_charge_tax->set_label( 'VAT REVERSE CHARGE' );
    $reverse_charge_tax->set_rate( 0 );
    $reverse_charge_tax->set_tax_total( 0 );
    $reverse_charge_tax->set_shipping_tax_total( 0 );
    // 将行项绑定到订单
    $order->add_item( $reverse_charge_tax );
    // 打标记避免重复执行
    $order->update_meta_data( '_added_reverse_charge_label', true );
    // 重新计算订单总额,保证数值准确
    $order->calculate_totals();
}

上线验证要点

  • 分场景测试流程:
    • 荷兰本土企业下单:订单不出现VAT REVERSE CHARGE行,原有税务计算逻辑完全不受影响
    • 欧盟其他国家企业(如德国、法国)提交有效VAT号下单:订单详情、后续生成的发票上可正常显示标注为VAT REVERSE CHARGE的0金额税行,订单总金额与商品、服务的不含税金额完全一致
    • 欧盟其他国家企业提交无效VAT号下单:不出现VAT REVERSE CHARGE行,按标准规则计算对应VAT
    • 非欧盟地区企业下单:不出现该行,原有流程不受影响
  • 订阅功能验证:测试Subscriptions的首次付款、自动续订全流程,确认生成的所有订单都能自动带上合规标注行
  • 发票适配:如果站点使用第三方PDF发票插件,需确认0金额的税行不会被插件默认过滤,必要时在发票插件设置中开启“显示0金额税项”的选项

内容的提问来源于stack exchange,提问作者merlinb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.01 22:36:04