SEPA XML Format – pain.008, pain.001, Aufbau & Validierung
Das SEPA-XML-Format ist der technische Standard für die Einreichung von Überweisungen und Lastschriften bei der Bank. Hier erfährst du alles über den Aufbau von pain.001- und pain.008-Dateien, Versionen und die korrekte Validierung.
Inhaltsverzeichnis
Was ist das SEPA XML Format?
Das SEPA-XML-Format basiert auf dem internationalen Standard ISO 20022 und ist das verbindliche Datenformat für die elektronische Einreichung von SEPA-Zahlungsaufträgen bei Banken. XML steht für Extensible Markup Language – eine maschinenlesbare Auszeichnungssprache, die Zahlungsinformationen in einer hierarchisch strukturierten Textdatei beschreibt.
Jede SEPA-Zahlung – ob Überweisung oder Lastschrift – wird als XML-Nachricht erstellt und an die Bank des Auftraggebers übermittelt. Die Bezeichnung der Nachrichten folgt dem Schema pain.xxx.yyy.zz, wobei pain für Payment Initiation steht.
Die beiden wichtigsten Nachrichtentypen im SEPA-Zahlungsverkehr sind:
- pain.001 – Customer Credit Transfer Initiation (Überweisungsauftrag)
- pain.008 – Customer Direct Debit Initiation (Lastschriftauftrag)
Das XML-Format hat die früheren nationalen Datenformate (in Deutschland: DTAUS und DTA) vollständig abgelöst. Es bietet deutlich mehr Informationsfelder, eine einheitliche Struktur für alle SEPA-Länder und eine standardisierte Validierung über XML-Schema-Definitionen (XSD).
pain.001 – SEPA-Überweisung
Die pain.001-Nachricht (Customer Credit Transfer Initiation) ist das XML-Format für SEPA-Überweisungsaufträge. Sie wird vom Auftraggeber (Debtor) erstellt und bei seiner Bank eingereicht, um eine oder mehrere Überweisungen auszuführen.
Typische Einsatzszenarien für pain.001-Dateien:
- Gehaltsüberweisungen: Sammelüberweisung aller Gehälter in einer Datei
- Lieferantenbegleichungen: Bündelung offener Rechnungen zu einer Sammelüberweisung
- Mietüberweisungen: Regelmäßige Zahlungen an Vermieter oder Dienstleister
- Steuer- und Abgabenzahlungen: Automatisierte Überweisung von Steuern und Sozialabgaben
Aufbau einer pain.001-Datei
Eine pain.001-Datei hat folgende grundlegende Struktur:
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.003.03">
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>MSG-001-2025-01</MsgId>
<CreDtTm>2025-01-15T10:30:00</CreDtTm>
<NbOfTxs>2</NbOfTxs>
<CtrlSum>1500.00</CtrlSum>
<InitgPty>
<Nm>Musterfirma GmbH</Nm>
</InitgPty>
</GrpHdr>
<PmtInf>
<PmtInfId>PMT-001</PmtInfId>
<PmtMtd>TRF</PmtMtd>
<NbOfTxs>2</NbOfTxs>
<CtrlSum>1500.00</CtrlSum>
<ReqdExctnDt>2025-01-20</ReqdExctnDt>
<Dbtr>...</Dbtr>
<DbtrAcct>...</DbtrAcct>
<DbtrAgt>...</DbtrAgt>
<CdtTrfTxInf>...</CdtTrfTxInf>
</PmtInf>
</CstmrCdtTrfInitn>
</Document>
Das Wurzelelement CstmrCdtTrfInitn (Customer Credit Transfer Initiation) enthält den GrpHdr (GroupHeader) mit Metadaten zur Datei sowie einen oder mehrere PmtInf-Blöcke (Payment Information) mit den eigentlichen Überweisungstransaktionen.
pain.008 – SEPA-Lastschrift
Die pain.008-Nachricht (Customer Direct Debit Initiation) ist das XML-Format für SEPA-Lastschriftaufträge. Sie wird vom Zahlungsempfänger (Creditor) erstellt und bei seiner Bank eingereicht, um Lastschriften von den Konten der Zahlungspflichtigen einzuziehen.
Im Vergleich zur pain.001-Datei enthält die pain.008 zusätzliche lastschriftspezifische Informationen wie die Gläubiger-ID, Mandatsdaten, Sequenztypen und das Fälligkeitsdatum. Außerdem wird zwischen CORE- und B2B-Lastschriften unterschieden, was durch den LclInstrm-Code (CORE oder B2B) angegeben wird.
Aufbau einer pain.008-Datei
Eine pain.008-Datei hat folgende grundlegende Struktur:
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.008.003.02">
<CstmrDrctDbtInitn>
<GrpHdr>
<MsgId>MSG-DD-2025-01</MsgId>
<CreDtTm>2025-01-15T10:30:00</CreDtTm>
<NbOfTxs>3</NbOfTxs>
<CtrlSum>750.00</CtrlSum>
<InitgPty>
<Nm>Musterfirma GmbH</Nm>
</InitgPty>
</GrpHdr>
<PmtInf>
<PmtInfId>PMT-DD-001</PmtInfId>
<PmtMtd>DD</PmtMtd>
<NbOfTxs>3</NbOfTxs>
<CtrlSum>750.00</CtrlSum>
<PmtTpInf>
<SvcLvl><Cd>SEPA</Cd></SvcLvl>
<LclInstrm><Cd>CORE</Cd></LclInstrm>
<SeqTp>RCUR</SeqTp>
</PmtTpInf>
<ReqdColltnDt>2025-01-25</ReqdColltnDt>
<Cdtr>...</Cdtr>
<CdtrAcct>...</CdtrAcct>
<CdtrAgt>...</CdtrAgt>
<CdtrSchmeId>
<Id><PrvtId><Othr>
<Id>DE98ZZZ09999999999</Id>
<SchmeNm><Prtry>SEPA</Prtry></SchmeNm>
</Othr></PrvtId></Id>
</CdtrSchmeId>
<DrctDbtTxInf>
<PmtId><EndToEndId>RG-2025-001</EndToEndId></PmtId>
<InstdAmt Ccy="EUR">250.00</InstdAmt>
<DrctDbtTx>
<MndtRltdInf>
<MndtId>MNDT-2024-001</MndtId>
<DtOfSgntr>2024-06-15</DtOfSgntr>
</MndtRltdInf>
</DrctDbtTx>
<DbtrAgt>...</DbtrAgt>
<Dbtr><Nm>Max Mustermann</Nm></Dbtr>
<DbtrAcct><Id><IBAN>DE89370400440532013000</IBAN></Id></DbtrAcct>
<RmtInf><Ustrd>Rechnung RG-2025-001</Ustrd></RmtInf>
</DrctDbtTxInf>
</PmtInf>
</CstmrDrctDbtInitn>
</Document>
XML-Struktur im Detail
Sowohl pain.001- als auch pain.008-Dateien folgen einer dreistufigen Hierarchie: GroupHeader, PaymentInformation und Transaktionsdaten. Das Verständnis dieser Struktur ist entscheidend für die korrekte Erstellung und Fehleranalyse von SEPA-XML-Dateien.
GroupHeader (GrpHdr)
Der GroupHeader ist der Kopfbereich der XML-Datei und enthält Metadaten, die sich auf die gesamte Nachricht beziehen. Er kommt genau einmal pro Datei vor.
|
XML-Element
|
Bezeichnung
|
Beschreibung
|
Pflicht
|
|---|---|---|---|
MsgId
|
Message Identification | Eindeutige Kennung der Nachricht (max. 35 Zeichen) | Ja |
CreDtTm
|
Creation Date Time | Erstellungszeitpunkt der Datei im ISO-8601-Format | Ja |
NbOfTxs
|
Number of Transactions | Gesamtanzahl aller Transaktionen in der Datei | Ja |
CtrlSum
|
Control Sum | Summe aller Transaktionsbeträge (zur Plausibilitätsprüfung) | Optional |
InitgPty
|
Initiating Party | Name des Erstellers der Datei (Auftraggeber) | Ja |
PaymentInformation (PmtInf)
Der PaymentInformation-Block enthält alle Informationen, die für eine Gruppe von Zahlungen gemeinsam gelten. Eine Datei kann mehrere PmtInf-Blöcke enthalten – zum Beispiel einen Block pro Fälligkeitsdatum oder einen pro Sequenztyp bei Lastschriften.
|
XML-Element
|
Bezeichnung
|
Beschreibung
|
|---|---|---|
PmtInfId
|
Payment Information ID | Eindeutige Kennung des Zahlungsblocks |
PmtMtd
|
Payment Method |
TRF (Transfer) bei Überweisung, DD (Direct Debit) bei Lastschrift
|
PmtTpInf
|
Payment Type Information | Service Level (SEPA), Local Instrument (CORE/B2B), Sequenztyp |
ReqdExctnDt
|
Requested Execution Date | Gewünschtes Ausführungsdatum (pain.001) |
ReqdColltnDt
|
Requested Collection Date | Gewünschtes Fälligkeitsdatum (pain.008) |
Dbtr / Cdtr
|
Debtor / Creditor | Auftraggeber (Überweisung) bzw. Zahlungsempfänger (Lastschrift) |
CdtrSchmeId
|
Creditor Scheme ID | Gläubiger-ID des Zahlungsempfängers (nur pain.008) |
Transaktionsdaten (DrctDbtTxInf / CdtTrfTxInf)
Die Transaktionsebene enthält die Daten jeder einzelnen Zahlung. Bei Lastschriften heißt das Element DrctDbtTxInf (Direct Debit Transaction Information), bei Überweisungen CdtTrfTxInf (Credit Transfer Transaction Information).
|
XML-Element
|
Bezeichnung
|
Beschreibung
|
|---|---|---|
EndToEndId
|
End-to-End Identification | Eindeutige Transaktions-ID, die durch die gesamte Zahlungskette gereicht wird |
InstdAmt
|
Instructed Amount |
Betrag der Zahlung in EUR (mit Attribut Ccy="EUR")
|
MndtId
|
Mandate Identification | Mandatsreferenz (nur pain.008) |
DtOfSgntr
|
Date of Signature | Unterschriftsdatum des Mandats (nur pain.008) |
IBAN
|
IBAN | Kontonummer des Empfängers (Überweisung) bzw. Zahlungspflichtigen (Lastschrift) |
BIC
|
BIC | Bankkennung (innerhalb der EU optional seit 2016) |
Ustrd
|
Unstructured | Unstrukturierter Verwendungszweck (max. 140 Zeichen) |
Versionen und Namespaces
SEPA-XML-Dateien gibt es in verschiedenen Versionen, die durch den XML-Namespace im Wurzelelement identifiziert werden. Die Versionierung folgt dem Schema pain.xxx.yyy.zz, wobei xxx den Nachrichtentyp, yyy die Variante und zz die Version angibt.
|
Version
|
Namespace
|
Verwendung
|
|---|---|---|
| pain.001.003.03 |
urn:iso:std:iso:20022:tech:xsd:pain.001.003.03
|
Überweisung, DFÜ-Abkommen (DE), weit verbreitet |
| pain.001.001.03 |
urn:iso:std:iso:20022:tech:xsd:pain.001.001.03
|
Überweisung, ISO-Standard, international |
| pain.001.001.09 |
urn:iso:std:iso:20022:tech:xsd:pain.001.001.09
|
Überweisung, neueste ISO-Version |
| pain.008.003.02 |
urn:iso:std:iso:20022:tech:xsd:pain.008.003.02
|
Lastschrift, DFÜ-Abkommen (DE), weit verbreitet |
| pain.008.001.02 |
urn:iso:std:iso:20022:tech:xsd:pain.008.001.02
|
Lastschrift, ISO-Standard, international |
| pain.008.001.08 |
urn:iso:std:iso:20022:tech:xsd:pain.008.001.08
|
Lastschrift, neueste ISO-Version |
In Deutschland sind die Versionen pain.001.003.03 und pain.008.003.02 (definiert im DFÜ-Abkommen, Anlage 3 der Deutschen Kreditwirtschaft) am weitesten verbreitet. Sie enthalten deutsche Spezifikationen, die über den reinen ISO-Standard hinausgehen. Es empfiehlt sich, die Formatanforderungen bei der eigenen Hausbank zu erfragen, da manche Banken nur bestimmte Versionen akzeptieren.
Validierung von SEPA-XML-Dateien
Die Validierung einer SEPA-XML-Datei stellt sicher, dass die Datei technisch korrekt ist und von der Bank verarbeitet werden kann. Eine fehlerhafte Datei wird von der Bank abgelehnt, was zu Verzögerungen und im schlimmsten Fall zu verpassten Fristen führen kann.
Die Validierung umfasst mehrere Ebenen:
- XML-Wohlgeformtheit: Die Datei muss gültiges XML sein – korrekte Tags, Verschachtelung und Zeichenkodierung (UTF-8).
- Schema-Validierung (XSD): Die Datei muss dem zugehörigen XML-Schema (XSD) entsprechen. Das Schema definiert, welche Elemente erlaubt sind, in welcher Reihenfolge sie stehen müssen und welche Pflichtfelder vorhanden sein müssen.
-
Geschäftsregeln: Zusätzlich zu den Schema-Regeln gelten SEPA-spezifische Geschäftsregeln, zum Beispiel:
- Die Kontrollsumme (
CtrlSum) muss mit der Summe der Einzelbeträge übereinstimmen - Die Transaktionsanzahl (
NbOfTxs) muss korrekt sein - IBANs müssen gültige Prüfziffern haben
- Das Fälligkeitsdatum muss ein gültiger TARGET2-Geschäftstag sein (bei Lastschriften)
- Beträge müssen positiv sein und maximal zwei Nachkommastellen haben
- Sonderzeichen im Verwendungszweck und Namen müssen dem SEPA-Zeichensatz entsprechen
- Die Kontrollsumme (
Der SEPA-Zeichensatz (nach EPC-Empfehlung) umfasst die lateinischen Buchstaben a-z und A-Z, Ziffern 0-9 sowie die Sonderzeichen / - ? : ( ) . , ' + und das Leerzeichen. Deutsche Umlaute (ä, ö, ü) und das ß werden je nach Bank und Version unterschiedlich behandelt – einige akzeptieren sie, andere erfordern die Ersetzung (ae, oe, ue, ss).
SEPA XML Viewer – Dateien online prüfen
Kostenloser SEPA XML Viewer
Mit dem kostenlosen SEPA XML Viewer von SEPApro kannst du deine pain.001- und pain.008-Dateien direkt im Browser analysieren und prüfen. Die Datei wird übersichtlich aufbereitet dargestellt – mit allen Transaktionsdetails, Mandatsinformationen und Beträgen auf einen Blick.
SEPA XML Viewer öffnenHäufige Fragen (FAQ)
Was ist eine pain.001-Datei?
Eine pain.001-Datei ist eine SEPA-XML-Datei für Überweisungsaufträge (Customer Credit Transfer Initiation). Der Name pain steht für Payment Initiation und die Nummer 001 kennzeichnet den Nachrichtentyp für Überweisungen. Die Datei enthält alle Informationen, die eine Bank zur Ausführung von einer oder mehreren SEPA-Überweisungen benötigt: Auftraggeber, Empfänger, IBAN, Betrag und Verwendungszweck.
Was ist eine pain.008-Datei?
Eine pain.008-Datei ist eine SEPA-XML-Datei für Lastschriftaufträge (Customer Direct Debit Initiation). Sie enthält neben den Standardzahlungsinformationen auch lastschriftspezifische Daten wie die Gläubiger-ID, Mandatsreferenz, Mandatsdatum, Sequenztyp (FRST/RCUR/OOFF/FNAL) und das Fälligkeitsdatum. Die Datei wird vom Zahlungsempfänger erstellt und bei seiner Bank eingereicht.
Welche SEPA-XML-Version soll ich verwenden?
Die empfohlene Version hängt von den Anforderungen deiner Bank ab. In Deutschland sind die Versionen pain.001.003.03 (Überweisung) und pain.008.003.02 (Lastschrift) gemäß DFÜ-Abkommen am weitesten verbreitet. International wird häufig die ISO-Version pain.001.001.03 bzw. pain.008.001.02 verwendet. Erkundige dich bei deiner Hausbank, welche Versionen akzeptiert werden.
Wie kann ich eine SEPA-XML-Datei validieren?
SEPA-XML-Dateien können gegen das zugehörige XML-Schema (XSD) validiert werden. Der kostenlose SEPA XML Viewer von SEPApro analysiert deine Datei direkt im Browser und zeigt die enthaltenen Transaktionen übersichtlich an. Viele Banken bieten außerdem eine Vorabprüfung im Online-Banking oder in der Banking-Software an.
Kann eine SEPA-XML-Datei mehrere Zahlungen enthalten?
Ja, eine SEPA-XML-Datei kann als Sammelauftrag beliebig viele Zahlungen enthalten. Die Datei kann einen oder mehrere PaymentInformation-Blöcke (PmtInf) enthalten, und jeder Block kann wiederum viele einzelne Transaktionen umfassen. In der Praxis werden so hunderte oder tausende Lastschriften oder Überweisungen in einer einzigen Datei gebündelt und bei der Bank eingereicht.
SEPA Wiki
Willst auch du deinen
SEPA Workflow optimieren?
Dann teste SEPApro jetzt 30 Tage absolut kostenfrei bei vollem Funktionsumfang.