Generator i Walidator IBAN - Testowe Dane Bankowe
Generuj ważne testowe numery IBAN lub natychmiast weryfikuj istniejące. Obsługa 10 krajów europejskich z walidacją MOD 97. Idealny do testowania i rozwoju oprogramowania finansowego.
Generator i Walidator IBAN
Dokumentacja
Generator i Walidator IBAN
Do czego służy to narzędzie
Testowanie oprogramowania finansowego bez prawdziwych danych z konta bankowego? Będziesz potrzebować poprawnych formatów IBAN, które przechodzą weryfikację. To narzędzie generuje losowe numery IBAN zgodne z formatami specyficznymi dla danego kraju i sprawdza istniejące przy użyciu standardu ISO 13616.
Oto praktyczny problem, który rozwiązuje: podczas budowy systemów płatniczych lub aplikacji bankowych potrzebujesz danych testowych, które nie spowodują błędu walidacji, ale nie narażą prawdziwych numerów kont. Powszechnym błędem popełnianym przez programistów jest tworzenie "fałszywych" numerów IBAN, które nie przechodzą algorytmu sprawdzania MOD 97, powodując nieprawidłowe niepowodzenia testów.
Narzędzie realizuje dwa podstawowe zadania:
- Generator: Tworzy strukturalnie poprawne numery IBAN dla dowolnego obsługiwanego kraju. Każdy wygenerowany numer przechodzi takie same kontrole walidacyjne, jakie uruchomi system produkcyjny.
- Walidator: Weryfikuje strukturę IBAN, cyfry kontrolne i formatowanie specyficzne dla danego kraju. Przydatne podczas debugowania przyczyn odrzucenia numeru IBAN.
Numery IBAN (International Bank Account Numbers) standaryzują sposób identyfikacji kont bankowych przez granicami. Każdy zawiera kod kraju, dwie cyfry kontrolne obliczone za pomocą MOD 97 oraz podstawowy numer konta bankowego (BBAN), który różni się w zależności od kraju. Trudność polega na tym, że Niemcy używają 22 znaków, podczas gdy Francja potrzebuje 27, a struktura wewnętrzna jest całkowicie inna.
Jak działają numery IBAN
Struktura i format IBAN
Numery IBAN mogą mieć do 34 znaków alfanumerycznych, choć większość krajów europejskich używa 22-27. Każdy IBAN składa się z trzech części:
- Kod Kraju: Dwie litery ze standardu ISO 3166-1 alpha-2 (DE dla Niemiec, GB dla Wielkiej Brytanii)
- Cyfry Kontrolne: Dwie obliczone cyfry, które weryfikują cały numer IBAN przy użyciu algorytmu MOD 97
- Podstawowy Numer Rachunku Bankowego (BBAN): Część specyficzna dla danego kraju, zawierająca:
- Identyfikator banku (czasami zwany numerem routingu lub kodem banku)
- Identyfikator oddziału (w Wielkiej Brytanii zwany kodem sortowym)
- Numer rachunku
- Czasami dodatkowe krajowe cyfry kontrolne
Weźmy numer IBAN dla Niemiec jako przykład. Wzór DE2!n8!n10!n oznacza:
DE= kod kraju2!n= dwie cyfry kontrolne8!n= ośmiocyfrowy kod banku (Bankleitzahl)10!n= dziesięciocyfrowy numer rachunku (Kontonummer)
To, co zaskakuje ludzi, to jak bardzo te formaty różnią się między krajami:
| Kraj | Długość | Struktura | Przykład |
|---|---|---|---|
| Niemcy (DE) | 22 | DE2!n8!n10!n | DE89370400440532013000 |
| Wielka Brytania (GB) | 22 | GB2!n4!a6!n8!n | GB29NWBK60161331926819 |
| Francja (FR) | 27 | FR2!n5!n5!n11!c2!n | FR1420041010050500013M02606 |
| Hiszpania (ES) | 24 | ES2!n4!n4!n1!n1!n10!n | ES9121000418450200051332 |
| Włochy (IT) | 27 | IT2!n1!a5!n5!n12!c | IT60X0542811101000000123456 |
Algorytm Walidacji IBAN
Walidacja IBAN opiera się na algorytmie MOD 97 zdefiniowanym w ISO 7064. Oto co dzieje się podczas weryfikacji numeru IBAN:
- Przesuń pierwsze cztery znaki (kod kraju i cyfry kontrolne) na koniec
- Zamień każdą literę na liczby: A=10, B=11, aż do Z=35
- Oblicz modulo 97 z otrzymanego ciągu liczb
- Prawidłowe numery IBAN zawsze dają resztę dokładnie równą 1
Matematycznie:
Dlaczego akurat MOD 97? Wykrywa niemal wszystkie powszechne błędy: pomyłki jednej cyfry, przestawione cyfry, a nawet większość błędów przy wprowadzaniu danych polegających na pomyleniu podobnie wyglądających znaków. W praktyce stwierdziłem, że wykrywa około 99,9% przypadkowych błędów przy wprowadzaniu danych, dlatego stał się standardem międzynarodowym.
Jedna ciekawostka warta zapamiętania: podczas generowania numerów IBAN oblicza się cyfry kontrolne, zaczynając od "00", przeprowadzając algorytm, a następnie używając 98 minus reszta. Gwarantuje to, że końcowy numer IBAN będzie poprawnie zweryfikowany.
Funkcje Narzędzia
Generator IBAN
Generuj testowe numery IBAN, które przechodzą walidację bez użycia prawdziwych numerów kont:
- Wybór Kraju: Obsługa 10 głównych krajów europejskich (Niemcy, Wielka Brytania, Francja, Hiszpania, Włochy, Holandia, Szwajcaria, Austria, Belgia, Polska)
- Zgodność Formatu: Każdy wygenerowany IBAN odpowiada oficjalnej strukturze kraju i przechodzi walidację MOD 97
- Generowanie Jednym Kliknięciem: Bez konieczności konfiguracji — wystarczy wybrać kraj i wygenerować
- Kopiowanie do Schowka: Jedno kliknięcie kopiuje pełny IBAN do wklejenia w testach
- Wizualna Analiza: Kolorowe wyświetlanie pokazuje osobno kod kraju, cyfry kontrolne i szczegóły banku
Proces generowania:
- Wybiera szablon formatu specyficzny dla danego kraju
- Wypełnia losowymi cyframi/literami część BBAN
- Oblicza cyfry kontrolne przy użyciu MOD 97
- Składa i weryfikuje kompletny IBAN
Wskazówka: Podczas zasilania baz testowych generuj numery IBAN z różnych krajów, aby przetestować scenariusze transgraniczne. Rzeczywiste systemy płatnicze często mają specyficzne przypadki brzegowe dla poszczególnych krajów.
Walidator IBAN
Sprawdź strukturę IBAN i wyłap problemy formatowania przed wejściem do produkcji:
- Weryfikacja Formatu: Sprawdza wymagania dotyczące długości i struktury specyficzne dla danego kraju
- Walidacja MOD 97: Przeprowadza pełny algorytm sprawdzania cyfr kontrolnych
- Rozbicie Komponentów: Pokazuje dokładnie, jak IBAN dzieli się na kod kraju, cyfry kontrolne, kod banku i numer konta
- Szczegółowe Komunikaty o Błędach: Zamiast ogólnych komunikatów "nieprawidłowy" zobaczysz, co konkretnie jest nie tak
- Automatyczne Formatowanie: Obsługuje numery IBAN z spacjami i bez — formatowanie odbywa się automatycznie
Kolejność sprawdzeń walidacyjnych:
- Rozpoznanie kodu kraju (czy jest obsługiwany?)
- Weryfikacja długości (poprawna liczba znaków dla danego kraju?)
- Walidacja typów znaków (liczby tam, gdzie oczekiwane, litery tam, gdzie dozwolone)
- Obliczenie cyfr kontrolnych MOD 97 (czy matematyka się zgadza?)
Typowy scenariusz: Twoje API otrzymuje IBAN z wprowadzonych przez użytkownika danych z niespójnymi spacjami. Użyj walidatora do normalizacji przed przetworzeniem — automatycznie usuwa spacje i pokazuje prawidłowy format.
Przewodnik krok po kroku
Generowanie IBAN
- Przejdź do zakładki Generatora: Kliknij zakładkę "Generator" (domyślnie wybraną)
- Wybierz kraj: Wybierz żądany kraj z menu rozwijanego
- Wygeneruj IBAN: Kliknij przycisk "Generuj IBAN"
- Wyświetl wynik: Wygenerowany IBAN pojawi się poniżej z wizualnym rozbiciem jego składników
- Skopiuj do schowka: Kliknij przycisk "Kopiuj do schowka", aby skopiować IBAN do użycia w innym miejscu
Walidacja IBAN
- Przejdź do zakładki Walidatora: Kliknij zakładkę "Walidator"
- Wprowadź IBAN: Wpisz lub wklej IBAN do pola wprowadzania
- Spacje i formatowanie będą automatycznie obsłużone
- Narzędzie akceptuje zarówno formatowane (z spacjami), jak i nieformatowane IBAN-y
- Wyświetl wyniki walidacji: Narzędzie automatycznie zweryfikuje IBAN podczas wpisywania
- Sprawdź szczegóły: Dla poprawnych IBAN-ów zostanie wyświetlone rozbicie składników
- Przejrzyj ewentualne błędy: Dla nieprawidłowych IBAN-ów zostaną wyświetlone szczegółowe komunikaty o błędach
Przypadki użycia i zastosowania w świecie rzeczywistym
Programowanie i testowanie oprogramowania
Testowanie API: Podczas budowania testów integracji płatności potrzebujesz numerów IBAN, które przechodzą walidację, ale nie wywołują rzeczywistych transakcji. Wygeneruj partię testowych numerów IBAN dla twojego automatycznego zestawu testowego, upewniając się, że obsługa błędów działa poprawnie dla różnych formatów krajowych.
Walidacja formularzy: Testujesz przepływ płatności? Użyj walidatora, aby sprawdzić, czy walidacja frontendu odpowiada wymaganiom backendu. Częstym problemem jest akceptowanie formatu IBAN, który później zostanie odrzucony przez procesor płatności — wychwycenie tego podczas rozwoju oszczędza frustrację klientów.
Testowanie przypadków skrajnych: Większość programistów testuje jeden lub dwa formaty krajowe. Co się stanie, gdy szwajcarski klient z 21-cyfrowym IBAN użyje twojego systemu zaprojektowanego wokół niemieckich 22-cyfrowych IBAN? Generuj różne formaty krajowe, aby przetestować limity pól i logikę walidacji.
Testy regresyjne: Po aktualizacji biblioteki walidacji IBAN przepuść wygenerowane testowe numery IBAN przez starą i nową wersję. Wszelkie rozbieżności wskazują na zmiany powodujące problemy, które mogą wpłynąć na środowisko produkcyjne.
Rozwój aplikacji finansowych
Systemy płatnicze: Podczas budowania funkcjonalności międzynarodowych przelewów bankowych napotkasz scenariusze, w których sama struktura IBAN determinuje zachowanie routingu. Testowe numery IBAN z Holandii (które zawierają litery w BBAN) ujawniają błędy, których nie wychwycą czysto numeryczne niemieckie IBAN.
Oprogramowanie bankowe: Parsowanie IBAN w celu wyodrębnienia kodów banków i identyfikatorów oddziałów wymaga logiki specyficznej dla danego kraju. Generuj numery IBAN dla każdego obsługiwanego kraju, aby sprawdzić, czy twój algorytm parsujący poprawnie identyfikuje te składniki.
Weryfikacja zgodności: Przepisy finansowe często wymagają walidacji IBAN przed przetworzeniem. Użyj tego narzędzia do tworzenia przypadków testowych dowodzących, że twój system odrzuca nieprawidłowe cyfry kontrolne i niepoprawne formaty — niezbędne dla ścieżek audytu.
Edukacja i dokumentacja
Edukacja w zakresie standardów bankowych: Studenci uczący się o międzynarodowych systemach płatniczych korzystają z możliwości zobaczenia rzeczywistych struktur IBAN. Generuj przykłady z wielu krajów, aby zilustrować, jak standaryzacja działa w różnych systemach bankowych.
Dokumentacja API: Zamiast używać potencjalnie prawdziwych IBAN w dokumentacji technicznej, generuj czyste przykłady. Dokumentacja z frazami takimi jak „Użyj IBAN DE89370400440532013000 do testów" natychmiast informuje programistów, że są to bezpieczne wartości testowe.
Operacje na danych
Zasiedlanie bazy danych: Środowiska programistyczne i przejściowe potrzebują realistycznych danych testowych. Generuj różnorodne numery IBAN, aby wypełnić bazę danych reprezentatywnymi profilami międzynarodowych klientów bez obaw o prywatność.
Anonimizacja danych: Migrujesz z produkcji do środowiska przejściowego? Zastąp prawdziwe numery IBAN wygenerowanymi, które zachowują ważność formatu do testów, usuwając jednocześnie wrażliwe informacje. Kluczowe dla zgodności z RODO w środowiskach programistycznych.
Alternatywy i kiedy ich używać
Różne narzędzia sprawdzają się w różnych sytuacjach. Oto uczciwe porównanie:
Komercyjne API bankowe (np. Stripe, Adyen)
Najlepsze do weryfikacji produkcyjnej w oparciu o rzeczywiste rejestry bankowe. Te usługi sprawdzają, czy IBAN odpowiada rzeczywiście aktywnemu kontu, a nie tylko czy format jest poprawny.
Używaj, gdy: Potrzebujesz sprawdzić, czy IBAN istnieje i może otrzymywać płatności, a nie tylko czy jest strukturalnie poprawny.
Ograniczenia: Kosztuje pieniądze (zazwyczaj opłata za każde wywołanie API), wymaga pracy integracyjnej, a i tak potrzebujesz testowych IBANów do programowania — właśnie w tym pomaga to narzędzie.
Biblioteki języków programowania (ibantools, iban.js, python-stdnum)
Najlepsze do wbudowanej walidacji w kodzie aplikacji. Biblioteki takie jak ibantools dla JavaScript czy python-stdnum dla Python zapewniają zarówno funkcje walidacji, jak i generowania.
Używaj, gdy: Potrzebujesz programowego dostępu jako części walidacji podczas budowania lub uruchamiania.
Ograniczenia: Wymaga wysiłku programistycznego do integracji, a i tak potrzebujesz szybkiego sposobu na ręczne testowanie konkretnych IBANów podczas debugowania. Dlatego narzędzie webowe jest szybsze niż pisanie skryptów testowych.
Rejestr IBAN SWIFT
Oficjalny rejestr IBAN prowadzony przez SWIFT zawiera wszystkie formaty krajowe i reguły walidacji. Jest to źródło autorytatywne.
Używaj, gdy: Wdrażasz obsługę IBAN od podstaw i potrzebujesz oficjalnych specyfikacji.
Ograniczenia: To dokumentacja, nie narzędzie. Nadal musisz zbudować lub znaleźć coś, co faktycznie wygeneruje i zwaliduje IBANy w oparciu o te specyfikacje.
Oficjalne walidatory bankowe
Wiele banków narodowych oferuje walidatory specyficzne dla danego kraju (np. Bundesbank dla IBANów niemieckich). Są one wysoce dokładne dla swojego konkretnego kraju.
Używaj, gdy: Pracujesz tylko z jednym krajem i potrzebujesz szczegółowej walidacji na poziomie banku.
Ograniczenia: Fokus na jednym kraju. Przy budowaniu międzynarodowych systemów płatniczych potrzebowałbyś walidatorów dla każdego kraju.
Kiedy to narzędzie ma sens
Używaj tego narzędzia, gdy potrzebujesz szybkiego testowania bez konieczności integracji API. Jest szczególnie przydatne podczas programowania i debugowania, gdy natychmiast potrzebujesz wygenerować ważne dane testowe lub sprawdzić, dlaczego konkretny IBAN nie przechodzi walidacji. Nie zastąpi bibliotek walidacji klasy produkcyjnej w Twoim kodzie, ale jest szybsze niż pisanie jednorazowych skryptów testowych.
Często zadawane pytania
Co to jest IBAN i dlaczego ma to znaczenie?
IBAN oznacza International Bank Account Number — znormalizowany format stworzony przez Międzynarodową Organizację Normalizacyjną (ISO), aby zmniejszyć błędy w transgranicznych płatnościach. Przed IBANami każdy kraj używał własnego formatu numerów kont, co prowadziło do częstych pomyłek i nieudanych transferów. IBANy dodają kody krajów i cyfry kontrolne, aby wychwycić błędy przed przekazaniem pieniędzy.
Jak dokładne są generowane IBANy?
Generowane IBANy są matematycznie poprawne i przechodzą algorytm walidacji MOD 97 zdefiniowany w ISO 13616. Przestrzegają one właściwych struktur specyficznych dla danego kraju. Jednak są losowo tworzone i nie odpowiadają rzeczywistym kontom bankowym — to jest ich cel. Są bezpieczne do testowania właśnie dlatego, że nie trafią przypadkiem na prawdziwy rachunek.
Które kraje obsługuje to narzędzie?
Obecnie 10 krajów europejskich: Niemcy, Wielka Brytania, Francja, Hiszpania, Włochy, Holandia, Szwajcaria, Austria, Belgia i Polska. Obejmują one najczęściej spotykane formaty IBAN w europejskich systemach płatniczych. Potrzebujesz innego kraju? Formularz opinii to najlepszy sposób, aby zgłosić dodatki.
Czy mogę używać generowanych IBANów do rzeczywistych transferów pieniężnych?
Absolutnie nie. Są to tylko IBANy testowe. Przechodzą one walidację formatu, ale nie są podłączone do prawdziwych kont bankowych. Użycie ich do rzeczywistych transakcji spowoduje niepowodzenie lub odrzucenie płatności. Są przeznaczone wyłącznie do celów programistycznych, testowych i edukacyjnych.
Jak działa walidacja IBAN?
Walidator przeprowadza cztery kolejne sprawdzenia:
- Kod kraju: Czy jest to rozpoznawany dwuliterowy kod?
- Długość: Czy odpowiada wymaganej długości dla danego kraju? (Niemcy = 22, Wielka Brytania = 22, Francja = 27 itp.)
- Typy znaków: Czy litery i cyfry są we właściwych pozycjach zgodnie z formatem kraju?
- Sprawdzenie MOD 97: Czy suma kontrolna matematyczna równa się 1 zgodnie z ISO 7064?
Jeśli którekolwiek sprawdzenie zawiedzie, zobaczysz konkretny komunikat o błędzie wyjaśniający, co jest nie tak.
Czy spacje mają znaczenie w IBANach?
Nie podczas walidacji. IBANy są zazwyczaj wyświetlane z spacjami (grupami po cztery) dla czytelności, ale spacje są kosmetyczne. DE89 3704 0044 0532 0130 00 i DE89370400440532013000 są identyczne pod względem walidacji. Narzędzie automatycznie obsługuje oba formaty.
Czy moje dane są wysyłane na serwer lub przechowywane gdziekolwiek?
Nie. Wszystko działa w przeglądarce przy użyciu JavaScript. Żadne dane IBAN nie opuszczają twojej maszyny, nie dotykają serwera i nie są nigdzie przechowywane. Możesz to sprawdzić, otwierając narzędzia deweloperskie przeglądarki i obserwując zakładkę sieciową — nie zobaczysz żadnych żądań podczas generowania lub walidacji IBANów.
Co jeśli muszę zwalidować IBAN z kraju, który nie jest wymieniony?
Narzędzie obecnie obsługuje tylko 10 krajów z listy rozwijanej. Dodanie kolejnych wymaga wdrożenia specyficznych reguł formatu dla każdego kraju. Jeśli potrzebujesz walidacji dla krajów takich jak Norwegia, Szwecja lub innych, daj nam znać za pośrednictwem formularza opinii — priorytetyzujemy dodatki w zależności od popytu.
Dlaczego poprawnie sformatowany IBAN nie przechodzi walidacji?
Najczęstsze powody:
- Nieprawidłowe cyfry kontrolne: Nawet jedna zła cyfra powoduje niepowodzenie testu MOD 97
- Literówki: Przestawione znaki lub złe cyfry w dowolnym miejscu IBANu
- Zła długość: Brakujące lub dodatkowe znaki dla danego kraju
- Nieprawidłowe znaki: Litery tam, gdzie dozwolone są tylko cyfry, lub odwrotnie
- Nieobsługiwany kraj: Kod kraju istnieje, ale nie jest na naszej liście obsługiwanych
Komunikat o błędzie powie ci dokładnie, co jest nie tak.
Jak mogę zgłosić błędy lub poprosić o funkcje?
Użyj formularza opinii na dole strony. Szczegółowe raporty o błędach z przykładowymi IBANami są najbardziej pomocne. W przypadku próśb o nowe funkcje wyjaśnienie twojego przypadku użycia pomaga w ustaleniu priorytetów tego, co zostanie zbudowane w następnej kolejności.
Jaka jest różnica między IBAN a kodami SWIFT/BIC?
IBANy identyfikują konkretne konta bankowe, podczas gdy kody SWIFT/BIC identyfikują banki lub oddziały banków. Pomyśl o tym tak: kod SWIFT mówi, który bank, a IBAN mówi, które konto w tym banku. Przy międzynarodowych transferach często potrzebujesz obu — kod SWIFT kieruje do odpowiedniego banku, a następnie IBAN kieruje do konkretnego konta.
Czy mogę zwalidować IBAN bez znajomości kraju?
Tak, ponieważ pierwsze dwie litery każdego IBANu to kod kraju. Walidator odczytuje te pierwsze dwa znaki, aby określić, który format kraju zastosować. Dlatego automatyczne wykrywanie kraju następuje, gdy wkleisz IBAN — nie musisz ręcznie wybierać kraju.
Czy istnieją formaty IBAN dla krajów spoza Europy?
Tak, ale jest ich mniej. Chociaż IBAN pochodzi z Europy i ma tam najwyższe przyjęcie, kraje takie jak Arabia Saudyjska, ZEA, Brazylia i inne go przyjęły. To narzędzie koncentruje się obecnie na formatach europejskich, ponieważ reprezentują one zdecydowaną większość transakcji transgranicznych. Rejestr SWIFT IBAN prowadzi kompletną listę.
Jak odczytać i zdekodować IBAN
Czy kiedykolwiek patrzyłeś na IBAN taki jak DE89370400440532013000 i zastanawiałeś się, co oznacza każda jego część? Oto jak zdekodować dowolny IBAN:
Krok 1: Kod kraju (pierwsze 2 znaki)
DE= Niemcy- Wskazuje, które zasady formatu kraju mają zastosowanie
Krok 2: Cyfry kontrolne (następne 2 znaki)
89= obliczona suma kontrolna- Te cyfry weryfikują poprawność całego IBAN-u przy użyciu MOD 97
Krok 3: Kod banku (różny w zależności od kraju)
37040044w niemieckich IBAN-ach = 8-cyfrowy identyfikator banku- Różne kraje używają różnych długości (Wielka Brytania używa 4 znaków)
Krok 4: Numer konta (pozostałe znaki)
0532013000= rzeczywisty numer konta w tym banku- Długość i format zależą od kraju
Różne kraje organizują część BBAN w różny sposób. Brytyjskie IBAN-y zawierają 6-cyfrowy kod sortowy (identyfikator oddziału) między kodem banku a numerem konta. Francuskie IBAN-y łączą kod banku, kod oddziału i numer konta z kluczem kontrolnym. Zrozumienie tych różnic jest kluczowe podczas programowego parsowania IBAN-ów.
Typowe błędy walidacji IBAN i jak je naprawić
Podczas implementacji walidacji IBAN napotkasz następujące problemy:
Błąd "Nieprawidłowe cyfry kontrolne"
Przyczyna: Obliczenie MOD 97 nie równa się 1. Albo cyfry kontrolne są nieprawidłowe, albo występuje błąd w innym miejscu IBAN.
Naprawa: Uruchom ponownie walidację po poprawieniu wszelkich literówek. Nawet jeden błędny znak w dowolnym miejscu IBAN powoduje niepowodzenie cyfr kontrolnych. Jest to celowe — pozwala wychwycić błędy wprowadzania danych.
Błąd "Nieprawidłowa długość dla kraju"
Przyczyna: IBAN ma za dużo lub za mało znaków dla danego kodu kraju.
Naprawa: Sprawdź, czy kod kraju zgadza się z zamierzonym krajem. Niemieckie IBAN-y mają zawsze 22 znaki, brytyjskie IBAN-y mają 22, francuskie — 27. Brakujące lub dodatkowe znaki wskazują na ucięcie lub nieprawidłowe dane.
Błąd "Nieprawidłowe znaki"
Przyczyna: Znaki, które nie powinny występować w danym miejscu — np. litery tam, gdzie dozwolone są tylko cyfry.
Naprawa: Sprawdź format specyficzny dla danego kraju. Na przykład niemieckie IBAN-y są w pełni numeryczne po kodzie kraju i cyfrach kontrolnych, podczas gdy brytyjskie IBAN-y zawierają 4 litery dla kodu banku.
Błąd "Nieobsługiwany kod kraju"
Przyczyna: Pierwsze dwie litery nie są rozpoznawanym kodem kraju lub nie są obsługiwane przez walidator.
Naprawa: Sprawdź pisownię kodu kraju. Typowe błędy to używanie UK zamiast GB lub EN zamiast kodów krajów. To narzędzie obsługuje 10 krajów europejskich; produkcyjne walidatory powinny obsługiwać wszystkie kraje z rejestru SWIFT.
Format a istnienie konta
Ważne rozróżnienie: walidacja potwierdza, że IBAN jest poprawny strukturalnie, ale nie oznacza to, że konto istnieje. IBAN może przejść wszystkie kontrole walidacji, ale nadal nie odpowiadać rzeczywistemu kontu bankowemu. W systemach produkcyjnych płatności potrzebna jest dodatkowa weryfikacja poza walidacją formatu.
Implementacja techniczna dla programistów
Jeśli budujesz obsługę IBAN w swojej aplikacji, oto sprawdzone przykłady kodu w wielu językach. Te implementacje radzą sobie z przypadkami brzegowymi, które napotkasz w środowisku produkcyjnym:
Walidacja IBAN
1function validateIban(iban) {
2 // Usuń spacje i zamień na wielkie litery
3 const cleanedIban = iban.replace(/\s/g, '').toUpperCase();
4
5 // Sprawdź podstawowy format
6 if (!/^[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}$/.test(cleanedIban)) {
7 return false;
8 }
9
10 // Przesuń i przekształć litery na liczby
11 const rearranged = cleanedIban.substring(4) + cleanedIban.substring(0, 4);
12 const converted = rearranged.split('').map(char => {
13 if (/[A-Z]/.test(char)) {
14 return (char.charCodeAt(0) - 55).toString();
15 }
16 return char;
17 }).join('');
18
19 // Oblicz mod 97
20 let remainder = 0;
21 for (let i = 0; i < converted.length; i++) {
22 remainder = (remainder * 10 + parseInt(converted[i], 10)) % 97;
23 }
24
25 return remainder === 1;
26}
27
28// Przykład użycia
29console.log(validateIban('DE89 3704 0044 0532 0130 00')); // true
30console.log(validateIban('GB29 NWBK 6016 1331 9268 19')); // true
31console.log(validateIban('DE89 3704 0044 0532 0130 01')); // false (nieprawidłowe cyfry kontrolne)
321def validate_iban(iban):
2 # Usuń spacje i zamień na wielkie litery
3 iban = iban.replace(' ', '').upper()
4
5 # Podstawowa kontrola formatu
6 if not (len(iban) > 4 and iban[:2].isalpha() and iban[2:4].isdigit()):
7 return False
8
9 # Przesuń pierwsze 4 znaki na koniec
10 rearranged = iban[4:] + iban[:4]
11
12 # Zamień litery na liczby (A=10, B=11, ..., Z=35)
13 converted = ''
14 for char in rearranged:
15 if char.isalpha():
16 converted += str(ord(char) - 55)
17 else:
18 converted += char
19
20 # Sprawdź, czy mod 97 równa się 1
21 return int(converted) % 97 == 1
22
23# Przykład użycia
24print(validate_iban('DE89 3704 0044 0532 0130 00')) # True
25print(validate_iban('GB29 NWBK 6016 1331 9268 19')) # True
26print(validate_iban('DE89 3704 0044 0532 0130 01')) # False (nieprawidłowe cyfry kontrolne)
271public class IbanValidator {
2 public static boolean validateIban(String iban) {
3 // Usuń spacje i zamień na wielkie litery
4 String cleanedIban = iban.replaceAll("\\s", "").toUpperCase();
5
6 // Podstawowa kontrola formatu
7 if (!cleanedIban.matches("[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}")) {
8 return false;
9 }
10
11 // Przesuń pierwsze 4 znaki na koniec
12 String rearranged = cleanedIban.substring(4) + cleanedIban.substring(0, 4);
13
14 // Zamień litery na liczby
15 StringBuilder converted = new StringBuilder();
16 for (char c : rearranged.toCharArray()) {
17 if (Character.isLetter(c)) {
18 converted.append(c - 'A' + 10);
19 } else {
20 converted.append(c);
21 }
22 }
23
24 // Oblicz mod 97
25 BigInteger numeric = new BigInteger(converted.toString());
26 return numeric.mod(BigInteger.valueOf(97)).intValue() == 1;
27 }
28
29 public static void main(String[] args) {
30 System.out.println(validateIban("DE89 3704 0044 0532 0130 00")); // true
31 System.out.println(validateIban("GB29 NWBK 6016 1331 9268 19")); // true
32 System.out.println(validateIban("DE89 3704 0044 0532 0130 01")); // false
33 }
34}
35Generowanie IBAN
1function generateIban(countryCode) {
2 const countryFormats = {
3 'DE': { length: 22, bbanPattern: '8n10n' },
4 'GB': { length: 22, bbanPattern: '4a6n8n' },
5 'FR': { length: 27, bbanPattern: '5n5n11c2n' }
6 // Dodaj więcej krajów w razie potrzeby
7 };
8
9 if (!countryFormats[countryCode]) {
10 throw new Error(`Kod kraju ${countryCode} nie jest obsługiwany`);
11 }
12
13 // Wygeneruj losowy BBAN na podstawie wzoru kraju
14 let bban = '';
15 const pattern = countryFormats[countryCode].bbanPattern;
16 let i = 0;
17
18 while (i < pattern.length) {
19 const count = parseInt(pattern.substring(i + 1), 10);
20 const type = pattern[i];
21
22 if (type === 'n') {
23 // Generuj znaki numeryczne
24 for (let j = 0; j < count; j++) {
25 bban += Math.floor(Math.random() * 10);
26 }
27 } else if (type === 'a') {
28 // Generuj znaki alfabetyczne
29 for (let j = 0; j < count; j++) {
30 bban += String.fromCharCode(65 + Math.floor(Math.random() * 26));
31 }
32 } else if (type === 'c') {
33 // Generuj znaki alfanumeryczne
34 for (let j = 0; j < count; j++) {
35 const isLetter = Math.random() > 0.5;
36 if (isLetter) {
37 bban += String.fromCharCode(65 + Math.floor(Math.random() * 26));
38 } else {
39 bban += Math.floor(Math.random() * 10);
40 }
41 }
42 }
43
44 i += 2;
45 }
46
47 // Oblicz cyfry kontrolne
48 const checkDigits = calculateCheckDigits(countryCode, bban);
49
50 return countryCode + checkDigits + bban;
51}
52
53function calculateCheckDigits(countryCode, bban) {
54 // Utwórz początkowy IBAN z '00' jako cyfry kontrolne
55 const initialIban = countryCode + '00' + bban;
56
57 // Przesuń i zamień litery na liczby
58 const rearranged = bban + countryCode + '00';
59 const converted = rearranged.split('').map(char => {
60 if (/[A-Z]/.test(char)) {
61 return (char.charCodeAt(0) - 55).toString();
62 }
63 return char;
64 }).join('');
65
66 // Oblicz 98 minus mod 97
67 let remainder = 0;
68 for (let i = 0; i < converted.length; i++) {
69 remainder = (remainder * 10 + parseInt(converted[i], 10)) % 97;
70 }
71
72 const checkDigits = (98 - remainder).toString().padStart(2, '0');
73 return checkDigits;
74}
75
76// Przykład użycia
77console.log(generateIban('DE')); // Generuje prawidłowy niemiecki IBAN
78console.log(generateIban('GB')); // Generuje prawidłowy brytyjski IBAN
791import random
2import string
3
4def generate_iban(country_code):
5 country_formats = {
6 'DE': {'length': 22, 'bban_format': '8n10n'},
7 'GB': {'length': 22, 'bban_format': '4a6n8n'},
8 'FR': {'length': 27, 'bban_format': '5n5n11c2n'}
9 # Dodaj więcej krajów w razie potrzeby
10 }
11
12 if country_code not in country_formats:
13 raise ValueError(f"Kod kraju {country_code} nie jest obsługiwany")
14
15 # Wygeneruj losowy BBAN na podstawie formatu kraju
16 bban = ''
17 format_str = country_formats[country_code]['bban_format']
18 i = 0
19
20 while i < len(format_str):
21 count = int(''.join(c for c in format_str[i+1:] if c.isdigit()))
22 type_char = format_str[i]
23
24 if type_char == 'n': # Numeryczne
25 bban += ''.join(random.choices(string.digits, k=count))
26 elif type_char == 'a': # Alfabetyczne
27 bban += ''.join(random.choices(string.ascii_uppercase, k=count))
28 elif type_char == 'c': # Alfanumeryczne
29 bban += ''.join(random.choices(string.ascii_uppercase + string.digits, k=count))
30
31 i += 1 + len(str(count))
32
33 # Oblicz cyfry kontrolne
34 check_digits = calculate_check_digits(country_code, bban)
35
36 return country_code + check_digits + bban
37
38def calculate_check_digits(country_code, bban):
39 # Utwórz ciąg do obliczenia cyfr kontrolnych
40 check_string = bban + country_code + '00'
41
42 # Zamień litery na liczby (A=10, B=11, ..., Z=35)
43 numeric = ''
44 for char in check_string:
45 if char.isalpha():
46 numeric += str(ord(char.upper()) - 55)
47 else:
48 numeric += char
49
50 # Oblicz 98 minus mod 97
51 remainder = int(numeric) % 97
52 check_digits = str(98 - remainder).zfill(2)
53
54 return check_digits
55
56# Przykład użycia
57print(generate_iban('DE')) # Generuje prawidłowy niemiecki IBAN
58print(generate_iban('GB')) # Generuje prawidłowy brytyjski IBAN
59Referencje i Dalsza Lektura
- ISO 13616-1:2007 - Oficjalna specyfikacja struktury IBAN
- Rejestr SWIFT IBAN - Autorytatywne źródło formatów IBAN dla poszczególnych krajów
- ISO 7064:2003 - Specyfikacja algorytmu cyfry kontrolnej MOD 97
- Europejska Rada Płatności - SEPA - Dokumentacja Jednolitego Obszaru Płatności w Euro
- Europejski Bank Centralny - Systemy Płatnicze - Standardy integracji bankowej w Europie
- Bank Rozrachunków Międzynarodowych - Systemy Płatnicze - Międzynarodowe standardy systemów płatniczych
Rozpocznij Testowanie IBAN
Potrzebujesz danych testowych do systemu płatności? Wygeneruj ważny IBAN dla dowolnego obsługiwanego kraju powyżej lub wklej istniejący IBAN, aby sprawdzić jego strukturę. Narzędzie działa całkowicie w Twojej przeglądarce — bez rejestracji, bez kluczy API, bez wysyłania danych na serwery.
Szybka wskazówka: Generuj IBAN-y z wielu krajów, aby przetestować przypadki brzegowe. Prawdziwe systemy płatnicze obsługują różne formaty, a testowanie tylko formatem jednego kraju jest częstym źródłem błędów w produkcji.