Blog
Błędy i walidacja

FA(2) vs FA(3): co zmienić w XML przy migracji

6 min czytania

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ów

FA(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.

PoleZnaczenieWartość domyślnaKiedy "1"
JSTFlaga jednostki samorządu teryt.2 = nie dotyczyFaktura dotyczy podległej jednostki JST
GVFlaga członka grupy VAT2 = nie dotyczyFaktura 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:

  1. Zmień namespace z http://crd.gov.pl/wzor/2023/06/29/12648/ na http://crd.gov.pl/wzor/2025/06/25/13775/.
  2. Ustaw kodSystemowy="FA (3)" i wersjaSchemy="1-0E" w KodFormularza.
  3. Ustaw <WariantFormularza>3</WariantFormularza>.
  4. Dodaj <JST>2</JST> i <GV>2</GV> do każdego Podmiot2 (wartość 2 oznacza „nie dotyczy").

Zależnie od przypadku:

  • korekty do FA(2): NrKSeFN = 1 w DaneFaKorygowanej,
  • faktury pracownicze: Rola = 11 w Podmiot3 z BrakID = 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.

Podręcznik użytkownika Aplikacji Podatnika KSeF 2.0, s. 13

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