KSeF QR code: how the verification link is built
An invoice passed on outside KSeF (for example as a PDF) carries a QR code. The code is simply a link, called KOD I, that lets anyone check that the invoice exists in KSeF.
Link format
https://qr.ksef.mf.gov.pl/invoice/{NIP}/{DD-MM-YYYY}/{hash}
| Part | What it is |
|---|---|
| {NIP} | Seller's NIP (10 digits) |
| {DD-MM-YYYY} | Issue date, field P_1 of the invoice, written day-month-year |
| {hash} | SHA-256 hash of the invoice XML file, encoded as Base64URL |
Official example: https://qr-test.ksef.mf.gov.pl/invoice/1111111111/01-02-2026/UtQp9Gpc51y-u3xApZjIjgkpZ01js-J8KflSPW8WzIE
Environments
| Environment | Address |
|---|---|
| Production | https://qr.ksef.mf.gov.pl |
| Pre-production (demo) | https://qr-demo.ksef.mf.gov.pl |
| Test | https://qr-test.ksef.mf.gov.pl |
Label under the code
- If the KSeF number is known, the number is printed under the QR code.
- If it has not been assigned yet, the word OFFLINE is printed instead.
- Invoices issued offline carry a second code (KOD II) that confirms the issuer's certificate.
In the converter
The workbook has a "KSeF verification link" column built this way for every invoice. The hash is taken from the file you dropped, so the link resolves only if that file is byte-for-byte the one KSeF holds. A file that was opened and re-saved by another program will produce a different hash. The PDF shows the QR code only when the KSeF number is known, because the number belongs under the code.
Have a ZIP of KSeF XML invoices?
Turn it into an Excel workbook and PDFs. Free up to 5 files, nothing uploaded.
Source: Kody weryfikujÄ…ce QR (KSeF documentation, dated 21.08.2025). Read 2026-11-10.