IBAN controleren: zo check je elk rekeningnummer goed

2026-07-18

De verzamelbetaling staat klaar, de export naar de bank is bijna gedaan, en toch loopt de run vast op één reeks tekens. Niet het bedrag. Niet de machtiging. Maar een IBAN met een kleine typefout, of een rekeningnummer dat formeel klopt maar in de praktijk niet bruikbaar is.

Daar ontstaat bij veel bedrijven een misverstand. Wie een IBAN online checkt, gaat er vaak van uit dat de betaling daarmee ook gegarandeerd slaagt. Dat is niet zo. Bij IBAN controleren is er een verschil tussen formele juistheid en operationele bruikbaarheid. Voor een losse overboeking is het eerste niveau vaak genoeg. Voor SEPA-incasso’s, terugkerende leveranciersbetalingen en batches is het dat niet.

Waarom een goede IBAN-controle zo belangrijk is

Sinds 2014 is het IBAN verplicht voor alle overboekingen binnen SEPA. Oude Nederlandse rekeningnummers zonder IBAN worden niet meer geaccepteerd. Het IBAN is dus geen extra veld meer, maar de centrale sleutel voor het uitvoeren van betalingen.

Het probleem begint waar bedrijven een online check verwarren met zekerheid over de betaling. Veel tools beantwoorden alleen de vraag of de tekenreeks formeel klopt. Ze zeggen niets over de vraag of de rekening actief is, of de gegevens actueel zijn of of de rekening bij de juiste persoon hoort.

De meest gemaakte denkfout

Een collega neemt een IBAN over uit een e-mail, een klant typt het in een formulier of een leverancierslijst wordt uit Excel geïmporteerd. Het nummer doorstaat de standaardcheck en iedereen gaat ervan uit dat alles klopt. De fout komt pas bij de uitvoering aan het licht, als het werk al in het betaalproces zit.

Vuistregel: een kloppend controlegetal is nog geen groen licht voor een bedrijfskritische betaalrun.

Het gevolg: betalingen lopen vertraging op, incasso’s worden gestorneerd, je team moet gegevens corrigeren en betaalbestanden opnieuw maken. Daar komen mogelijke kosten bij en vooral onnodige frictie met klanten, leveranciers en je eigen administratie.

Formeel geldig is niet hetzelfde als betaalbaar

Gratis checkers zijn handig om snel het formaat van één nummer te controleren. Wat vaak ontbreekt, is het tweede niveau: past de bankcode bij een bestaande bank, en is de rekening geschikt voor het SEPA-proces dat je wilt uitvoeren?

De vraag is dus niet of een IBAN “er geldig uitziet”, maar welk type controle je proces nodig heeft. Voor een losse handmatige check volstaat een eenvoudige tool. Voor batches, ERP-imports of geautomatiseerde betaalstromen is meer nodig.

De opbouw van een Nederlands IBAN en het controlegetal

Een Nederlands IBAN is geen willekeurige reeks tekens, maar volgt een vaste opbouw van 18 tekens: de landcode NL, twee controlecijfers, een bankcode van vier letters en een rekeningnummer van tien cijfers. Het bekende voorbeeld uit de documentatie is NL91 ABNA 0417 1643 00.

Infographic over de opbouw van een IBAN met landcode, controlegetal, bankcode en rekeningnummer.

Wat de onderdelen betekenen

Onderdeel Functie
NL Landcode volgens de ISO-norm
Controlecijfers Vangen invoerfouten in het hele nummer af
Bankcode (bijv. INGB, RABO, ABNA, BUNQ, TRIO) Koppelt het IBAN aan een bank
Rekeningnummer Identificeert de rekening binnen die bank

Oude Nederlandse rekeningnummers waren vaak korter dan tien cijfers. In het IBAN worden ze aangevuld met voorloopnullen. Juist die nullen verdwijnen nogal eens als gegevens via Excel of een oud ERP-systeem worden overgenomen.

Wil je weten hoe een IBAN precies wordt berekend? Lees dan hoe je een IBAN berekent.

Hoe het controlegetal werkt

De logica zit in de modulo 97-methode volgens ISO 13616. De eerste vier tekens gaan naar achteren, letters worden omgezet in getallen, en het resultaat moet bij deling door 97 een rest van 1 geven.

Dat klinkt wiskundig, maar in de praktijk is het een beveiliging tegen typische invoerfouten. Omgedraaide cijfers, een vergeten positie of een verkeerd overgenomen teken vallen meestal op voordat de betaling wordt ingediend.

Kernpunt: het controlegetal is geen versiering. Het is de ingebouwde rem op fouten in het rekeningnummer.

Waarom de bankcode ertoe doet

In een Nederlands IBAN zie je meteen bij welke bank de rekening hoort. RABO staat voor Rabobank, INGB voor ING, ABNA voor ABN AMRO. Dat is handig: je herkent direct of een rekening bij de verwachte bank hoort en of verdere controle zinvol is, bijvoorbeeld als een leverancier ineens een nieuw IBAN doorgeeft. Met de bank-bij-IBAN-tool zoek je de bank achter elk IBAN op.

