creationX
KSeF

Mapowanie FA(3) do ERP: model danych, XML i testy KSeF

Techniczny przewodnik po mapowaniu danych ERP do FA(3): model pośredni, reguły pól, walidacja XML, korekty, identyfikatory i testy regresji.

Ilustracja do artykułu: Mapowanie FA(3) do ERP: model danych, XML i testy KSeF
RP

Roland Piątkowski

·aktualizacja ·6 min czytania

Dlaczego mapowanie FA(3) nie powinno być zestawem przypadkowych reguł

Struktura FA(3) jest obowiązującą strukturą logiczną e-Faktury w KSeF 2.0. Faktura ustrukturyzowana ma format XML zgodny ze wzorem opublikowanym w Centralnym Repozytorium Wzorów Dokumentów Elektronicznych. MF udostępnia również przykładowe pliki.

W ERP dane rzadko są przechowywane w układzie identycznym ze strukturą XML. Jeden dokument może łączyć dane kontrahenta, zamówienia, magazynu, podatków, płatności i księgi głównej. Dlatego bezpośrednie przypisanie „kolumna bazy → element XML” szybko staje się trudne do testowania.

Poniższe podejście dotyczy architektury danych. Nie rozstrzyga, jakie dane są wymagane w konkretnej sytuacji podatkowej.

Trzy warstwy zamiast jednego transformatora

Najbezpieczniejszy model składa się z trzech jawnych warstw:

  1. ekstrakcja z ERP — pobranie danych i identyfikatorów źródłowych,
  2. kanoniczny model faktury — uporządkowany model niezależny od XML,
  3. generator FA(3) — transformacja modelu na XML i walidacja względem XSD.

Model pośredni izoluje logikę biznesową ERP od szczegółów schematu. Pozwala też zapisać reguły w sposób czytelny dla księgowości, na przykład: „data sprzedaży pochodzi z dokumentu wydania, jeśli proces firmy tak ją wyznacza”, zamiast ukrywać warunek w szablonie XML.

Jak zbudować macierz mapowania

Dla każdego pola używanego w integracji warto zapisać:

Element procesu Co dokumentujemy
Pole docelowe Ścieżka lub element struktury FA(3)
Źródło Tabela, encja, API lub pole ERP
Reguła Transformacja, warunek obecności, wartość domyślna
Właściciel Osoba zatwierdzająca znaczenie biznesowe
Test Przypadek pozytywny, graniczny i negatywny
Ślad Identyfikator dokumentu źródłowego

Macierz powinna rozróżniać dane obowiązkowe ze względu na schemat, dane zależne od konkretnego przypadku i dane dobrowolne. Nie należy wypełniać pól opcjonalnych sztucznymi wartościami tylko po to, aby uzyskać rozbudowany XML.

Obszary, które wymagają osobnych decyzji

Identyfikacja stron

ERP powinien jednoznacznie wskazać sprzedawcę, nabywcę i ewentualne podmioty dodatkowe. W środowisku wielospółkowym sama nazwa firmy nie wystarcza — kontekst NIP wpływa również na autoryzację do API.

Zasady izolacji tych kontekstów opisuje przewodnik KSeF dla wielu spółek i numerów NIP.

Numer dokumentu i numer KSeF

Numer faktury nadawany w ERP i numer KSeF to różne identyfikatory. Numer KSeF jest nadawany po przyjęciu dokumentu przez system, zwracany w UPO i nie jest elementem wejściowego XML.

Model danych powinien przechowywać:

  • niezmienny identyfikator techniczny dokumentu ERP,
  • numer faktury z systemu źródłowego,
  • identyfikator żądania albo sesji,
  • numer KSeF po przyjęciu,
  • status oraz czas ostatniej aktualizacji.

Daty

Nie należy sprowadzać wszystkich dat do jednego pola ERP. Data wystawienia, sprzedaży, płatności i przyjęcia przez KSeF pełnią różne role. Reguły ich wyznaczania powinny być zatwierdzone przez właściciela procesu.

Pozycje, jednostki i zaokrąglenia

Testy powinny objąć rabaty, różne stawki, jednostki miary, wartości ujemne w dozwolonych scenariuszach, waluty oraz zaokrąglenia na poziomie pozycji i podsumowania. Generator nie powinien „naprawiać” różnic bez pozostawienia śladu.

Płatność

FA(3) wprowadza zmiany związane między innymi z prezentacją terminu płatności. ERP może przechowywać kilka terminów, harmonogram albo rozliczenia częściowe. Macierz mapowania musi wskazywać, które dane są źródłem dla konkretnego wariantu dokumentu.

Podmiot3 i role dodatkowe

