三套版式,以及为什么没有中国版
引擎认识三套版式:波兰的 faktura、德国的 Rechnung,以及一套通用的欧盟版式。中文版预选的是最后这一套。
这不是遗漏,而是一句实话。这里的国别版式不是翻译:它是当地法律规定的必填字段、各种限额、强制注记和排版惯例,一条一条核过的。波兰和德国的版式存在,是因为它们就是这么做出来的。挂一个只是把通用版式改了个标签的“中国版”,比没有更糟:你会以为自己手上有一张合规的单据。
更要紧的是,这里根本不需要中国版。你卖到欧盟,发票要满足的是目的国的规则,不是你所在国的。通用欧盟版式承载的是增值税指令第 226 条对欧盟境内任何一张发票的要求;卖往波兰或德国时,就直接选那两套。批量使用之前,先让会计过一遍。
打印之前它会检查什么
缺一个必填项不是排版问题:一份没有编号、没有供货日期或没有供货方增值税号的发票,就不是有效的发票。生成器会拒绝打印,并指出缺的是哪一项。
它还会拦住两个很容易无意造出来的自相矛盾:勾了反向征收却仍在明细行上收增值税,以及勾了小规模免税却填了非零税率。这两种情况下,单据都会同时说着两句相反的话。
警告和错误是分开的,警告从不阻止打印。生成器不了解你这笔交易的具体情形,所以凡是规则取决于情形的地方——波兰的分账付款门槛、德国的简易发票限额——它只提醒你,把决定权留给你。
PDF 不等于电子发票
在把输出用于正式业务之前,这一段值得读。
波兰在推行 KSeF 国家电子发票系统,随着强制义务分阶段落地,B2B 发票纳入其中。德国有自己的电子发票规则:接收结构化发票已经是强制的,开具则在分阶段推行。这两种情况下,一份打印件或 PDF 都不等同于一张结构化电子发票,不管它看上去多么正确。
这个生成器今天适合做什么:形式发票、报价、B2C 销售、在录入别处之前先核对的草稿,以及任何对方期待的就是一份纸质或 PDF 单据的场合。当你勾上 B2B 时,生成器会直接把这件事告诉你,而不是让你从一个拒收发票的客户那里知道。
数字在哪里取整
所有金额都按整数分计算,从不用小数——合计与各行之和相差一分,就是这么来的。
顺序是固定的,而且是刻意的:先逐行计算并取整,再把各行相加。反过来对合计取整,在多数成员国也是被接受的,给出的答案会差上一两分。要紧的是始终如一地用同一种,所以这个选择写进了引擎,而不是留给运气。
这一个为什么要刷新页面
本站其他计算器都在你的浏览器里运行,边输入边更新。这一个要提交表单再返回一个页面,更慢,值得解释一下。
单据引擎——各国的字段规则、校验、版式——是一个独立的封闭项目,永远不会到达你的浏览器。这是一个刻意的取舍:引擎待在它该待的地方,代价是你得等一个来回,而不是即时看到结果。
这对你的数据意味着什么,隐私政策里写了,简单说:你填的内容只用于生成这份单据,别无他用。不保存、不记录、不外发。