E-invoicing in Poland: the KSeF mandate
Poland requires businesses to issue invoices through KSeF (Krajowy System e-Faktur), the national e-invoicing clearance system. The obligation started on 1 February 2026 for large taxpayers (2024 sales above PLN 200 million) and on 1 April 2026 for all other businesses; receiving invoices through KSeF has been mandatory for everyone since 1 February 2026. Invoices use the national FA(3) XML schema — a Polish format, distinct from Peppol and EN 16931.
When is KSeF mandatory in Poland?
Issuing invoices through KSeF became mandatory on 1 February 2026 for large taxpayers with 2024 sales above PLN 200 million, and on 1 April 2026 for all other businesses. Receiving invoices via KSeF has been mandatory for everyone since 1 February 2026. Penalties are deferred until 1 January 2027.
Who must use KSeF?
All VAT taxpayers in Poland are in scope for B2B invoicing. The rollout is phased: the largest taxpayers first (February 2026), then everyone else (April 2026). The smallest issuers, with monthly invoicing below PLN 10,000, may stay outside KSeF through the end of 2026.
What format is a KSeF invoice?
KSeF invoices use FA(3), a national XML schema defined by the Polish Ministry of Finance. FA(3) is a structured Polish format and is not the same as Peppol BIS or a plain EN 16931 UBL/CII invoice, so an invoice built for another EU country will not pass KSeF validation without conversion.
Does Peppol or EN 16931 work in Poland?
For the domestic KSeF mandate, no — Poland requires the national FA(3) schema, not Peppol BIS or generic EN 16931 UBL/CII. Peppol may still be used for cross-border exchange. Our validator currently covers Peppol BIS 3.0 and e-SLOG; dedicated FA(3) support is planned, so for now use KSeF's own tools to validate FA(3) documents.
Why was my invoice rejected by KSeF?
KSeF validates each submitted invoice against the FA(3) XSD schema, so rejections usually mean the XML does not match the FA(3) structure: a wrong or outdated schema version, a missing mandatory element, or a value in the wrong field. Because FA(3) is a national schema, the error messages come from KSeF itself rather than the EN 16931 rule set.
Official sources
Related: EU mandate timeline · Peppol BIS 3.0 vs EN 16931 · rule catalogue.