Nawigacja

fino data services logo

Wiedza · E-faktura

Walidacja e-faktury i prawidłowe odczytywanie raportu z walidacji

Gdy e-faktura z Państwa oprogramowania zostaje odrzucona, zespół musi na podstawie raportu z walidacji ustalić, które pole wywołało komunikat i kto może je poprawić.

Pokazujemy, jak czytać raport z walidacji i w których miejscach walidacja powinna znaleźć się w Państwa oprogramowaniu.

Co jest sprawdzane podczas walidacji e-faktury

Walidator sprawdza e-fakturę kolejno pod kątem trzech zestawów reguł i odnotowuje każdą rozbieżność w raporcie z walidacji.

Schemat XML składni

E-faktura zgodna z EN 16931 występuje w jednej z dwóch składni: UBL lub UN/CEFACT CII. Wszystkie popularne specyfikacje użycia opierają się na tych dwóch składniach, na przykład XRechnung, ZUGFeRD i Peppol BIS Billing 3.0.

Schemat XML składni określa, które elementy są dozwolone, w jakiej kolejności występują i jaki mają typ danych.

Błędy schematu nie mają identyfikatora reguły. Parser XML zgłasza je z własnymi kodami, na przykład cvc-complex-type.2.4.a dla elementu w miejscu, w którym schemat go nie oczekuje.

W przypadku ZUGFeRD plik CII jest osadzony w pliku PDF. Walidator sprawdza część XML. W razie rozbieżności z częścią graficzną to ona jest rozstrzygająca, zgodnie z pismem BMF z 15 października 2025 r. w sprawie wprowadzenia obowiązkowej e-faktury.

Reguły biznesowe EN 16931

Reguły biznesowe sprawdzają dane e-faktury pod kątem błędów logicznych, na przykład czy pola obowiązkowe są wypełnione i czy sumy do siebie pasują. Europejski Komitet Normalizacyjny (CEN) publikuje te reguły jako pliki Schematron na GitHubie, osobno dla UBL i dla CII.

Po prefiksie identyfikatora reguły rozpoznają Państwo rodzaj kontroli. Reguły z BR i liczbą sprawdzają pola obowiązkowe i ich liczbę, BR-CO sprawdza obliczenia i zależności między polami, BR-CL sprawdza listy kodów, a BR-DEC miejsca po przecinku w kwotach. Reguły takie jak BR-S, BR-AE czy BR-IC sprawdzają dane dotyczące poszczególnych kategorii VAT.

Pliki CEN zawierają ponadto reguły specyficzne dla składni. Reguły z prefiksem UBL-CR zgłaszają na przykład ostrzeżenie, gdy plik UBL zawiera elementy nienależące do modelu danych EN 16931.

Reguły XRechnung i Peppol BIS Billing 3.0

XRechnung i Peppol BIS Billing 3.0 to specyfikacje użycia normy EN 16931, w języku fachowym nazywane CIUS (Core Invoice Usage Specification). Narzucają dodatkowe pola i uzupełniają EN 16931 o własne reguły. CIUS nie może wprowadzać nowych pól danych.

Reguły XRechnung zaczynają się od BR-DE i pochodzą od niemieckiego Urzędu Koordynacji Standardów IT (Koordinierungsstelle für IT-Standards, KoSIT). Peppol BIS Billing 3.0 dodaje reguły z prefiksami PEPPOL-EN16931 i PEPPOL-COMMON oraz reguły specyficzne dla poszczególnych krajów.

Identyfikator specyfikacji w BT-24 określa, która specyfikacja użycia obowiązuje dla pliku. Walidator KoSIT na podstawie tego identyfikatora wybiera odpowiedni scenariusz kontroli. Błędny lub nieaktualny identyfikator może więc sprawić, że plik zostanie sprawdzony pod kątem innych reguł lub odrzucony.

Czego walidacja nie sprawdza

Walidator nie rozpoznaje, czy stawka podatku pasuje do świadczenia ani czy opis świadczenia jest wystarczający.

Według niemieckiego Federalnego Ministerstwa Finansów wszystkie obowiązkowe dane wymagane przepisami o VAT muszą znajdować się w ustrukturyzowanej części e-faktury. Samo odesłanie do załącznika z opisem świadczenia nie wystarcza. Nazwa pozycji typu „patrz załącznik” w BT-153 mimo to przechodzi walidację, ponieważ żadna reguła nie ocenia treści tego pola.

