KSeF invoice reader: an FA(3) XML file as a readable invoice
Drop the XML file you downloaded from KSeF, or click the example. The invoice appears as on paper, with a totals check and the verification link. Everything runs in your browser.
The file stays on your device: nothing is uploaded.
The result appears here: parties, amount due and totals check.
Prepared by Radif Partners · Method · VAT Act, regulations and ministry notices checked on 25 October 2026
An invoice from Poland's National e-Invoicing System (KSeF) is an XML file in the FA (3) logical structure, which has been the only structure the system accepts since 1 February 2026. The file holds every invoice detail in fields with fixed names: Podmiot1 is the seller, Podmiot2 the buyer, P_1 the issue date, P_2 the invoice number, P_13_1 and P_14_1 the net amount and VAT at the 23 percent rate, P_15 the total amount due. Without software such a file is hard to read, so this reader turns it into an ordinary invoice layout: parties, line items, a summary by rate, payment terms and annotations. It also recomputes the totals from the lines and compares them with the P_13, P_14 and P_15 fields, to the grosz. The file is never uploaded, and the PDF printout can go into your records. The original remains the XML with its KSeF number, kept for 10 years, not its visualisation.
What an FA(3) file contains
A KSeF file always has the same skeleton, described in the Finance Ministry FA(3) schema. The main blocks the reader turns into an invoice layout:
| XML element | Meaning |
|---|---|
Naglowek | form code FA (3), variant and file creation date |
Podmiot1, Podmiot2 | seller and buyer: tax ID (NIP), name, address, contact |
Podmiot3 | other parties: recipient, payer, local-government unit, VAT group member |
Fa/FaWiersz | line items: name, quantity, price, net value, rate |
P_13_x, P_14_x | net total and VAT total at each rate |
P_15 | total amount due |
Adnotacje, Platnosc | cash accounting, self-billing, split payment, due date and account |
The reader also shows fields that are easy to miss: a delivery date different from the issue date, the split payment note on amounts above PLN 15,000, or the details of the invoice being corrected. Empty blocks are skipped to keep the printout short.
A totals check to the grosz
The reader checks every invoice three ways: it adds the net line values at each rate, computes VAT by rate and compares both with the P_13 and P_14 fields, and finally checks that P_15 equals net plus VAT. Rounding to the grosz follows Art. 106e(11) of the VAT Act. You can compute the same fields yourself before sending an invoice:
Total amount due (field P_15)
Total amount due (field P_15)
PLN 1,446.00
| P_13_1 | PLN 1,000.00 |
| P_14_1 | PLN 230.00 |
| P_13_2 | PLN 200.00 |
| P_14_2 | PLN 16.00 |
Printing and keeping records
The print button produces a clean A4 page without menus or buttons; choose save as PDF in the print dialog. The ministry also publishes its own open-source visualisation generator, and the free KSeF Taxpayer Application shows the invoice after login. What a structured invoice is in law is explained on the ministry page on the FA structure. This reader needs no login, because it works on a file you already have.
Keep the original as XML. Invoices in KSeF are stored for 10 years from the end of the year of issue, so you can download the file again if needed. If the visualisation carries a QR code, read it with the QR code tool, and check the number from the header with the KSeF number validator.
A supplier invoice step by step
The usual route is this: you log in to KSeF or open your software, download the purchase invoice as an XML file and load it here. The reader first shows the seller and buyer, so you see at once whether the invoice concerns your business and whether the tax ID matches. Then you check the lines, rates and totals, and finally the due date and the bank account. If something is wrong, you do not edit the file: you ask the issuer for a corrective invoice, because correction notes from the buyer disappeared with KSeF.