KONTOPRUEF-Logo
Sehen Sie sich auch mein anderes Produkt an:
myebilanz – die Freeware-eBilanz aus MySQL und CSV!
myebilanz

HowTo: Prüfung von IBAN und BIC

Auf dieser Seite erfahren Sie, wie Sie mit KONTOPRUEF-OFFLINE am besten die Eingabe und Prüfung einer IBAN und eines BIC durchführen.

  1. Die Eingabe der IBAN

    Zunächst haben Sie in Ihrer Software irgendwo ein Eingabefeld für die IBAN. Eine IBAN kann maximal 34 Zeichen lang sein; so lange muss Ihr Eingabefeld also mindestens sein. Wenn Sie damit rechnen (und/oder es ermöglichen wollen), dass der Benutzer auch die zur besseren Lesbarkeit eingestreuten Leerzeichen eingeben können dürfen soll, machen Sie das Feld entsprechend länger (bei einer 34stelligen IBAN sollten maximal 8 Leerzeichen enthalten sein; eine Länge von 42 sollte daher theoretisch genügen; mit etwas Reserve können Sie das Eingabefeld also z.B. 50 Zeichen lang machen. Ein kürzeres Feld mit Scrollmöglichkeit geht bei Platzmangel natürlich auch, ist aber sehr unübersichtlich).

    Wichtig: Sagen Sie nicht "eine deutsche IBAN ist doch eh nur 22 Stellen lang, da kann ich das Feld doch viel kürzer machen"! Eine Beschränkung auf deutsche IBAN ist unzulässig; es wurden schon Firmen abgemahnt, die in ihren SEPA-Mandatsvordrucken "DE" für deutsche IBAN vorgedruckt hatten!

    Ihr Eingabefeld sieht also in erster Näherung wie folgt aus (bitte
    beachten Sie, dass es wesentlich länger ist als eine deutsche IBAN!):
    IBAN:de08 7601 0085 0000 0018 56                    

    Ein Eingabefeld für den BIC können Sie theoretisch ebenfalls anzeigen; dies ist aber eigentlich nur für ausländische IBAN nötig (und auch das nur bis zum Jahr 2016), da für deutsche IBAN der BIC errechnet werden kann (siehe unten).

  2. Die Umformatierung der IBAN

    Bevor Sie irgendetwas mit der IBAN machen, bringen Sie sie erst in die "Normalform": Nur Großbuchstaben und Ziffern (d.h. alle Leerschritte und evtl. andere Sonderzeichen entfernen, sowohl innerhalb als auch vor und hinter der IBAN; alle Buchstaben in Großschreibung umwandeln):

    Eingegebene IBANNormalform
    de08 7601 0085 0000 0018 56                     DE08760100850000001856

  3. Die generelle IBAN-Prüfung

    Als erstes rufen Sie die Funktion TestIban auf, um die generelle Richtigkeit der IBAN zu prüfen:

    result=TestIban(iban)

    Wenn Sie hier nicht das Ergebnis 0 (Ok) erhalten, zeigen Sie dem Benutzer unmittelbar eine Fehlermeldung an und gehen zum ersten Schritt zurück, da mit einer ohnehin fehlerhaften IBAN keinerlei weitere Prüfungen bzw. Berechnungen möglich oder sinnvoll sind.

  4. Prüfung auf Deutschland/Ausland

    Nun sollten Sie untersuchen, ob es sich um eine deutsche oder ausländische IBAN handelt, da die weiteren Prüf- und Eingabemöglichkeiten sich etwas unterscheiden. Deutsche IBAN beginnen immer mit "DE"; Ihre Software könnte daher ungefähr lauten ("Mid" ermittelt einen Teilstring, "Mid(..., 4, 7)" z.B. sieben Zeichen ab der vierten Stelle):

    if Mid(iban, 1, 2)="DE" then ' Deutschland
    ...
    else ' also: Ausland
    ...
    end if

    Die weitergehenden Schritte sind nun jeweils:

    1. Ausländische IBAN

      Für ausländische IBAN benötigen Sie (zumindest bis Januar 2016) noch den BIC, da in diesem Fall keine Ermittlung aus der IBAN möglich ist. Zeigen Sie dem Benutzer also spätestens jetzt ein BIC-Eingabefeld an und konvertieren Sie auch den eingegebenen BIC in die "Normalform" (also alle Leerzeichen darin, davor und dahinter entfernen und alle Buchstaben in Großschreibung umwandeln). Wichtig: Bereits an dieser Stelle können Sie unsinnige Eingaben abfangen, da ein BIC (in der "Normalform") stets 8 oder 11 Zeichen lang ist (nicht mehr, nicht weniger, und insbesondere auch nichts dazwischen!).

      Wenn Sie mit einheitlichen (11stelligen) BIC-Längen arbeiten wollen, können Sie bereits hier an einen 8stelligen BIC die Zeichen "XXX" anhängen (das ist völlig gleichwertig zu einem 8stelligen BIC).

      Zur Prüfung des BIC siehe weiter unten (nach dem Abschnitt über deutsche IBAN).

    2. Deutsche IBAN

      Mit deutschen IBAN haben Sie (bis auf weiteres) zusätzliche Prüf- und Berechnungsmöglichkeiten, die Sie unbedingt ausnutzen sollten:

      • der obige IBAN-Test gibt Ihnen nur an, ob die IBAN formal korrekt ist, sagt jedoch nichts über die Existenz der Bank und die formale Richtigkeit der enthaltenen Kontonummer aus. Daher sollten Sie, solange es noch möglich ist, die bisherigen Prüfverfahren weiterhin anwenden.
      • aus der eingegebenen IBAN können Sie den BIC ermitteln, so dass der Benutzer diesen nicht eingeben muss (Tipp- und ander Fehler werden vermieden) und der BIC automatisch korrekt ist.

      Das ganze funktioniert so, dass Sie zunächst die nationale Bankverbindung aus der IBAN extrahieren (Bankleitzahl = 5. bis 12. Stelle der IBAN; Kontonummer = 13. bis 22. Stelle der IBAN) und daraufhin die Funktionen TestBlzKto und GetBic aufrufen:

      blz=Mid(iban, 5, 8) ' 8 Stellen: 5. bis 12. Stelle der IBAN
      kto=Mid(iban, 13, 10) ' 10 Stellen: 13. bis 22. Stelle der IBAN
      result=TestBlzKto(blz, kto) ' national prüfen
      bic=GetBic(blz) ' BIC aus der in der IBAN enthaltenen BLZ ermitteln
      bankname=GetBankName27(blz) ' wenn Sie den nationalen Banknamen anzeigen wollen (siehe unten)

      Dabei kann nun folgendes passieren:

      • result=-1 und bic ist leer: Die IBAN ist zwar formal korrekt, aber die darin enthaltene Bank gibt es nicht. Zurück zu Schritt 1.
      • result>=11: Die IBAN und die darin enthaltene Bank sind zwar korrekt, aber mit der in der IBAN enthaltenen Kontonummer stimmt etwas nicht. Zurück zu Schritt 1.
      • 0<=result<=10: IBAN in Ordnung; in bic haben Sie nun den BIC der eingegebenen IBAN. Weiter zum nächsten Schritt.

      (Die genauen Fehlercodes, die in result erscheinen können, finden Sie in der Fehlercodetabelle.)

  5. Prüfung des BIC

    Und schließlich können Sie mit der Funktion SepaCommand noch den BIC prüfen (für in- und ausländische Banken): einmal die reine Existenz (im SCL-Directory der Bundesbank), und zum anderen die Erreichbarkeit für Überweisungen, Core-Lastschriften und B2B-Lastschriften:

    result=SepaCommand("BICSCL", 0, 0, 0, bic, "SDD", "") ' z.B. für CORE-Lastschriften
    if result=13 then ' BIC ist nicht per SEPA erreichbar
      bankname=""
    else ' BIC und damit Bankname gefunden
      bankname=GetLastError()
    end if

    (Für die Erreichbarkeit für Überweisungen müssten Sie "SCT" statt "SDD" angeben; für B2B-Lastschriften "B2B".)

    Ein result=0 bedeutet "Alles in Ordnung"; andere mögliche Ergebnisse können Sie bei der Dokumentation zu SepaCommand nachlesen.

    Zur Information des Benutzers sollte der ermittelte Bankname (und im Fall des automatisch ermittelten BIC bei deutschen IBAN auch der BIC selbst) angezeigt werden. Ob Sie bei deutschen IBAN den mit GetBankName27 ermittelten nationalen Banknamen oder den mit SepaCommand aus dem BIC ermittelten Banknamen anzeigen, bleibt Ihnen überlassen (der nationale ist meist etwas "hübscher"; Sie können der Vollständigkeit halber natürlich auch beide nebeneinander anzeigen).

Wenn Sie die obigen Schritte wie hier angegeben in Ihre Software implementieren, haben Sie am Schluss einen perfekt geprüften IBAN- und BIC-Datenbestand!

Weitere Hinweise:

  • Die nationalen "Zusatzprüfungen" für deutsche IBAN (wie oben angegeben) sind nur noch möglich, solange die Bundesbank weiterhin ihre Bankleitzahlentabelle veröffentlicht. Dies soll aber zunächst "bis auf weiteres" der Fall sein. Sollten sich hier Änderungen ergeben, werden wir Sie baldmöglichst informieren.
  • Mit der KONTOPRUEF-ONLINE-Funktion IBAN- und BIC-Prüfung bräuchten Sie das alles nicht programmieren, da all die hier beschriebenen Funktionen und Prüfungen dort bereits enthalten sind! Falls es in Ihrer Softwareumgebung technisch möglich ist, könnten Sie daher evtl. einmal über einen Umstieg auf KONTOPRUEF-ONLINE nachdenken...
Sehen Sie sich auch mein anderes Produkt an:
myebilanz – die Freeware-eBilanz aus MySQL und CSV!
myebilanz