KONTOPRUEF-Navigation:
Kundencenter
KONTOPRUEF allgemein:
KONTOPRUEF-ONLINE:
KONTOPRUEF-INHOUSE ("HanftServer"):
KONTOPRUEF-OFFLINE:
Tools und Demos:
Impressum
Datenschutz
|
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.
- 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).
- 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 IBAN | Normalform |
de08 7601 0085 0000 0018
56 |
DE08760100850000001856 |
- 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.
- 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:
- 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).
- 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.)
- 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...
|