IBAN Generator & Validator Værktøj - Test Bankdata
Generer gyldige test-IBAN'er eller validér eksisterende med det samme. Understøtter 10 europæiske lande med MOD 97-validering. Perfekt til test af finansiel software og udvikling.
IBAN Generator & Validator
Dokumentation
IBAN Generator og Validator Værktøj
Hvad Dette Værktøj Gør
Tester du finansiel software uden rigtige bankkontodata? Du har brug for gyldige IBAN-formater, der består valideringstjek. Dette værktøj genererer tilfældige IBANer, der følger landespecifikke formater, og validerer eksisterende ved brug af ISO 13616-standarden.
Her er det praktiske problem, det løser: når du bygger betalingssystemer eller bankapplikationer, har du brug for testdata, der ikke vil fejle validering, men heller ikke risikerer at afsløre rigtige kontonumre. En almindelig fejl, udviklere begår, er at oprette "falske" IBANer, der ikke består MOD 97-tjekalgoritmen, hvilket får tests til at fejle af de forkerte årsager.
Værktøjet håndterer to kerneopgaver:
- Generator: Opretter strukturelt gyldige IBANer for ethvert understøttet land. Hvert genereret nummer består de samme valideringstjek, som dit produktionssystem vil køre.
- Validator: Verificerer IBAN-struktur, checkcifre og landespecifik formatering. Nyttigt til fejlfinding af hvorfor en IBAN bliver afvist.
IBANer (International Bank Account Numbers) standardiserer, hvordan banker identificerer konti på tværs af grænser. Hver indeholder en landekode, to checkcifre beregnet via MOD 97, og et Basic Bank Account Number (BBAN), der varierer efter land. Det komplicerede er, at Tyskland bruger 22 tegn, mens Frankrig har brug for 27, og den interne struktur er fuldstændig anderledes.
Sådan fungerer IBANs
IBAN-struktur og format
IBANs kan være op til 34 alfanumeriske tegn, selvom de fleste europæiske lande bruger 22-27. Hver IBAN opdeles i tre dele:
- Landekode: To bogstaver fra ISO 3166-1 alpha-2 standarden (DE for Tyskland, GB for Det Forenede Kongerige)
- Kontrolcifre: To beregnede cifre, der validerer hele IBAN'en ved hjælp af MOD 97
- Grundlæggende Bankkonto Nummer (BBAN): Den landspecifikke del, som indeholder:
- Bankidentifikator (nogle gange kaldet routing-nummer eller bankkode)
- Filialidentifikator (UK kalder dette en sorteringskode)
- Kontonummer
- Nogle gange yderligere nationale kontrolcifre
Tag en tysk IBAN som eksempel. Mønsteret DE2!n8!n10!n betyder:
DE= landekode2!n= to numeriske kontrolcifre8!n= ottecifret bankkode (Bankleitzahl)10!n= ticicifret kontonummer (Kontonummer)
Det, der overrasker folk, er, hvor meget disse formater varierer mellem lande:
| Land | Længde | Struktur | Eksempel |
|---|---|---|---|
| Tyskland (DE) | 22 | DE2!n8!n10!n | DE89370400440532013000 |
| UK (GB) | 22 | GB2!n4!a6!n8!n | GB29NWBK60161331926819 |
| Frankrig (FR) | 27 | FR2!n5!n5!n11!c2!n | FR1420041010050500013M02606 |
| Spanien (ES) | 24 | ES2!n4!n4!n1!n1!n10!n | ES9121000418450200051332 |
| Italien (IT) | 27 | IT2!n1!a5!n5!n12!c | IT60X0542811101000000123456 |
IBAN Validerings Algoritme
IBAN-validering er baseret på MOD 97-algoritmen defineret i ISO 7064. Her er hvad der faktisk sker, når du validerer en IBAN:
- Flyt de første fire tegn (landekode og kontrolcifre) til slutningen
- Erstat hvert bogstav med tal: A=10, B=11, gennem Z=35
- Beregn modulo 97 af den resulterende talstreng
- Gyldige IBANs producerer altid en rest på nøjagtigt 1
Matematisk:
Hvorfor specifikt MOD 97? Det fanger næsten alle almindelige fejl: enkeltcifrede fejl, byttet om cifre, selv de fleste indtastningsfejl med lignende tegn. I praksis har jeg fundet, at det fanger omkring 99,9% af utilsigtede dataindtastningsfejl, hvilket er grunden til, at det blev den internationale standard.
En detalje værd at kende: ved generering af IBANs beregner du kontrolcifrene ved at starte med "00", køre algoritmen, og derefter bruge 98 minus resten. Dette sikrer, at den endelige IBAN vil validere korrekt.
Værktøjsfunktioner
IBAN Generator
Generer test-IBANer, der består validering uden at bruge rigtige kontonumre:
- Landevalg: Understøtter 10 store europæiske lande (Tyskland, UK, Frankrig, Spanien, Italien, Holland, Schweiz, Østrig, Belgien, Polen)
- Formatoverholdelse: Hver genereret IBAN matcher den officielle landstruktur og består MOD 97-validering
- Generering med ét klik: Ingen konfiguration nødvendig - vælg blot et land og generer
- Kopiér til udklipsholder: Ét klik kopierer den fulde IBAN til indsættelse i dine tests
- Visuel opdeling: Farvekodet visning viser landekode, kontrolcifre og bankoplysninger separat
Generationsprocessen:
- Vælger landespecifik formatskabelon
- Udfylder tilfældige cifre/bogstaver i BBAN-delen
- Beregner kontrolcifre ved brug af MOD 97
- Samler og validerer den komplette IBAN
Pro tip: Når du seeder testdatabaser, så generer IBANer fra flere lande for at teste grænseoverskridende scenarier. Rigtige betalingssystemer har ofte specielle tilfælde med bestemte lande.
IBAN Validator
Verificér IBAN-struktur og fang formateringsproblemer inden de når produktionen:
- Formatverificering: Tjekker landespecifikke længde- og strukturkrav
- MOD 97 Validering: Kører den fulde kontrolciffer-algoritme
- Komponentopdeling: Viser præcist hvordan IBAN'en opdeles i landekode, kontrolcifre, bankkode og kontonummer
- Specifikke fejlmeddelelser: I stedet for generiske "ugyldig" meddelelser får du at vide præcis hvad der er galt
- Autoformatering: Håndterer IBANer med eller uden mellemrum - formattering sker automatisk
Valideringstjek køres i rækkefølge:
- Landekoderegistrering (er den understøttet?)
- Længdeverificering (korrekt antal tegn for det pågældende land?)
- Tegntype-validering (tal hvor forventet, bogstaver hvor tilladt)
- MOD 97 kontrolciffer-beregning (fungerer matematikken?)
Almindeligt scenarie: Din API modtager en IBAN fra brugerinput med inkonsistent mellemrum. Brug validatoren til at normalisere den inden behandling - den fjerner automatisk mellemrum og viser dig det korrekte format.
Trinvis Guide
Generering af IBAN
- Åbn Generator-fanen: Klik på "Generator"-fanen (valgt som standard)
- Vælg et Land: Vælg dit ønskede land fra rullemenuen
- Generer IBAN'en: Klik på knappen "Generer IBAN"
- Se Resultatet: Den genererede IBAN vil fremkomme nedenunder med en visuel opdeling af dens komponenter
- Kopiér til Udklipsholder: Klik på "Kopiér til udklipsholder"-knappen for at kopiere IBAN'en til brug andre steder
Validering af en IBAN
- Åbn Validator-fanen: Klik på "Validator"-fanen
- Indtast en IBAN: Skriv eller indsæt en IBAN i inputfeltet
- Mellemrum og formatering vil automatisk blive håndteret
- Værktøjet accepterer både formaterede (med mellemrum) og uformaterede IBAN'er
- Se Valideringsresultater: Værktøjet vil automatisk validere IBAN'en, mens du skriver
- Tjek Detaljerne: For gyldige IBAN'er vil en opdeling af komponenterne blive vist
- Gennemgå Eventuelle Fejl: For ugyldige IBAN'er vil specifikke fejlmeddelelser hjælpe med at identificere problemet
Use Cases og Real-World Anvendelser
Softwareudvikling og Test
API-test: Når du bygger betalingsintegrationstests, har du brug for IBANer, der består validering uden at udløse faktiske transaktioner. Generer en batch af test-IBANer til din automatiserede testsuite og sikr, at din fejlhåndtering fungerer korrekt for forskellige landeformater.
Formvalidering: Tester du en checkout-proces? Brug validatoren til at verificere, at din frontend-validering matcher backend-krav. Et hyppigt problem er at acceptere et IBAN-format, som din betalingsprocessor senere vil afvise—at fange dette under udvikling sparer kundefrustration.
Edge Case-test: De fleste udviklere tester med et eller to landeformater. Hvad sker der, når en schweizisk kunde med en 21-tegns IBAN bruger dit system, der er designet til tyske 22-tegns IBANer? Generer forskellige landeformater for at stresstest dine feltlængder og valideringslogik.
Regressionstest: Efter opdatering af dit IBAN-validationsbibliotek skal du køre genererede test-IBANer gennem både gamle og nye versioner. Eventuelle uoverensstemmelser indikerer ændringer, der kan påvirke produktionen.
Finansiel Applikationsudvikling
Betalingssystemer: Når du bygger funktionalitet til internationale overførsler, vil du støde på scenarier, hvor IBAN-strukturen selv bestemmer rutningsadfærd. Test-IBANer fra Holland (som inkluderer bogstaver i BBAN) afslører fejl, som rent numeriske tyske IBANer ikke vil afsløre.
Banksoft: Parsing af IBANer for at udtrække bankkoder og filialidentifikatorer kræver landspecifik logik. Generer IBANer for hvert understøttet land for at verificere, at din parsing-algoritme korrekt identificerer disse komponenter.
Compliance-verificering: Finansielle forskrifter kræver ofte validering af IBANer inden behandling. Brug dette værktøj til at skabe testcases, der beviser, at dit system afviser ugyldige checkcifre og forkerte formater—væsentligt for revisionsspor.
Uddannelse og Dokumentation
Bankstandarder Uddannelse: Studerende, der lærer om internationale betalingssystemer, har gavn af at se rigtige IBAN-strukturer. Generer eksempler fra flere lande for at illustrere, hvordan standardisering fungerer på tværs af forskellige banksystemer.
API-dokumentation: I stedet for at bruge potentielt rigtige IBANer i din tekniske dokumentation, generer rene eksempler. Dokumentation med formuleringer som "Brug IBAN DE89370400440532013000 til test" fortæller straks udviklere, at dette er sikre testværdier.
Dataoperationer
Database-udfyldning: Udviklings- og staging-miljøer har brug for realistiske testdata. Generer forskellige IBANer for at udfylde din database med repræsentative internationale kundeprofiler uden privatlivsproblemer.
Data-anonymisering: Migrerer du fra produktion til staging? Erstat rigtige IBANer med genererede, der opretholder formatgyldighed til test, mens følsomme oplysninger fjernes. Kritisk for GDPR-overholdelse i udviklingsmiljøer.
Alternativer og hvornår de bruges
Forskellige værktøjer passer til forskellige behov. Her er en ærlig sammenligning:
Kommercielle Bankings-API'er (f.eks. Stripe, Adyen)
Bedst til produktionsvalidering mod rigtige bankregistre. Disse tjenester tjekker, om et IBAN svarer til en faktisk aktiv konto, ikke bare om formatet er korrekt.
Bruges når: Du har brug for at verificere, at et IBAN eksisterer og kan modtage betalinger, ikke blot at det er strukturelt gyldigt.
Begrænsninger: Koster penge (typisk pris pr. API-kald), kræver integrationsarbejde, og du har stadig brug for test-IBAN'er til udvikling - det er her dette værktøj kommer ind.
Programmeringssprog-biblioteker (ibantools, iban.js, python-stdnum)
Bedst til integreret validering i din applikationskode. Biblioteker som ibantools til JavaScript eller python-stdnum til Python giver både validerings- og genereringsfunktioner.
Bruges når: Du har brug for programmatisk adgang som en del af din build- eller runtime-validering.
Begrænsninger: Kræver udviklingsmæssig indsats at integrere, og du har stadig brug for en hurtig måde at teste specifikke IBAN'er manuelt under fejlfinding. Det er der et webværktøj er hurtigere end at skrive testscripts.
SWIFT IBAN-register
Det officielle IBAN-register vedligeholdt af SWIFT viser alle landeformater og valideringsregler. Det er den autoritative kilde.
Bruges når: Du implementerer IBAN-support fra bunden og har brug for de officielle specifikationer.
Begrænsninger: Det er dokumentation, ikke et værktøj. Du ville stadig skulle bygge eller finde noget til faktisk at generere og validere IBAN'er baseret på disse specifikationer.
Officielle Bank-validatorer
Mange nationale banker tilbyder landespecifikke validatorer (f.eks. Bundesbank for tyske IBAN'er). Disse er meget nøjagtige for deres specifikke land.
Bruges når: Du kun arbejder med ét land og har brug for bank-niveau valideringsdetaljer.
Begrænsninger: Fokus på et enkelt land. Hvis du bygger internationale betalingssystemer, ville du have brug for validatorer for hvert land.
Hvornår dette værktøj giver mening
Brug dette værktøj, når du har brug for hurtig testning uden API-integration. Det er særligt nyttigt under udvikling og fejlfinding, når du har brug for øjeblikkeligt at generere gyldige testdata eller verificere, hvorfor et specifikt IBAN fejler validering. Det vil ikke erstatte produktionsegnede valideringsbiblioteker i din kodebase, men det er hurtigere end at skrive midlertidige testscripts.
Ofte stillede spørgsmål
Hvad er en IBAN, og hvorfor er den vigtig?
IBAN står for International Bank Account Number - et standardiseret format skabt af International Organization for Standardization (ISO) for at reducere fejl ved grænseoverskridende betalinger. Før IBANs brugte hvert land sit eget kontonummerformat, hvilket førte til hyppige fejl og mislykkede overførsler. IBANs tilføjer landekoder og kontrolcifre for at fange fejl, før penge flyttes.
Hvor nøjagtige er de genererede IBANs?
Genererede IBANs er matematisk korrekte og består MOD 97-valideringsalgoritmen defineret i ISO 13616. De følger korrekte landespecifikke strukturer. De er dog tilfældigt oprettede og svarer ikke til rigtige bankkonti - det er pointen. De er sikre til test netop fordi de ikke utilsigtet rammer en rigtig konto.
Hvilke lande understøtter dette værktøj?
I øjeblikket 10 europæiske lande: Tyskland, Det Forenede Kongerige, Frankrig, Spanien, Italien, Holland, Schweiz, Østrig, Belgien og Polen. Disse dækker de mest almindelige IBAN-formater, du vil støde på i europæiske betalingssystemer. Har du brug for et andet land? Feedbackformularen er den bedste måde at anmode om tilføjelser.
Kan jeg bruge genererede IBANs til faktiske pengeoverførsler?
Absolut ikke. Dette er kun test-IBANs. De består formatvalidering, men er ikke forbundet til rigtige bankkonti. Brug af dem til faktiske transaktioner vil resultere i betalingsfejl eller afvisninger. De er udelukkende beregnet til udvikling, test og uddannelsesmæssige formål.
Hvordan fungerer IBAN-validering egentlig?
Validatoren udfører fire kontroller i rækkefølge:
- Landekode: Er det en anerkendt tovegskode?
- Længde: Matcher den den krævede længde for det pågældende land? (Tyskland = 22, UK = 22, Frankrig = 27, osv.)
- Tegntyper: Er bogstaver og tal i de korrekte positioner baseret på landets format?
- MOD 97-kontrol: Er den matematiske checksum lig med 1 ifølge ISO 7064?
Hvis nogen kontrol fejler, vil du se en specifik fejlmeddelelse, der forklarer, hvad der er galt.
Betyder mellemrum noget i IBANs?
Ikke for validering. IBANs vises typisk med mellemrum (grupper af fire) for læsbarhed, men mellemrummene er kosmetiske. DE89 3704 0044 0532 0130 00 og DE89370400440532013000 er identiske ved validering. Værktøjet håndterer begge formater automatisk.
Sendes mine data til en server eller gemmes de et sted?
Nej. Alt kører i din browser ved hjælp af JavaScript. Ingen IBAN-data forlader din maskine, rører en server eller gemmes et sted. Du kan verificere dette ved at åbne browserens udviklingsværktøjer og se på netværksfanen - du vil ikke se nogen anmodninger ved generering eller validering af IBANs.
Hvad hvis jeg skal validere en IBAN fra et land, der ikke er angivet?
Værktøjet understøtter i øjeblikket kun de 10 lande i rullemenuen. Tilføjelse af flere kræver implementering af hvert lands specifikke formatregler. Hvis du har brug for validering for lande som Norge, Sverige eller andre, så lad os høre fra dig via feedbackformularen - vi prioriterer tilføjelser baseret på efterspørgsel.
Hvorfor kan en korrekt formateret IBAN fejle ved validering?
Mest almindelige årsager:
- Forkerte kontrolcifre: Selv ét forkert ciffer fejler MOD 97-testen
- Stavefejl: Ombyttede tegn eller forkerte cifre hvor som helst i IBAN'en
- Forkert længde: Manglende eller ekstra tegn for det pågældende land
- Ugyldige tegn: Bogstaver hvor kun tal er tilladt, eller omvendt
- Ikke understøttet land: Landekoden eksisterer, men er ikke i vores understøttede liste
Fejlmeddelelsen vil fortælle dig specifikt, hvad der er galt.
Hvordan kan jeg rapportere fejl eller anmode om funktioner?
Brug feedbackformularen nederst på siden. Specifikke fejlrapporter med eksempel-IBANs er mest hjælpsomme. Ved funktionsanmodninger hjælper forklaring af din use case med at prioritere, hvad der bygges næste gang.
Hvad er forskellen mellem IBAN og SWIFT/BIC-koder?
IBANs identificerer specifikke bankkonti, mens SWIFT/BIC-koder identificerer banker eller bankfilialer. Tænk på det sådan: SWIFT-koden fortæller dig, hvilken bank, IBAN'en fortæller dig, hvilken konto i den bank. Ved internationale overførsler har du ofte brug for begge - SWIFT-koden dirigerer til den korrekte bank, hvorefter IBAN'en dirigerer til den specifikke konto.
Kan jeg validere en IBAN uden at kende landet?
Ja, fordi de første to bogstaver i enhver IBAN er landekoden. Validatoren læser disse første to tegn for at bestemme, hvilket landeformat der skal anvendes. Derfor sker landeregistrering automatisk, når du indsætter en IBAN - du behøver ikke manuelt at vælge landet.
Findes der IBAN-formater for lande uden for Europa?
Ja, men færre. Selvom IBAN stammer fra Europa og har højest udbredelse der, har lande som Saudi-Arabien, UAE, Brasilien og andre adopteret det. Dette værktøj fokuserer i øjeblikket på europæiske formater, da de repræsenterer langt de fleste grænseoverskridende transaktioner. SWIFT IBAN-registret vedligeholder den komplette liste.
Hvordan man læser og afkoder en IBAN
Har du nogensinde set en IBAN som DE89370400440532013000 og undret dig over, hvad hver del betyder? Her er hvordan du kan afkode enhver IBAN:
Trin 1: Landekode (Første 2 tegn)
DE= Tyskland- Fortæller dig, hvilke formatregler der gælder for landet
Trin 2: Kontrolcifre (Næste 2 tegn)
89= beregnet checksum- Disse cifre verificerer, at hele IBAN'en er gyldig ved brug af MOD 97
Trin 3: Bankkode (Varierer efter land)
37040044i tyske IBAN'er = 8-cifret bankidentifikator- Forskellige lande bruger forskellige længder (UK bruger 4 tegn)
Trin 4: Kontonummer (Resterende tegn)
0532013000= det faktiske kontonummer i den pågældende bank- Længde og format afhænger af landet
Forskellige lande organiserer BBAN-delen anderledes. Britiske IBAN'er inkluderer en 6-cifret sorteringskode (filialidentifikator) mellem bankkoden og kontonummeret. Franske IBAN'er kombinerer bankkode, filialkode og kontonummer med en kontrolnøgle. Forståelse af disse forskelle er afgørende, når man analyserer IBAN'er programmatisk.
Almindelige IBAN-valideringsfejl og hvordan de rettes
Når du implementerer IBAN-validering, vil du gentagne gange støde på disse problemer:
"Ugyldige kontrolcifre" Fejl
Årsag: MOD 97-beregningen er ikke lig med 1. Enten er kontrolcifrene forkerte, eller der er en fejl et andet sted i IBAN'en.
Løsning: Kør valideringen igen efter at have rettet eventuelle stavefejl. Selv ét forkert tegn et vilkårligt sted i IBAN'en forårsager kontrolciferfejl. Dette er med vilje - det fanger dataindtastningsfejl.
"Forkert længde for land" Fejl
Årsag: IBAN'en har for mange eller for få tegn i forhold til landekoden.
Løsning: Bekræft at landekoden matcher det tilsigtede land. Tyske IBAN'er er altid 22 tegn, UK IBAN'er er 22, franske er 27. Manglende eller ekstra tegn indikerer afkortning eller forkerte data.
"Ugyldige tegn" Fejl
Årsag: Tegn der ikke bør forekomme på den pågældende position - som bogstaver hvor kun tal er tilladt.
Løsning: Tjek landets specifikke format. For eksempel er tyske IBAN'er helt numeriske efter landekoden og kontrolcifrene, mens UK IBAN'er inkluderer 4 bogstaver for bankkoden.
"Ikke understøttet landekode" Fejl
Årsag: De første to bogstaver er ikke en anerkendt landekode, eller de understøttes ikke af din validator.
Løsning: Verificer stavemåden af landekoden. Almindelige fejl omfatter brug af UK i stedet for GB, eller EN i stedet for landekoder. Dette værktøj understøtter 10 europæiske lande; produktionsvalidatorer bør understøtte alle SWIFT-registerlande.
Format vs. Kontoeksistens
Vigtig forskel: validering bekræfter, at en IBAN er strukturelt korrekt, ikke at kontoen eksisterer. En IBAN kan bestå alle valideringstjek, men stadig ikke svare til en rigtig bankkonto. For produktionsbetalingssystemer har du brug for yderligere verificering ud over formatvalidering.
Teknisk implementering for udviklere
Hvis du bygger IBAN-understøttelse ind i din applikation, er her kampafprøvede kodeeksempler i flere sprog. Disse implementeringer håndterer de grænsetilfælde, du vil støde på i produktionen:
IBAN-validering
1function validateIban(iban) {
2 // Fjern mellemrum og konverter til store bogstaver
3 const cleanedIban = iban.replace(/\s/g, '').toUpperCase();
4
5 // Tjek grundlæggende format
6 if (!/^[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}$/.test(cleanedIban)) {
7 return false;
8 }
9
10 // Omarrangér og konverter bogstaver til tal
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 // Beregn 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// Eksempel på brug
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 (ugyldige kontrolcifre)
321def validate_iban(iban):
2 # Fjern mellemrum og konverter til store bogstaver
3 iban = iban.replace(' ', '').upper()
4
5 # Grundlæggende formatcheck
6 if not (len(iban) > 4 and iban[:2].isalpha() and iban[2:4].isdigit()):
7 return False
8
9 # Flyt første 4 tegn til slutningen
10 rearranged = iban[4:] + iban[:4]
11
12 # Konverter bogstaver til tal (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 # Tjek om mod 97 er lig med 1
21 return int(converted) % 97 == 1
22
23# Eksempel på brug
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 (ugyldige kontrolcifre)
271public class IbanValidator {
2 public static boolean validateIban(String iban) {
3 // Fjern mellemrum og konverter til store bogstaver
4 String cleanedIban = iban.replaceAll("\\s", "").toUpperCase();
5
6 // Grundlæggende formatcheck
7 if (!cleanedIban.matches("[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}")) {
8 return false;
9 }
10
11 // Flyt første 4 tegn til slutningen
12 String rearranged = cleanedIban.substring(4) + cleanedIban.substring(0, 4);
13
14 // Konverter bogstaver til tal
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 // Beregn 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}
35IBAN-generering
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 // Tilføj flere lande efter behov
7 };
8
9 if (!countryFormats[countryCode]) {
10 throw new Error(`Landekode ${countryCode} ikke understøttet`);
11 }
12
13 // Generer tilfældig BBAN baseret på landemønster
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 // Generer numeriske tegn
24 for (let j = 0; j < count; j++) {
25 bban += Math.floor(Math.random() * 10);
26 }
27 } else if (type === 'a') {
28 // Generer alfabetiske tegn
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 // Generer alfanumeriske tegn
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 // Beregn kontrolcifre
48 const checkDigits = calculateCheckDigits(countryCode, bban);
49
50 return countryCode + checkDigits + bban;
51}
52
53function calculateCheckDigits(countryCode, bban) {
54 // Opret første IBAN med '00' som kontrolcifre
55 const initialIban = countryCode + '00' + bban;
56
57 // Omarrangér og konverter bogstaver til tal
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 // Beregn 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// Eksempel på brug
77console.log(generateIban('DE')); // Genererer en gyldig tysk IBAN
78console.log(generateIban('GB')); // Genererer en gyldig 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 # Tilføj flere lande efter behov
10 }
11
12 if country_code not in country_formats:
13 raise ValueError(f"Landekode {country_code} ikke understøttet")
14
15 # Generer tilfældig BBAN baseret på landeformat
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': # Numerisk
25 bban += ''.join(random.choices(string.digits, k=count))
26 elif type_char == 'a': # Alfabetisk
27 bban += ''.join(random.choices(string.ascii_uppercase, k=count))
28 elif type_char == 'c': # Alfanumerisk
29 bban += ''.join(random.choices(string.ascii_uppercase + string.digits, k=count))
30
31 i += 1 + len(str(count))
32
33 # Beregn kontrolcifre
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 # Opret streng til beregning af kontrolcifre
40 check_string = bban + country_code + '00'
41
42 # Konverter bogstaver til tal (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 # Beregn 98 minus mod 97
51 remainder = int(numeric) % 97
52 check_digits = str(98 - remainder).zfill(2)
53
54 return check_digits
55
56# Eksempel på brug
57print(generate_iban('DE')) # Genererer en gyldig tysk IBAN
58print(generate_iban('GB')) # Genererer en gyldig UK IBAN
59Referencer og yderligere læsning
- ISO 13616-1:2007 - Officiel IBAN-strukturspecifikation
- SWIFT IBAN-register - Autoritativ kilde til landespecifikke IBAN-formater
- ISO 7064:2003 - MOD 97 check-ciffer algoritmespecifikation
- European Payments Council - SEPA - Single Euro Payments Area dokumentation
- Den Europæiske Centralbank - Betalingssystemer - Europæiske bankintegrationsstandarder
- Bank for International Settlements - Betalingssystemer - Internationale betalingssystemstandarder
Start med at teste IBANs
Har du brug for testdata til dit betalingssystem? Generer et gyldigt IBAN for et hvilket som helst understøttet land ovenfor, eller indsæt et eksisterende IBAN for at verificere dets struktur. Værktøjet kører helt i din browser - ingen tilmeldinger, ingen API-nøgler, ingen data sendt til servere.
Hurtig tip: Generer IBANs fra flere lande for at teste grænsetilfælde. Rigtige betalingssystemer håndterer forskellige formater, og test med kun ét lands format er en almindelig kilde til produktionsfejl.