结构化电子发票格式:UBL、EN 16931、Peppol BIS 与 PDF 有什么区别

结构化电子发票是机器可读的 XML/JSON,欧盟用 EN 16931 定义字段含义,UBL/CII 是写法,Peppol BIS 是通用规范;PDF、扫描件不算。

一句话:结构化电子发票是机器能直接读的字段化文件,PDF 和扫描件只是给人看的图。前者每个字段都带标签,税局系统能自动校验、入账;后者在清算式国家根本”不算数”。下面把 EN 16931、UBL、Peppol BIS、各国本地格式之间的关系一次讲清。

结构化发票 vs PDF:差在”机器能不能读”

判断一份文件算不算”真正的电子发票”,标准只有一个:机器能不能不靠人就把每个字段读出来。

结构化电子发票是 XML 或 JSON 格式:发票号、开票日期、买卖双方税号、每一行商品、税率、税额,都被放进带标签的字段里。税局平台、ERP、会计软件拿到后可以自动校验、自动入账,全程无需手工录入。

PDF、扫描件、图片、甚至 Word,本质上是”给人看”的版面。机器要靠 OCR 去猜里面写了什么,既不准也不可信。所以德国联邦电子发票门户明确区分:带 PDF 外观但没有结构化数据的文件不是电子发票;阿联酋 FTA 规定只接受 XML,PDF 一律视为无效;比利时的强制制度也只承认结构化格式。这正是清算式国家”PDF 不算数”的根源——税局要的是能即时校验的数据,不是一张图。

很多华商最初容易栽在这里:把开好的发票导成 PDF 发邮件给客户,以为就是”电子发票”了。在后审式国家这或许还能凑合,但在意大利、墨西哥、沙特这类清算式国家,没有走平台、没有取得编号或签章的 PDF,法律上等于没开过这张发票。

要注意有一种”混合格式”容易混淆:法国的 Factur-X、德国的 ZUGFeRD 是把一份结构化 XML(基于 CII)嵌进 PDF/A-3 文件里,人看 PDF、机器读里面的 XML。它之所以合规,靠的是里面那段 XML,而不是 PDF 外壳。

EN 16931、UBL、Peppol BIS 分别是哪一层

很多人把这几个词混着用,其实它们处在不同层级,像”语言”和”方言”的关系。

EN 16931——语义层(该有什么)。 这是欧盟在 2014/55/EU 指令下、由标准化组织 CEN 制定、2017 年发布的欧洲电子发票标准。它只规定一张发票”应当包含哪些信息、每个字段什么含义”(用 BT-、BG- 编号的语义元素),但不规定这些字段具体怎么编码。可以理解为一份”字段清单与含义词典”。

UBL 2.1 与 CII——语法层(怎么写)。 EN 16931 落到文件上有两种官方语法:OASIS 的 UBL 2.1 和 UN/CEFACT 的 CII(D16B)。两者都能 1:1 映射到 EN 16931,互转不丢信息(据 EU eInvoicing、SEEBURGER、Vertex 等资料)。全球范围 UBL 更主流,CII 主要见于德法的 ZUGFeRD/Factur-X。

Peppol BIS Billing 3.0——使用规范层(怎么用)。 它本身是 EN 16931 的一个 CIUS(核心发票使用规范),采用 UBL 语法,在欧标约 120 条业务规则上再加约 60 条 Peppol 专属规则(如把买方参考、卖方税号从可选改为必填,并限制代码表取值)。

各国本地 CIUS——再收窄一层。 在 Peppol 或欧标之上,很多国家还会做自己的 CIUS,例如荷兰 NLCIUS、罗马尼亚 RO_CIUS、葡萄牙 CIUS-PT,根据本国法规进一步限定字段和取值。换句话说,“同一套欧标”在每个国家都有自己的地方版本。

各国本地格式举例:一套思路,各写各的”方言”

