Automatisierung im Zahlungsverkehr: pain.002 und die korrekte Zuordnung zur pain.001
Mit der größeren Verbreitung der Echtzeitzahlungen auch über EBICS durch die neue Instant Payment Regulierung (IPR) und der damit verbundenen Rückmeldung über die Ausführung wird der Payment Status Report (PSR) in Form einer pain.002 immer wichtiger. Nur so kann man bequem und automatisiert analysieren, welche Zahlungen nicht ausgeführt wurden.

In dieser Collection enthalten:
Collection öffnen
Verification of Payee (VoP): Wie kann man die Antwort-Qualität bei den VoP-Anfragen verbessern?

EBICS WebSocket

Effiziente Batchverarbeitung für Verification of Payee (VoP): Eine detaillierte Architektur

Erfolgreiche Payments-Transformation trotz regulatorischer und technologischer Komplexität

Stablecoins vs. CBDCs: Wettlauf um die Zukunft des globalen Zahlungsverkehrs

EURO-Eilüberweisung: Bald überflüssig durch Echtzeitzahlung?

Der neue pain.002-VoP-Status-Report und seine Auswirkungen auf die Sammlerverarbeitung

Globaler Blick auf Banking und Payment Apps: Was deutsche App-Anbieter wissen sollten

Was Europas neue Zahlungsmethode „Wero“ für Handel und Dienstleistung bedeutet
Hinweis
Ab Oktober 2025 wird zusätzlich eine weitere Variante der pain.002-Nachricht erforderlich – und zwar jene, die speziell für den VoP-Status-Report vorgesehen ist. Damit existieren künftig zwei unterschiedliche pain.002-Formate mit jeweils eigenem Informationsgehalt. Dieser Artikel bezieht sich ausschließlich auf den Payment-Status-Report (PSR). Der VoP-Status-Report wird zu einem späteren Zeitpunkt gesondert behandelt.
Viele Banken stellen den pain.002-Payment-Status-Report (PSR) bereits seit Längerem zur Verfügung. Spätestens jedoch mit der Verpflichtung aus der Instant-Payments-Regulation (IPR), Kunden über den Ausführungsstatus jeder einzelnen Zahlung zu informieren, gewinnt die pain.002 zunehmend an Bedeutung.
Je nach Bank bieten diese den pain.002-PSR nicht nur für die Echtzeitzahlungen an, sondern auch für den xml-Auslandszahlungsverkehr, Lastschriften und SEPA-Überweisungen. Die Bereitstellung wird bei EBICS über jeweils unterschiedliche Auftragsarten / BTF zur Verfügung abgeholt.
Die in der Anlage 3 des DFÜ-Abkommens definierten Auftragsarten sind wie folgt:
Auftragsart | BTF-Parameter (ab EBICS 3.0) | Verwendung |
CRZ | REP/DE/SCT/ pain.002/ZIP
|
Payment Status Report for Credit Transfer (zip) |
CIZ
|
REP/DE/SCI/ pain.002/ZIP
|
Payment Status Report for Instant Credit Transfer (zip) |
CDZ
|
REP/DE/SDD/ pain.002/ZIP
|
Payment Status Report for Direct Debit (zip) |
CRC
|
REP/DE/SCT/ pain.002/XML
|
Payment Status Report for Credit Transfer (xml-Container)
Wird nicht mehr unterstützt |
CBC
|
REP/DE/SDD/ pain.002/XML
|
Payment Status Report for Direct Debit (xml-Container)
Wird nicht mehr unterstützt |
Zuordnung und Mapping zwischen pain.001 und pain.002
Der PSR gibt Auskunft über den Verarbeitungsstatus der Zahlungen in der pain.001 bei der Auftraggeber-, aber auch bei der Empfängerbank. Die detaillierte Zuordnung des Ausführungsstatus zur Einzelzahlungen in der ursprünglichen pain.001 funktioniert nicht ganz automatisch. Der folgende Text gibt Aufschluss über die Fallstricke und Lösungsansätze für eine bessere Verarbeitung.
Wie sind die beiden Dateien miteinander verbunden?
Die pain-Dateien müssen sowohl auf Dateiebene selbst, auf Sammler-Ebene aber auch auf Einzelsatzebene verbunden sein, damit eine korrekte Zuordnung und Auswertung erfolgen können.
Zuordnung auf Datei-Ebene
Die pain.001 ist chronologisch zuerst vorhanden. Deren Daten müssen sich also in der pain.002 wiederfinden, damit die Verbindung zwischen den beiden funktioniert.
Im folgenden Bild ist die pain.001 links und die pain.002 rechts dargestellt.
Auf Header Ebene ist vor allem die Zuordnung des Tags <MsgId> wichtig, die die Zahldatei eindeutig identifiziert. Die <MsgId>in der pain.001 wird zur <OrgnlMsgId>. (Die pain.002 hat übrigens auch eine eigene <MsgId>, vergeben von der Bank)
In der folgenden Abbildung korrespondiert die <MsgId>1008923225</MsgId> aus der pain.001 (links) mit der <OrgnlMsgId>1008923225</OrgnlMsgId> aus der pain.002 (rechts).

