Walidator IBAN to narzędzie, które w ułamku sekundy odpowiada na pytanie: czy ten numer rachunku, który zaraz wkleję do przelewu, jest w ogóle poprawny technicznie? Pomyłka jednej cyfry przy kwocie kilku tysięcy złotych potrafi kosztować tygodnie korespondencji z bankiem, a w skrajnych przypadkach - całe przelane środki. Z naszego walidatora IBAN korzystają przede wszystkim księgowi wprowadzający dane kontrahentów do systemów ERP, freelancerzy weryfikujący konta klientów zagranicznych, sklepy internetowe przed pierwszą wypłatą do dostawcy oraz osoby prywatne, które otrzymały numer konta SMS-em lub na zdjęciu faktury i chcą mieć pewność, że nie padły ofiarą typowego scamu zwanego podmianą faktury. Walidacja po stronie BonusBank.pl odbywa się wyłącznie w przeglądarce - nie zapisujemy żadnego numeru konta, nie przesyłamy go na serwer, nie łączymy z żadnym użytkownikiem. To ważne, bo numer IBAN jest danym osobowym w rozumieniu RODO.
Polski IBAN składa się z 28 znaków: dwuliterowego prefiksu kraju PL, dwóch cyfr kontrolnych oraz 24 cyfr numeru rachunku w standardzie NRB. Tych 24 cyfr to z kolei 8 cyfr identyfikatora rozliczeniowego banku (i ewentualnie oddziału) oraz 16 cyfr indywidualnego numeru klienta. Standard został opisany w normie ISO 13616 i jest wspólnie utrzymywany przez SWIFT oraz Europejski Komitet Standaryzacji Bankowej. W Polsce krajowym koordynatorem rejestru rozliczeniowego jest Narodowy Bank Polski, który publikuje tak zwaną Ewidencję Banków Prowadzących Rachunki Rozliczeniowe (EWiB) - to właśnie z niej nasz walidator pobiera informacje o tym, do jakiego banku i oddziału należy podany numer.
Co to jest IBAN i jak go odczytać?
IBAN, czyli International Bank Account Number, to ujednolicony format numeru konta bankowego, który został wprowadzony po to, aby przelewy międzynarodowe przestały błądzić. Przed jego standaryzacją każdy kraj miał własną logikę numeracji, a banki musiały utrzymywać skomplikowane tabele konwersji. Dziś IBAN obowiązuje w całej Unii Europejskiej, w większości państw Europejskiego Obszaru Gospodarczego oraz w ponad 80 krajach poza Europą, w tym w Arabii Saudyjskiej, Izraelu czy Turcji.
Polski IBAN zaczyna się od liter PL i ma łączną długość 28 znaków. Niemiecki IBAN ma 22 znaki i zaczyna się od DE - krótszy, bo niemiecki system rozliczeniowy ma inną strukturę. Brytyjski IBAN ma 22 znaki i prefix GB, przy czym po cyfrach kontrolnych pojawiają się cztery litery kodu banku (np. NWBK dla NatWest), a dopiero potem cyfry. Hiszpański IBAN ma 24 znaki, francuski 27, a najdłuższe są konta na Malcie (31 znaków) i w Saint Lucia (32 znaki). Dlatego długość numeru jest pierwszą informacją, którą nasz walidator IBAN sprawdza - jeśli ktoś wkleił polski numer z 27 cyframi zamiast 26, to wiemy z góry, że jest błąd.
Wewnątrz polskiego numeru NRB pierwsze osiem cyfr to identyfikator rozliczeniowy banku. Pierwsze cztery cyfry wskazują bank (np. 1140 to mBank, 1050 to ING Bank Śląski, 1160 to Bank Millennium, 1240 to Bank Pekao SA, 1090 to Santander Bank Polska), kolejne cztery to identyfikator oddziału lub centrum rozliczeniowego. Pozostałe 16 cyfr to indywidualny numer rachunku klienta, generowany wewnętrznie przez bank. Co ciekawe, w wielu polskich bankach 13. cyfra IBAN-u to wewnętrzna cyfra kontrolna banku, ale nie jest ona częścią standardu IBAN i nie ma znaczenia dla walidacji MOD 97.
Jak działa walidacja MOD 97?
Walidacja IBAN opiera się na operacji modulo 97 i jest jednym z najprostszych, a zarazem najskuteczniejszych mechanizmów detekcji błędów w numerach kont. Algorytm wygląda następująco. Po pierwsze, przesuwamy pierwsze cztery znaki numeru (kod kraju i cyfry kontrolne) na koniec ciągu. Polski IBAN PL61 1090 1014 0000 0712 1981 2874 staje się 1090 1014 0000 0712 1981 2874 PL61. Po drugie, zamieniamy litery na liczby według schematu A=10, B=11, C=12 i tak dalej, aż do Z=35. Dla Polski PL przekłada się na 2521 (P=25, L=21). Po trzecie, otrzymany wielocyfrowy ciąg traktujemy jako jedną gigantyczną liczbę całkowitą i obliczamy resztę z dzielenia przez 97. Jeśli wynik wynosi dokładnie 1, numer jest formalnie poprawny.
Dlaczego ten algorytm tak skutecznie wyłapuje literówki? Modulo 97 zostało wybrane nieprzypadkowo: 97 jest liczbą pierwszą, a operacja modulo 97 wykrywa praktycznie 100 procent pojedynczych błędów w cyfrach oraz przeważającą większość tak zwanych transpozycji, czyli sytuacji, w których przepiszemy dwie sąsiadujące cyfry w odwrotnej kolejności (np. 47 zamiast 74). Statystyki bankowe pokazują, że są to najczęstsze typy błędów przy ręcznym przepisywaniu numerów. Walidator MOD 97 nie wykryje natomiast błędów polegających na zmianie cyfry rozliczeniowej na inną istniejącą - jeśli zamiast banku Pekao SA przepiszemy IBAN do Santander Bank Polska, ale cyfry kontrolne zostaną matematycznie poprawne, algorytm nic nie wykryje. Dlatego nasz walidator dodatkowo identyfikuje bank na podstawie EWiB NBP i pokazuje jego nazwę oraz miejscowość oddziału - to drugi poziom weryfikacji, który możesz porównać z nazwą odbiorcy z faktury.
IBAN vs NRB vs BIC/SWIFT - jakie są różnice?
Te trzy skróty często mylą się nawet doświadczonym użytkownikom bankowości. NRB, czyli Numer Rachunku Bankowego, to polski 26-cyfrowy format obowiązujący od 2004 roku. NRB jest używany wyłącznie do przelewów krajowych w PLN między polskimi bankami. IBAN to ten sam numer NRB z dodanym z przodu prefiksem PL - 28 znaków łącznie. IBAN jest wymagany przy przelewach do państw Strefy Jednolitych Płatności Euro (SEPA) oraz przy wszystkich operacjach przychodzących z zagranicy.
BIC, znany również jako kod SWIFT, to zupełnie inne narzędzie. Jest to 8- lub 11-znakowy kod identyfikujący konkretny bank w globalnej sieci SWIFT (np. BREXPLPWMBK dla mBanku, WBKPPLPP dla Santandera, INGBPLPW dla ING). BIC nie zastępuje IBAN-u - oba są potrzebne przy przelewach poza Strefą Euro. Przy przelewach SEPA (czyli w euro w obrębie UE i kilku państw stowarzyszonych) BIC nie jest już wymagany od 2016 roku, bo banki potrafią go wyprowadzić z samego IBAN-u. Przy przelewach na przykład do USA czy do Japonii BIC jest absolutnie konieczny, bo te kraje nie używają IBAN-u.
Najczęstsze błędy w numerach kont
Pierwszy i najczęściej spotykany błąd to transpozycja cyfr - zamiana miejscami dwóch sąsiednich znaków podczas ręcznego przepisywania. Wbrew pozorom mózg często czyta dwie cyfry jak jeden symbol i przy szybkim przepisywaniu odwraca ich kolejność. Walidacja MOD 97 wyłapuje ten błąd praktycznie zawsze. Drugi częsty problem to pominięcie prefiksu PL - użytkownik podaje czysty 26-cyfrowy NRB, gdy formularz wymaga pełnego IBAN-u. Nasz walidator akceptuje oba formaty i automatycznie dokleja PL dla numerów 26-cyfrowych przed właściwą walidacją.
Trzeci błąd to wpisanie nieprawidłowego identyfikatora rozliczeniowego - na przykład cyfr banku, który został właśnie przejęty lub zlikwidowany. W ostatnich latach takie sytuacje mieli klienci Euro Banku (przejęty przez Bank Millennium) czy Idea Banku (przejmowany przez Pekao SA w trybie przymusowej restrukturyzacji przez Bankowy Fundusz Gwarancyjny w 2021 roku). Numery starych banków po pewnym okresie przejściowym przestają działać i ich użycie kończy się zwrotem przelewu. EWiB NBP aktualizuje listę cyfr rozliczeniowych co miesiąc - my korzystamy z najnowszej dostępnej wersji.
Czwarty typ błędu to zamiana znaków podobnych wizualnie: 0 z O, 1 z l, 5 z S, 8 z B. Występuje głównie wtedy, gdy numer został odczytany ze zdjęcia faktury przez OCR. Walidator IBAN sprawdza, czy wszystkie znaki po prefiksie są cyframi - jeśli pojawi się litera, zwróci błąd formatu i nie będzie nawet próbował liczyć sumy kontrolnej.
Bezpieczeństwo przelewu - jak nie wysłać na zły numer?
Sama walidacja techniczna IBAN-u nie chroni przed oszustwami. Numer może być matematycznie poprawny, należeć do realnego banku - i nadal być kontem oszusta. Najpopularniejszą obecnie metodą wyłudzenia to scam zwany podmianą faktury: oszust przejmuje skrzynkę mailową kontrahenta (lub ją podszywa), przechwytuje wystawioną fakturę, podmienia w PDF numer konta na swój i wysyła do odbiorcy. Ofiara płaci setki tysięcy złotych w dobrej wierze, a rzeczywisty dostawca nigdy nie otrzymuje środków. Komisja Nadzoru Finansowego w corocznym raporcie cyberbezpieczeństwa wskazuje, że straty z tytułu tego typu oszustw w Polsce sięgają setek milionów złotych rocznie.
Co robić, żeby się zabezpieczyć? Po pierwsze, zawsze sprawdzaj nazwę odbiorcy wyświetlaną przez bank przed potwierdzeniem przelewu - polskie banki mają obowiązek pokazać dane właściciela konta przy przelewach na rachunki krajowe. Jeśli nazwa odbiorcy nie zgadza się z nazwą z faktury, przerwij operację. Po drugie, przy zmianach numerów kont u stałych kontrahentów dzwoń i potwierdzaj zmianę głosowo, nie mailowo. Po trzecie, korzystaj z białej listy podatników VAT prowadzonej przez Ministerstwo Finansów - zawiera ona oficjalne rachunki firmowe i pozwala wykryć przelewy na konta spoza listy (co przy fakturach B2B oznacza ryzyko utraty prawa do odliczenia VAT i bycia współodpowiedzialnym za zaległe podatki kontrahenta). Po czwarte, w przypadku przelewów powyżej kilkudziesięciu tysięcy złotych rozważ wykorzystanie tak zwanego mechanizmu podzielonej płatności (split payment) - kwota VAT trafia wtedy na specjalny rachunek VAT, z którego środki są wydatkowane wyłącznie na podatki.
Nasz walidator IBAN celowo nie pokazuje danych właściciela konta - byłoby to złamaniem RODO oraz tajemnicy bankowej z ustawy Prawo bankowe. Pokazujemy wyłącznie informacje publiczne: bank, który prowadzi dany numer, oraz miejscowość oddziału rozliczeniowego z rejestru EWiB NBP. To wystarczy, żeby wyłapać sytuację, w której kontrahent twierdzi, że ma konto w mBanku, a IBAN wskazuje na zupełnie inny bank.