功能

KSeF 集成:自动提交波兰结构化电子发票

KSeF 集成:自动提交波兰结构化电子发票

KSeF 以结构化文档而非 PDF 的形式接收发票。easySales 从订单上的发票生成该文档、提交、跟踪至最终结果,并把 KSeF 编号和 UPO 回执保存到订单上。

波兰税务机关不再以 PDF 形式接收发票,而是以结构化文档的形式接收:文档提交到一个国家级系统,由该系统校验、登记并赋予编号。easySales 代你完成这一提交:你的开票程序出具的发票会被转换、提交,并被跟踪到出现明确结果,回执则保存到它所属的订单上。

有一点值得先说明:本指南讲的是波兰的 KSeF 系统。如果你在其他国家开票,那里适用各自的电子发票规则,与此无关。两者不能互相替代。

什么是 KSeF,对你意味着什么

KSeF——Krajowy System e-Faktur——是波兰财政部运营的国家电子发票系统。你不再向买家发送 PDF,而是把发票以结构化 XML 文档的形式提交给 KSeF。KSeF 按固定架构校验、登记,赋予一个 KSeF 编号,并返回一份名为 UPO 的官方接收回执。

实际上有三件事发生了变化。

  • 格式。 结构化发票——faktura ustrukturyzowana——是既定架构中的数据,而不是页面版式。每个字段都有固定位置,格式不符的值意味着被拒,而不是外观问题。
  • 发票正式生效的时点。 起决定作用的是在 KSeF 中的登记,而不是你用邮件发出的那一刻。
  • 凭据。 证明发票存在的是它的 KSeF 编号和 UPO,而不是你的已发送邮件文件夹。

PDF 并不会消失。你照旧出具、附加到订单、为包裹打印。它只是不再是法律上具有决定性的那一份。

easySales 对你的发票做什么

easySales 位于开票程序与 KSeF 之间。它不取代你的开票——它取用订单上已经存在的发票并提交。

示意图:一张订单、为其开具的发票、把发票提交到 KSeF 的 easySales,以及回到订单的 UPO
easySales 不开具发票,也不取代 KSeF。它提交已经存在的发票,并把回执带回订单。

发票一旦在订单上,easySales 就从中生成结构化文档、在 KSeF 中开启会话、提交文档,然后跟踪该提交直到 KSeF 给出答复——这很少是即时的。等待期间,提交状态为待处理。被接受时,easySales 记录 KSeF 编号并下载 UPO。被拒绝时,它原样保存 KSeF 返回的消息,因此你读到的是税务机关给出的理由,而不是对它的转述。

📄

结构化文档

依据订单上的发票,生成 KSeF 所要求的结构。

📤

提交与跟踪

开启会话、提交文档,并跟踪提交直到 KSeF 给出答复。

🔢

KSeF 编号

把 KSeF 分配给已登记发票的编号保存到订单上。

🧾

为你保存 UPO

下载官方接收回执,并与该次提交一并保存。

↩️

更正发票

把更正文档作为独立的文档类型提交,并引用被更正的发票。

🔁

重试与重发

在 KSeF 尚未答复期间持续重试,并在你修正数据后提供重发操作。

始终得不到最终答复的提交不会无限悬置:easySales 最多检查五次,随后标记为失败,让它作为待处理事项出现,而不是安静地停留在“进行中”。

连接之前:你需要准备什么

四样东西,而且没有一样来自 easySales:

  • 公司的KSeF 授权令牌
  • NIP 号码——令牌所对应的波兰税号。
  • 公司注册地址和城市。 它们会作为卖方信息出现在通过此连接提交的每一份文档上,因此请使用公司登记信息,而不是仓库地址。
  • 发票来源——easySales 支持连接的开票程序之一,或 easySales 自带的开票功能。

值得同时处理的是银行账户,如果你希望它出现在电子发票上。下文会再谈,因为这是 KSeF 配置中最常见的意外。

令牌从哪里来

令牌由你自己在 KSeF 中、在财政部一侧、为你自己的 NIP 号码生成。easySales 无法代你创建,任何 easySales 凭据都不能替代它。