MF wskazuje wśród zmian FA(3) nową rolę pracownika w Podmiot3 oraz rozwiązania dla JST i Grup VAT. Nie oznacza to, że każda integracja ma automatycznie wypełniać te pola. Powinna natomiast świadomie obsłużyć scenariusze występujące w organizacji.

Korekty

Korekta wymaga wiarygodnego powiązania z dokumentem pierwotnym. Jeśli ERP dopuszcza zmianę numerów, scalanie kartotek albo migracje, integracja musi zachować stabilny klucz techniczny i dane potrzebne do rekonstrukcji relacji.

Walidacja na dwóch poziomach

Walidacja biznesowa

Przed generowaniem XML system sprawdza reguły wynikające z procesu firmy:

  • czy dokument ma właściwego właściciela i spółkę,
  • czy kontrahent ma komplet danych używanych w danym scenariuszu,
  • czy sumy pozycji zgadzają się z nagłówkiem,
  • czy korekta wskazuje dokument pierwotny,
  • czy dokument nie został już skierowany do wysyłki.

Walidacja strukturalna

Wygenerowany XML musi być zgodny z aktualnym schematem FA(3). MF informuje, że dokument zawierający błędy, na przykład brak pól wymaganych przez strukturę, zostanie odrzucony.

Walidację XSD warto wykonywać:

  • w pipeline CI na zestawie wzorcowych dokumentów,
  • przed wysłaniem dokumentu,
  • po każdej zmianie mapowania,
  • po aktualizacji ERP lub generatora.

Błędy schematu to tylko jedna z klas awarii. Przed wdrożeniem warto sprawdzić również 12 typowych błędów integracji KSeF, w tym statusy, ponowienia i wynik częściowy paczki.

Testy kontraktowe i „złote pliki”

Dobry zestaw regresji zawiera zanonimizowane albo syntetyczne dane, które odzwierciedlają rzeczywiste warianty firmy. Dla każdego przypadku zapisuje się:

  1. dane wejściowe modelu kanonicznego,
  2. oczekiwany XML,
  3. wynik walidacji,
  4. oczekiwane powiązania identyfikatorów,
  5. odpowiedź środowiska testowego, jeśli test obejmuje API.

Przykładowe pliki MF są punktem odniesienia dla schematu, lecz nie zastępują przypadków biznesowych przedsiębiorstwa.

Wersjonowanie mapowania

Każda zmiana reguły powinna mieć:

  • numer wersji,
  • autora i osobę zatwierdzającą,
  • opis wpływu,
  • listę testów regresji,
  • datę wdrożenia,
  • sposób obsługi dokumentów utworzonych wcześniej.

Warto zapisywać wersję mapowania przy każdym wygenerowanym XML. Ułatwia to odtworzenie, dlaczego dokument miał konkretną postać.

Kryteria gotowego mapowania FA(3)

Mapowanie można uznać za gotowe, gdy:

  • każde używane pole ma jawne źródło i właściciela biznesowego,
  • identyfikatory ERP i KSeF nie są ze sobą mylone,
  • wszystkie rzeczywiste typy dokumentów mają testy,
  • XML przechodzi walidację na aktualnym XSD,
  • odrzucenie nie powoduje utraty dokumentu ani tworzenia niekontrolowanej kopii,
  • zmiany są wersjonowane,
  • księgowość zatwierdziła próbki,
  • testy na środowisku przeznaczonym do integracji nie używają rzeczywistych danych, jeśli regulamin środowiska tego zabrania.

Potrzebujesz przełożyć model FA(3) na konkretny ERP?

Macierz pól jest dopiero początkiem: produkcyjna integracja wymaga również wersjonowania reguł, walidacji, obsługi korekt i śladu identyfikatorów. Zobacz zakres integracji KSeF z ERP, jeśli chcesz przejść od analizy danych do kompletnego, testowalnego przepływu.

Omówmy mapowanie i integrację ERP →

Źródła oficjalne

Stan informacji: 31 lipca 2026 r.; źródła oficjalne zweryfikowano 2 sierpnia 2026 r. Materiał opisuje praktykę projektowania integracji, a nie interpretację prawa podatkowego.

Następny krok

Przełóż mapowanie FA(3) na działający przepływ

Poznaj zakres integracji KSeF z ERP: model danych, generowanie i walidacja XML, statusy, identyfikatory, ponowienia oraz testy end-to-end.

Najpierw ustalimy proces, używane systemy i ograniczenia. Nie musisz mieć gotowej specyfikacji.

RP

Roland Piątkowski

Założyciel creationX. Od 2004 roku projektuje i wdraża aplikacje biznesowe dla polskich firm. Specjalizuje się w systemach CRM, ERP i automatyzacji procesów.

Profil autora i artykuły