ValidateFin
Powrót do bloga
Walidacja9 min czytaniaAutor: Eliel Nicaise

Walidacja XML finansowego: 10 najczęstszych błędów i jak ich unikać

Techniczny przewodnik o 10 najczęstszych błędach przy walidacji plików XML finansowych (SEPA, UBL, Camt) i jak je korygować.

Dlaczego walidacja XML jest krytyczna w finansach

Finansowe pliki XML — SEPA pain.001, UBL/Peppol, Camt.053 — są przetwarzane automatycznie przez systemy bankowe i podatkowe bez interwencji człowieka. Błąd w XML może skutkować odrzuceniem płatności, nieważną fakturą lub niemożliwym do importu wyciągiem.

Walidacja XML finansowego działa na wielu poziomach: walidacja struktury (XSD Schema), walidacja reguł biznesowych (Schematron) i walidacja semantyczna (IBAN mod-97, NIF itp.). Każdy poziom wykrywa różne typy błędów.

10 najczęstszych błędów

Na podstawie analizy tysięcy zwalidowanych finansowych plików XML:

Nieprawidłowy IBAN (mod-97)

IBAN nie przechodzi weryfikacji mod-97. Częsty błąd przy migracji danych lub w systemach niewalidujących sumy kontrolnej.

Nieprawidłowa przestrzeń nazw XML

Przestrzeń nazw XML nie odpowiada oczekiwanej wersji formatu. Np.: użycie przestrzeni nazw pain.001.003.03, gdy bank oczekuje pain.001.001.09.

Nieprawidłowe sumy kontrolne

Łączna suma transakcji zadeklarowana w nagłówku nie odpowiada sumie poszczególnych transakcji. Typowy błąd automatycznego generowania.

Spacje nieusunięte do transmisji elektronicznej

IBAN jest wyświetlany ze spacjami dla czytelności (DE89 3704 0044 0532 0130 00), ale musi być przesyłany bez spacji w XML SEPA i e-fakturach (DE89370400440532013000). Spacje w polach XML powodują błędy walidacji schematu.

Cyfry kontrolne zastąpione zerami (błąd szablonu)

Niektóre szablony ERP używają zastępczych numerów IBAN jak DE00XXXXXXXXXXXXXXXXXXX, gdzie cyfry kontrolne to 00. Przechodzą one walidację długości, ale nie przechodzą sumy kontrolnej mod-97. Zawsze obliczaj poprawne cyfry kontrolne podczas tworzenia lub testowania szablonów IBAN.

Konto zamknięte lub zmieniony numer rachunku bankowego

Format IBAN jest poprawny, ale konto już nie istnieje. Powoduje to kod zwrotny AC04 (Zamknięte konto) po dotarciu płatności do banku dłużnika. Regularne aktualizacje bazy danych IBAN dostawców są wymagane, aby zapobiec zwrotom AC04.

IBAN spoza SEPA w pliku płatności SEPA

Niektóre kraje mają formaty podobne do IBAN (np. Liban LB, Katar QA), ale nie należą do strefy SEPA. Pliki płatnicze SEPA akceptują tylko numery IBAN z 36 krajów członkowskich SEPA. Umieszczenie IBAN spoza SEPA powoduje błąd walidacji schematu.

Brakujący lub nieprawidłowy BIC powiązany z IBAN

Od 2016 r. BIC nie jest wymagany dla transakcji wewnątrz-SEPA (jest wywodzony z IBAN). Jednak niektóre systemy bankowe nadal weryfikują spójność BIC/IBAN. Niezgodny BIC (poprawny IBAN, ale BIC innego banku) może powodować błędy routingu w niektórych starszych systemach bankowych.

Błędy danych referencyjnych

Błędy 4-6: Nieprawidłowy BIC (nierozpoznany kod bankowy), data w nieprawidłowym formacie (obowiązkowy YYYY-MM-DD, a nie DD/MM/YYYY), kwota pieniężna w nieprawidłowym formacie (użyj '.' jako separatora dziesiętnego, nie ',').

Błędy 7-8: Nieprawidłowy numer VAT (niezachowany format krajowy), zduplikowana referencja (EndToEndId już użyta w poprzedniej transakcji w tej samej partii).

Jak wdrożyć walidację prewencyjną

Zawsze waliduj przed złożeniem: używaj narzędzi walidacyjnych przed wysłaniem do banku lub platformy. Nasz walidator pozwala wykrywać błędy w sekundy, przed jakimkolwiek odrzuceniem.

Zwaliduj IBAN teraz

Często zadawane pytania

Czym jest walidacja XSD vs Schematron?

XSD (XML Schema Definition) waliduje strukturę XML: obowiązkowe elementy, typy danych, kolejność elementów. Schematron waliduje reguły biznesowe: spójne sumy, referencje krzyżowe itp.

Dlaczego mój plik SEPA jest odrzucany przez bank?

Najczęstsze przyczyny: nieprawidłowy IBAN, błędna przestrzeń nazw, nieprawidłowe sumy kontrolne, data wartości w przeszłości, zduplikowana referencja. Użyj naszego walidatora do diagnostyki.

Jak ręcznie sprawdzić IBAN?

Przesuń pierwsze 4 znaki na koniec, zamień litery na cyfry (A=10, B=11 itp.), oblicz resztę z dzielenia przez 97. Jeśli wynik wynosi 1, IBAN jest prawidłowy.

Czym jest EndToEndId i dlaczego jest ważny?

EndToEndId to referencja end-to-end w płatności ISO 20022. Musi być unikalna dla każdej transakcji i jest transportowana przez wszystkie systemy do beneficjenta, ułatwiając uzgadnianie.

Jak unikać błędów kodowania UTF-8 w plikach XML?

Zawsze deklaruj <?xml version="1.0" encoding="UTF-8"?> i upewnij się, że plik jest faktycznie zapisany w UTF-8 bez BOM. Używaj edytorów pokazujących kodowanie pliku.

Jakie znaki są dozwolone w polach tekstowych SEPA?

SEPA ogranicza do podzbioru znaków Latin: a-z, A-Z, 0-9 i niektórych specjalnych (/-?:().,'+). Znaki akcentowane i specjalne znaki krajowe nie są dozwolone w wielu polach.

Jak walidować sumy kontrolne w pliku pain.001?

CtrlSum w nagłówku musi być równy sumie wszystkich InstdAmt transakcji. NbOfTxs musi być równy całkowitej liczbie transakcji w pliku.

Co oznacza błąd 'namespace mismatch'?

Przestrzeń nazw XML zadeklarowana w pliku nie odpowiada formatowi oczekiwanemu przez system odbierający. Każda wersja formatu ma unikalną przestrzeń nazw (np. urn:iso:std:iso:20022:tech:xsd:pain.001.001.09).

Jak testować pliki SEPA przed wysłaniem do banku?

Użyj naszego bezpłatnego walidatora do weryfikacji strukturalnej i reguł biznesowych. Wiele banków oferuje również środowiska testowe (sandbox) dla testów end-to-end.

Czy istnieje uniwersalny format XML finansowy dla wszystkich krajów?

ISO 20022 to norma universalna, ale każdy kraj i typ transakcji ma specyficzne warianty. Peppol BIS Billing 3.0 to najbardziej zharmonizowany format dla faktur w Europie.