第一阶段与第二阶段是两类不同的问题
第一阶段(生成阶段)要求开具带有二维码和一组固定字段的结构化电子发票。任何能够生成合规单据的开票系统都能满足这一要求,而且没有任何数据需要离开您的企业。第二阶段(集成阶段)则是另一类工作:您开具的每一张发票,系统都要与 ZATCA 平台通信,并由税务机关作出回应。
正是这一变化让许多团队措手不及。第一阶段的实施只是一种单据格式;第二阶段的实施则是一项对可用性要求极高的集成,涉及加密密钥、会过期的证书,以及横亘在收银员与打印发票之间的外部依赖。
清关与报告并非同一流程
标准税务发票,即企业对企业(B2B)的单据,走“清关”(clearance)流程。您须在将发票交给买方之前先提交给 ZATCA,只有在 ZATCA 完成清关并返回经签名的副本之后,它才是一张具有法律效力的税务发票。清关失败,就意味着您还没有发票。
简化税务发票,通常是企业对消费者(B2C)的 POS 小票,走“报告”(reporting)流程。您当即开具并交付小票,之后在公布的时限内向 ZATCA 报告。顾客从不需要等待网络。
实际后果是:您的 POS 与 B2B 开票需要不同的故障处理方式。门店收银台在网络中断时必须能够继续销售,事后再对账;而 B2B 发票在完成清关之前,不得视为已经开具。
加密环节,按先后顺序
集成在很大程度上就是依次取得一连串凭证。每一步都依赖上一步,每一步也都可能让部署停滞:
- 按设备或按开票单元生成密钥对和证书签名请求(CSR),并在 ZATCA 要求的确切字段中填入您的增值税登记信息。
- 凭 ZATCA 门户提供的一次性密码提交该 CSR,取得合规证书——这是最常失败的一步,因为一次性密码(OTP)的有效期很短。
- 合规性检查:针对您打算开具的每一类单据,提交发票、贷项通知单和借项通知单的样本,全部通过后才允许进入下一步。
- 生产证书,这才是真正为正式单据签名的证书——它有到期日,必须有人在到期之前很久就负责跟进。
发票本身必须包含什么
您提交的单据是 UBL 2.1 XML,而不是 PDF。其中包含使发票可被验证的各项要素:上一张发票的加密哈希值,它把您的单据串联成链,使被删除或插入的发票能够被发现;数字签名;以及一个二维码,以规定的二进制编码承载卖方名称、增值税号、时间戳、总额、增值税额和签名数据。
人类可读的输出依然重要——买方需要一份可以归档的单据——因此大多数实现会生成嵌入已签名 XML 的 PDF/A-3,使同一个文件既便于阅读,又可由机器验证。
值得在设计阶段就考虑的故障情形
凡是在生产环境中运行过这套流程的系统,都会遇到同样几种情形,而每一种都是设计决策,而不是日后再修的缺陷:
- ZATCA 无法访问或响应缓慢。简化发票应排队、稍后报告;标准发票则不能照常开具了事。请事先决定收银员届时会看到什么。
- 证书过期。续期是一项计划内的运维工作,而不是突发事件——生产证书一旦过期,开票将完全停止。
- 发票因某个字段被拒:您的 ERP 允许,ZATCA 却不接受——例如不常见的计量单位,或者折扣行、运费行的建模方式无法在 XML 映射中表达。
- 从备份恢复或手动修改数据库之后哈希链断裂,此后的每一张发票都会继承这一问题。
应向供应商提出的问题
声称合规毫无成本。有用的问题必须具体:贵方有哪些单据类型已在生产环境(而不是沙箱)中完成清关和报告?ZATCA 超时时,一笔销售会怎样处理?证书由谁续期,由什么机制提醒他们?如果我们日后更换系统,能否导出已签名的 XML 和哈希链?真正运行过第二阶段的供应商会给出具体答案,因为这些问题每一个都曾让他们付出过一整天的代价。
常见问题
ZATCA 第一阶段与第二阶段有什么区别?
第一阶段(生成阶段)要求开具带有二维码和一组固定字段的结构化电子发票,没有任何数据离开您的企业。第二阶段(集成阶段)是另一类工作:您开具的每一张发票,系统都要与 ZATCA 平台通信,并由税务机关作出回应。第一阶段只是一种单据格式;第二阶段则是一项对可用性要求极高的集成,涉及加密密钥、会过期的证书,以及横亘在收银员与打印发票之间的外部依赖。
第二阶段中的“清关”与“报告”有什么区别?
标准税务发票(B2B 单据)走清关流程:您须在将发票交给买方之前提交给 ZATCA,只有在 ZATCA 完成清关并返回经签名的副本之后,它才是一张具有法律效力的税务发票。简化税务发票(通常是 POS 小票)走报告流程:您当即开具并交付小票,之后在公布的时限内向 ZATCA 报告。顾客从不需要等待网络。
ZATCA 无法访问或响应缓慢时,收银台会怎样?
两种流程需要不同的故障处理方式,这是一项设计决策,而不是日后再修的缺陷。简化发票应排队、稍后报告,使门店收银台在网络中断时仍能继续销售,事后再对账。标准发票则不能照常开具了事,因此请事先决定收银员届时会看到什么。
第二阶段的发票究竟必须包含什么?
您提交的单据是 UBL 2.1 XML,而不是 PDF。其中包含上一张发票的加密哈希值(它把您的单据串联成链,使被删除或插入的发票能够被发现)、数字签名,以及一个以规定的二进制编码承载卖方名称、增值税号、时间戳、总额、增值税额和签名数据的二维码。由于买方仍需要一份可以归档的单据,大多数实现会生成嵌入已签名 XML 的 PDF/A-3。
关于第二阶段集成,应向供应商提出哪些问题?
声称合规毫无成本,所以问题要具体。贵方有哪些单据类型已在生产环境而非沙箱中完成清关和报告?ZATCA 超时时一笔销售会怎样处理?生产证书由谁续期,到期前由什么机制提醒他们?如果我们日后更换系统,能否导出已签名的 XML 和哈希链?
本指南为一般性信息,不构成税务、会计或法律建议。各国规定不同,且会随时间变化;在采取任何行动之前,请向您所在地的税务机关或合格顾问确认最新情况。
准备好在单一工作区上运营您的业务了吗?