FA(2) vs FA(3): co zmienić w XML przy migracji
Od 1 lutego 2026 roku KSeF 2.0 przyjmuje wyłącznie FA(3), bez trybu zgodności wstecznej. Przy migracji z FA(2) musisz zmienić namespace, atrybuty KodFormularza, wartość WariantFormularza i dodać pola JST oraz GV do każdego Podmiot2.
Stan prawny na 7 października 2026.
Broszura informacyjna FA(3) — Ministerstwo FinansówFA(2) wygasł 1 lutego 2026
FA(2) obowiązywała od 1 września 2023 roku, najpierw dobrowolnie, potem w pilotażu KSeF, i przestała działać 31 stycznia 2026 o północy. Od 1 lutego FA(3) jest jedynym wiążącym szablonem e-faktury strukturyzowanej. Nie ma trybu legacy ani okresu przejściowego dla formatu.
Dwie daty łatwo pomylić:
- 1 lutego 2026: KSeF obowiązkowy dla podatników o obrocie powyżej 200 mln zł w 2024 roku. Od tego dnia FA(3) jest jedynym akceptowanym formatem dla wszystkich faktur KSeF.
- 1 kwietnia 2026: KSeF obowiązkowy dla pozostałych czynnych podatników VAT.
Format obowiązuje więc od lutego niezależnie od tego, od kiedy KSeF jest obowiązkowy dla Ciebie.
Namespace
Namespace to atrybut xmlns w elemencie <Faktura>. W FA(3) zmienił się jego adres URI i KSeF 2.0 odrzuca dokument już na tym poziomie, zanim sprawdzi resztę. Ta jedna zmiana odpowiada za błędy walidacji u większości deweloperów migrujących z FA(2).
<!-- ❌ FA(2) — nieważny od 1 lutego 2026 -->
<Faktura xmlns="http://crd.gov.pl/wzor/2023/06/29/12648/">
...
</Faktura>
<!-- ✅ FA(3) — wymagany od 1 lutego 2026 -->
<Faktura xmlns="http://crd.gov.pl/wzor/2025/06/25/13775/">
...
</Faktura>Łatwo to przeoczyć, gdy namespace jest zahardkodowany w szablonie generatora albo pochodzi ze skopiowanego kiedyś przykładu. Data w URL schematu (https://crd.gov.pl/wzor/2025/06/25/13775/) to data jego publikacji, nie wejścia w życie.
Nagłówek
W <KodFormularza> zmieniają się oba atrybuty, a <WariantFormularza> zmienia się z 2 na 3:
<!-- ❌ FA(2) -->
<KodFormularza kodSystemowy="FA (2)" wersjaSchemy="...">FA</KodFormularza>
<WariantFormularza>2</WariantFormularza>
<!-- ✅ FA(3) -->
<KodFormularza kodSystemowy="FA (3)" wersjaSchemy="1-0E">FA</KodFormularza>
<WariantFormularza>3</WariantFormularza>W kodSystemowy="FA (3)" jest spacja przed nawiasem, a literówki w tym miejscu zdarzają się najczęściej. Pełny prawidłowy nagłówek:
<Naglowek>
<KodFormularza kodSystemowy="FA (3)" wersjaSchemy="1-0E">
FA
</KodFormularza>
<WariantFormularza>3</WariantFormularza>
<DataWytworzeniaFa>2026-03-28T10:00:00Z</DataWytworzeniaFa>
</Naglowek>Nowe obowiązkowe pola JST i GV w Podmiot2
FA(3) wprowadza w Podmiot2 dwa obowiązkowe pola. Bez nich dokument nie przejdzie walidacji XSD, niezależnie od profilu firmy. Sekcja wygląda jak w FA(2), więc to zmiana najłatwiejsza do przeoczenia.
| Pole | Znaczenie | Wartość domyślna | Kiedy "1" |
|---|---|---|---|
JST | Flaga jednostki samorządu teryt. | 2 = nie dotyczy | Faktura dotyczy podległej jednostki JST |
GV | Flaga członka grupy VAT | 2 = nie dotyczy | Faktura dotyczy członka grupy VAT |
Dla zdecydowanej większości faktur ustaw oba na 2.
<!-- ❌ FA(2) — brak JST i GV -->
<Podmiot2>
<DaneIdentyfikacyjne>
<NIP>9876543210</NIP>
<Nazwa>Nabywca Sp. z o.o.</Nazwa>
</DaneIdentyfikacyjne>
<Adres>
<KodKraju>PL</KodKraju>
<AdresL1>ul. Przykładowa 1, 00-001 Warszawa</AdresL1>
</Adres>
</Podmiot2>
<!-- ✅ FA(3) — JST i GV obecne -->
<Podmiot2>
<DaneIdentyfikacyjne>
<NIP>9876543210</NIP>
<Nazwa>Nabywca Sp. z o.o.</Nazwa>
</DaneIdentyfikacyjne>
<Adres>
<KodKraju>PL</KodKraju>
<AdresL1>ul. Przykładowa 1, 00-001 Warszawa</AdresL1>
</Adres>
<JST>2</JST>
<GV>2</GV>
</Podmiot2>Gdy JST = 1, wymagany jest wpis w Podmiot3 z Rola = 8. Gdy GV = 1, wpis z Rola = 10. Szczegóły są w broszurze informacyjnej FA(3).
Nowe elementy w FA(3)
Rola = 11 w Podmiot3 (pracownik). Dotyczy faktur za wydatki pracownicze, gdy pracownik kupuje w imieniu pracodawcy i nie ma własnego NIP jako strony transakcji. Pole DaneIdentyfikacyjne/NIP wtedy nie istnieje: ustawiasz BrakID = 1 i podajesz imię i nazwisko pracownika w Nazwa.
<Zalacznik>. Opcjonalny załącznik strukturyzowany na najwyższym poziomie dokumentu, dla faktur z rozbudowanymi danymi o jednostkach miary, ilościach lub cenach jednostkowych netto.
Użycie Zalacznik wymaga wcześniejszego zgłoszenia zamiaru w e-Urzędzie Skarbowym. Załącznik
można stosować wyłącznie do danych podatkowych. Użycie go dla cenników, gwarancji lub umów
skutkuje utratą prawa do wystawiania faktur z załącznikiem.
Korekty do faktur FA(2)
Faktura korygująca do faktury wystawionej w FA(2) przed 1 lutego 2026 musi być w FA(3). Nie ma trybu „korekta FA(2) w formacie FA(2)”. Dotyczy to też faktur końcowych do zaliczkowych faktur FA(2) (broszura FA(3), wstęp o obowiązującym wzorze faktury ustrukturyzowanej).
Przy korekcie faktury wystawionej poza obecnym KSeF, czyli każdej faktury FA(2) z KSeF 1.0, użyj w DaneFaKorygowanej pola NrKSeFN = 1. Pole NrKSeF dotyczy faktur wystawionych już w KSeF 2.0.
Lista zmian przy migracji
Obowiązkowe:
- Zmień namespace z
http://crd.gov.pl/wzor/2023/06/29/12648/nahttp://crd.gov.pl/wzor/2025/06/25/13775/. - Ustaw
kodSystemowy="FA (3)"iwersjaSchemy="1-0E"wKodFormularza. - Ustaw
<WariantFormularza>3</WariantFormularza>. - Dodaj
<JST>2</JST>i<GV>2</GV>do każdegoPodmiot2(wartość2oznacza „nie dotyczy").
Zależnie od przypadku:
- korekty do FA(2):
NrKSeFN=1wDaneFaKorygowanej, - faktury pracownicze:
Rola=11wPodmiot3zBrakID=1, - złożone faktury ilościowe:
Zalacznik, po zgłoszeniu w e-US.
Jeśli budujesz integrację od zera, pomiń FA(2): stare szablony z internetu i kod z pilotażu KSeF 1.0 są nieaktualne. Pobierz schemat XSD z https://crd.gov.pl/wzor/2025/06/25/13775/, wygeneruj z niego klasy lub typy (JAXB, xsd.exe, xsd-to-ts) i implementuj według broszury. Na dzień publikacji nie ma nowszej wersji schematu.
Środowisko testowe
Środowisko testowe KSeF 2.0 działa pod adresem https://ap-test.ksef.mf.gov.pl/web/. Faktury z fikcyjnymi danymi nie mają tam skutków prawnych, a środowisko przyjmuje wyłącznie FA(3). Aplikacja KSeF 1.0 pod adresem ksef.mf.gov.pl/web została wyłączona 1 lutego 2026. Produkcyjna Aplikacja Podatnika KSeF 2.0 działa pod adresem ap.ksef.mf.gov.pl.
Co dalej
Plik XML możesz sprawdzić na ksefuj.to przed wysyłką; walidator pokazuje błędy po polsku, a plik nie opuszcza przeglądarki. Jeśli po migracji nadal trafiasz na błędy, zajrzyj do najczęstszych błędów walidacji FA(3), gdzie są gotowe poprawki w XML.
Schemat XSD FA(3) — crd.gov.plŹródła
Czytaj dalej
KSeF od 19.10.2026 odrzuci XML z instrukcjami
Od 19 października 2026 KSeF odrzuci fakturę z instrukcją przetwarzania XML lub niezalecanym znakiem Unicode. Do tej daty ostrzega nagłówkiem X-System-Warning.
12 najczęstszych błędów walidacji FA(3)
Zły namespace, kolejność elementów, NIP, daty, P_12, Adnotacje: 12 najczęstszych błędów FA(3) z przyczyną i poprawką w XML do skopiowania.
Jak odebrać fakturę w KSeF: nic nie akceptujesz
Faktura z Twoim NIP trafia do Ciebie w KSeF sama, bez akceptacji. Widzisz ją w Aplikacji Podatnika, programie lub u księgowej. Otrzymujesz ją z numerem KSeF.