Kod QR KSeF na fakturze: KOD I, KOD II i najczęstsze błędy
Faktura wystawiona w KSeF istnieje jako plik XML w systemie Ministerstwa Finansów. Wielu odbiorców nadal dostaje ją jednak inaczej: jako PDF w e-mailu, wydruk przy odbiorze towaru albo plik dla kontrahenta z zagranicy. Dla takich sytuacji wprowadzono kody weryfikujące QR. Dzięki nim każdy odbiorca może sprawdzić, czy dokument naprawdę jest w KSeF i czy nikt go nie zmienił.

Kiedy faktura musi mieć kod QR
Kod QR umieszczasz na fakturze, która trafia do odbiorcy poza KSeF, czyli w formie wizualizacji: PDF, wydruku albo załącznika do wiadomości. Typowe przypadki to:
- konsument, który nie korzysta z KSeF i dostaje wydruk lub PDF,
- nabywca zagraniczny bez dostępu do polskiego systemu,
- kontrahent, z którym uzgodniłeś przekazywanie faktur e-mailem obok KSeF,
- każda faktura wystawiona w trybie offline, zanim zostanie dosłana do KSeF.
Jeśli nabywca pobiera fakturę bezpośrednio z KSeF, kod QR nie jest mu potrzebny, bo ma dostęp do oryginalnego XML. Kody generuje lokalnie program do fakturowania, a nie KSeF. Ministerstwo opisuje to w materiałach o kodach weryfikujących i w dokumentacji technicznej KSeF 2.0. Kod musi spełniać normę ISO/IEC 18004. Jeśli nie da się go umieścić na samym dokumencie, przekazujesz go odbiorcy jako osobny obraz albo link.
KOD I: weryfikacja i pobranie faktury
KOD I jest na każdej wizualizacji faktury, zarówno online, jak i offline. To zakodowany link złożony z czterech części:
- adresu środowiska, na produkcji
https://qr.ksef.mf.gov.pl/invoice, - NIP-u sprzedawcy,
- daty wystawienia z pola
P_1w formacie DD-MM-RRRR, - skrótu SHA-256 pliku faktury zapisanego w formacie Base64URL.
Przykład z dokumentacji MF dla środowiska testowego:
https://qr-test.ksef.mf.gov.pl/invoice/1111111111/01-02-2026/UtQp9Gpc51y-u3xApZjIjgkpZ01js-J8KflSPW8WzIEPo zeskanowaniu odbiorca widzi uproszczone dane faktury i informację, czy dokument jest w KSeF. Żeby pobrać pełny XML, musi podać dodatkowe dane z faktury. Nie musi logować się do KSeF ani kontaktować z wystawcą.
Co jest pod kodem: numer KSeF czy OFFLINE
Pod KODEM I drukujesz numer KSeF, jeśli faktura już go ma. Tak jest przy fakturach online i przy fakturach offline, które zostały już dosłane do systemu. Jeśli numeru jeszcze nie ma, pod kodem jest napis OFFLINE. Dotyczy to faktur offline przed wysyłką i rzadkich sytuacji, gdy faktura online czeka na nadanie numeru.
KOD II: potwierdzenie wystawcy przy fakturach offline
KOD II pojawia się wyłącznie na fakturach wystawionych w trybach offline24, offline z powodu niedostępności systemu i trybie awaryjnym. Pod nim jest napis CERTYFIKAT. Link w tym kodzie jest podpisany kluczem prywatnym certyfikatu, więc bez dostępu do certyfikatu nie da się go podrobić.
Po zeskanowaniu KSeF sprawdza:
- czy certyfikat wystawcy jest ważny, nieodwołany i niezablokowany,
- czy podpis w linku jest poprawny,
- czy osoba lub firma z certyfikatu ma uprawnienie do wystawiania faktur w imieniu sprzedawcy,
- czy kontekst zgadza się z NIP-em sprzedawcy z faktury.
KOD II wymaga certyfikatu KSeF typu Offline. Certyfikat typu Authentication służy tylko do logowania w API i nie nadaje się do podpisu KODU II. Certyfikat warto przygotować przed pierwszą awarią, a nie w jej trakcie. Jak to zrobić, opisujemy w artykule o Module Certyfikatów i Uprawnień.
Faktury wystawione w czasie ogłoszonej awarii całkowitej KSeF powstają poza systemem i nie mają kodów QR. To osobna procedura, inna niż tryb offline.
Dlaczego kod QR przestaje pasować do faktury
Skrót SHA-256 liczy się z dokładnie tego pliku, który wysyłasz do KSeF. Każda zmiana po jego policzeniu, nawet inne kodowanie znaków, dodatkowa spacja albo ponowne sformatowanie XML, daje inny skrót. Wtedy link z kodu nie wskaże faktury w systemie, choć dane na wydruku wyglądają dobrze.
Najczęstsze przyczyny, które widzimy w praktyce:
Skrót z innej wersji pliku
Zły format daty
P_1 ma w XML format RRRR-MM-DD, a w linku musi być DD-MM-RRRR. Przepisanie daty bez zmiany kolejności daje niedziałający link.Base64 zamiast Base64URL
+, / i dopełnienie =, które psują adres. Base64URL zamienia je na - i _ i nie ma dopełnienia. Przykład z dokumentacji ma 43 znaki.NIP nabywcy zamiast sprzedawcy
Podmiot1, czyli sprzedawcy. Przy samofakturowaniu lub wystawianiu przez biuro rachunkowe łatwo pomylić role.Adres złego środowiska
qr.ksef.mf.gov.pl. Adres qr-test albo qr-demo skopiowany z testów nie znajdzie faktury z produkcji.Nieczytelny wydruk
Kod QR nie naprawi błędnej faktury. Skoro skrót wiąże kod z konkretnym plikiem, poprawny XML musi być gotowy przed wysyłką. Sprawdź plik w walidatorze NaprawKSeF: pokaże błędy struktury FA(3), NIP-ów, dat i sum, zanim KSeF odrzuci fakturę. Typowe błędy formatu poprawisz w Autofix.
Co zrobić, gdy błąd wyszedł po wysyłce
Faktura przyjęta przez KSeF jest wystawiona. Nie podmieniasz jej pliku i nie generujesz nowego kodu do zmienionego XML. Są dwie sytuacje:
- Błąd tylko w wizualizacji, na przykład zły format daty w linku albo nieczytelny kod. Faktura w KSeF jest poprawna, więc naprawiasz szablon wydruku i przekazujesz odbiorcy poprawną wizualizację tego samego pliku.
- Błąd w danych faktury, na przykład kwota, stawka albo dane nabywcy. Wystawiasz fakturę korygującą. Dostaje ona własny numer KSeF i własny kod QR. Roboczy XML korekty przygotujesz w generatorze korekt.
Jak odbiorca sprawdza fakturę z kodem QR
Jeśli dostajesz fakturę jako PDF lub papier, zeskanuj kod telefonem. Porównaj numer faktury, kwotę i NIP sprzedawcy z tym, co pokazuje strona KSeF. Jeśli faktura była wystawiona offline, sprawdź też kod CERTYFIKAT. Gdy system nie znajduje faktury, zapytaj wystawcę, czy została już dosłana do KSeF. Faktura, której nie ma w systemie mimo upływu terminu na dosłanie, to sygnał, żeby wstrzymać płatność i wyjaśnić sprawę.
Najczęstsze pytania
Czy każda faktura z KSeF musi mieć kod QR?
Kod jest potrzebny, gdy faktura trafia do odbiorcy poza KSeF, na przykład jako PDF w e-mailu albo wydruk dla konsumenta lub kontrahenta zagranicznego. Jeśli nabywca odbiera fakturę bezpośrednio z KSeF, kod nie jest mu potrzebny.
Czym różni się KOD I od KODU II?
KOD I prowadzi do faktury w KSeF i pozwala sprawdzić, czy istnieje i nie została zmieniona. KOD II pojawia się tylko na fakturach offline i potwierdza wystawcę na podstawie certyfikatu KSeF typu Offline.
Dlaczego kod QR z faktury pokazuje, że faktury nie ma w KSeF?
Najczęściej skrót policzono z innej wersji pliku, data ma zły format albo w linku jest NIP nabywcy zamiast sprzedawcy. Przy fakturze offline przyczyną może być też to, że nie została jeszcze dosłana do KSeF.
Czy po wysłaniu faktury mogę poprawić XML i wygenerować nowy kod?
Nie. Błąd w danych poprawiasz fakturą korygującą, która ma własny numer KSeF i własny kod QR.
Podsumowanie
Kod QR łączy papierową lub PDF-ową wersję faktury z plikiem w KSeF. Faktura online ma jeden kod z numerem KSeF, faktura offline ma kody OFFLINE i CERTYFIKAT. Kod działa tylko wtedy, gdy powstał z dokładnie tego pliku, który trafił do systemu. Dlatego najważniejszy krok jest przed wysyłką: sprawdzony, poprawny XML. Jeśli prowadzisz małą firmę i przygotowujesz się do 2027 roku, zajrzyj też do przewodnika KSeF dla mikrofirm.