Abbildung 1: Zuordnung auf Header-Ebene, MsgID (zum Vergrößern bitte anklicken)

Durch das Mapping mittels der <MsgId>/<OrgnlMsgId> finden die beiden Dateien zueinander.
Zuordnung auf Sammler-Ebene
Eine Ähnliches Mapping wie das auf Datei-Ebene muss hier noch zweimal stattfinden. Auf Ebene des Sammlers mittels der Tags <PmtInfId> / <OrgnlPmtInfId >.

Abbildung 2: Zuordnung auf Sammler-Ebene, PmtInfID (zum Vergrößern bitte anklicken)

Zuordnung auf Einzelsatz-Ebene
Auf Ebene der Einzeltransaktion findet das Mapping mittel <InstrId> / <OrgnlInstrId> und/oder <EndToEndId> / <OrgnlEndToEndId> statt.

Abbildung 3: Zuordnung auf Einzelsatz-Ebene, InstrID (zum Vergrößern bitte anklicken)

Und genau hier liegt eines der größten Probleme:
Die InstrID ist kein Pflichtfeld in der pain.001 und muss somit nicht gesendet werden. Und was die Bank vom Zahler nicht erhält, kann sie nicht korrekt zurückgeben und somit nicht bei der (automatischen) Zuordnung verwenden.
Die EndToEndID wiederum ist ein Pflichtfeld, kann aber immer mit „NOTPROVIDED“ belegt werden und ist in diesem Fall auch ungeeignet, um ein eindeutiges Mapping vorzunehmen. Außerdem ist nicht sichergestellt, dass die Bank die EndToEndID immer mit zurückliefert.
Und wenn beide Tags in der pain.001 nicht vorhanden beziehungsweise nicht ein-eindeutig sind, ist es nicht möglich, die richtige Einzelzahlung zu identifizieren. Ein manueller Abgleich könnte über IBAN und Betrag stattfinden, aber auch hier ist keine Eindeutigkeit garantiert.
Somit muss der Sender der Zahlung sicherstellen, dass die pain.001 nicht nur die Minimum-Voraussetzungen erfüllt, sondern auch für jede einzelne Zahlung unbedingt eine ein-eindeutige InstrID mitsenden, damit die Status-Informationen auf Einzelzahlungsebene aus der pain.002 der ursprünglichen Zahlung gegenüberstellt werden kann. Diese Eineindeutigkeit ist zwingend zu beachten, wenn die Zahlung mit InstrID initiiert wird, da es sonst schon bei Initiierung zur Ablehnung bei der Hausbank kommt. Jede InstrId darf also pro Sammler nur einmal vorkommen, Duplikate führen zur Ablehnung der pain.001.
Sind die Voraussetzungen gegeben, kann ein gutes Electronic-Banking-Programm den Status auf Datei-, Sammler- und Einzelsatz aktualisieren und dem User transparent darstellen, welche Zahlungen gegebenenfalls nicht ausgeführt wurden.
Status-Codes1
Aufgrund unterschiedlicher betrieblicher Prozesse bei dem Zahlungsdienstleistern (ZDL) und dem Kunden obliegt es der Vereinbarung zwischen ZDL und dem Kunden, wie, ob, wann und welche der folgende Positiv-Codes verwendet werden. Bei Verwendung mehrerer Positiv-Codes bedeutet dies, dass mehrere aufeinanderfolgende pain.002-Nachrichten an den Kunden versendet werden.
Allerdings gilt die grundsätzliche Regel, dass diese optional und nur nach bilateraler Vereinbarung verwendbaren Codes NUR in der hier dargestellten Reihenfolge vorkommen können. Davon bleibt unberührt, dass für einen Fall auch Codes übersprungen/ausgelassen werden können:
Reihenfolge | Code | Definition | Regelwerk der Verwendung |
1 | RCVD | ZDL hat Auftrag erhalten | Kann nur als erster (Positiv-)Status gesetzt werden, kann nicht auf Transaktionsebene genutzt werden. |
2 | ACTC | Technische Prüfung erfolgreich | Kann nur als erster aller A-Codes gesetzt werden. |
3 | ACCP | Technische Prüfung sowie Überprüfung des Kundenprofils erfolgreich. | |
4 | ACWC | Technische Prüfung sowie Überprüfung des Kundenprofils nach Anpassung des Auftrages erfolgreich | Änderungen können noch möglich sein, auch wenn bereits ACCP berichtet wurde. In diesem Falle kann also ACWC auf ACCP folgen. ACCP kann jedoch nie auf ACWC folgen!
Keine Verwendung auf Datei-Ebene, da eine Belegung von AddtlInf gemäß ISO MDR nur auf Sammler- bzw. Transaktionsebene zulässig sind, Angaben zur Art der Änderungen jedoch im Falle „ACWC“ als DK-Regel für AddtlInf spezifiziert sind. |
5 | ACSP | Auftrag wird ausgeführt, Buchung in Vorbereitung | Im Falle einer Verwendung kann ACSP nicht vor ACCP oder ACWC gesetzt werden. |
6 | ACSC | Buchung auf Kundenkonto ist erfolgt | Im Falle einer Verwendung kann dies nur der letzte aller A-Codes sein. |
Folgende Codes können aufgrund betrieblicher Prozesse unterschiedlich gesetzt werden. Hier ist das grundsätzliche gemeinsame Verständnis in den Regularien der DK beschrieben. Sie sind jedoch insbesondere zu jedem Zeitpunkt möglich. Es ist keine Reihenfolge definiert, jedoch ist die Spalte „Regelwerk der Verwendung“ zu beachten.
Code | Definition | Regelwerk der Verwendung |
PART | Verschiedene Zustände innerhalb des Sammlers bzw. der Transaktionen vorhanden | Kann auf Datei oder Sammlerebene verwendet werden, wenn in den unteren Ebenen unterschiedliche Status-Codes geliefert werden (z. B. bei mehreren Sammlern mit unterschiedlichem Status). Wenn eine Nachricht nur einen Sammler enthält mit Payment-Information-Status PART, kann der Group-Status PART weggelassen werden. |
RJCT | Auftrag wurde nicht ausgeführt | RJCT stellt einen endgültigen Status dar. Wenn einmal RJCT für eine Transaktion, einen Sammler bzw. eine Nachricht gesetzt wurde, kann dafür kein Positivstatus (d. h. diese Transaktion, diesen Sammler bzw. diese Nachricht) mehr folgen. |
PDNG | Schwebender Zustand, weitere Prüfungen und Status-Updates werden noch vorgenommen | PDNG kann kein finaler Status sein. Der Kunde kann erwarten, dass noch ein Status-Code folgen wird. |
Der Status auf Datei-Ebene
Wenn alle Einzelsatz-Rückmeldungen identisch sind, dann trägt die pain.002-Datei diesen Status auch auf Header-Ebene – bestenfalls also „ACCP“. Dann ist klar, dass alle Zahlungen ausgeführt wurden.
Hier ist anzumerken, dass in diesem Fall keine Details zu den Einzelsätzen geliefert werden. Die pain.002 ist verhältnismäßig kurz und gibt eine pauschale Rückmeldung nur auf Datei-Ebene. Da alle Einzelsätze verarbeitet wurden ist es nicht notwendig, diese nochmals im Detail aufzuführen.

