NumifyAI
Zgodność z prawemKSeF 2.0
Zweryfikowane wewnętrznie

Format FA(3) — struktura XML

Struktura faktury ustrukturyzowanej FA(3) — sekcje XML, wymagane pola, identyfikator KSeF, relacja z polami JPK_V7M.

FA(3) to oficjalna, trzecia wersja schematu XML dla faktur ustrukturyzowanych w KSeF. Każda faktura wystawiona lub odebrana przez KSeF występuje w tym formacie. FA(3) jest rozszerzeniem dotychczasowych wymogów Ustawa o VAT, art. 106e — zawiera wszystkie obowiązkowe elementy faktury VAT, ale w ściśle określonej strukturze maszynowej.

Informacje mają charakter edukacyjny

Dokumentacja nie zastępuje porady doradcy podatkowego ani biegłego rewidenta. W sprawach szczegółowych skontaktuj się ze specjalistą. Jak weryfikujemy dokumentację ↗

Kiedy stosować FA(3)

  • Od 1 lutego 2026 r. — duzi podatnicy.
  • Od 1 kwietnia 2026 r. — wszyscy pozostali podatnicy VAT.

Poprzednie wersje schematu (FA(1), FA(2)) zostały zastąpione FA(3) przed rozpoczęciem obowiązku. Numify generuje i parsuje wyłącznie FA(3).

Sekcje dokumentu

Faktura FA(3) składa się z następujących sekcji:

SekcjaZawartość
NaglowekMetadane systemu (wersja schematu, data wystawienia)
Podmiot1Wystawca faktury (nazwa, NIP, adres)
Podmiot2Nabywca faktury (NIP lub PESEL, adres)
Podmiot3 (opcjonalnie)Podmiot trzeci (np. faktoring)
FaDane faktury (numer, daty, waluta, kwoty)
Fa/FaWiersz[]Pozycje faktury
StopkaPodpis / informacje dodatkowe

Wymagane pola (art. 106e ustawy o VAT)

Każdy dokument musi spełniać wymogi Ustawa o VAT, art. 106e. Każda faktura FA(3) musi zawierać (zarówno w XML, jak i w ewentualnej wizualizacji PDF):

  • Datę wystawienia.
  • Kolejny numer faktury (nadany przez wystawcę).
  • NIP wystawcy (i pełną nazwę).
  • NIP nabywcy (lub PESEL dla osób fizycznych B2C — wtedy faktura nie musi być w KSeF).
  • Datę dostawy / wykonania usługi (jeśli inna niż data wystawienia).
  • Nazwę towaru / usługi.
  • Jednostkę miary, ilość.
  • Cenę jednostkową netto.
  • Kwotę rabatu.
  • Wartość netto, stawkę VAT, wartość VAT, wartość brutto.
  • Łączne kwoty netto, VAT, brutto — zgrupowane wg stawek.
  • Sumę należności.

Dodatkowo w FA(3) obowiązkowo:

  • Kod walutowy — ISO 4217 (PLN, EUR, USD, …).
  • Kurs waluty — jeśli waluta inna niż PLN, kurs NBP z dnia poprzedzającego wystawienie (UoR, art. 30).
  • Kod GTU — dla towarów / usług z załącznika 15 do ustawy o VAT (GTU_01 — GTU_13). Np. GTU_12 dla usług niematerialnych.
  • Znaczniki procedur — np. MPP (split payment), TT_WNT, I_42/I_63 dla procedur celnych.
  • KodFormularza = FA wersja 3.

Identyfikator KSeF (NrKSeF)

Każda faktura przesłana do KSeF otrzymuje globalnie unikalny identyfikator w formacie:

NNNNNNNNNN-RRRRMMDD-XXXXXXXX-YY
│          │        │        └─ suma kontrolna
│          │        └────────── losowy identyfikator wystawcy
│          └─────────────────── data wystawienia (YYYYMMDD)
└────────────────────────────── NIP wystawcy (10 cyfr)

Identyfikator pozostaje z fakturą do końca jej cyklu życia — jest umieszczany w:

  • Pole KodKontrolny w XML FA(3).
  • QR kod drukowany na wizualizacji PDF (zob. Kody QR).
  • Pole NrKSeF w JPK_V7M(3) — zarówno po stronie sprzedawcy, jak i nabywcy.
  • Odniesienia w fakturach korygujących i zaliczkowych.

Schemat XML — fragment

<Faktura xmlns="http://crd.gov.pl/wzor/2023/06/29/12648/">
  <Naglowek>
    <KodFormularza kodSystemowy="FA (3)" wersjaSchemy="1-0E">FA</KodFormularza>
    <WariantFormularza>3</WariantFormularza>
    <DataWytworzeniaFa>2026-04-16T12:00:00Z</DataWytworzeniaFa>
    <SystemInfo>Numify AI 1.0</SystemInfo>
  </Naglowek>
  <Podmiot1>
    <DaneIdentyfikacyjne>
      <NIP>1234567890</NIP>
      <Nazwa>PERIER sp. z o.o.</Nazwa>
    </DaneIdentyfikacyjne>
    <Adres>
      <KodKraju>PL</KodKraju>
      <AdresL1>ul. Przykładowa 1</AdresL1>
      <AdresL2>00-001 Warszawa</AdresL2>
    </Adres>
  </Podmiot1>
  <Podmiot2>
    <DaneIdentyfikacyjne>
      <NIP>9876543210</NIP>
      <Nazwa>Kontrahent sp. z o.o.</Nazwa>
    </DaneIdentyfikacyjne>
    <!-- ... adres ... -->
  </Podmiot2>
  <Fa>
    <KodWaluty>PLN</KodWaluty>
    <P_1>2026-04-16</P_1> <!-- Data wystawienia -->
    <P_2>FV/2026/04/001</P_2> <!-- Numer faktury -->
    <P_6>2026-04-15</P_6> <!-- Data dostawy -->
    <P_13_1>1000.00</P_13_1> <!-- Suma netto 23% -->
    <P_14_1>230.00</P_14_1> <!-- Suma VAT 23% -->
    <P_15>1230.00</P_15> <!-- Kwota brutto -->
    <FaWiersz>
      <NrWierszaFa>1</NrWierszaFa>
      <P_7>Usługa hostingu — kwiecień 2026</P_7>
      <P_8A>szt.</P_8A>
      <P_8B>1</P_8B>
      <P_9A>1000.00</P_9A> <!-- Cena netto -->
      <P_11>1000.00</P_11> <!-- Wartość netto -->
      <P_12>23</P_12> <!-- Stawka VAT -->
    </FaWiersz>
  </Fa>
</Faktura>

Walidacja

Ministerstwo Finansów udostępnia oficjalny walidator na portalu ksef.mf.gov.pl. Numify dodatkowo:

  • Wykonuje walidację XSD lokalnie przed wysłaniem do KSeF.
  • Sprawdza zgodność sum (wiersze ↔ agregaty).
  • Waliduje numer NIP względem rejestrów (biała lista, VIES).

Implementacja w Numify

Generator FA(3) — tworzy XML z danych faktury w bazie: ksef-fa3-generator.ts.

Parser FA(3) — odczytuje otrzymane faktury i mapuje na transakcje: ksef-fa3-parser.ts.

Oba oparte o oficjalny XSD FA(3) z repozytorium CRD MF. Pełne klasy DTO są w src/lib/services/ksef-types.ts.

Historia zmian podstawy prawnej
  1. Phase 2

    Pierwsza wersja — zagregowana z _legacy/KSEF-REFERENCE.md oraz oficjalnej dokumentacji XSD FA(3) Ministerstwa Finansów.

Na tej stronie