商业发票与增值税发票生成器

在它之前的生成器,会高高兴兴地给你出一份漏了客户增值税号、忘了写反向征收措辞的 PDF。这一个在你填写的同时核对每一项必载事项 —— 与税务机关或报关行用的是同一套规则 —— 通过之后才让你打印。生成的发票本身是英文的:它要交给客户、海关和承运商。

🔒 你的发票不会离开浏览器。草稿保存在本地。

卖方
买方
发票信息
明细行
增值税处理
交货条款
付款
备注

三种单据,一套纪律

商业发票随货走:海关读它来归类(HS 编码)、估价,并按原产地算关税。增值税发票对税法负责 —— 在欧盟,增值税指令第 226 条列出了它必须载明的事项,缺了客户增值税号、或者零税率却不写依据,就会被质询。形式发票看起来像发票,但它不是:本生成器会醒目地标出来,因为把形式发票当增值税发票入账,是迟早会被查出来的记账事故。

这里的算术不可能对不上

检查器 —— 包括我们自己的发票字段检查器 —— 核对净额、增值税和总额是否一致,引用电子发票平台也会引用的 EN 16931 官方规则(BR-CO-15、BR-CO-17)。生成器可以更进一步:这里的合计是算出来的,并且按指令的要求按税率分组,所以那几条规则从构造上就不可能不通过。要检查的反而是计算器不可能知道的东西:法律列出的必载事项是否真的在纸面上。

法国:2026 年 9 月 1 日起施行 —— 以及纸质发票为什么仍然要紧

法国的电子发票强制令已于 2026 年 9 月 1 日生效。在法国登记增值税的企业现在都必须能接收电子发票,大型与中型企业还必须开具电子发票;较小的企业在 2027 年 9 月跟进。强制令针对的是通过登记平台交换的结构化发票 —— 但数据就是本页核对的同一批第 226 条必载事项。发票在这里完整了,结构化版本需要的东西也就齐了;接下来可以查它的 Peppol 参与方 ID 和 EN 16931 代码表。

本工具刻意不做什么

不带增值税税率表(税率会变;你知道自己的税率,我们负责算术),不做货币换算,不做电子签名、不发送、不记账,也不输出 XML —— 结构化电子发票是另一种产物,有它自己的校验器。这是格式与完整性检查,不是税务建议:各国法律还会增加指令没有列出的必载事项。

本工具运行的全部检查(25 条规则,另加转发的规则族)

第 226 条必载事项(与发票字段检查器共用)

INV-001 没有发票号码

发票要带一个连续编号,用来唯一识别这张发票。税务机关第一眼找的就是它,之后每一次更正也都要回指它。

修复: 从你自己那条不断号的序列里取号填上。

EUR-Lex 上的欧盟增值税指令 ↗

INV-002 没有开票日期

开票日期本身就是一项法定必载事项,与供货日期是两回事。两者不同时,两个都要写。

EUR-Lex 上的欧盟增值税指令 ↗

INV-003 没有供应方增值税识别号

发票上必须写明供应方据以提供这笔供应的增值税识别号。没有它,客户就不能抵扣这笔增值税 —— 一个格式问题,变成了别人的现金问题。

EUR-Lex 上的欧盟增值税指令 ↗

INV-004 欧盟内 B2B 供应缺客户增值税号

欧盟内部供应由客户承担纳税义务时,客户的增值税识别号是必载事项 —— 它正是反向征税之所以适用的证据。

修复: 向客户要来增值税号写上,开票前先在 VIES 里核验。

EUR-Lex 上的欧盟增值税指令 ↗

INV-005 没有供应方名称和地址

供应方的全称和地址是法定必载事项。

EUR-Lex 上的欧盟增值税指令 ↗

INV-006 没有客户名称和地址

客户的全称和地址是法定必载事项。

EUR-Lex 上的欧盟增值税指令 ↗

INV-007 没有商品或服务的描述

必须写明所供商品的数量与性质,或所提供服务的范围与性质。「Services rendered」(已提供服务)正是审计时最经典的不合格写法。

EUR-Lex 上的欧盟增值税指令 ↗

INV-008 没有供货日期

供货完成的日期与开票日期不同时必须写明。在供货之后的另一个期间才开票,恰恰是它要紧的情形。

EUR-Lex 上的欧盟增值税指令 ↗

INV-009 没有应税金额

按税率分列的应税金额、不含增值税的单价,以及没有计入单价的折扣,都是必载事项。只有一个含税总额满足不了这一条。

EUR-Lex 上的欧盟增值税指令 ↗

INV-010 没有增值税税率

必须写明所适用的增值税税率,适用多个税率时逐一列出。

EUR-Lex 上的欧盟增值税指令 ↗

INV-011 没有增值税税额

除特别计税方案排除的情形外,必须写明应纳增值税税额。客户抵扣的就是这个数,没有它的发票无法抵扣。

EUR-Lex 上的欧盟增值税指令 ↗

INV-012 零税率或免税却没说明依据

不收增值税时,发票必须写明依据 —— 引用适用的条款,或写上「Reverse charge」这类字样。零金额旁边什么都不写,是欧盟内发票被问询的最常见原因。

修复: 补上免税条款的引用;由客户自行计缴税款的,写上「Reverse charge」字样。

EUR-Lex 上的欧盟增值税指令 ↗

INV-013 向另一欧盟成员国的客户收了增值税