Een IBAN handmatig en in code controleren

Als je het mechanisme kent, kun je een IBAN ook zonder tool narekenen. Dat is niet bedoeld voor de dagelijkse praktijk, maar het helpt om fouten in eigen software te voorkomen. Een veelgemaakte fout is dat de invoer niet eerst wordt opgeschoond: spaties of kleine letters zorgen ervoor dat de controle al mislukt voordat de berekening begint.

De handmatige controle in vier stappen

  1. Schoon de invoer op. Verwijder spaties en zet alles in hoofdletters.
  2. Verplaats de eerste vier tekens naar achteren. NLpp... wordt ...NLpp.
  3. Zet letters om in getallen. A = 10, B = 11 … Z = 35. Dus N wordt 23 en L wordt 21. Ook de letters van de bankcode worden zo omgezet.
  4. Deel het getal door 97. Alleen als de rest 1 is, is het IBAN formeel geldig.

Let vooral op stap 1 bij gegevens uit formulieren, CSV-bestanden of kopiëren en plakken uit e-mails: spaties, onzichtbare scheidingstekens en meegekopieerde speciale tekens.

Voorbeeldcode voor ontwikkelaars

Een reguliere expressie alleen is niet genoeg: die controleert het formaat, niet het controlegetal.

import re

def validate_dutch_iban(iban):
    iban = iban.replace(" ", "").upper()

    if not re.fullmatch(r"NL\d{2}[A-Z]{4}\d{10}", iban):
        return False

    rearranged = iban[4:] + iban[:4]
    converted = ""

    for ch in rearranged:
        if ch.isalpha():
            converted += str(ord(ch) - 55)
        else:
            converted += ch

    remainder = 0
    for digit in converted:
        remainder = (remainder * 10 + int(digit)) % 97

    return remainder == 1

In JavaScript werkt het op dezelfde manier:

function validateDutchIBAN(iban) {
  iban = iban.replace(/\s+/g, '').toUpperCase();

  if (!/^NL\d{2}[A-Z]{4}\d{10}$/.test(iban)) {
    return false;
  }

  const rearranged = iban.slice(4) + iban.slice(0, 4);

  let converted = '';
  for (const ch of rearranged) {
    if (/[A-Z]/.test(ch)) {
      converted += (ch.charCodeAt(0) - 55).toString();
    } else {
      converted += ch;
    }
  }

  let remainder = 0;
  for (const digit of converted) {
    remainder = (remainder * 10 + parseInt(digit, 10)) % 97;
  }

  return remainder === 1;
}

Wat er vaak misgaat in eigen software

  • Geen opschoning. Worden spaties of scheidingstekens niet verwijderd, dan faalt de controle onnodig vroeg.
  • Alleen formaat, geen controlegetal. Een patroon als NL plus twee cijfers, vier letters en tien cijfers accepteert ook nummers die er goed uitzien maar wiskundig fout zijn.
  • Verkeerde letteromzetting. De omzetting A=10 tot Z=35 moet precies kloppen, ook voor de letters in de bankcode.

Vuistregel: het patroon herkent de vorm, het controlegetal herkent de fout. Vertrouw nooit alleen op het zichtbare patroon.

Bij een klein volume volstaat een degelijke eigen functie. Zodra betaalgegevens uit meerdere bronnen komen of automatisch worden verwerkt, neemt het risico op randgevallen snel toe.

Online tools en de grenzen van een gratis check

Gratis IBAN-checkers hebben hun plek. Een collega controleert snel het nummer van een klant, de administratie checkt een gegeven uit een e-mail. Voor zo’n losse check zijn de IBAN-check en de IBAN-validator van GenerateSEPA handig: ze tonen het controlegetal, de bank en de basisgegevens van het IBAN, niet alleen geldig of ongeldig. Alle gratis tools vind je op de pagina SEPA-tools.

Infographic met de voor- en nadelen van online IBAN-checkers.

Waarvoor zo’n tool geschikt is

Toepassing Geschikt? Waarom
Losse handmatige check Ja Snel, zonder installatie
Controle vóór invoer Ja, met grenzen Goed als eerste drempel
Bulkcontrole uit Excel of ERP Eerder niet Te handmatig, niet schaalbaar
Risico’s in het betaalproces beperken Niet in zijn eentje Formele controle is niet genoeg

Het addertje zit niet in de kwaliteit van deze tools, maar in wat ze controleren. Een gratis checker beantwoordt meestal de syntactische vraag. Voor bedrijven is de operationele vraag vaak belangrijker: kan het geplande SEPA-proces met deze rekening betrouwbaar worden uitgevoerd?

Naam en IBAN samen controleren

