KSeF in short
Invoices between businesses in Poland go through the National e-Invoicing System (Krajowy System e-Faktur, KSeF). Since 1 February 2026, businesses whose 2024 sales were over PLN 200 million (with VAT) issue their invoices in KSeF, and every business receives invoices there. Since 1 April 2026 all other businesses issue them in KSeF too. Businesses whose invoiced sales are at most PLN 10,000 a month may issue invoices outside KSeF until 31 December 2026; from 1 January 2027 KSeF is mandatory for everyone.
An invoice in KSeF is an XML file in the FA structure, version FA(3) for KSeF 2.0. KSeF rejects a file that does not match the schema and gives one that does a KSeF number.
How to check an invoice
- Open the validator with the FA(3) schema.
- Paste the XML or drop the file, then press Validate. A folder or a
.zipof up to 1,000 invoices works too. - Click an error to jump to its line; common schema messages link to an explanation of what they mean.
What is checked
The FA(3) schema of the Ministry of Finance with the shared type and code list schemas it imports: the structure of the invoice, required elements, data types and lengths, amounts with two decimals, dates, country and currency codes, VAT rates from the list, and the format of NIP numbers (ten digits in the expected pattern).
KSeF also checks things no schema covers, such as the sender's permissions, the NIP numbers themselves and duplicates. Those are only known when KSeF accepts or rejects the file.
Profiles to check with
- KSeF FA(3): The structured invoice of the Polish National e-Invoicing System (KSeF), in the FA(3) version required from February 2026. Validate
Questions
Is the invoice uploaded?
No. The schema check runs in your browser. Only the API and URL monitors validate on our servers.
Does a valid result mean KSeF will accept the invoice?
It means the file matches the FA(3) schema, which KSeF checks first. KSeF can still reject it for reasons outside the file, such as missing permissions for the seller's NIP.
Is FA(2) still accepted?
KSeF 2.0 uses FA(3), which replaced FA(2). The catalog has FA(3) only.
Can I check invoices from code?
Yes: the API and the command-line client with --schema ksef-fa-3, or a GitHub Action in your build.
Official sources
- Ministry of Finance: KSeF
- Ministry of Finance: from when invoices must be issued in KSeF
- Ministry of Finance: KSeF timeline
Other countries
- French e-invoice validator
- German e-invoice validator: XRechnung and ZUGFeRD
- Belgian e-invoice validator: Peppol BIS
- Croatian eRačun validator
- RO e-Factura validator
- FatturaPA validator
- UAE e-invoice validator (PINT AE)
- InvoiceNow validator (PINT SG)
- JP PINT validator
- Australian e-invoice validator (PINT A-NZ)
- Spanish e-invoice validator