Warum die Bank eine SEPA-Datei ablehnt
Eine abgelehnte SEPA-Datei meldet die Bank oft nur mit einem knappen Satz wie „Datei fehlerhaft“ oder einem Fehlercode. Dahinter stecken meist wenige Ursachen: Die Kontrollsumme im Kopf passt nicht zur Summe der Posten, eine IBAN hat einen Zahlendreher, ein Name enthält ein Zeichen, das SEPA nicht kennt, die Datei beginnt mit einem unsichtbaren Byte Order Mark, oder sie ist in einer Version geschrieben, die die Bank nicht mehr annimmt. Anlage 3 des DFÜ-Abkommens erlaubt der Bank ausdrücklich, bei falschem Format oder falschem Inhalt die ganze Datei abzuweisen.
Dieser Checker sucht genau diese Fehler und zeigt sie mit Block- und Postennummer, damit Sie die Stelle in Ihrer Software oder Liste finden. Die Datei bleibt dabei auf Ihrem Gerät: Im Netzwerkprotokoll des Browsers sehen Sie nur das Nachladen des Prüfprogramms und der Schemadateien von dieser Domain, keine Anfrage mit dem Inhalt Ihrer Datei.
Was der Checker prüft, und was nicht
Zuerst die Struktur: libxml2, das Programm hinter dem Befehl xmllint, läuft hier als
WebAssembly (xmllint-wasm 5.3.0, MIT-Lizenz, rund 0,8 MB, auf dieser Domain abgelegt) und prüft die
Datei gegen das passende Technical Validation Subset der Deutschen Kreditwirtschaft. Das sind die
XSD-Dateien, die die DK für ihre Mitgliedsbanken veröffentlicht: GBIC_5 für die aktuellen Versionen,
GBIC_3 für die älteren. Das Schema prüft Pflichtfelder, Reihenfolge, Längen, Datumsformat, die Form
von IBAN und BIC und erlaubte Codes.
Was ein Schema nicht kann, rechnet der Checker selbst nach:
- Anzahl (NbOfTxs) und Kontrollsumme (CtrlSum) im Kopf und in jedem Zahlungsblock, in ganzen Cent;
- die Prüfziffer jeder IBAN nach MOD-97, auch die des Auftraggeberkontos;
- die Prüfziffer der Gläubiger-ID nach der Regel aus Anlage 3 (Stellen 5 bis 7 zählen nicht mit);
- doppelte Ende-zu-Ende-IDs und doppelte Blockkennungen;
- Zeichen außerhalb des Zeichensatzes, den deutsche Banken annehmen müssen;
- Ausführungs- oder Fälligkeitsdatum in der Vergangenheit, Mandatsdatum in der Zukunft, BOM am Dateianfang.
Nicht prüfen lässt sich, ob ein Konto existiert, ob ein Lastschriftmandat wirksam ist, ob Ihre Bank für Datei-Einreichungen ein Limit gesetzt hat und ob der Auftrag noch vor ihrem Annahmeschluss ankommt. Die elektronische Unterschrift (EBICS, TAN) gehört ebenfalls nicht zur Datei.
pain.001.001.03 oder pain.001.001.09: welche Version gilt?
Seit dem 05.10.2025 gilt für SEPA die Anlage 3 in Version 3.9. Sie schreibt pain.001.001.09 für Überweisungen und pain.008.001.08 für Lastschriften vor, beide nach ISO 20022 in der Fassung von 2019. Die Vorgänger pain.001.001.03 und pain.008.001.02 (ISO-Fassung 2009) führt die DK in ihrer Übersicht der SEPA-Formatversionen vom 24.09.2026 als „vorübergehend weiter verwendbar“. Eigentlich sollten sie im November 2026 enden; die DK hat das ausgesetzt, weil SWIFT und das European Payments Council die alten Adressangaben länger dulden. Ein neues Enddatum wird dort bekannt gegeben. Noch ältere Varianten wie pain.001.003.03 oder pain.008.003.02 endeten laut derselben Übersicht im November 2022, die nimmt keine Bank mehr an. Der Checker liest alle vier gültigen Versionen und sagt Ihnen, welche Sie vor sich haben.
Fehlermeldungen des Schemas lesen
Die Meldungen von libxml2 sind englisch und technisch, sagen aber genau, wo es hakt. „Element 'CtrlSum': [facet 'fractionDigits'] … more fractional digits than allowed“ heißt: mehr als zwei Nachkommastellen. „This element is not expected. Expected is ( Cdtr )“ heißt: Ein Pflichtfeld fehlt oder steht an der falschen Stelle. „[facet 'pattern'] The value 'DE89…' is not accepted“ bei einer IBAN bedeutet meist ein Leerzeichen oder Kleinbuchstaben. „[facet 'maxLength']“ zeigt ein zu langes Feld, etwa einen Namen über 70 oder einen Verwendungszweck über 140 Zeichen. Die Zeilennummer vor jeder Meldung bezieht sich auf die Datei, die Sie geladen haben.
SEPA-Datei bearbeiten: über die CSV-Liste
Eine SEPA-Datei im Texteditor zu ändern, geht schnell schief, weil Summe und Anzahl im Kopf mitwandern müssen. Sicherer ist der Umweg über eine Tabelle: Laden Sie die Posten mit „Posten als CSV laden“ herunter, korrigieren Sie sie in Excel und bauen Sie daraus mit dem SEPA-XML-Generator eine neue Datei in der aktuellen Version. Dabei entstehen neue Kennungen für Nachricht und Blöcke, sodass die Bank die neue Datei nicht als Dublette der abgelehnten ansieht.