KoSIT i Forum Faktury Elektronicznej Niemcy (Forum elektronische Rechnung Deutschland, FeRD) opublikowały tabelę, która przyporządkowuje obowiązkowym danym wymaganym przez niemiecką ustawę o VAT odpowiednie pola BT. Na podstawie tej tabeli mogą Państwo ustalić, które obowiązkowe dane Państwa oprogramowanie powinno zabezpieczyć własnymi kontrolami wiarygodności.

Budowa raportu z walidacji

Każdy wpis w raporcie z walidacji zawiera z reguły cztery informacje.

Identyfikator reguły

Identyfikator reguły, taki jak BR-CO-15 lub BR-DE-2, odsyła do reguły w dokumentacji danego zestawu reguł.

Poziom ważności

Walidator oznacza każdy komunikat jako błąd lub ostrzeżenie. W regułach Peppol błędy nazywane są fatal. Samo ostrzeżenie z reguły nie prowadzi do odrzucenia. Niektóre walidatory wyświetlają ponadto wskazówki, czyli zalecenia dotyczące poprawnego wdrożenia bez wpływu na wynik. Walidator KoSIT na końcu raportu zaleca przyjęcie lub odrzucenie dokumentu.

Peppol często wprowadza nowe reguły najpierw jako ostrzeżenie i w późniejszym wydaniu podnosi je do rangi błędu. W wersji 3.0.21 na przykład reguły PEPPOL-COMMON-R052 i PEPPOL-COMMON-R053 zmieniły się z ostrzeżeń w błędy, jak podają informacje o wydaniu Peppol BIS Billing 3.0.

Lokalizacja

Lokalizacja to wyrażenie XPath wskazujące element XML, którego dotyczy komunikat. Ten sam numer BT znajduje się w UBL i CII w różnych miejscach. Kwota faktury z VAT (BT-112) znajduje się w UBL w elemencie cbc:TaxInclusiveAmount pod cac:LegalMonetaryTotal, a w CII w elemencie ram:GrandTotalAmount pod ram:SpecifiedTradeSettlementHeaderMonetarySummation.

W przypadku reguł porównujących kilka pól lokalizacja często wskazuje element nadrzędny. Wartość, która wywołuje komunikat, znajdą Państwo wtedy na podstawie treści komunikatu.

Treść komunikatu

Treść komunikatu opisuje regułę i zwykle podaje numery BT, których dotyczy. Komunikat do BR-CO-15 mówi na przykład, że kwota faktury z VAT (BT-112) musi być równa sumie kwoty faktury bez VAT (BT-109) i kwoty VAT (BT-110).

Od wersji 3.0.21 treści reguł Peppol zaczynają się od identyfikatora reguły.

Analiza raportów z walidacji we właściwej kolejności

Długi raport z walidacji często wynika z kilku nielicznych przyczyn.

  1. Usunięcie błędów schematu

    Dopóki plik nie spełnia schematu, wyniki reguł biznesowych mają niewielką wartość lub w ogóle ich brak. Dlatego najpierw należy usunąć błędy schematu w eksporcie, a następnie ponownie zwalidować plik.

  2. Grupowanie wpisów według identyfikatora reguły

    Błąd w mapowaniu może wystąpić w każdej pozycji faktury. Faktura z 40 pozycjami generuje wtedy 40 wpisów dotyczących tej samej reguły, które wynikają z jednej przyczyny. Dlatego raport należy analizować według identyfikatorów reguł.

  3. Rozpoznawanie błędów następczych

    Jeden brakujący element może naruszać kilka reguł jednocześnie. Jeśli brakuje zestawienia VAT (BG-23), walidator zgłasza na przykład BR-CO-18, a dodatkowo reguły dotyczące danej kategorii VAT, takie jak BR-S-01. Najpierw należy usunąć przyczynę i ponownie przeprowadzić walidację, zanim zajmą się Państwo pozostałymi komunikatami pojedynczo.

  4. Przez numer BT do własnego modelu danych

    Numer BT łączy raport z walidacji z Państwa oprogramowaniem. Warto prowadzić przyporządkowanie każdego numeru BT do pola bazy danych, pola formularza w interfejsie i odpowiedzialności. Odpowiedzialność określa, czy błąd usuwa Państwa zespół, czy Państwa klient, na przykład gdy brakuje danych podstawowych.

  5. Ocena i dokumentowanie ostrzeżeń

    Dla każdego ostrzeżenia należy zdecydować, czy zostanie usunięte, czy świadomie zaakceptowane, i udokumentować tę decyzję. Przy każdym nowym wydaniu warto sprawdzić, czy zaakceptowane ostrzeżenie nie zostało podniesione do rangi błędu.

Typowe przyczyny błędów według grup reguł

