Wprowadzenie do ery e-faktur: Dlaczego XML, a nie PDF?

Wprowadzenie Krajowego Systemu E-Faktur (KSeF) rewolucjonizuje polski system podatkowy i sposób, w jaki przedsiębiorstwa wymieniają się dokumentami handlowymi. Przez ostatnie dekady standardem w cyfrowej komunikacji biznesowej był format PDF. Choć wygodny dla ludzkiego oka, PDF jest z punktu widzenia systemów informatycznych formatem nieustrukturyzowanym – „obrazem” dokumentu, z którego automatyczne wyciągnięcie danych wymaga zaawansowanych algorytmów OCR (Optical Character Recognition), które i tak nie dają stuprocentowej skuteczności.

KSeF całkowicie odchodzi od tej filozofii. Zgodnie z nowymi przepisami, faktura ustrukturyzowana to dokument elektroniczny wystawiony w formacie XML (Extensible Markup Language), zgodny ze ściśle określoną strukturą logiczną (schemą) opublikowaną przez Ministerstwo Finansów. W tym artykule szczegółowo przyjrzymy się architekturze tego pliku, wyjaśnimy rolę schemy XSD oraz omówimy, jak nowoczesne systemy ERP interpretują i przetwarzają te dane.

Czym jest schema XML i dlaczego jest kluczem do KSeF?

XML to uniwersalny język znaczników przeznaczony do reprezentowania danych w sposób ustrukturyz restaurację, czytelny zarówno dla ludzi, jak i maszyn. Jednak sam XML to jedynie reguły zapisu (np. konieczność domykania znaczników, hierarchiczność). Aby systemy komputerowe różnych firm i Ministerstwa Finansów mogły bezbłędnie porozumiewać się między sobą, konieczny jest jednolity standard semantyczny i składniowy. Tę funkcję pełni właśnie schema (schemat) XSD (XML Schema Definition).

Schema XSD to techniczny opis szablonu, który definiuje:

  • jakie pola (znaczniki/węzły) muszą lub mogą pojawić się w pliku XML faktury,
  • w jakiej kolejności i w jakiej hierarchii te pola muszą być ułożone,
  • jakiego typu dane mogą znajdować się w konkretnych polach (np. tekst, liczba zmiennoprzecinkowa, data, kod kraju, wartość z zamkniętego słownika),
  • jakie są ograniczenia długości znaków czy zakresów liczbowych dla poszczególnych elementów.

Każda faktura wysyłana do KSeF przed ostatecznym zarejestrowaniem i nadaniem jej unikalnego numeru identyfikacyjnego KSeF przechodzi proces walidacji właśnie z tą schemą. Jeśli plik XML zawiera błąd strukturalny (np. brakuje wymaganego pola NIP nabywcy lub data jest zapisana w złym formacie), system KSeF natychmiast odrzuci taki dokument, a faktura zostanie uznana za niewystawioną.

Struktura logiczna schemy FA_VAT

Struktura logiczna faktury ustrukturyzowanej ewoluowała. Najbardziej powszechną i aktualną wersją jest schema FA_VAT(2), która zastąpiła swoją poprzedniczkę FA_VAT(1). Cały schemat składa się z kilkuset pól, które są podzielone na sekcje obowiązkowe (obligatoryjne), opcjonalne (zależne od specyfiki transakcji) oraz dobrowolne (służące do celów biznesowych i ułatwiające obieg informacji).

Główne sekcje (węzły) w strukturze faktury KSeF to:

1. Nagłówek (Naglowek)

Zawiera dane systemowe dotyczące samej struktury, takie jak kod formularza (np. FA), wersja schemy (np. 2) oraz wariant. Znajdziemy tu również datę i czas wygenerowania dokumentu.

2. Podmiot 1 (Podmiot1) – Sprzedawca

To sekcja zawierająca pełne dane identyfikacyjne i adresowe wystawcy faktury. Niezbędne jest podanie numeru NIP (lub innego identyfikatora podatkowego), nazwy firmy (lub imienia i nazwiska w przypadku osób fizycznych prowadzących działalność) oraz adresu siedziby lub stałego miejsca prowadzenia działalności gospodarczej. Co ważne, schema pozwala również na podanie dodatkowych danych kontaktowych, takich jak numer telefonu czy adres e-mail, co ułatwia ewentualny kontakt w sprawach reklamacji.

3. Podmiot 2 (Podmiot2) – Nabywca

Analogicznie do Podmiotu 1, ta sekcja opisuje kupującego. Musi zawierać dane identyfikacyjne niezbędne do celów podatkowych. Warto zaznaczyć, że w schemie KSeF przewidziano specjalne procedury dla transakcji typu B2C (Business-to-Consumer), choć ostateczne przepisy w tym zakresie podlegały modyfikacjom prawnym.

4. Podmioty trzecie (Podmiot3, PodmiotInstancja, itp.)

To zaawansowane sekcje pozwalające na zdefiniowanie dodatkowych uczestników transakcji, takich jak odbiorca towaru (gdy jest inny niż płatnik/nabywca), podmiot pośredniczący, faktor czy płatnik.