令牌必须为你所填写 NIP 号码的公司携带两项权限:开具发票读取发票状态。第二项是必需的,因为提交后 easySales 会向 KSeF 查询结果——只能开具的令牌会把文档提交上去,而提交永远不会有结论。

需要的是证书。easySales 会自行下载 KSeF 的公钥证书并自行完成加密认证,因此没有 .crt.key 文件需要你生成、上传或维护——令牌就是全部。

配置 KSeF 连接

在侧边菜单中打开其他服务,选择 KSeF 卡片。

easySales 中的 KSeF 连接表单,包含别名、令牌、NIP 号码、地址、城市、发票类型和银行账户部分
其他服务 → KSeF。五个必填字段、一个发票类型,以及一个可选的银行账户部分,它决定电子发票上是否出现账号。

字段不多:

  • 别名——此连接的名称。你会在自动化流程和订单上选择它,因此请按用途命名(“KSeF – 发票”),尤其是当你会使用多个连接时。
  • 令牌——从 KSeF 粘贴。
  • NIP 号码地址城市——上文所述的卖方信息。三项均为必填。
  • 发票类型——普通发票更正发票。主连接请保持普通发票;关于更正的章节会说明第二个设置的用途。
  • 银行账户——可选。填写账号,如果希望一并打印,也填写银行名称和 SWIFT/BIC 代码。

关于银行账户部分有两点值得直说,因为它们会耗费卖家的时间。第一,电子发票上的账号来自此连接,而不是账户设置中的通用银行字段——那个字段在这里完全不使用,连兜底都不算。第二,它只对保存之后提交的发票生效:已在 KSeF 登记的发票无法事后补充。

如果你的市场平台以各自的措辞上报付款方式,此连接在显示高级选项下还有一个可选的自定义付款方式映射,把这些名称转换为 KSeF 认可的付款形式。规则自上而下检查,顺序可以调整。

连接建立之后,一张发票可以通过三条彼此独立的路径到达 KSeF——而这正是之后让人意外的地方:

  1. 自动化流程,其中包含发送订单动作,连接类型为电子发票并选中你的 KSeF 连接。这是自动路径,值得配置。
  2. 从订单手动发送,在该订单的订单提交区域。
  3. 发送到KSeF 按钮,针对销售文档中的某一张具体发票。

每一条都独立运作。停用一条自动化流程只会停用那一条,不影响其他。

它与哪种开票程序配合

KSeF 不开具发票——它接收发票。因此始终存在两个层次,而认清自己处在哪一层,可以省下大部分排查工作。

你的开票程序 KSeF
它做什么 开具发票——编号、字头、金额、PDF 接收、校验并登记发票
在哪里连接 集成 → 开票 其他服务
它给你什么 发票文档 KSeF 编号和 UPO 回执
典型问题 “发票没有生成” “发票生成了,但 KSeF 拒收”
easySales 能独立完成吗 可以——没有外部程序时,easySales 自行开具发票 不能——KSeF 是政府系统,并非 easySales 所取代的东西
两个层次,两类问题。认清所处的层次,能在你提交工单之前解答大多数开票问题。

“发票没有生成”是第一层的问题,关于开票程序。“发票生成了,但 KSeF 拒收”是第二层的问题,关于提交。KSeF 连接会自动与出具该文档的程序配合。

这里有一条规则比其他都重要:同一张发票只应由一个工具提交给 KSeF。 如果你的会计程序自行向 KSeF 提交,而 easySales 也提交同一份文档,KSeF 会看到一份编号已在你 NIP 下登记的第二份文档,并以重复为由拒收。请选定由哪一方提交——easySales 或你的程序——另一方只负责开具。如果两者都必须运行,请在负责提交的自动化流程中收窄 easySales 这一侧:使用 Oprogramowanie księgujące(开票程序)条件,只提交通过你所选连接出具的发票,其余交给你的程序。

对于在波兰经营的卖家,easySales 可连接 FakturowniawFirmaiFirmainFaktSubiekt GTSubiekt Nexo PRO。如果你完全不使用外部程序,easySales 会用你自己的字头和编号自行开具发票,并以同样的方式送往 KSeF。