Grupa reguł często już wskazuje, w którym miejscu Państwa oprogramowania należy wprowadzić korektę.

Błędy schematu bez identyfikatora reguły

Przyczyną jest kolejność elementów, przestrzeń nazw lub błędny typ danych w eksporcie. Korektę wprowadza się w funkcji eksportu, jednorazowo dla wszystkich klientów.

BR z liczbą

Przyczyną jest pole obowiązkowe, które nie zostało zmapowane lub jest puste w danych podstawowych. Korektę wprowadza się w mapowaniu lub przy polu obowiązkowym w interfejsie.

BR-CO i BR-DEC

Przyczyną są sumy, zaokrąglenia, rabaty i dopłaty na poziomie dokumentu. Korektę wprowadza się w logice obliczeń przy tworzeniu faktury.

BR-CL

Przyczyną jest nieaktualny lub własny kod, na przykład dla jednostek miary lub krajów. Korektę wprowadza się w listach kodów w Państwa oprogramowaniu.

BR-S, BR-AE, BR-IC i inne kategorie

Kategoria VAT, stawka podatku i podstawa zwolnienia do siebie nie pasują. Korektę wprowadza się w logice podatkowej i w danych podstawowych artykułów.

UBL-CR

Eksport zawiera elementy UBL spoza modelu danych EN 16931. Korektę wprowadza się w funkcji eksportu.

BR-DE

Brakuje danych kontaktowych sprzedawcy, danych płatności lub referencji nabywcy. Korektę wprowadza się zwykle w danych podstawowych Państwa klientów.

PEPPOL-EN16931 i PEPPOL-COMMON

Brakuje adresu elektronicznego lub identyfikator ma błędny format. Korektę wprowadza się w danych podstawowych i w zarządzaniu identyfikatorami Peppol ID.

Brak referencji nabywcy w XRechnung (BR-DE-15)

Reguła BR-DE-15 zgłasza brak referencji nabywcy w BT-10. W fakturach do administracji publicznej znajduje się tam identyfikator Leitweg-ID urzędu. Dla faktur B2B według niemieckiego Federalnego Ministerstwa Finansów na potrzeby VAT wystarczy symbol zastępczy, taki jak „-”, jeśli odbiorca faktury nie podaje własnego oznaczenia. Państwa oprogramowanie może więc w fakturach B2B wstępnie wypełniać to pole symbolem zastępczym, który Państwa klienci mogą nadpisać.

Różnice zaokrągleń w VAT (BR-S-09)

Reguła BR-S-09 porównuje kwotę VAT kategorii stawki podstawowej z iloczynem podstawy opodatkowania i stawki podatku. Jeśli Państwa oprogramowanie zaokrągla VAT dla każdej pozycji i sumuje kwoty, suma może od tego odbiegać. Przy wielu pozycjach odchylenie może przekroczyć tolerancję dopuszczaną przez regułę. Dlatego kwotę podatku należy obliczać dla każdej kategorii z podstawy opodatkowania i stawki podatku, tak jak przewiduje reguła.

Wbudowanie walidacji w Państwa oprogramowanie

Walidacja powinna znaleźć się w pięciu miejscach Państwa oprogramowania i procesu deweloperskiego.

Przed wysyłką

Państwa oprogramowanie powinno walidować każdą e-fakturę bezpośrednio po jej utworzeniu i wstrzymywać wysyłkę w razie błędów. Państwa klienci niewiele zrozumieją z identyfikatora reguły czy wyrażenia XPath. Dlatego reguły, które klienci mogą sami poprawić, warto przełożyć na wskazówkę przy danym polu formularza. Wskazówka do BR-DE-6, czyli numeru telefonu osoby kontaktowej sprzedawcy w BT-42, może brzmieć na przykład „Prosimy podać numer telefonu do kontaktu”.

Błędów wynikających z Państwa mapowania lub logiki obliczeń klient nie może usunąć. Takie błędy powinny trafiać jako wewnętrzna informacja do Państwa zespołu.

Przy odbiorze

Państwa oprogramowanie powinno walidować także przychodzące e-faktury i pokazywać wynik przy dokumencie. Plik oryginalny należy przechowywać w niezmienionej postaci, a raport z walidacji jako osobny dokument obok niego. Niemieckie Federalne Ministerstwo Finansów wymaga, aby przynajmniej ustrukturyzowana część e-faktury była przechowywana w nienaruszonej, oryginalnej postaci.

Jeśli faktura przychodząca zawiera błędy, Państwa klient może zażądać od wystawcy faktury korygującej. Państwa oprogramowanie może wspierać ten krok, na przykład przygotowanym zapytaniem do wystawcy, które zawiera raport z walidacji.