5. Sekcja Główna Faktury (Fa)

Jest to najważniejsza merytorycznie część dokumentu. To tutaj znajdują się szczegółowe informacje o samej transakcji. Sekcja ta dzieli się na:

  • Dane ogólne: data wystawienia, numer faktury w systemie wewnętrznym sprzedawcy, waluta, sumy wartości netto, brutto oraz kwoty podatku VAT z podziałem na poszczególne stawki.
  • Wiersze faktury (FaWiersze): powtarzalna sekcja, w której każdy wiersz odpowiada jednej pozycji na fakturze (towarowi lub usłudze). Każdy wiersz musi zawierać nazwę towaru/usługi, miarę, ilość, cenę jednostkową netto, stawkę VAT oraz wartość netto i brutto pozycji.
  • Rozliczenie płatności: informacje o terminie płatności, formie płatności (przelew, gotówka, karta, kompensata), a także dane do przelewu (np. numer rachunku bankowego w formacie IBAN).

Jak systemy ERP interpretują i mapują dane XML?

Wprowadzenie KSeF zmusza producentów oprogramowania ERP (Enterprise Resource Planning) do głębokiej przebudowy modułów księgowo-magazynowych. Rola systemu ERP w procesie KSeF polega na dwukierunkowej translacji danych:

Eksport: Z bazy danych ERP do XML KSeF

Gdy użytkownik wystawia fakturę w systemie ERP, klika „Zapisz” lub „Wystaw”. W tle system musi pobrać dane z relacyjnej bazy danych (tabele kontrahentów, cenników, zamówień) i przetłumaczyć je na strukturę drzewiastą XML zgodną ze schemą FA_VAT. ERP musi dokonać odpowiedniego zmapowania pól. Przykładowo, pole w bazie danych odbiorca_kod_pocztowy musi trafić dokładnie do węzła /Faktura/Podmiot2/Adres/KodPocztowy. Następnie system dokonuje wewnętrznej walidacji logicznej przed wysyłką pliku na bramkę Ministerstwa Finansów.

Import: Z XML KSeF do bazy danych ERP

Proces odbierania faktur zakupowych jest jeszcze bardziej wymagający. System ERP cyklicznie odpytuje bramkę KSeF (za pomocą API) o nowe dokumenty wystawione na NIP danej firmy. Po pobraniu pliku XML następuje proces parsowania (analizy składniowej). Parser XML odczytuje wartości poszczególnych węzłów i próbuje je zinterpretować. System ERP musi automatycznie rozpoznać sprzedawcę po NIP-ie, sprawdzić czy taki podmiot istnieje w kartotece, dopasować pozycje faktury do dokumentów magazynowych (np. PZ – Przyjęcie Zewnętrzne) oraz zaksięgować dokument w odpowiednich rejestrach VAT. Dzięki ustrukturyzowanemu formatowi XML proces ten może być w pełni zautomatyzowany, eliminując czynnik ludzkich błędów przy ręcznym przepisywaniu faktur.

Najczęstsze problemy techniczne związane ze schemą

Wdrożenie integracji z KSeF wiąże się z kilkuma kluczowymi wyzwaniami programistycznymi i biznesowymi:

  • Rozbieżności zaokrągleń: Standardowa faktura pozwala na różne metody obliczania podatku VAT – od sumy wierszy lub od sumy wartości netto całego dokumentu. Schema KSeF narzuca precyzyjne reguły matematyczne, co przy braku synchronizacji algorytmów systemu ERP z walidatorem MF prowadzi do odrzucenia dokumentu.
  • Obsługa pól opcjonalnych: Wiele systemów ERP posiada własne, niestandardowe pola (np. numer projektu, kod MPK, nazwisko handlowca). Chociaż KSeF posiada dedykowane sekcje na dodatkowe informacje (np. węzeł StopkaFaktury lub dodatkowe linie opisu w wierszach), odpowiednie zmapowanie tych danych wymaga indywidualnej konfiguracji integracji.
  • Zmiany wersji schematu: Ministerstwo Finansów zastrzega sobie prawo do aktualizacji schematów. Każda taka zmiana (np. z FA_VAT(1) na FA_VAT(2)) wymaga aktualizacji oprogramowania ERP, w przeciwnym razie wysyłane dokumenty przestaną być przyjmowane.

Podsumowanie

Zrozumienie struktury XML i zasad działania schemy KSeF to kluczowy krok do udanej transformacji cyfrowej w każdym przedsiębiorstwie. Zamiast traktować KSeF jako uciążliwy obowiązek prawny, warto spojrzeć na niego jak na szansę na pełną automatyzację obiegu dokumentów. Ustrukturyzowane dane XML pozwalają na wyeliminowanie papieru, skrócenie czasu przetwarzania faktur oraz zminimalizowanie ryzyka błędów księgowych, co bezpośrednio przekłada się na oszczędność czasu i pieniędzy.