Factur-X vs ZUGFeRD vs UBL, praktyczny przewodnik po europejskim fakturowaniu
Nazewnictwo w europejskim fakturowaniu ustrukturyzowanym jest nieporządne. Factur-X, ZUGFeRD i UBL brzmią jak trzy konkurencyjne formaty i wiele materiałów dostawców traktuje je właśnie tak. Nie są to tak naprawdę konkurenty. Dwa z nich to to samo pod różnymi krajowymi nazwami, a trzeci działa na zupełnie innej warstwie stosu. Jeśli Twój system przekracza granice, będziesz miał do czynienia ze wszystkimi trzema, a zrozumienie ich wzajemnych relacji pozwoli zaoszczędzić zaskakująco dużo czasu na debugowaniu.
Oto praktyczna wersja.
Krótka odpowiedź
- ZUGFeRD to niemieckie hybrydowe kryterium fakturowania. PDF/A-3 z osadzonym XML.
- Factur-X to francuska nazwa tego samego. Schematy XML są wyrównane z ZUGFeRD 2.x na poziomie bajtów dla profili wspólnych dla obu standardów.
- UBL to inna warstwa. To czysty format faktury XML używany w sieci Peppol. Bez PDF.
Prawdziwe pytanie brzmi zatem nie “Factur-X vs ZUGFeRD vs UBL”, lecz “hybrydowy PDF (Factur-X / ZUGFeRD) vs czyste XML (UBL).”
ZUGFeRD i Factur-X: ten sam plik, inna naklejka
ZUGFeRD powstał w Niemczech w 2014 roku (FeRD = Forum elektronische Rechnung Deutschland). Francja przyjęła tę samą architekturę w 2017 roku pod nazwą Factur-X. Od wersji ZUGFeRD 2.1 profile MINIMUM, BASIC WL, BASIC, EN 16931 i EXTENDED są wyrównane bajtowo z odpowiednikami Factur-X. Poprawnie zbudowana faktura ZUGFeRD 2.1 EN 16931 jest prawidłową fakturą Factur-X EN 16931. Nie konwertujesz między nimi. Oznakowujesz plik marką, której oczekuje nabywca.
Wspólne profile w kolejności rosnącego poziomu szczegółowości:
- MINIMUM: absolutne minimum do celów księgowych. Suma, VAT, dostawca, nabywca.
- BASIC WL (bez pozycji): faktura na poziomie zagregowanym, bez pozycji.
- BASIC: pozycje, ale tylko obowiązkowe pola EN 16931 dla każdej pozycji.
- EN 16931: pełny europejski model semantyczny z EN 16931. To poziom, do którego kieruje się większość obowiązków B2B.
- EXTENDED: rozszerzenia dostawcy ponad EN 16931. Stosuj tylko wtedy, gdy obie strony systemu rozumieją dodatkowe pola.
Jeśli zaczynasz od nowa i nie masz konkretnych wymagań nabywcy, celuj w EN 16931. Jest to najniższy wspólny mianownik spełniający główne wymagania obowiązków z 2026 roku i produkuje ten sam plik niezależnie od krajowej etykiety, którą na nim umieścisz.
Gdzie mieści się UBL
UBL (Universal Business Language, OASIS) to coś innego. To nie jest PDF. To dokument XML, samodzielny, zaprojektowany do przesyłu między maszynami. Sieć Peppol działa na UBL. Belgijski obowiązek od 1 stycznia 2026 roku, fakturowanie rządowe Holandii i transgraniczny kanał do francuskiego Chorus Pro korzystają z UBL nad Peppol BIS Billing 3.0.
Relacja wygląda zatem tak:
- Factur-X / ZUGFeRD = PDF/A-3 z XML w środku. Zoptymalizowany dla przypadku: “potrzebuję kopii czytelnej dla człowieka ORAZ maszynowej w jednym pliku.”
- UBL = tylko XML. Zoptymalizowany dla przypadku: “maszyny po obu końcach, sieć obsługuje transport.”
W praktyce większość systemów UE potrzebuje obu. Wystawiasz fakturę jako UBL przez Peppol, bo tego wymaga obowiązek transportowy, a archiwizujesz kopię Factur-X / ZUGFeRD jako czytelny dla człowieka zapis, bo tego wymaga prawo podatkowe.
Uwaga: ZUGFeRD 2.x i Factur-X 1.x mogą również osadzać UBL, a nie tylko CII. Ten sam hybrydowy PDF może przenosić wewnątrz CII (Cross Industry Invoice, oryginalny schemat) lub UBL. Większość niemieckich systemów używa CII; większość francuskich używa UBL. Oba są prawidłowe. Jeśli otrzymujesz plik Factur-X, a Twój parser zna tylko CII, po cichu przeoczysz połowę przychodzących faktur z rynku niemieckiego.
Kiedy stosować który format
Stosuj wyłącznie UBL, gdy faktura będzie przetwarzana tylko przez maszyny, a sieć po obu stronach zajmuje się archiwizacją. To przypadek Peppol, transakcje rząd-przedsiębiorstwo i większość przepływów sektora publicznego.
Stosuj Factur-X / ZUGFeRD, gdy:
- Twój nabywca to firma prywatna, która chce zobaczyć fakturę przed zapłatą.
- Chcesz, żeby czytelny dla człowieka PDF był prawnie wiążącą kopią archiwalną.
- Przekraczasz granicę niemiecką lub francuską, gdzie hybryda jest dominującym prywatnym formatem.
- Chcesz mieć jeden plik do wysłania e-mailem i jeden do zaimportowania.
Stosuj oba równolegle, gdy obowiązek wymaga dostarczenia przez Peppol (UBL), a prawo podatkowe wymaga czytelnej dla człowieka kopii (PDF/A-3). Taka jest rzeczywistość B2B w Belgii od stycznia 2026 roku i taka będzie we Francji od września 2026 roku.
Przypadki brzegowe w obrocie transgranicznym
Kilka wzorców, które często łapią ludzi z zaskoczenia:
- Nabywca wymaga Factur-X, dostawca wysyła ZUGFeRD. Konwersja nie jest potrzebna, jeśli oba są w wersji 2.1 EN 16931. Wystarczy potwierdzić wersję. Widzimy systemy wykonujące tutaj bezcelowe przepisywanie XML.
- Nabywca wymaga UBL przez Peppol, dostawca ma tylko Factur-X. Konieczne jest wyodrębnienie osadzonego XML, przekształcenie CII do UBL i przesłanie przez Peppol. To najczęstsza luka “od hybrydy do czystego XML”.
- Dostawca wysyła Factur-X z UBL w środku, parser nabywcy oczekuje CII. Parsuje zero pozycji bez żadnego błędu. Potrzebny jest parser, który sprawdza oba warianty.
- PDF/A-3 prawidłowy, osadzony XML nieprawidłowy. Walidacja PDF/A-3 nie zagląda do załącznika. Potrzebny jest walidator, który sprawdza XML oddzielnie według EN 16931.
Dokładnie to robi nasz publiczny walidator pod adresem /check: sprawdza zgodność PDF/A-3, wyodrębnia załącznik niezależnie od tego, czy to CII czy UBL, i waliduje XML według semantycznego modelu EN 16931. Dla każdej warstwy otrzymujesz osobny wynik, więc gdy coś zawodzi, wiesz, czy problem tkwi w kontenerze, schemacie, czy danych.
Podsumowanie
Przestań myśleć o Factur-X, ZUGFeRD i UBL jako alternatywach. Factur-X i ZUGFeRD to ta sama koperta hybrydowa pod dwiema krajowymi markami. UBL to format czystego XML w sieci Peppol. Prawdziwe transgraniczne systemy w 2026 roku produkują oba, archiwizują hybrydę i przesyłają czyste XML. Kto mówi Ci, żebyś wybrał jedno, nie przekroczył jeszcze wystarczająco wielu granic.