Wer in einem Verein die Mitgliedsbeiträge einzieht, möchte nicht jede Lastschrift einzeln im Onlinebanking erfassen. Stattdessen erzeugt er eine Datei und reicht sie bei der Bank ein. Diese Datei muss dem Format „pain.008“ entsprechen, einer XML-Struktur mit festgelegten Elementen, Pflichtangaben und Prüfregeln. Wie das SEPA-Lastschriftverfahren funktioniert, wofür wir die Datei benötigen und wie sie Element für Element aufgebaut ist, zeigt der vorliegende Beitrag.
Das SEPA-Lastschriftverfahren im Überblick
Bei einer Lastschrift zieht der Zahlungsempfänger einen Betrag vom Konto des Zahlers ein. Bei einer Überweisung ist es umgekehrt. Im Lastschriftverfahren heißt der Zahlungsempfänger Gläubiger und der Zahler Schuldner. In unserem Beispiel ist der Gläubiger ein Sportverein, die Schuldner sind seine Mitglieder.
Für Zahler, die Privatpersonen sind, gilt die SEPA-Basislastschrift. Im Format trägt sie die Bezeichnung CORE. Für Zahler, die Unternehmen sind, gibt es die SEPA-Firmenlastschrift mit der Bezeichnung B2B. Wir arbeiten in dieser Beitragsreihe mit der Basislastschrift, denn sie ist für Mitgliedsbeiträge von Privatpersonen das übliche Verfahren. Damit ein Verein Lastschriften einziehen kann, benötigt er drei Dinge:
- Lastschriftvereinbarung: Der Verein schließt sie mit seiner Bank ab. Die Bank gibt damit das Einreichen von Lastschriften frei.
- Gläubiger-Identifikationsnummer: Diese 18 Zeichen lange Kennung des Gläubigers beantragt der Verein bei der Deutschen Bundesbank. Sie beginnt in Deutschland mit DE.
- SEPA-Lastschriftmandat: Jedes Mitglied, dessen Beitrag der Verein einzieht, erlaubt ihm mit seiner Unterschrift, den Beitrag einzuziehen. Das Mandat erhält eine Mandatsreferenz, die der Verein vergibt, und trägt das Datum der Unterschrift.
Wie läuft ein Einzug ab? Der Verein kündigt die Abbuchung zunächst an. Diese Vorabinformation erfolgt in der Regel 14 Tage vor der Fälligkeit, sofern der Verein mit dem Mitglied nichts anderes vereinbart hat. Anschließend reicht der Verein die Lastschriften bei seiner Bank ein. Die Bank leitet sie an die Banken der Zahler weiter, die den Betrag zum Fälligkeitstag abbuchen.
Ein Zahler kann eine Basislastschrift innerhalb von acht Wochen nach der Abbuchung ohne Angabe von Gründen zurückgeben. Liegt kein gültiges Mandat vor, verlängert sich diese Frist auf 13 Monate. Der Verein erhält in beiden Fällen eine Rücklastschrift.
Wofür wir die Datei pain.008 benötigen
Eine Lastschrift besteht aus Angaben zum Gläubiger, zum Zahler, zum Mandat, zum Betrag und zum Fälligkeitsdatum. Für wenige Lastschriften können wir diese Angaben im Onlinebanking von Hand eintragen. Bei einem Verein mit mehreren hundert Mitgliedern ist das nicht praktikabel. Wie lösen wir das Problem? Ganz einfach: Wir erzeugen alle Lastschriften eines Einzugs in einer einzigen Datei und überlassen das Einlesen der Bank.
Banking-Programme und die Webseiten der Banken bieten dafür in der Regel den Import von Sammellastschriften an. Sie lesen die Datei ein, zeigen die enthaltenen Lastschriften zur Kontrolle an und reichen sie nach der Freigabe durch den Benutzer bei der Bank ein. Das Format ist ein Standard, den die Banken im SEPA-Raum verarbeiten. Einzelne Banken können zusätzliche Anforderungen stellen. Wir schreiben die Datei per VBA-Prozedur in Access, ohne Zusatzkomponente.
Vor der Einführung von SEPA war dafür das Format DTAUS üblich, das der Beitrag Lastschrifteinzug per Datenträgeraustausch (www.access-im-unternehmen.de/704) beschreibt. Heute ist an seine Stelle ein XML-Format getreten. Wer die Lastschriften direkt aus Access bei der Bank einreichen möchte, findet im Beitrag Lastschriften mit DDBAC und VBA (www.access-im-unternehmen.de/1544) eine Lösung, die allerdings die kostenpflichtige Bibliothek DDBAC voraussetzt.
Der Name des Formats setzt sich aus mehreren Teilen zusammen. Die Buchstaben pain stehen für Payment Initiation, die Nummer 008 kennzeichnet die Nachricht für das Einreichen von Lastschriften. Die Angaben 001 und 08 stehen für die Variante und die Version. Die ältere Version pain.008.001.02 ist nur bis November 2026 zugelassen, daher verwenden wir die Version pain.008.001.08. Ihr Namensraum lautet urn:iso:std:iso:20022:tech:xsd:pain.008.001.08.
Dieser Beitrag eröffnet eine Reihe, in der wir eine Vereinsverwaltung aufbauen, die Mitgliedsbeiträge per SEPA-Lastschrift einzieht. Als Grundlage dafür klären wir zunächst, welche Angaben die Datei verlangt.
Der Aufbau einer Lastschriftdatei
Eine Datei im Format pain.008 ist ein XML-Dokument. Die Angaben stehen überwiegend in Elementen, die ineinander verschachtelt sind. Das Wurzelelement heißt Document. Es enthält das Element CstmrDrctDbtInitn (Customer Direct Debit Initiation) mit zwei Bestandteilen: dem Kopf der Datei (GrpHdr, Group Header) und den Sammlern (PmtInf, Payment Information). Die Sammler enthalten die einzelnen Lastschriften (DrctDbtTxInf, Direct Debit Transaction Information).
Die Beispieldatei pain008-Beispiel.xml enthält einen Kopf, zwei Sammler und drei Lastschriften.
Den Aufbau zeigt das folgende Gerüst:
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.008.001.08">
<CstmrDrctDbtInitn>
<GrpHdr> ... </GrpHdr>
<PmtInf>
... Angaben zum Sammler ...
<DrctDbtTxInf> ... </DrctDbtTxInf>
<DrctDbtTxInf> ... </DrctDbtTxInf>
</PmtInf>
<PmtInf>
... Angaben zum Sammler ...
<DrctDbtTxInf> ... </DrctDbtTxInf>
</PmtInf>
</CstmrDrctDbtInitn>
</Document>
Ein Sammler fasst Lastschriften zusammen, die gemeinsam eingereicht und gebucht werden. Er enthält Lastschriften mit demselben Gläubiger, derselben Fälligkeit, derselben Lastschriftart und demselben Folgetyp. In der Beispieldatei gibt es einen Sammler für wiederkehrende Lastschriften und einen für eine erste Lastschrift.
Die Datei beginnt mit der XML-Deklaration, die wir im Gerüst weggelassen haben. Sie definiert die Kodierung: . Wir müssen die Datei in UTF-8 speichern. Falls nicht, erscheinen die Umlaute falsch.
Der Kopf der Datei
Der Kopf beschreibt die gesamte Datei. Er steht im Element GrpHdr und hat in der Beispieldatei den folgenden Inhalt:
<GrpHdr>
<MsgId>SVB-20261117-0001</MsgId>
<CreDtTm>2026-11-17T09:30:00</CreDtTm>
<NbOfTxs>3</NbOfTxs>
<CtrlSum>135.00</CtrlSum>
<InitgPty>
<Nm>Sportverein Beispielstadt e.V.</Nm>
</InitgPty>
</GrpHdr>
Die einzelnen Elemente haben diese Bedeutung:
- MsgId: Kennung der Datei (Message Identification) mit höchstens 35 Zeichen. Sie muss für jede Datei neu vergeben werden, denn die Bank erkennt daran doppelt eingereichte Dateien.
- CreDtTm: Datum und Uhrzeit der Erstellung im Format JJJJ-MM-TTThh:mm:ss, wobei das T Datum und Uhrzeit trennt.
- NbOfTxs: Anzahl aller Lastschriften in der Datei. In der Beispieldatei sind es 3.
- CtrlSum: Summe aller Beträge der Datei, mit dem Punkt (.) als Dezimaltrennzeichen und zwei Nachkommastellen. In der Beispieldatei beträgt sie 135.00.
- InitgPty: Einreichende Partei (Initiating Party). Der Name im Unterelement Nm geht in die Prüfung auf doppelte Einreichung ein. Wir schreiben ihn deshalb in allen Dateien gleich.
Die Bank vergleicht die Angaben in den Elementen NbOfTxs und CtrlSum mit den Werten der Lastschriften. Weichen die Angaben ab, weist die Bank die Datei zurück.
Ein Sammler je Fälligkeit und Folgetyp
Jeder Sammler beginnt mit der Kennung, der Zahlungsart sowie der Anzahl und der Summe der Lastschriften. In der Beispieldatei sieht der Anfang des ersten Sammlers so aus:
<PmtInf> <PmtInfId>SVB-20261201-RCUR</PmtInfId> <PmtMtd>DD</PmtMtd> <BtchBookg>true</BtchBookg> <NbOfTxs>2</NbOfTxs> <CtrlSum>90.00</CtrlSum>
- PmtInfId: Kennung des Sammlers (Payment Information Identification). Sie muss ebenfalls eindeutig sein und erscheint in der Regel auf dem Kontoauszug des Vereins.
- PmtMtd: Zahlungsart (Payment Method). Bei Lastschriften steht hier der Wert DD für Direct Debit.
- BtchBookg: Mit dem Wert true fordern wir eine Sammelbuchung an. Die Lastschriften des Sammlers erscheinen dann in der Regel als eine Buchung.
- NbOfTxs und CtrlSum: Anzahl und Summe der Lastschriften dieses Sammlers. In der Beispieldatei sind es 2 Lastschriften mit der Summe 90.00.
Es folgen die Angaben zum Verfahren und zur Fälligkeit:
Unser exklusives Angebot für Dich!
(Gilt für den Abschluss eines Jahres-Abonnements im ersten Jahr, danach 189,-/Jahr)
Hier geht’s weiter →Die ersten 4 Wochen kostenlos testen – voller Zugriff auf alle Artikel, vollständigen Code und Beispieldatenbanken. Kein Risiko: Wenn es nicht passt, kündigst Du einfach innerhalb der ersten vier Wochen.
Hast Du eine konkrete Frage zu Deiner eigenen Access-Anwendung?
Vielleicht stellt Deine Anwendung Dich vor eine Herausforderung, zu der Du bisher keine Lösung findest. Schlechte Performance, kein ausreichender Zugriffsschutz, Du bist unsicher über Dein Datenmodell oder Dein Code liefert unerklärliche Fehler?
In unserem kostenlosen Access-Audit schaut sich André Minhorst persönlich gemeinsam mit Dir Deine Lösung per Zoom an – und zeigt Dir, wo Datenmodell, VBA-Code, Ergonomie und Sicherheit Optimierungspotenzial bieten.
Jetzt kostenloses Access-Audit anfordern →