提交之后:KSeF 编号、UPO 和 PDF 上的二维码

一次提交产生的所有信息都保留在订单上,位于订单提交区域。

easySales 某订单上的订单提交区域,显示一次成功的 KSeF 提交、KSeF 编号以及 UPO 下载
每次提交在订单上都有自己的记录:KSeF 编号、已保存的 UPO、会话参考号和处理日期。

成功的提交会显示:

  • KSeF 编号——KSeF 为已登记发票分配的标识。
  • UPO XML——官方接收回执,由 easySales 下载并保存,这样你就不必依赖日后能否再次取得。
  • 会话参考编号发票参考编号——提交所在会话的参考号;当某次提交需要追溯时,支持团队需要的正是这些。
  • 处理日期——KSeF 处理的时点,不一定等于你发送的时点。

同样这三项信息也是销售文档中每张发票的列——KSeF 状态、KSeF 发票编号和 KSeF UPO——当你想一次浏览大量发票而不是逐个打开订单时,用这个视图。

已登记的结构化发票也可以由任何持有该 PDF 的人核验,通过一个指向 KSeF 验证页面的二维码。easySales 可以把这个二维码合并到发票文档上:在 easySales 开票连接的高级选项中启用将发票与 KSeF 验证二维码合并。此后你下载、打印或附加的发票都会带有该二维码和一段简短说明。

带有 KSeF 验证二维码和验证页面链接的 easySales 发票 PDF
启用该选项后,你下载或打印的发票会带有 KSeF 验证码——以及一个链接,供无法扫码的人使用。

更正发票如何提交

更正不是原始发票的修改版副本。在 KSeF 中它是一份独立文档,引用被更正的发票,也必须以这种方式提交。

在 easySales 中,这由连接上的发票类型体现。设为普通发票的连接从订单中取普通发票;设为更正发票的连接取更正文档。因此,开具更正发票的卖家会在同一个令牌上保留两个 KSeF 连接——每种类型一个。连接界面正是为此提供了克隆操作:复制已可用的连接、更改发票类型、重命名别名、保存。

请把更正发票的自动化流程指向更正连接,把原始发票的自动化流程指向普通连接。单独一个设为普通发票的连接永远找不到更正文档,提交会报告没有可发送的发票——看起来像故障,其实是配置缺口。

当提交被拒绝时

拒绝是 KSeF 的答复,而不是 easySales 的——提交上显示的消息就是税务机关返回的原文,通常具体到足以据此行动。多数拒绝可归结为买方识别、发票编号,或某个不符合架构的值。

修正数据并重新发送

有一条规则几乎能解释所有“我改过了,错误又出现了”的情况:

在发票文档本身上修正数据,然后按重发。

重发会依据发票自身保存的数据重新生成文档。仅在订单客户记录上修正买方增值税号并不会改变发票上的数据,因此下一次提交仍会带着同样错误的值。请打开发票,在其中修正买方信息、保存——之后再重发。easySales 出具的发票在 KSeF 接受之前都可以修改。

等待同样没有用。没有重发,easySales 询问的是最初那次尝试的状态,而 KSeF 会持续返回最初的结果并附上新的日期——于是同一个错误看起来像是今天发生的,实际上什么都没有重新提交。失败提交上的重发操作,才是真正强制发起一次新提交的动作。

如果连续两次重发返回完全相同的消息,说明发票上保存的数据实际并未改变。请重新打开发票,确认修正确实落在了文档上。

KSeF 不会改变什么

边界值得说清楚:

  • 收据不是发票。 收据无法提交到 KSeF,easySales 会直接拒收,而不是发送 KSeF 无论如何都会退回的东西。
  • 你的编号仍归你。 KSeF 在你的编号之外另行赋予一个编号;它不会重新编排你的发票。但它会拒收编号已在你 NIP 下登记的第二份文档——因此,如果还有别的工具为同一家公司开票,请分开使用不同字头。
  • 登记是最终的。 已登记的发票无法再修改或替换。要更改,工具是更正发票。
  • 买家仍然从你这里拿到文档。 向 KSeF 提交与把发票发给客户是两件事,后者依然由 easySales 完成。
