Illustration for Poland's KSeF: A National Clearance System

In short

  • Every domestic business-to-business invoice goes through one state system.
  • The system assigns the identifier. Acceptance by the platform is what issues the invoice.
  • The buyer collects from the platform; you do not deliver to the buyer.
  • There is a legal fallback procedure for outages, with its own deadline.

Poland's model is the clearest example in Europe of what a clearance regime does to a finance process, and it is worth studying even if you have no Polish entity. It moves one specific thing: the moment at which an invoice comes into existence.

Clearance changes the issue event

In a post-audit country, your system creates an invoice, gives it a number, posts it, and sends it. The document exists because you made it exist.

Under clearance, your system creates a candidate, submits it, and waits. The platform validates it and either rejects it or accepts it and assigns an identifier. Until that happens you have a draft. This is why the three regulatory models are not simply variations on a theme: the difference is not who sees the document, it is when it becomes one.

Three consequences follow directly.

Your numbering is no longer authoritative on its own. You still assign your own invoice number, but the platform's identifier is what the document is known by for VAT purposes and what a buyer will quote when querying it. Both belong in your ledger, and reconciling them is a data model question, not a reporting one.

A rejection is a business event. It is not a failed integration to be retried quietly. Until the document is accepted, revenue that your system considers billed has not been billed in the eyes of the administration. That belongs on a dashboard somebody reads daily, which is the point of exception handling once volume is flowing.

You cannot deliver by email. The buyer collects from the platform. Sending a PDF copy is a courtesy and has no legal effect, and treating it as delivery is a mistake that shows up when somebody asks what evidence you hold.

The timetable

Poland — the staged obligation
  1. 2026-02-01The largest taxpayers, identified by a sales threshold measured in an earlier year, must issue through the national system.in force
  2. 2026-04-01All remaining taxable persons must issue through the national system.in force

The Polish mandate was postponed more than once before these dates were fixed. The Ministry of Finance page linked below is the authoritative source and should be checked before any plan depends on a date here.

Poland is a useful case study in reading dates carefully. An earlier version of this mandate was legislated, communicated, built for, and then deferred by a substantial margin. Businesses that had treated the original date as settled had already spent the money. This is exactly why every date on this site carries a status.

The national schema

Poland uses its own XML schema rather than a European profile. That is a real difference from Germany or Belgium, and it has a practical implication: an invoice that satisfies EN 16931 is not automatically a valid Polish document.

In most implementations the answer is a mapping — the core invoice is produced once and transformed for each target. That is fine, and it is the normal architecture, provided two things are true:

  • The mapping is tested against the national validator, not against a reading of the schema. Schema validity is the first of four gates, and the later ones are where national rules live.
  • Fields with no European equivalent are sourced from somewhere real. A national field populated with a constant because nobody knew what it was for is a finding waiting to happen.
Where the effort actually lands

Polish implementations report the same distribution of effort as everywhere else: a minority in the format, a majority in master data and in the receiving process. See master data for e-invoicing.

Outages, and the procedure that covers them

A single national platform is a single point of failure, and the law says what happens when it fails: documents are issued under a defined fallback procedure and submitted once service resumes, within a stated period.

That is a legal procedure with a deadline, which means it has to be operable by whoever is actually at their desk when it happens — not by the project team, who by then will have moved on. Write it down, rehearse it once, and keep the evidence that you followed it. The same principle applies to delivery failures and retries in any architecture: the exception path is part of the system, not an accident.

The identifier the system gives back

A feature of the Polish design that repays attention is what happens after acceptance: the system assigns the cleared document its own identifier, and that identifier becomes the reference by which the invoice is known.

This is more consequential than it sounds. A number issued by the platform is authoritative in a way your own document number is not, because it is evidence that the document passed clearance and exists in the administration's records. It therefore turns up downstream in places an invoicing project does not automatically consider — as the reference on a payment, as the key in an audit request, as the thing a counterparty quotes when querying.

Two design consequences follow. The identifier has to be captured and stored against the transaction, which means the finance system needs a field for a reference it did not previously have and did not generate. And any process that assumed your own invoice number was the primary key — collections correspondence, customer statements, the reconciliation of payments to invoices — has to accommodate a second identity for the same document.

Neither is difficult. Both are the kind of thing discovered after go-live by whoever is trying to match a payment, because the project scoped the submission and not the response.

What to take from the Polish model

If you operate in Poland, take the dates and the schema. If you do not, take the structural lesson: clearance moves the issue event out of your systems and into somebody else's, and every process that assumed the invoice existed the moment you created it has to be examined again.