W testach automatycznych

Warto utworzyć zbiór faktur testowych, który obejmuje Państwa rodzaje faktur wraz z ich kodami, na przykład 380 dla faktury i 384 dla faktury korygującej. Należy też uwzględnić każdą kategorię VAT, z której korzystają Państwa klienci. Do tego dochodzą rabaty i dopłaty oraz każda składnia generowana przez Państwa oprogramowanie. Warto też dodać celowo błędne pliki i sprawdzić, czy walidator je odrzuca.

Walidator KoSIT to program open source uruchamiany z wiersza poleceń, który można włączyć do potoku budowania (build pipeline). KoSIT udostępnia ponadto zestaw testów z przykładowymi fakturami, który dobrze nadaje się jako punkt wyjścia dla własnego zbioru.

Po każdej aktualizacji zestawów reguł

Zestawy reguł zmieniają się także bez nowego numeru wersji. KoSIT regularnie publikuje dla XRechnung 3.0.2 pakiety (bundles) z poprawkami błędów, ostatnio w wersji z 31 sierpnia 2026 r.. XRechnung 3.0 obowiązuje co najmniej do 31 lipca 2027 r.

Wersja wstępna specyfikacji XRechnung 4.0 ukazała się 15 września 2026 r. Wyraźnie nie jest przeznaczona do zastosowań produkcyjnych, lecz daje Państwu wczesny przegląd nowych i zmienionych funkcjonalności. Wersja finalna ukaże się prawdopodobnie wiosną 2027 r. wraz z komponentami technicznymi.

OpenPeppol regularnie publikuje nowe wydania Peppol BIS Billing 3.0, w ostatnich latach każdorazowo w maju i listopadzie. Wersja 3.0.21 została opublikowana 20 maja 2026 r. i obowiązuje od 17 sierpnia 2026 r.

Dla każdego wydania warto zaplanować stały termin, w którym zbiór testowy zostanie zwalidowany według nowych reguł. W każdym raporcie z walidacji należy odnotować, z jaką wersją walidatora i zestawu reguł powstał. Dzięki temu można odtworzyć wynik także wtedy, gdy reguły w międzyczasie się zmieniły. Na potrzeby przejścia na XRechnung 4.0 Państwa środowisko testowe powinno móc sprawdzać obie wersje równolegle.

Analiza raportów z walidacji dla wszystkich klientów

Jeśli Państwa oprogramowanie generuje e-faktury dla wielu klientów, opłaca się analizować raporty z walidacji łącznie dla wszystkich klientów. Jeśli ten sam identyfikator reguły nagle pojawia się u wielu klientów, przyczyna leży prawdopodobnie w mapowaniu lub w nowym zestawie reguł. Jeśli występuje tylko u jednego klienta, przyczyna leży raczej w jego danych podstawowych.

Walidacja z InvoiceRails

Kroki opisane w tym artykule mogą Państwo w całości wdrożyć samodzielnie. Jednorazowy nakład pracy jest niewielki, ale stały już nie: zestawy reguł, listy kodów i konfiguracje kontroli zmieniają się kilka razy w roku, a każda zmiana musi trafić do Państwa testów, wysyłki i planowania wydań.

Walidację, wysyłkę i utrzymanie zestawów reguł można więc także przekazać certyfikowanemu Peppol Access Pointowi, takiemu jak InvoiceRails.

Walidator e-faktur do pojedynczych kontroli

Bezpłatny walidator e-faktur InvoiceRails sprawdza pliki XML w UBL i CII oraz hybrydowe faktury PDF, bez logowania. Automatycznie rozpoznaje składnię, wersję i profil, w tym XRechnung, Peppol BIS Billing 3.0, ZUGFeRD, Factur-X i inne profile EN 16931. Następnie waliduje plik względem schematu XML oraz reguł Schematron i reguł biznesowych rozpoznanego profilu. Raport z walidacji można pobrać jako PDF lub udostępnić linkiem, na przykład gdy Państwa dział wsparcia omawia z klientem odrzuconą fakturę.

API InvoiceRails w Państwa oprogramowaniu

InvoiceRails to certyfikowany przez OpenPeppol Peppol Access Point fino data services. Państwa oprogramowanie łączy się z InvoiceRails przez REST API i za jego pośrednictwem wysyła i odbiera e-faktury dla dowolnej liczby klientów, na życzenie jako white label.

