Guides

How to convert a Polish KSeF invoice (XML) to PDF and read it

Since 2026, invoices in Poland increasingly go through the National e-Invoicing System (KSeF) as XML files. If you do business with Polish companies, you will receive them too. Such a file is readable for software, but not for people. Here is how to turn it into an ordinary PDF.

11 October 20264 min read

What a structured invoice is

An invoice issued in Poland’s National e-Invoicing System (KSeF) is not a graphic document but an XML file following a schema published by the Polish Ministry of Finance (currently FA(3), previously FA(2) and FA(1)). It contains exactly the same data as a traditional invoice – seller and buyer, line items, VAT rates, amounts and dates – but stored in a form that accounting software can process easily. Once the invoice is accepted, the system assigns it a unique KSeF number.

Opened in a browser or a text editor, the XML file looks like a string of tags. To read it, print it or send it to someone who doesn’t use KSeF, you need a visualisation, i.e. a readable version of the document, usually a PDF.

How to convert the XML to PDF in PDFowo

  1. Open the KSeF XML to PDF tool and drop the invoice’s XML file.
  2. Check the data the program has read: the invoice type (e.g. FA(3)), the number, the seller’s NIP (Polish tax number) and the issue date.
  3. If you know the KSeF number, type it in. If the number is in the name of the downloaded file, we fill it in automatically.
  4. Click “Download PDF”.

The visualisation is created with the official library published by the Polish Ministry of Finance, the same one used by the KSeF Taxpayer Application, so the layout of the document matches the Ministry’s system. Everything runs in your browser: business partner details and amounts are not sent to any server.

The KSeF number and the QR code

A KSeF number consists of the issuer’s NIP, a date, a string of characters and a checksum, for example 5265877635-20250808-9231003CA67B-BE. You will find it in the KSeF Taxpayer Application, in the program you issue invoices with, and often in the name of the file downloaded from the system.

Once you enter the number, a verification QR code with the KSeF number underneath appears on the visualisation. The code leads to the Ministry’s website, where anyone can check whether the invoice exists in the system. We build the code’s address according to the KSeF documentation: it contains the seller’s NIP, the issue date and a hash of the file (SHA-256). That is why the code works only for the original XML file downloaded from KSeF. Any change to the file, even a single space, changes the hash.

What counts as the original invoice

This is important: for invoices issued in KSeF, the original is the XML file stored in the system. The PDF is only a supporting visualisation, convenient for reading, printing or sending to people outside KSeF. The visualisation should therefore faithfully reflect the XML data, and in case of doubt the content of the system prevails. So always archive the XML file itself as well, not just the PDF.

UPO – the acknowledgement of receipt

The tool also converts the UPO (Official Acknowledgement of Receipt), which confirms that the system has accepted the documents, into PDF. Just drop the UPO XML file the same way as an invoice.

Free, no sign-up. Your files stay on your device.

Open the KSeF XML to PDF tool →

Example: an invoice from a supplier in KSeF

A supplier has issued an invoice to you in KSeF, and you downloaded it from the Taxpayer Application as an XML file, because your accountant wants it by e-mail and your boss wants it printed. Drop the file into the tool, check that the invoice number and the seller’s NIP were read correctly, and download the PDF. If the KSeF number was in the file name, the visualisation has the QR code straight away. Your accountant gets a readable document, and the original XML stays in KSeF and in your archive.

If you handle dozens of invoices every month, you can drop many XML files at once and download all the visualisations in a single ZIP file.

Frequently asked questions

Is the PDF from PDFowo a valid invoice?

The original of an invoice issued in KSeF is the XML file in the system. The PDF is a supporting visualisation, convenient for reading and sending. Always keep the XML file too.

Where do I get the KSeF number?

From the KSeF Taxpayer Application, from your invoicing software or from the name of the file downloaded from the system. If the number is in the file name, PDFowo fills it in by itself.

Why doesn’t the QR code work?

The code verifies the original file stored in KSeF. If the XML file has been changed (even just reformatted) or the invoice has not reached the system yet, verification fails.

Are my invoices uploaded anywhere?

No. The XML file is read and converted to PDF in your browser. Business partner details and amounts never leave your computer.