向另一成员国已登记增值税的客户做 B2B 供应时,税款通常由客户计缴,发票上不带增值税。这里收了税,要么是出错,要么适用了某条特殊规则 —— 而发票没有说是哪一种。

修复: 要么适用反向征税并写明,要么写明是哪条规则让这笔供应在你所在地应税。

来源: yaktool 的工程解读,不是法条原文:这里列出的必载事项依据的是欧盟增值税指令(2006/112/EC)第 226 条的通行转述;各国法律另有本工具不覆盖的要求。请以你自己的税务顾问意见为准。

INV-014 缺少币种

没有币种的金额不算金额。EN 16931 正是为此把发票币种列为必填的业务术语。

EUR-Lex 上的欧盟增值税指令 ↗

INV-015 供应方或客户的增值税号格式不对

号码不符合其国家前缀对应的长度与字符模式。格式正确的号码仍可能没有登记,但格式错误的号码一定是错的 —— 而这项检查不花任何成本。

修复: 改正号码,发票发出前在 VIES 里核验。

来源: yaktool 的工程解读,不是法条原文:这里列出的必载事项依据的是欧盟增值税指令(2006/112/EC)第 226 条的通行转述;各国法律另有本工具不覆盖的要求。请以你自己的税务顾问意见为准。

INV-016 增值税号没通过所属国家的校验位

格式没错,但号码里内置的校验位与其余部分对不上 —— 德国、荷兰、意大利等好几个成员国的号码里带校验位。这比格式不符的信号更强:几乎可以肯定是打错了,而不只是写法怪。

修复: 照客户自己的文件重新录入号码,再到 VIES 里核验。

来源: yaktool 的工程解读,不是法条原文:这里列出的必载事项依据的是欧盟增值税指令(2006/112/EC)第 226 条的通行转述;各国法律另有本工具不覆盖的要求。请以你自己的税务顾问意见为准。

海关与生成器检查

CINV-002 有行没有 HS 编码

海关按税则号给货物归类。发票上没有这个号,报关行或承运商就替你归类 —— 更慢,也未必对你有利。美国进口法要求描述足以归类;把编号本身写在行上是通行做法。

修复: 给每一行补上 6 位 HS 编码(或目的国专用的 8–10 位编码)。

19 CFR § 141.86(康奈尔 LII)↗

CINV-003 有行没有原产国

原产地决定关税税率,以及能否享受贸易协定的待遇。海关发票应当逐项写明原产国。

修复: 补上每项货物制造地(不是发货地)的 ISO 国家代码。

19 CFR § 141.86(康奈尔 LII)↗

CINV-004 没有 Incoterms 术语

没有交货条款,发票就没说清运费、保险和关税由谁付。承运商和报关行会来问,海关完税价格的计算也取决于它。

修复: 补上 Incoterms 2020 术语和指定地点,例如「DAP Rotterdam」。

来源: yaktool 对承运商与海关实务的工程解读,不是法条引文。最接近的公开法规是 19 CFR § 141.86(美国进口);欧盟海关法没有规定商业发票的格式。

CINV-005 没有净重

发票上的重量会与装箱单、运输单据交叉核对。缺重量是清关时被人工询问的常见原因。

来源: yaktool 对承运商与海关实务的工程解读,不是法条引文。最接近的公开法规是 19 CFR § 141.86(美国进口);欧盟海关法没有规定商业发票的格式。

CINV-006 欧盟一方没有 EORI 号

货物经欧盟海关清关,申报人必须登记了 EORI 号。一张要过欧盟边境的发票上没有它,就意味着之后会有人被要求补上 —— 而货在那里等着。

修复: 补上负责清关那一方的 EORI 号。

来源: yaktool 对承运商与海关实务的工程解读,不是法条引文。最接近的公开法规是 19 CFR § 141.86(美国进口);欧盟海关法没有规定商业发票的格式。

CINV-007 自动加上形式发票标记

形式发票不是增值税发票:不能用来抵扣增值税,也不产生付款义务。生成的单据上带着醒目的「PROFORMA」标记,免得有人把它当成增值税发票入账。

来源: yaktool 的工程说明:标记本身是通行做法;增值税上的后果,来自这张发票不是按第 226 条开具的。

CINV-008 行的数量或单价不是可用的数字

数量必须是正数,单价必须是非负数。乘不出金额的行开不了票。

修复: 改正这一行的数量 / 单价,或者删掉这一行。

来源: yaktool 的工程规则:算术前提,不是法定必载事项。

CINV-009 国家代码不是已分配的 ISO 3166-1 代码

国家字段对不上任何已分配的 ISO 3166-1 二字母代码。下游系统(海关、承运商、税务)会拒收或者投错。

修复: 用已分配的二字母代码 —— 不确定的话,到国家代码工具里查一下。

来源: yaktool 的工程规则;底层依据是 ISO 3166 登记表。

CINV-010 增值税税率超出范围

增值税税率必须在 0 到 100 之间。

修复: 按百分数填写税率,例如 19% 就填 19。

来源: yaktool 的工程规则:算术前提。

增值税号、EORI 号、IBAN、RF 付款参考号、HS 编码和 Incoterms,都由各自专用工具的同一套引擎检查,发现沿用那些工具的规则编号 —— 所以这里的 HS- 或 IBAN- 发现,可以到它自己的页面上深入查看。

关于这些规则。 每一条都有编号、严重级别和通俗解释。每个来源链接都已登记在案,并对线上页面实际复验过,而不是凭印象写上去的. 规则如何编写、测试与保持更新 →