API oferuje walidację jako osobny endpoint, również z automatycznym rozpoznawaniem profilu. Państwa oprogramowanie może dzięki temu sprawdzać e-faktury bezpośrednio po ich utworzeniu. Każdy komunikat w odpowiedzi zawiera identyfikator reguły, poziom ważności, treść komunikatu i lokalizację jako XPath. Państwa oprogramowanie może zapisać identyfikator walidacji przy fakturze i ponownie pobierać wynik przez co najmniej 90 dni.

InvoiceRails waliduje każdy plik, który Państwa oprogramowanie wysyła przez Peppol, także bez tego wywołania. Państwa oprogramowanie musi wcześniej sprawdzić, jakie formaty obsługuje odbiorca.

InvoiceRails sprawdza także przychodzące e-faktury i przekazuje Państwa oprogramowaniu plik oryginalny wraz z odczytanymi danymi faktury. Webhook informuje Państwa oprogramowanie o każdej zmianie statusu doręczenia.

Po stronie Państwa oprogramowania pozostaje przyporządkowanie pól z Państwa modelu danych, zrozumiałe wskazówki w Państwa interfejsie oraz kontrole wiarygodności dla obowiązkowych danych, których nie obejmuje żadna reguła.

Najczęstsze pytania

Walidator KoSIT sprawdza dokumenty XML względem schematu i reguł Schematron. To, które reguły mają przy tym zastosowanie, zależy od wczytanej konfiguracji kontroli. KoSIT publikuje jedną konfigurację dla XRechnung i jedną dla Peppol BIS Billing 3.0, opartą na plikach kontrolnych OpenPeppol. Jeśli nie chcą Państwo samodzielnie utrzymywać zestawów reguł, mogą Państwo zintegrować walidację przez endpoint API InvoiceRails, który automatycznie rozpoznaje profil. Niemieckie Federalne Ministerstwo Finansów nie zaleca żadnego konkretnego walidatora. Ważne jest, aby Państwa walidator korzystał z aktualnie obowiązujących wersji zestawów reguł.

Walidatory mogą korzystać z różnych wersji zestawów reguł lub sprawdzać plik pod kątem różnych specyfikacji użycia. Walidator, który sprawdza tylko EN 16931, nie zgłosi na przykład naruszeń reguł XRechnung, takich jak BR-DE-15. Niektóre walidatory sprawdzają dodatkowo własne reguły, których nie ma w żadnym oficjalnym zestawie reguł. Dlatego najpierw należy porównać informacje o wersjach, sprawdzaną specyfikację i pochodzenie zgłoszonego identyfikatora reguły.

Automatyczne odrzucenie nie jest konieczne. Według niemieckiego Federalnego Ministerstwa Finansów walidacja nie jest bezpośrednim warunkiem podatkowego uznania faktury. Decyzja należy do Państwa klientów. Państwa oprogramowanie powinno w tym celu pokazywać im raport z walidacji.

Decydujący jest profil podany w identyfikatorze specyfikacji BT-24. Profile MINIMUM i BASIC-WL według niemieckiego Federalnego Ministerstwa Finansów nie spełniają wymogów VAT stawianych e-fakturze. Państwa oprogramowanie powinno więc generować dla e-faktur wyższy profil.

Warto doczytać

Czym jest Peppol BIS Billing 3.0?
E-faktura

Czym jest Peppol BIS Billing 3.0?

Peppol BIS Billing 3.0 to specyfikacja OpenPeppol dla faktur i not uznaniowych w sieci Peppol. Jest to specyfikacja użycia (CIUS) europejskiej normy EN 16931. Każda faktura zgodna z BIS Billing 3.

E-faktura w Belgii
Factsheet

E-faktura w Belgii

W Belgii ustrukturyzowana e-faktura w B2B jest od 1 stycznia 2026 r. obowiązkowa jednocześnie przy wysyłce i odbiorze, bez stopniowania według wielkości przedsiębiorstwa.

XRechnung, ZUGFeRD i BIS Billing 3.0 – jakie formaty e-faktur powinno obsługiwać Państwa oprogramowanie
E-faktura

XRechnung, ZUGFeRD i BIS Billing 3.0 – jakie formaty e-faktur powinno obsługiwać Państwa oprogramowanie

Od 1 stycznia 2027 r. przedsiębiorstwa w Niemczech, których łączny obrót w poprzednim roku przekroczył 800 000 euro, muszą wysyłać e-faktury.

Walidacja, wysyłka i odbiór przez jedno API

Pokazujemy, jak Państwa oprogramowanie waliduje, wysyła i odbiera e-faktury przez InvoiceRails, dla dowolnej liczby klientów.

Zobacz InvoiceRails