Abbildung 4: Status pain.002_ACCP (zum Vergrößern bitte anklicken)

Haben alle Einzelzahlungen den Status „RJCT“ kann man dies auch auf Header-Ebene mit demselben Status erkennen. In diesem Fall werden die Einzelzahlungen mit Details der Zahlung und den jeweiligen Ablehnungsgründen zurückgemeldet.
Sind die Status der Einzelzahlungen nicht einheitlich, also einige auf ACCP, andere auf RJCT, dann findet sich auf Header-Ebene der Status PART. Für die abgelehnten Zahlungen werden Details gemeldet.
Rückmeldung auf Einzelsatzebene
Im Normalfall werden für die nicht-akzeptierten Einzelsätze (Status ≠ ACCP) Details aus der Originalzahlung zurückgeliefert. Somit kann man also in der pain.002 im Tag erkennen, welcher Empfänger mit welcher IBAN welchen Betrag hätte erhalten sollen. Deshalb sollte man aus Gründen des Datenschutzes darauf achten, dass nur Mitarbeiterinnen und Mitarbeiter Zugriff auf die pain.002 bekommen, die auch die eigentliche Zahlung einsehen dürfen. Besonders bei Gehaltszahlungen ist hier ein gutes Berechtigungskonzept erforderlich.
Im Umkehrschluss werden für akzeptierte Zahlungen (Status = ACCP) keine weiteren Informationen mehr zurückgeliefert. Diese tauchen in den Details der pain.002 gar nicht mehr auf. Somit hat man bei den akzeptierten Einzelzahlungen auch kein Datenschutzproblem!
Diejenigen Einzelzahlungen, die in den Details der pain.002 nicht mehr gelistet werden sind jene, die ausgeführt wurden.
Zusatzinfo der Ablehnung
Vor allem beim Status RJCT sind die Reason Codes () und die darunter stehen Zusatzinfos () hilfreich bei Fehleranalyse.