无需信用卡
14 天免费
您可以随时取消

无需离开订单界面,即可把发票提交到 KSeF

免费试用 easySales 14 天,无需信用卡。

常见问题

你需要某个能开具发票的工具,因为 KSeF 只接收文档,并不创建文档。它可以是外部程序:在波兰,easySales 可连接 Fakturownia、wFirma、iFirma、inFakt、Subiekt GT 和 Subiekt Nexo PRO。也可以是 easySales 自身,用你自己的字头和编号开具发票、不额外收费,并以同样的方式提交给 KSeF。做不到的是:只连接 KSeF,然后指望发票凭空出现。

KSeF 不接受同一个 NIP 下编号相同的两张发票,因此这个结果意味着该编号的文档已经登记在册。有两种情形。要么是同一张发票——第一次提交已被 KSeF 接受,但 easySales 尚未记录回执;easySales 会比对已登记文档与自己提交的内容,识别出这一情形并对齐记录。要么是另一份编号相同的文档,由别的工具出具。easySales 不会覆盖它:请选一个未使用的编号重新开票,并让每个工具使用各自独立的字头。

因为什么都没有重新提交。只要最初那次尝试仍附带会话参考号,easySales 询问的就是那一次尝试的状态,而 KSeF 会返回最初的结果并附上新的日期。请在订单提交区域,对失败的提交按重发——这会重新生成文档并再次提交。有一个陷阱:修正要在发票本身的买方信息中进行,而不是在订单或客户记录上。重发使用的是发票上保存的数据,因此在别处做的修改不会被采用。

不会丢失任何东西。发票已经开具并保存在 easySales 的订单上——提交它是另一个步骤。在 KSeF 不响应期间,提交处于待处理状态,easySales 会继续检查;五次检查仍无最终答复后会标记为失败,以便作为待处理事项出现。KSeF 恢复响应后,对该提交按重发,文档就会依据发票上保存的数据被提交。你不需要重新开票,也不需要改动发票中的任何内容。

这是为没有税号的个人买家构造买方名称时的一个狭窄缺口,与买方识别是两回事——KSeF 会接受并登记该发票,只是没有姓名。对于来自 Allegro 的订单,一项从买家信息填入名称的修复已于 2026 年 6 月 9 日上线,因此该日期之后收到的订单会带有姓名。更早的订单可能仍为空,因为重发无法推导出从未采集过的姓名。如果你在较新的订单上看到这种情况,请带上订单号提交工单。

这曾是一个真实的缺口,已于 2026 年 6 月 19 日修复。此前所有企业买家都通过波兰 NIP 字段上报,因此德国或其他欧盟增值税号无法通过架构校验。现在买方识别方式会自动选择:波兰企业用 NIP,欧盟企业用带国家代码的欧盟增值税识别,欧盟以外用国家代码加标识,个人买家则使用“无标识”标记。如果你在旧订单上遇到这种情况,只需重新发送该提交——它会按当前逻辑重新生成。

因为 KSeF 打印的账号来自 KSeF 连接本身,而不是账户设置中的银行字段——那个字段在这里完全不使用,连兜底都不算。请打开其他服务,打开你的 KSeF 连接,找到银行账户部分,填写账号(如果希望显示,也填写银行名称和 SWIFT/BIC 代码),然后保存。它对保存之后提交的发票生效。已在 KSeF 登记的发票无法补充,因此若需要在较早的发票上显示账号,那张发票需要重新开具。

停用一条自动化流程只会停用那一条。提交并不是账户上的单一开关:任何包含发送订单动作、指向你的电子发票连接的自动化流程都会按自己的触发条件运行,此外还有两条手动路径——订单上订单提交区域的发送,以及销售文档中某张发票上的发送到KSeF 按钮。这两条都完全无视自动化流程的状态。请检查列表中的每一条流程,而不只是你停用的那一条,并确认团队中是否有人在使用手动操作。

本指南对你有帮助吗?