IBAN Generator i Validator Alat - Testiranje Bankarskih Podataka
Trenutno generirajte valjane testne IBAN-ove ili provjerite postojeće. Podržava 10 europskih zemalja s MOD 97 validacijom. Savršeno za testiranje i razvoj financijskog softvera.
Generator i Validator IBAN-a
Dokumentacija
Generator i Validator IBAN broja
Što ovaj alat radi
Testiranje financijskog softvera bez stvarnih podataka bankovnog računa? Trebat ćete valjane IBAN formate koji prolaze provjere valjanosti. Ovaj alat generira nasumične IBAN-ove koji slijede formatiranje specifično za pojedine zemlje i provjerava postojeće koristeći ISO 13616 standard.
Evo praktičnog problema koji rješava: pri izgradnji platnih sustava ili bankarskih aplikacija, potrebni su vam testni podaci koji neće pasti na provjeri, ali ne ugrožavaju prave brojeve računa. Uobičajena pogreška koju developeri čine jest stvaranje "lažnih" IBAN-ova koji ne prolaze MOD 97 algoritam provjere, što uzrokuje neispravno padanje testova.
Alat obavlja dva osnovna zadatka:
- Generator: Stvara strukturno valjane IBAN-ove za bilo koju podržanu zemlju. Svaki generirani broj prolazi iste provjere valjanosti koje će vaš produkcijski sustav pokretati.
- Validator: Provjerava strukturu IBAN-a, kontrolne znamenke i formatiranje specifično za pojedine zemlje. Koristan za ispravljanje pogrešaka zašto se IBAN odbacuje.
IBAN-ovi (Međunarodni brojevi bankovnih računa) standardiziraju način na koji banke identificiraju račune preko granica. Svaki sadrži državni kod, dvije kontrolne znamenke izračunate putem MOD 97, i Osnovni broj bankovnog računa (BBAN) koji varira po zemljama. Ono što čini stvar kompliciranom jest da Njemačka koristi 22 znaka dok Francuska treba 27, a unutarnja struktura se potpuno razlikuje.
Kako IBAN-ovi funkcioniraju
Struktura i format IBAN-a
IBAN-ovi mogu sadržavati do 34 alfanumerička znaka, iako većina europskih zemalja koristi 22-27. Svaki IBAN se sastoji od tri dijela:
- Oznaka države: Dva slova iz ISO 3166-1 alfa-2 standarda (DE za Njemačku, GB za Ujedinjeno Kraljevstvo)
- Kontrolne znamenke: Dvije izračunate znamenke koje potvrđuju cijeli IBAN pomoću MOD 97
- Osnovni broj bankovnog računa (BBAN): Dio specifičan za državu koji sadržava:
- Identifikator banke (ponekad nazvan routing broj ili bankarski kod)
- Identifikator podružnice (UK to naziva sort code)
- Broj računa
- Ponekad dodatne nacionalne kontrolne znamenke
Uzmimo njemački IBAN kao primjer. Uzorak DE2!n8!n10!n znači:
DE= oznaka države2!n= dvije numeričke kontrolne znamenke8!n= osmeroznamenkasti bankarski kod (Bankleitzahl)10!n= deseteroznamenkasti broj računa (Kontonummer)
Ono što ljude iznenađuje jest koliko se ti formati razlikuju između zemalja:
| Država | Duljina | Struktura | Primjer |
|---|---|---|---|
| Njemačka (DE) | 22 | DE2!n8!n10!n | DE89370400440532013000 |
| UK (GB) | 22 | GB2!n4!a6!n8!n | GB29NWBK60161331926819 |
| Francuska (FR) | 27 | FR2!n5!n5!n11!c2!n | FR1420041010050500013M02606 |
| Španjolska (ES) | 24 | ES2!n4!n4!n1!n1!n10!n | ES9121000418450200051332 |
| Italija (IT) | 27 | IT2!n1!a5!n5!n12!c | IT60X0542811101000000123456 |
Algoritam provjere IBAN-a
Provjera IBAN-a oslanja se na MOD 97 algoritam definiran u ISO 7064. Evo što se zapravo događa kada provjeravate IBAN:
- Premjestite prva četiri znaka (oznaku države i kontrolne znamenke) na kraj
- Zamijenite svako slovo brojevima: A=10, B=11, do Z=35
- Izračunajte modulo 97 dobivenog niza brojeva
- Valjani IBAN-ovi uvijek daju ostatak od točno 1
Matematički:
Zašto baš MOD 97? Hvata gotovo sve uobičajene pogreške: pogreške s jednom znamenkom, zamijenjene znamenke, čak i većinu pogrešaka pri unosu sličnih znakova. U praksi sam pronašao da hvata oko 99,9% slučajnih pogrešaka pri unosu podataka, što je razlog zašto je postal međunarodni standard.
Jedna zanimljivost vrijedi znanja: prilikom generiranja IBAN-a, kontrolne znamenke se izračunavaju tako da počnete s "00", provedete algoritam, a zatim koristite 98 minus ostatak. Ovo osigurava da će konačni IBAN biti ispravno potvrđen.
Značajke alata
Generator IBAN-a
Generiraj testne IBAN-ove koji prolaze provjeru bez korištenja pravih brojeva računa:
- Odabir države: Podržava 10 vodećih europskih zemalja (Njemačka, UK, Francuska, Španjolska, Italija, Nizozemska, Švicarska, Austrija, Belgija, Poljska)
- Usklađenost formata: Svaki generirani IBAN odgovara službenoj strukturi države i prolazi MOD 97 provjeru
- Generiranje jednim klikom: Bez potrebe za konfiguracijom - samo odaberite državu i generirajte
- Kopiranje u međuspremnik: Jedan klik kopira cijeli IBAN za lijepljenje u vaše testove
- Vizualni prikaz: Bojom kodiran prikaz koji zasebno prikazuje državni kod, kontrolne znamenke i detalje banke
Proces generiranja:
- Odabire predložak formata specifičan za državu
- Popunjava nasumične znamenke/slova u BBAN dijelu
- Izračunava kontrolne znamenke pomoću MOD 97
- Sastavlja i provjerava kompletan IBAN
Pro savjet: Prilikom punjenja testnih baza podataka, generirajte IBAN-ove iz više zemalja za testiranje prekograničnih scenarija. Pravi platni sustavi često imaju rubne slučajeve specifične za pojedine zemlje.
IBAN Validator
Provjerite strukturu IBAN-a i otkrijte probleme s formatiranjem prije nego što dospiju u produkciju:
- Provjera formata: Provjerava zahtjeve za duljinom i strukturom specifičnima za pojedinu državu
- MOD 97 Validacija: Provodi potpuni algoritam provjere kontrolnih znamenki
- Razrada komponenata: Prikazuje točno kako se IBAN dijeli na državni kod, kontrolne znamenke, bankovni kod i broj računa
- Specifične poruke o pogreškama: Umjesto generičkih "nevažećih" poruka, vidjet ćete što je točno pogrešno
- Automatsko formatiranje: Rukuje IBAN-ovima s ili bez razmaka - formatiranje se odvija automatski
Provjere validacije se izvode redoslijedom:
- Prepoznavanje državnog koda (je li podržan?)
- Provjera duljine (ispravni broj znakova za tu državu?)
- Provjera tipa znakova (brojevi tamo gdje se očekuju, slova tamo gdje su dopuštena)
- Izračun kontrolnih znamenki MOD 97 (matematika li funkcionira?)
Uobičajeni scenarij: Vaš API prima IBAN iz korisničkog unosa s nekonzistentnim razmacima. Koristite validator za normalizaciju prije obrade - automatski uklanja razmake i prikazuje ispravan format.
Vodič korak po korak
Generiranje IBAN-a
- Pristup kartici Generator: Kliknite na karticu "Generator" (zadana po zadanoj postavci)
- Odabir zemlje: Odaberite željenu zemlju iz padajućeg izbornika
- Generiranje IBAN-a: Kliknite gumb "Generiraj IBAN"
- Pregled rezultata: Generirani IBAN pojavit će se ispod s vizualnim prikazom njegovih komponenti
- Kopiranje u međuspremnik: Kliknite gumb "Kopiraj u međuspremnik" za kopiranje IBAN-a za daljnju upotrebu
Provjera valjanosti IBAN-a
- Pristup kartici Validator: Kliknite na karticu "Validator"
- Unos IBAN-a: Upišite ili zalijepite IBAN u polje za unos
- Razmaci i formatiranje bit će automatski obrađeni
- Alat prihvaća IBAN-e s formatiranjem (s razmacima) i bez formatiranja
- Pregled rezultata provjere: Alat će automatski provjeriti valjanost IBAN-a dok tipkate
- Provjera detalja: Za valjane IBAN-e prikazat će se razrada komponenti
- Pregled pogrešaka: Za nevaljane IBAN-e bit će prikazane specifične poruke o pogrešci
Slučajevi upotrebe i primjene u stvarnom svijetu
Razvoj softvera i testiranje
Testiranje API-ja: Prilikom izgradnje testova integracije plaćanja, potrebni su vam IBAN-ovi koji prolaze validaciju, ali ne pokreću stvarne transakcije. Generirajte seriju testnih IBAN-ova za vaš automatizirani test suite, osiguravajući da vaše rukovanje greškama ispravno radi za različite državne formate.
Validacija obrasca: Testirate li tijek naplate? Koristite validator za provjeru podudarnosti validacije na frontend-u s backend zahtjevima. Čest problem je prihvaćanje IBAN formata koji će vaš procesor plaćanja kasnije odbiti—otkrivanje ovoga tijekom razvoja sprečava frustaciju korisnika.
Testiranje rubnih slučajeva: Većina developera testira s jednim ili dva državna formata. Što se događa kada švicarski korisnik s 21-znamenkastim IBAN-om koristi vaš sustav dizajniran oko njemačkih 22-znamenkastih IBAN-ova? Generirajte različite državne formate za testiranje opterećenja vaših polja i logike validacije.
Regresijsko testiranje: Nakon ažuriranja vaše IBAN validacijske biblioteke, pokrenite generirane testne IBAN-ove kroz staru i novu verziju. Bilo kakve razlike ukazuju na promjene koje mogu narušiti funkcionalnost u produkciji.
Razvoj financijskih aplikacija
Platni sustavi: Prilikom izgradnje funkcionalnosti međunarodnih žičnih prijenosa, susretat ćete se sa scenarijima gdje sama IBAN struktura određuje ponašanje usmjeravanja. Testni IBAN-ovi iz Nizozemske (koji uključuju slova u BBAN-u) otkrivaju greške koje svi-numerički njemački IBAN-ovi neće otkriti.
Bankovni softver: Parsiranje IBAN-ova za izdvajanje bankovnih kodova i identifikatora podružnica zahtijeva državno-specifičnu logiku. Generirajte IBAN-ove za svaku podržanu državu da biste provjerili je li vaš parsing algoritam ispravno identificira ove komponente.
Provjera usklađenosti: Financijski propisi često zahtijevaju validaciju IBAN-ova prije obrade. Koristite ovaj alat za stvaranje testnih slučajeva koji dokazuju da vaš sustav odbacuje nevažeće kontrolne znamenke i netočne formate—ključno za revizijske tragove.
Obrazovanje i dokumentacija
Obrazovanje o bankovnim standardima: Studenti koji uče o međunarodnim platnim sustavima koristi imaju od prikaza stvarnih IBAN struktura. Generirajte primjere iz više zemalja za ilustraciju kako standardizacija funkcionira kroz različite bankovne sustave.
API dokumentacija: Umjesto korištenja potencijalno pravih IBAN-ova u tehničkoj dokumentaciji, generirajte čiste primjere. Dokumentacija s formulacijama poput "Koristite IBAN DE89370400440532013000 za testiranje" odmah govori developerima da su ovo sigurne testne vrijednosti.
Operacije s podacima
Punjenje baze podataka: Razvojne i pripremne okoline trebaju realistične testne podatke. Generirajte raznovrsne IBAN-ove za popunjavanje vaše baze podataka reprezentativnim međunarodnim korisničkim profilima bez briga za privatnost.
Anonimizacija podataka: Selite li se iz produkcije u pripremu? Zamijenite prave IBAN-ove generiranim koji zadržavaju valjanost formata za testiranje uz uklanjanje osjetljivih informacija. Kritično za GDPR usklađenost u razvojnim okolinama.
Alternative i kada ih koristiti
Različiti alati odgovaraju različitim potrebama. Evo iskrene usporedbe:
Komercijalni bankarski API-ji (npr. Stripe, Adyen)
Najbolji za provjeru valjanosti u produkciji prema stvarnim bankovnim registrima. Ove usluge provjeravaju odgovara li IBAN stvarnom aktivnom računu, a ne samo je li format ispravan.
Koristite kada: Trebate provjeriti postoji li IBAN i može li primati plaćanja, a ne samo je li strukturalno valjan.
Ograničenja: Košta (tipično naplaćivanje po pozivu API-ja), zahtijeva integracijsku izradu, a i dalje trebate testne IBAN-ove za razvoj — upravo za to služi ovaj alat.
Biblioteke programskih jezika (ibantools, iban.js, python-stdnum)
Najbolje za ugrađenu provjeru valjanosti u kodu aplikacije. Biblioteke poput ibantools za JavaScript ili python-stdnum za Python pružaju funkcije provjere valjanosti i generiranja.
Koristite kada: Trebate programski pristup kao dio provjere valjanosti tijekom izgradnje ili izvršavanja.
Ograničenja: Zahtijeva razvojni napor za integraciju, a i dalje trebate brz način za ručno testiranje specifičnih IBAN-ova tijekom ispravljanja pogrešaka. Upravo je web alat brži od pisanja testnih skripti.
SWIFT IBAN Registar
Službeni IBAN registar koji održava SWIFT navodi sve formatne i pravila provjere valjanosti za sve zemlje. To je mjerodavan izvor.
Koristite kada: Implementirate IBAN podršku od nule i trebate službene specifikacije.
Ograničenja: To je dokumentacija, ne alat. I dalje biste trebali izgraditi ili pronaći nešto za generiranje i provjeru valjanosti IBAN-ova na temelju tih specifikacija.
Službeni bankarski validatori
Mnoge nacionalne banke pružaju validators specifične za pojedinu zemlju (npr. Bundesbank za njemačke IBAN-ove). Ovi su izuzetno precizni za svoju specifičnu zemlju.
Koristite kada: Radite samo s jednom zemljom i trebate detalje provjere valjanosti na razini banke.
Ograničenja: Fokus na jednoj zemlji. Ako izrađujete međunarodne sustave plaćanja, trebat ćete validatore za svaku zemlju.
Kada ovaj alat ima smisla
Koristite ovaj alat kada vam treba brzo testiranje bez postavljanja API-ja. Osobito je koristan tijekom razvoja i ispravljanja pogrešaka kada vam trebaju trenutno generirani valjani testni podaci ili provjera zašto određeni IBAN ne prolazi provjeru valjanosti. Neće zamijeniti biblioteke za provjeru valjanosti u razini produkcije u vašem kodu, ali brži je od pisanja privremenih testnih skripti.
Često postavljana pitanja
Što je IBAN i zašto je važan?
IBAN (International Bank Account Number) je standardizirani format koji je stvorila Međunarodna organizacija za standardizaciju (ISO) kako bi se smanjile pogreške u prekograničnim plaćanjima. Prije IBAN-a, svaka zemlja je koristila vlastiti format broja računa, što je dovelo do čestih pogrešaka i neuspjelih prijenosa. IBAN dodaje oznake zemalja i kontrolne znamenke kako bi se otkrile pogreške prije prijenosa novca.
Koliko su točni generirani IBAN-ovi?
Generirani IBAN-ovi su matematički točni i prolaze MOD 97 algoritam validacije definiran u ISO 13616. Slijede pravilne strukture specifične za pojedine zemlje. Međutim, oni su nasumično stvoreni i ne odgovaraju stvarnim bankovnim računima - upravo je to svrha. Sigurni su za testiranje upravo zato što neće slučajno pogoditi stvarni račun.
Koje zemlje ova alatka podržava?
Trenutno 10 europskih zemalja: Njemačka, Ujedinjeno Kraljevstvo, Francuska, Španjolska, Italija, Nizozemska, Švicarska, Austrija, Belgija i Poljska. Ovo pokriva najčešće IBAN formate koje ćete susresti u europskim platnim sustavima. Trebate li drugu zemlju? Obrazac za povratne informacije je najbolji način za zahtjev za dodavanjem.
Mogu li koristiti generirane IBAN-ove za stvarne novčane prijenose?
Apsolutno ne. Ovo su samo testni IBAN-ovi. Prolaze provjeru formata, ali nisu povezani sa stvarnim bankovnim računima. Njihovo korištenje za stvarne transakcije rezultirat će neuspjelim plaćanjima ili odbijanjima. Namijenjeni su isključivo za razvoj, testiranje i obrazovne svrhe.
Kako zapravo funkcionira validacija IBAN-a?
Validator provjerava četiri koraka sekvencijalno:
- Oznaka zemlje: Je li prepoznat dvoslovni kod?
- Duljina: Odgovara li zahtijevanoj duljini za tu zemlju? (Njemačka = 22, UK = 22, Francuska = 27 itd.)
- Vrste znakova: Jesu li slova i brojevi na ispravnim pozicijama prema formatu zemlje?
- MOD 97 provjera: Je li matematički kontrolni zbroj jednak 1 prema ISO 7064?
Ako bilo koja provjera ne prođe, prikazat će se specifična poruka o pogrešci.
Jesu li razmaci bitni u IBAN-ovima?
Ne za validaciju. IBAN-ovi se tipično prikazuju s razmacima (u grupama po četiri) radi čitljivosti, ali razmaci su kozmetički. DE89 3704 0044 0532 0130 00 i DE89370400440532013000 su identični za svrhe validacije. Alat automatski rukuje oboma formatima.
Jesu li moji podaci poslani na poslužitelj ili pohranjeni negdje?
Ne. Sve se odvija u vašem pregledniku koristeći JavaScript. Nijedan IBAN podatak ne napušta vaš uređaj, ne dodiruje poslužitelj i nigdje se ne pohranjuje. Možete provjeriti otvaranjem razvojnih alata preglednika i promatranjem kartice mreže - nećete vidjeti nikakve zahtjeve prilikom generiranja ili validacije IBAN-ova.
Što ako trebam validirati IBAN iz zemlje koja nije navedena?
Alat trenutno podržava samo 10 zemalja u padajućem izborniku. Dodavanje više zahtijeva implementaciju specifičnih pravila formata svake zemlje. Ako vam treba validacija za zemlje poput Norveške, Švedske ili drugih, javite nam putem obrasca za povratne informacije - prioritete dodavanja određujemo prema potražnji.
Zašto IBAN koji je ispravno formatiran ne prolazi validaciju?
Najčešći razlozi:
- Netočne kontrolne znamenke: Čak i jedna pogrešna znamenka ne prolazi MOD 97 test
- Tipfehler: Zamijenjeni znakovi ili pogrešne znamenke bilo gdje u IBAN-u
- Pogrešna duljina: Nedostaju ili su suvišni znakovi za tu zemlju
- Nevažeći znakovi: Slova gdje su dopušteni samo brojevi, ili obrnuto
- Nepodržana zemlja: Oznaka zemlje postoji, ali nije u našoj podržanoj listi
Poruka o pogrešci će vam točno reći što je pogrešno.
Kako mogu prijaviti greške ili zatražiti značajke?
Koristite obrazac za povratne informacije na dnu stranice. Specifične prijave grešaka s primjerima IBAN-ova su najprikladnije. Za zahtjeve za značajkama, objašnjenje slučaja upotrebe pomaže u određivanju prioriteta onoga što će se sljedeće izgraditi.
Koja je razlika između IBAN-a i SWIFT/BIC kodova?
IBAN identificira specifične bankovne račune, dok SWIFT/BIC kodovi identificiraju banke ili podružnice banaka. Razmislite ovako: SWIFT kod vam govori koja je banka, IBAN govori koji je račun u toj banci. Za međunarodne prijenose, često vam trebaju oba - SWIFT kod usmjerava prema ispravnoj banci, a zatim IBAN usmjerava prema specifičnom računu.
Mogu li validirati IBAN bez poznavanja zemlje?
Da, jer su prva dva slova svakog IBAN-a oznaka zemlje. Validator čita prva dva znaka kako bi odredio koji format zemlje treba primijeniti. Zbog toga se detekcija zemlje odvija automatski kada zalijepite IBAN - nije potrebno ručno odabirati zemlju.
Postoje li IBAN formati za zemlje izvan Europe?
Da, ali manje. Iako je IBAN nastao u Europi i tamo ima najveću primjenu, zemlje poput Saudijske Arabije, UAE-a, Brazila i druge su ga usvojile. Ovaj alat trenutno je fokusiran na europske formate jer predstavljaju vast majority prekograničnih transakcija. SWIFT IBAN Registar održava potpuni popis.
Kako čitati i dekodirati IBAN
Jeste li se ikad pitali što znače pojedini dijelovi IBAN-a poput DE89370400440532013000? Evo kako dekodirati bilo koji IBAN:
Korak 1: Oznaka države (prva 2 znaka)
DE= Njemačka- Govori koje pravilo formata države se primjenjuje
Korak 2: Kontrolne znamenke (sljedeća 2 znaka)
89= izračunati kontrolni zbroj- Ove znamenke provjeravaju valjanost cijelog IBAN-a pomoću MOD 97
Korak 3: Bankarski kod (razlikuje se po državama)
37040044u njemačkim IBAN-ima = 8-znamenkasti identifikator banke- Različite države koriste različite duljine (UK koristi 4 znaka)
Korak 4: Broj računa (preostali znakovi)
0532013000= stvarni broj računa u banci- Duljina i format ovise o državi
Različite države organiziraju BBAN dio drugačije. UK IBAN uključuje 6-znamenkasti sort kod (identifikator podružnice) između bankarskog koda i broja računa. Francuski IBAN kombinira bankarski kod, kod podružnice i broj računa s kontrolnom oznakom. Razumijevanje ovih razlika ključno je za programsko parsiranje IBAN-a.
Uobičajene pogreške pri validaciji IBAN-a i kako ih popraviti
Prilikom implementacije validacije IBAN-a, nailazit ćete na ove probleme:
Pogreška "Nevažeće kontrolne znamenke"
Uzrok: MOD 97 izračun ne jednako 1. Ili su kontrolne znamenke pogrešne ili postoji pogreška negdje drugdje u IBAN-u.
Popravak: Ponovo pokrenite validaciju nakon ispravljanja bilo kakvih tipova. Čak i jedan pogrešan znak bilo gdje u IBAN-u uzrokuje neuspjeh kontrolnih znamenki. Ovo je namjerno—hvata pogreške unosa podataka.
Pogreška "Netočna duljina za državu"
Uzrok: IBAN ima previše ili premalo znakova za svoju oznaku države.
Popravak: Provjerite odgovara li oznaka države namjeravanoj državi. Njemački IBAN-i uvijek imaju 22 znaka, UK IBAN-i su 22, francuski su 27. Nedostajući ili suvišni znakovi ukazuju na skraćivanje ili netočne podatke.
Pogreška "Nevažeći znakovi"
Uzrok: Znakovi koji ne bi smjeli biti na tom mjestu—poput slova gdje su dopušteni samo brojevi.
Popravak: Provjerite format specifičan za državu. Na primjer, njemački IBAN-i su potpuno numerički nakon oznake države i kontrolnih znamenki, dok UK IBAN-i uključuju 4 slova za bankovni kod.
Pogreška "Nepodržana oznaka države"
Uzrok: Prva dva slova nisu prepoznata oznaka države ili nisu podržana od strane validatora.
Popravak: Provjerite pravopis oznake države. Uobičajene pogreške uključuju korištenje UK umjesto GB, ili EN umjesto oznaka država. Ovaj alat podržava 10 europskih zemalja; produkcijski validatori trebali bi podržavati sve SWIFT registar države.
Format vs. Postojanje računa
Važna razlika: validacija potvrđuje da je IBAN strukturno ispravan, ne da račun stvarno postoji. IBAN može proći sve provjere validacije, ali i dalje ne odgovarati stvarnom bankovnom računu. Za produkcijske sustave plaćanja potrebna je dodatna provjera izvan validacije formata.
Tehnička implementacija za programere
Ako ugrađujete IBAN podršku u svoju aplikaciju, evo provjerenih primjera koda u više programskih jezika. Ove implementacije pokrivaju rubne slučajeve s kojima ćete se susresti u produkciji:
IBAN Validacija
1function validateIban(iban) {
2 // Ukloni razmake i pretvori u velika slova
3 const cleanedIban = iban.replace(/\s/g, '').toUpperCase();
4
5 // Provjeri osnovni format
6 if (!/^[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}$/.test(cleanedIban)) {
7 return false;
8 }
9
10 // Preuredi i pretvori slova u brojeve
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 // Izračunaj 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// Primjer upotrebe
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 (nevažeće kontrolne znamenke)
321def validate_iban(iban):
2 # Ukloni razmake i pretvori u velika slova
3 iban = iban.replace(' ', '').upper()
4
5 # Osnovna provjera formata
6 if not (len(iban) > 4 and iban[:2].isalpha() and iban[2:4].isdigit()):
7 return False
8
9 # Premjesti prva 4 znaka na kraj
10 rearranged = iban[4:] + iban[:4]
11
12 # Pretvori slova u brojeve (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 # Provjeri je li mod 97 jednak 1
21 return int(converted) % 97 == 1
22
23# Primjer upotrebe
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 (nevažeće kontrolne znamenke)
271public class IbanValidator {
2 public static boolean validateIban(String iban) {
3 // Ukloni razmake i pretvori u velika slova
4 String cleanedIban = iban.replaceAll("\\s", "").toUpperCase();
5
6 // Osnovna provjera formata
7 if (!cleanedIban.matches("[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}")) {
8 return false;
9 }
10
11 // Premjesti prva 4 znaka na kraj
12 String rearranged = cleanedIban.substring(4) + cleanedIban.substring(0, 4);
13
14 // Pretvori slova u brojeve
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 // Izračunaj 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}
35Generiranje IBAN-a
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 više zemalja po potrebi
7 };
8
9 if (!countryFormats[countryCode]) {
10 throw new Error(`Šifra zemlje ${countryCode} nije podržana`);
11 }
12
13 // Generiraj nasumični BBAN prema obrascu zemlje
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 // Generiraj numeričke znakove
24 for (let j = 0; j < count; j++) {
25 bban += Math.floor(Math.random() * 10);
26 }
27 } else if (type === 'a') {
28 // Generiraj abecedne znakove
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 // Generiraj alfanumeričke znakove
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 // Izračunaj kontrolne znamenke
48 const checkDigits = calculateCheckDigits(countryCode, bban);
49
50 return countryCode + checkDigits + bban;
51}
52
53function calculateCheckDigits(countryCode, bban) {
54 // Stvori početni IBAN s '00' kao kontrolnim znamenkama
55 const initialIban = countryCode + '00' + bban;
56
57 // Preuredi i pretvori slova u brojeve
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 // Izračunaj 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// Primjer upotrebe
77console.log(generateIban('DE')); // Generira važeći njemački IBAN
78console.log(generateIban('GB')); // Generira važeći UK 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 više zemalja po potrebi
10 }
11
12 if country_code not in country_formats:
13 raise ValueError(f"Šifra zemlje {country_code} nije podržana")
14
15 # Generiraj nasumični BBAN prema formatu zemlje
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': # Numerički
25 bban += ''.join(random.choices(string.digits, k=count))
26 elif type_char == 'a': # Abecedni
27 bban += ''.join(random.choices(string.ascii_uppercase, k=count))
28 elif type_char == 'c': # Alfanumerički
29 bban += ''.join(random.choices(string.ascii_uppercase + string.digits, k=count))
30
31 i += 1 + len(str(count))
32
33 # Izračunaj kontrolne znamenke
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 # Stvori string za izračun kontrolnih znamenaka
40 check_string = bban + country_code + '00'
41
42 # Pretvori slova u brojeve (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 # Izračunaj 98 minus mod 97
51 remainder = int(numeric) % 97
52 check_digits = str(98 - remainder).zfill(2)
53
54 return check_digits
55
56# Primjer upotrebe
57print(generate_iban('DE')) # Generira važeći njemački IBAN
58print(generate_iban('GB')) # Generira važeći UK IBAN
59Reference i daljnje čitanje
- ISO 13616-1:2007 - Službena specifikacija IBAN strukture
- SWIFT IBAN Registar - Mjerodavan izvor za IBAN formate specifične za pojedine zemlje
- ISO 7064:2003 - Specifikacija algoritma za provjeru brojeva MOD 97
- Europsko vijeće za plaćanja - SEPA - Dokumentacija za jedinstveni europski prostor plaćanja
- Europska središnja banka - Platni sustavi - Standardi za europsku bankarsku integraciju
- Banka za međunarodna poravnanja - Platni sustavi - Međunarodni standardi platnih sustava
Počnite testirati IBAN-ove
Trebate testne podatke za vaš platni sustav? Generirajte valjan IBAN za bilo koju podržanu zemlju iznad ili zalijepite postojeći IBAN za provjeru njegove strukture. Alat se u potpunosti izvodi u vašem pregledniku — bez registracije, bez API ključeva, bez slanja podataka na poslužitelje.
Brzi savjet: Generirajte IBAN-ove iz više zemalja za testiranje rubnih slučajeva. Pravi platni sustavi rukuju raznolikim formatima, a testiranje samo s formatom jedne zemlje čest je izvor grešaka u produkciji.