Walidacja KSeF XML FA(3) przed wysyłką — jak uniknąć odrzucenia faktury
Tablixa Blog · 2026-05-06
Walidacja KSeF XML FA(3) przed wysyłką — jak uniknąć odrzucenia faktury
Wyobraź sobie: wysyłasz 50 faktur do KSeF, a system odrzuca 8 z nich. Każde odrzucenie to nie tylko problem techniczny — to potencjalnie opóźniona płatność, konieczność wystawienia korekty i kontakt z kontrahentem z wyjaśnieniami.
Walidacja pliku XML przed wysyłką to ta jedna czynność, która oszczędza cały ten kłopot.
Czym jest walidacja KSeF XML?
Format FA(3) to ścisły schemat XML definiowany przez Ministerstwo Finansów. Każda faktura musi być zgodna ze schematem XSD, który określa:
- które pola są obowiązkowe (np. NIP sprzedawcy, data wystawienia, kwoty),
- jakie formaty są wymagane (np. NIP bez myślników jako 10 cyfr),
- jak muszą się bilansować wartości (suma pozycji = wartość całkowita faktury),
- które kody są dozwolone (kody krajów, kody walut, kody VAT).
Naruszenie któregokolwiek z tych reguł skutkuje odrzuceniem przez bramkę KSeF.
Najczęstsze przyczyny odrzucenia pliku KSeF XML
Na podstawie rzeczywistych przypadków z biur rachunkowych wyróżniamy cztery kategorie błędów:
1. Błędy w numerach NIP
NIP w pliku FA(3) musi być:
- 10-cyfrowy, bez myślników, spacji ani liter
- poprawny sumy kontrolnej (algorytm wag: 6,5,7,2,3,4,5,6,7)
Najczęstszy błąd: NIP przepisany jako 123-456-78-90 (z myślnikami) lub PL1234567890 (z prefiksem kraju). Oba formaty są poprawne na fakturze papierowej, oba są błędne w FA(3).
2. Niezgodność kwot
Schema FA(3) wymaga, żeby kwoty się zgadzały arytmetycznie:
- suma wartości linii = wartość netto
- wartość netto × stawka VAT = kwota VAT (z dopuszczalnym odchyleniem 0,01 zł na pozycję)
- wartość netto + kwota VAT = wartość brutto
Rozbieżności wynikają z zaokrągleń — szczególnie problematyczne przy wielu pozycjach z ułamkowymi cenami jednostkowymi.
3. Nieprawidłowe kody
FA(3) używa specyficznych kodów zamiast wartości tekstowych:
| Pole | Przykład błędu | Poprawna wartość |
|---|---|---|
| Stawka VAT | "23%" lub "VAT23" | "23" |
| Rodzaj faktury | "korekta" | "KOR" |
| Metoda płatności | "przelew" | "6" |
| Waluta | "PLN " (ze spacją) | "PLN" |
4. Brakujące pola obowiązkowe
Schemat XSD oznacza część pól jako minOccurs="1" — ich brak powoduje natychmiastowe odrzucenie. Najczęściej brakuje:
NrFa— numer faktury (gdy pole jest puste w PDF lub trudne do odczytu)DtWyst— data wystawienia w formacie ISO 8601 (YYYY-MM-DD)NrKSeFZV— dla faktur korygujących: numer KSeF faktury korygowanej
Jak walidować plik XML przed wysyłką?
Metoda 1: Narzędzie walidatora MF
Ministerstwo Finansów udostępnia oficjalny walidator online. Wgrywasz plik XML i otrzymujesz raport błędów zgodnych ze schematem XSD. Metoda bezpłatna, ale manualna — działa na jednym pliku naraz.
Metoda 2: Walidacja w Tablixa
Tablixa waliduje schemat XSD automatycznie w trakcie generowania pliku — nie po. To oznacza, że:
- AI rozpoznaje dane z faktury PDF,
- silnik mapuje dane na schemat FA(3),
- wewnętrzna walidacja sprawdza każde pole przed zapisem,
- ewentualne rozbieżności są korygowane automatycznie (np. usunięcie myślników z NIP, przeliczenie zaokrągleń),
- plik XML wychodzi z narzędzia jako gotowy do wysyłki.
Biuro rachunkowe, które przetwarza 200 faktur miesięcznie przez Tablixa, nie traci czasu na ręczną weryfikację XML — błędy są korygowane zanim w ogóle zobaczysz plik.
Co jeśli AI nie rozpozna jakiegoś pola?
Tablixa zaznacza pola, których nie udało się odczytać z wystarczającą pewnością — pojawią się one w pliku jako [WYMAGA WERYFIKACJI]. To daje księgowemu jasny sygnał: sprawdź to pole przed wysyłką.
Typowe przypadki:
- numer faktury z trudnym do odczytu skanem,
- NIP sprzedawcy niewidoczny w głównym polu (np. ukryty w stopce),
- data wystawienia w niestandardowym formacie (np. "piątego maja").
---
Gotowy do przetestowania? Wgraj fakturę PDF na stronie narzędzia PDF do KSeF XML i pobierz walidowany plik FA(3) — bezpłatnie dla pierwszych konwersji.
Tablixa generuje pliki zgodne z aktualnym schematem KSeF FA(3) zatwierdzonym przez Ministerstwo Finansów. Serwery w UE, zgodność z RODO.