Een IBAN kan formeel kloppen en toch bij de verkeerde persoon horen. Daarom controleren banken in de EU sinds oktober 2025 bij overboekingen of de naam van de ontvanger bij het IBAN past (Verification of Payee). Nederlandse banken deden dit al eerder met hun naam-nummercontrole. Meer daarover lees je in IBAN en rekeninghouder controleren.

Kernpunt: een gratis webcheck is een filter, geen vervanging voor een robuust betaalproces.

Een webchecker volstaat voor losse checks, interne vragen en een eerste controle van nieuwe stamgegevens. Hij volstaat niet als batches automatisch worden gemaakt, incasso’s in series lopen of je stornokosten en herstelwerk structureel wilt terugdringen.

Automatiseren met een API

Bedrijven die regelmatig SEPA-bestanden maken of betaalgegevens uit ERP, webshop, CRM of Excel overnemen, kunnen de controle beter automatiseren. Niet uit gemak, maar omdat je de meeste fouten dan afvangt waar ze ontstaan: vóór de export en vóór het aanleveren bij de bank.

Screenshot van een SEPA-generator die IBAN's controleert.

Gespecialiseerde validatie-API’s controleren niet alleen het controlegetal, maar ook of een IBAN een geldige bankcode en een geldig rekeningnummer heeft, en welke SEPA-diensten de bank ondersteunt, zoals B2B, COR1, SCC, SCT en SDD.

Het grootste voordeel is niet snelheid, maar consistentie. Elk binnenkomend IBAN doorloopt dezelfde regels. Dat vermindert handmatige uitzonderingen en stille datafouten die anders pas in de batch opduiken. Voor technische teams is de technische API-documentatie van GenerateSEPA een praktisch startpunt.

Waar je op let bij de keuze

  • Controleert de oplossing alleen modulo 97 of ook bankgegevens? Dat scheidt simpele checkers van productierijpe diensten.
  • Geeft ze extra informatie voor SEPA-processen? Vooral relevant voor incasso’s.
  • Kan de controle vóór de XML-export of de import draaien? Alleen dan vang je fouten op tijd af.

Checklist: foutloze SEPA-betalingen in 2026

Infographic met vijf praktijkregels voor foutloze SEPA-betalingen.

Stap Wat je doet Wanneer
Controle bij invoer IBAN direct in formulier of import checken Bij elke nieuwe of gewijzigde rekening
Twee niveaus Eerst formele check, daarna naam en bankgegevens Vóór de eerste betaling of incasso
Geen handmatige bulkcontrole Lijsten uit Excel, CSV of ERP automatisch controleren Bij elke batch
Oude stamgegevens herzien Historische gegevens opnieuw controleren Periodiek, bijvoorbeeld per kwartaal
Geldig is niet actief Stornering en terugmeldingen terugkoppelen naar je stamgegevens Na elke run

Vuistregel: wie betalingen pas bij het indienen laat “testen”, legt de kwaliteitscontrole op de duurste plek in het proces.

Kleine teams zijn vaak geholpen met een duidelijke scheiding tussen losse checks en productieve batches. Groeiende organisaties hebben baat bij één werkstroom waarin stamgegevens, validatie en bestandsgeneratie samen worden ingericht.

Maak je SEPA-bestanden uit Excel, CSV of JSON en wil je de IBAN-controle direct in dat proces inbouwen? Probeer GenerateSEPA 7 dagen gratis: het platform zet betaalgegevens om naar SEPA XML, controleert IBAN’s vooraf en werkt ook via een API.

Lees ook: de IBAN-naam check en IBAN-validatie.


Veelgestelde vragen

Betekent een geslaagde online IBAN-check dat de betaling lukt?
Niet per se. Een online check bevestigt meestal alleen dat het IBAN formeel klopt. Of de rekening actief is en bij de juiste persoon hoort, vraagt om extra controles, zoals de naam-IBAN-controle van je bank.
Hoe is een Nederlands IBAN opgebouwd?
Een Nederlands IBAN telt 18 tekens: NL, twee controlecijfers, een bankcode van vier letters (zoals INGB, RABO of ABNA) en een rekeningnummer van tien cijfers. Kortere oude rekeningnummers worden aangevuld met voorloopnullen.
Waarom wordt een IBAN dat er goed uitziet toch afgekeurd?
Vaak is de invoer niet opgeschoond: spaties, kleine letters of onzichtbare tekens uit een e-mail of Excel-bestand. Ook een omgedraaid cijfer valt door het controlegetal meestal op. Maak de invoer daarom altijd eerst schoon en reken daarna pas modulo 97.
Hoe beveilig je verzamelbetalingen en incassobatches?
Combineer controle bij invoer, een automatische check van complete lijsten en een export die alleen al gecontroleerde gegevens gebruikt. Zo verplaats je de kwaliteitscontrole naar het begin van het proces, waar fouten het goedkoopst zijn.

Gerelateerde artikelen