Nordlet

← 博客

EN 16931 合规性检查:Peppol、Factur-X 与 ZUGFeRD 官方规则对照

我们使用官方的 EN 16931 验证规则对 Nordlet 生成的发票文件进行了检测。Peppol 和罗马尼亚的文件顺利通过,而 Factur-X 文件违反了两项规则,本文将逐一指出。

Nordlet Team · · 1 分钟阅读

EN 16931 是欧洲电子发票内容的统一标准。它定义了发票应包含的业务术语(如销售方、采购方、明细行、增值税明细、总计金额)以及这些术语必须满足的业务规则,例如增值税明细之和必须等于发票总额。该标准可以使用两种 XML 格式编写:UBL 2.1 和 UN/CEFACT 跨行业发票(CII)。

大多数欧洲电子发票格式都是基于 EN 16931 构建的:

  • Peppol BIS Billing 3.0 是采用 UBL 格式的 EN 16931,并附加了 Peppol 的特定规则。
  • 罗马尼亚 e-Factura (CIUS-RO) 是采用 UBL 格式的 EN 16931,并附加了罗马尼亚的特定规则。
  • Factur-X(法国)和 ZUGFeRD 2.3(德国)采用 CII 格式承载 EN 16931。在 Nordlet 使用的“EN 16931”配置档案(profile)中,这两种格式采用相同的 XML。

如果某张发票违反了 EN 16931 的规则,它也会同时违反基于该标准构建的所有格式。

检测方法

欧盟委员会(European Commission)参照了电子发票欧洲标准化委员会技术委员会(CEN/TC 434)在 GitHub 上发布的验证规则。我们针对 UBL 和 CII 使用了截至 2026 年 10 月 12 日的最新版本 1.3.17。这些规则采用 Schematron 编写并编译为 XSLT,我们使用 Saxon-HE 12.5 XSLT 引擎运行了这些规则。

发票文件由 Nordlet 的当前代码根据样本数据生成。销售方为立陶宛公司;采购方包括一家立陶宛公司、一家德国公司,以及在 Peppol 导出场景下的一家美国公司。样本发票包含一个 21% 税率的明细行和一个带有免税说明的 0% 税率明细行。

检测结果

Nordlet 生成的内容 检测文件数 结果
Peppol BIS Billing 3.0 (UBL) 7: 国内发票、贷记单(credit note)、欧盟内销售、出口、反向征收(reverse charge)、销售方未进行增值税登记、带折扣的美元发票 全部通过:0 个错误,0 个警告
罗马尼亚 e-Factura (UBL, CIUS-RO) 4: 国内发票、贷记单、欧盟内销售、带折扣的美元发票 全部通过
Factur-X / ZUGFeRD (CII, EN 16931 配置档案) 4: 国内发票、贷记单、欧盟内销售、带折扣的美元发票 全部 4 个文件未通过,各含 1 个错误

Factur-X 文件违反的两项规则

BR-Z-10:零税率明细行不得包含免税原因

EN 16931 针对 0% 税率(“Z”,零税率)和免税供应(“E”,免税)规定了不同的增值税分类。只有免税供应才需要说明原因。规则 BR-Z-10 规定,税率分类为“Z”的增值税明细不得包含免税原因代码(BT-121)或免税原因文本(BT-120)。

Factur-X 生成器在每个零税率明细中都写入了“Taux zéro”原因文本,导致四个文件中有三个验证失败。它同时忽略了明细行上输入的免税备注。Peppol 生成器对同一明细行的处理则符合规范:当 0% 的明细行带有免税备注时,它会将该行记为免税(“E”),并将该备注作为原因。

BR-IC-12:欧盟内销售必须指明交付国家/地区

规则 BR-IC-12 规定,当增值税明细分类为“K”(欧盟内供应)时,收货国家/地区代码(BT-80)不得为空。交付国家/地区用于证明货物已离开销售方所在国家。

Factur-X 生成器未写入收货国家/地区,因此欧盟内销售文件验证失败。Peppol 生成器在此类销售中会将采购方所在国家写入为交付国家。

本次检测未涵盖的范围

  • XML 模式(Schema)。 我们仅运行了业务规则,未进行 UBL 和 CII 模式(XSD)检查。
  • Nordlet 未写入的字段。 文件中不存在的术语规则未参与运行。例如单据级费用、预付金额、计费期间以及采购订单引用。
  • EN 16931 之外的国家/地区规则。 我们未检查法国电子发票改革规则或德国 XRechnung 规则。Peppol 的特定规则由 Nordlet 的另一个脚本使用 OpenPeppol 规则集进行检查。
  • Factur-X 的 PDF 部分。 Factur-X 发票是一个附加了 XML 的 PDF/A-3 文件。本次检测仅针对 XML 部分。