跳出欧洲看全球,结构化的大方向一致,但格式名称和细节五花八门:

  • 意大利 FatturaPA:XML 格式,对齐 EN 16931,所有发票须经 SdI 平台校验。
  • 波兰 FA(3):XML 格式,2026 年 2 月起大型纳税人经 KSeF 平台强制使用。
  • 墨西哥 CFDI 4.0:拉美成熟的 XML 清算格式,须经认证机构取号盖章后才生效。
  • 沙特 ZATCA(Fatoora):基于 UBL 2.1 加本地扩展的 XML,第二阶段须经 ZATCA 加密签章后才能交付。
  • 印度 GST e-Invoice:较少见地用 JSON(INV-1 schema)向发票登记门户(IRP)取得发票参考号 IRN 与二维码。

可见,欧盟内部多走”EN 16931 + UBL + Peppol”这条线,拉美和海湾国家各有本地 XML,印度则用 JSON——同样是”结构化”,但你的系统要按交易国的具体格式生成,不能拿一种通用文件到处用(据 EDICOM、Sovos、ZATCA、各国税局等资料)。

海外华商怎么不踩坑

落到实务,海外开店、做批发出口的华商不必、也不应该自己去钻研 UBL 标签或 JSON schema。关键就两点:

  1. 收银/ERP 系统要能按当地要求生成正确的结构化格式。 同样卖一单货,在意大利要出 FatturaPA、在波兰要出 FA(3)、在沙特要出 ZATCA UBL——这一步通常由你的收银系统或对接的服务商完成。
  2. 传输靠接入点或认证服务商,不必自建。 无论是 Peppol 接入点还是各国认证的电子服务商,都负责把结构化文件按合规通道送达税局或买方。

选型时最该问清楚的一句话是:这套系统能不能直接生成我所在国家法定的结构化格式,并完成校验和上报。如果不能,PDF 开得再漂亮也没用——在清算式国家,那张图税局根本不认。

还要提醒一点:格式标准会随版本更新而变,比如墨西哥从 CFDI 3.3 升到 4.0、波兰从 FA(2) 换到 FA(3),每次升级都意味着旧字段作废、系统要跟着改。自己拼 XML 的商户每逢改版就得重做,而交给已对接当地系统的服务商或收银软件,这些升级通常由对方在后台搞定。具体到每个国家用什么格式、走哪个平台,建议对照本站各国专文逐一核实。

常见问题

PDF 发票为什么在很多国家不算“真正的电子发票”?
因为 PDF 和扫描件只是给人看的图像或文本,机器无法稳定地逐字段读取。真正的电子发票是结构化的 XML 或 JSON,每个字段(发票号、税额、行项目)都有标签,税局系统能自动校验。德国联邦电子发票门户、阿联酋 FTA、比利时税局都明确只认结构化格式。
EN 16931 和 UBL 是一回事吗?
不是。EN 16931 是欧盟 2014/55/EU 指令下由 CEN 制定的语义标准,只规定发票“该有哪些字段、什么含义”,不规定怎么编码;UBL 2.1 和 UN/CEFACT CII 才是把这些字段写成 XML 的两种语法。据 EU eInvoicing、SEEBURGER、Vertex 等资料,两种语法都能 1:1 映射到 EN 16931。
Peppol BIS Billing 3.0 和各国的 CIUS 是什么关系?
Peppol BIS Billing 3.0 本身就是 EN 16931 的一个 CIUS(核心发票使用规范),采用 UBL 语法,并在欧标约 120 条规则上再加约 60 条 Peppol 规则。各国还会做自己的 CIUS,如荷兰 NLCIUS、罗马尼亚 RO_CIUS、葡萄牙 CIUS-PT,在欧标基础上进一步收窄。据 OpenPeppol、B2Brouter 等说明。
各国的结构化格式都一样吗?
不一样。欧盟多走 EN 16931 加 UBL/Peppol,但本地格式名称各异:意大利 FatturaPA(XML)、波兰 FA(3)(XML);拉美的墨西哥 CFDI、海湾的沙特 ZATCA 都用 XML(沙特基于 UBL 2.1);印度则少见地用 JSON 取号(IRN)。据 EDICOM、Sovos、ZATCA 等资料。
我的收银系统要自己写 XML 吗?
通常不用。绝大多数商户通过已对接当地系统的收银/ERP,或经认证的接入点/服务商,把数据转成当地法定的结构化格式并传输。你要确认的是这套系统“能不能生成当地要求的格式”,而不是自己研究 UBL 标签。