Abbdilung 5: Zusatzinfos zur Ablehnung, Kontonummer fehlerhaft (zum Vergrößern bitte anklicken)

Die Inhalte im Feld sind von der DK (in der Anlage 3 des DFÜ-Abkommens) standardisiert, die Texte im Feld sind eher als Prosa zu verstehen.
Die vorgenannten Code-Definitionen können von denen der DK abweichen, wenn es sich um Zahlungskonten außerhalb Deutschlands handelt, die nicht unter dem Reglement der DK sind.
Zusammenfassung
Eine funktionierende pain.002-Interpretation wird in Zukunft unerlässlich sein. In nächster Zeit werden die Echtzeitzahlungen deutlich zunehmen, aber erste Erfahrungen zeigen, dass die Zahl der Abweisungen aktuell noch relativ hoch ist. Wer dann die pain.002 von Hand auswerten muss, weil es das Bankprogramm nicht kann (entweder weil es grundsätzlich dafür nicht konzipiert ist oder weil die pain.001 nicht die notwendige InstrId geliefert hat), der fährt ein gewisses Risiko.
Wer aber mit der Verarbeitung der pain.002 für die Echtzeitzahlungen und dem daraus resultierenden Informationsgewinn zufrieden ist, kann diesen Service auch für anderen Zahlungsarten bei seinen Banken anfragen.
Wichtig ist auf jeden Fall die Befüllung des Feldes <InstrID>, damit der Abgleich zwischen Zahldatei und Statusreport auch auf Einzelsatzebene funktioniert.
Quelle
-
1. DK/DFÜ-Abkommen - Anlage 3: Spezifikation der Datenformate / Version 3.9 vom 12.03.2025
Sie müssen sich anmelden, um einen Kommentar zu schreiben.