SEPA Purpose Code: Was er ist und wie man ihn richtig nutzt

2026-07-19

Die Sammelüberweisung muss heute noch raus. Die IBAN-Spalten sind geprüft, die Beträge stimmen, der Verwendungszweck ist eingetragen. Dann taucht im Export oder in der Importmaske ein Feld auf, das viele Teams ausbremst: Purpose Code, manchmal auch Geschäftsvorfallcode oder Zahlungszweck-Code genannt.

An dieser Stelle beginnt oft unnötige Unsicherheit. Muss das Feld immer befüllt werden? Reicht der Verwendungszweck nicht aus? Und wenn doch ein Code nötig ist, welcher passt zu Gehalt, Rente, Miete oder Handelszahlung?

Genau hier passieren teure Fehler. Nicht, weil der SEPA-Standard unverständlich wäre, sondern weil Theorie, Bankpraxis und Softwaremasken oft durcheinandergeraten. Für Buchhaltung, Treasury und Entwickler ist deshalb vor allem eines wichtig: zu wissen, wann ein SEPA Purpose Code tatsächlich relevant ist, wo er in der XML steht und wann man das Feld bewusst leer lässt.

Einführung Der SEPA Purpose Code in der Praxis

Eine typische Situation in der Finanzabteilung sieht so aus: Sie bereiten eine Zahlungsdatei für mehrere Empfänger vor. Ein Teil sind Gehaltszahlungen, ein Teil normale Lieferantenrechnungen. Beim Export aus ERP, Banking-Tool oder Excel erscheint ein zusätzliches Feld. Es heisst nicht überall gleich, aber der Effekt ist derselbe. Jemand im Team fragt: „Sollen wir da überall etwas eintragen, nur damit die Bank nichts zurückweist?“

Das ist verständlich. Viele Teams behandeln das Feld aus Vorsicht wie ein Pflichtfeld. Genau das führt aber oft zu den falschen Entscheidungen. Ein nicht benötigter Code schafft zusätzlichen Pflegeaufwand. Ein unpassender Code kann Prüfungen oder Rückfragen auslösen. Und wenn intern niemand sauber dokumentiert, warum ein bestimmter Code verwendet wurde, wird die Datei beim nächsten Lauf wieder manuell korrigiert.

Praxisregel: Wenn ein Feld im Zahlungsverkehr technisch existiert, ist es nicht automatisch fachlich erforderlich.

Beim SEPA Purpose Code geht es deshalb nicht nur um Formalitäten. Es geht um saubere Zahlungsprozesse. Wer den Zweck des Feldes versteht, kann unterscheiden zwischen: - echtem Muss, wenn Vorgaben oder Prozesslogik es verlangen, - sinnvoller Nutzung, wenn die Klassifizierung Vorteile bringt, - bewusstem Weglassen, wenn eine Standardzahlung keinen zusätzlichen Code braucht.

Für Accounting-Teams ist das die wichtigste Entlastung. Sie müssen nicht jedes neue XML-Feld reflexartig befüllen. Sie müssen nur wissen, welche Felder für den konkreten Zahlungstyp relevant sind.

Was ist ein SEPA Purpose Code

Der SEPA Purpose Code ist ein standardisierter Code, mit dem der Zweck einer Zahlung klassifiziert wird. Praktisch können Sie ihn wie ein technisches Etikett verstehen. Statt dass Bank oder Empfängersystem den Freitext im Verwendungszweck interpretieren müssen, wird der Zahlungstyp strukturiert mitgegeben.

Eine Infografik erklärt die Definition, Funktion und eine hilfreiche Analogie des SEPA Purpose Codes für Zahlungen.

Der praktische Kern

Für deutsche Teams ist eine Analogie besonders hilfreich. Der Purpose Code funktioniert im SEPA-XML als technisches Äquivalent zum früheren DTA-Textschlüssel. Laut Windata zur Funktion von SEPA Purpose Codes ermöglicht das die automatische Klassifizierung von Überweisungen und Lastschriften durch Zahlungsdienstleister in Deutschland. Das kann konkrete Folgen in der Verarbeitung haben, etwa bei der automatischen Berechnung von Kontoführungsentgelten oder bei der Einräumung von Dispositionskrediten für Gehaltszahlungen.

Das ist der Punkt, den viele missverstehen. Der Purpose Code ersetzt nicht den Verwendungszweck. Er erfüllt eine andere Aufgabe. Der Verwendungszweck erklärt dem Menschen, worum es geht. Der Purpose Code klassifiziert die Zahlung für Systeme.

Wo der Unterschied zum Verwendungszweck liegt

Der Verwendungszweck ist Freitext. Dort steht zum Beispiel eine Rechnungsnummer, ein Leistungsmonat oder eine interne Referenz. Das ist wichtig für Abstimmung und Buchung.

Der Purpose Code ist dagegen strukturiert. Er beantwortet nicht die Frage „welche Rechnung?“, sondern eher „welche Art von Zahlung ist das?“.

Ein einfaches Bild:

Element Aufgabe
Verwendungszweck Menschlich lesbare Information für Empfänger und Buchhaltung
Purpose Code Strukturierte Klassifizierung für technische Verarbeitung

Ein sauberer Verwendungszweck hilft Ihrer Buchhaltung. Ein passender Purpose Code hilft den Systemen, die Zahlung einzuordnen.

Wo der Code technisch landet

Im ISO-20022-Format wird der Code im XML als Element innerhalb von <Purp><Cd> übergeben. Wenn also ein Zahlungslauf einen Purpose Code enthält, ist damit eine standardisierte Information Teil der Nachricht, nicht nur ein frei formulierter Hinweis.

Für Buchhaltungs- und ERP-Teams ist das entscheidend, weil damit zwei Ebenen getrennt bleiben sollten:

  • fachliche Beschreibung im Verwendungszweck,
  • technische Kategorisierung im Purpose Code.

Wer diese Trennung versteht, spart sich viele Diskussionen bei Dateiprüfung, Mapping und Bankabstimmung.

Pflicht oder Kür Der rechtliche Kontext in Deutschland

Die häufigste Frage lässt sich für Deutschland überraschend klar beantworten. In den meisten Fällen ist der SEPA Purpose Code kein Pflichtfeld.

Seit dem 1. Februar 2017 ist bei Inlands- und Auslandsüberweisungen im SEPA-Kontext die Angabe des BIC entfallen. Es reicht die IBAN. Gleichzeitig werden über 99 % aller deutschen SEPA-Überweisungen seit 2017 ohne Purpose Code verarbeitet, weil die Bundesbank für den Massenzahlungsverkehr keine obligatorische Kodierung vorschreibt. Diese Einordnung beschreibt die Verbraucherzentrale in ihrer Übersicht zu den SEPA-Regeln.

Warum die Verwirrung trotzdem so gross ist

Der Irrtum entsteht, weil viele Nutzer drei Dinge vermischen:

  1. Der Standard kennt das Feld.
    Wer ein XML-Schema sieht, erkennt den Platz für den Code und schliesst daraus, dass er immer nötig sein müsse.

  2. Banksoftware blendet das Feld oft sichtbar ein.
    Sichtbar ist aber nicht gleich verpflichtend.

  3. Einige Spezialfälle brauchen tatsächlich strukturierte Angaben.
    Daraus wird schnell die falsche Regel für alle Zahlungen abgeleitet.

Was das für deutsche Unternehmen praktisch bedeutet

Für den üblichen Zahlungsverkehr einer deutschen GmbH, Kanzlei, Agentur oder eines Handelsbetriebs gilt im Alltag meist etwas sehr Bodenständiges: Wenn die IBAN korrekt ist und die übrigen Pflichtangaben stimmen, kann die Zahlung ohne Purpose Code verarbeitet werden.

Das senkt die Komplexität in mehreren Bereichen: - beim Export aus ERP oder Lohnsystem, - bei Excel- oder CSV-basierten Zahlungslisten, - bei der manuellen Prüfung vor dem Bankupload, - bei API-gestützter Dateierzeugung.

Gerade kleine und mittlere Unternehmen profitieren davon, weil sie nicht pro Transaktion zusätzliche Klassifizierungsdaten pflegen müssen, wenn der Prozess sie gar nicht verlangt.

Wann Sie genauer hinschauen sollten

Optional heisst nicht bedeutungslos. Es gibt Konstellationen, in denen ein Purpose Code sinnvoll oder durch bankseitige, prozessuale oder länderspezifische Anforderungen relevant sein kann. Das betrifft vor allem Fälle, in denen eine strukturierte Einordnung der Zahlung gewünscht ist.

Eine hilfreiche Entscheidungshilfe ist diese:

Frage Konsequenz
Handelt es sich um eine normale Inlandsüberweisung im deutschen Retail-Umfeld? Feld oft leer lassen
Soll die Zahlung systemseitig als bestimmte Zahlungsart erkannt werden? Code prüfen
Gibt es bank- oder prozessspezifische Vorgaben? Vorgaben vorab klären

Wer den Purpose Code in Deutschland reflexartig als Pflichtfeld behandelt, baut sich oft mehr Prozesslast auf, als der Standard tatsächlich verlangt.

Für Compliance- und Accounting-Teams ist die wichtigste Schlussfolgerung deshalb nicht „immer befüllen“, sondern „gezielt entscheiden“.

Die wichtigsten Purpose Codes und ihre Anwendung

Sobald der rechtliche Druck aus dem Weg ist, bleibt die praktischere Frage: Wann lohnt sich ein Purpose Code fachlich? Die Antwort lautet meist dann, wenn die Zahlung als bestimmte Kategorie erkennbar sein soll.

Eine Infografik erklärt die Bedeutung, Verpflichtung und Beispiele für die Nutzung von SEPA Purpose Codes bei Zahlungen.

Typische Codes im Arbeitsalltag

Einige Codes tauchen in der Praxis immer wieder auf. Nicht jeder ist für jedes Unternehmen relevant, aber die Logik dahinter ist leicht verständlich.

Code Typischer Einsatz Praxisbeispiel
SALA Gehaltszahlung Monatslohn an Mitarbeitende
PENS Renten- oder Pensionszahlung Zahlung aus einem Versorgungsfall
TRAD Handelsbezogene Zahlung Zahlung im Zusammenhang mit Waren- oder Handelsgeschäft
CBFF Vermögensbildende Leistung Zahlung in einen entsprechenden Spar- oder Anlagekontext
RENT Mietbezogene Zahlung Mietzahlung, wenn eine strukturierte Kennzeichnung gewünscht ist

So denken Sie in Anwendungsfällen

Bei der Auswahl hilft keine abstrakte Codeliste, sondern die Frage: Was soll das empfangende System erkennen?

Nehmen wir drei typische Fälle:

  • Lohnlauf aus der Personalabrechnung
    Wenn Mitarbeitende eine Überweisung als Gehaltseingang erkennen sollen oder bankseitige Prozesse darauf aufbauen, ist SALA der naheliegende Code.

  • Normale Lieferantenrechnung
    Hier ist oft kein Purpose Code nötig. Der eigentliche Informationswert liegt meist im Verwendungszweck mit Rechnungsnummer, Zeitraum oder Kreditorenreferenz.

  • Regelmässige Mietzahlung
    Auch hier ist das Feld oft nicht zwingend. Wenn intern oder systemseitig sauber klassifiziert werden soll, kann RENT passend sein.

Was oft falsch läuft

Viele Teams machen einen Denkfehler. Sie suchen zuerst nach einem Code und erst danach nach dem tatsächlichen Nutzen. Das führt zu unnötiger Übercodierung.

Besser ist diese Reihenfolge:

  1. Zahlungsart fachlich bestimmen
    Ist es Gehalt, Rente, Handel, Miete oder schlicht eine normale Rechnung?

  2. Prüfen, ob strukturierte Kennzeichnung einen Mehrwert bringt
    Braucht eine Bank, ein Empfängersystem oder ein interner Workflow diese Information wirklich?

  3. Nur dann den passenden Code verwenden
    Sonst bleibt das Feld leer.

Bei vielen Zahlungen ist kein Code die sauberste Entscheidung. Nicht, weil das Feld unwichtig wäre, sondern weil unnötige Klassifizierung keine bessere Datei ergibt.

Besonders wichtig bei Gehältern

Der häufigste echte Anwendungsfall im Unternehmensalltag ist SALA. Das liegt daran, dass Gehaltszahlungen fachlich klar abgrenzbar sind und der Code in Verarbeitungsketten sinnvoll sein kann.

Dabei gilt trotzdem: Der Code ersetzt nicht die übrige Sorgfalt. Für Gehaltsläufe müssen weiterhin Empfängerdaten, Fälligkeit, Betrag und Verwendungszweck sauber gepflegt sein. Der Purpose Code ist nur eine zusätzliche strukturierte Information.

Nicht mit Rückgabecodes verwechseln

Ein weiterer Klassiker in der Praxis: Purpose Codes werden mit Rückgabe- oder Return-Codes verwechselt. Das sind zwei komplett verschiedene Dinge.

Purpose Codes beschreiben die Art der beabsichtigten Zahlung. Rückgabecodes beschreiben den Grund, warum eine Bank eine Transaktion zurückweist oder zurückmeldet.

Wer diese Ebenen trennt, vermeidet schon einen grossen Teil der typischen Fehler im Tagesgeschäft.

So wird der Purpose Code im SEPA XML eingebettet

Für Entwickler, ERP-Verantwortliche und alle, die Zahlungsdateien prüfen oder debuggen, zählt am Ende die technische Position im XML. Der Purpose Code steht nicht irgendwo im Freitextbereich, sondern an einer klaren Stelle innerhalb der Transaktionsdaten.

Ein Monitor zeigt einen XML-Code für eine SEPA-Zahlung mit markierten Purpose Codes auf einem Büroschreibtisch.

Die richtige Stelle im Nachrichtenaufbau

Innerhalb einer Überweisung liegt der Code typischerweise im Block CdtTrfTxInf. Dort stehen die Angaben zu einer einzelnen Transaktion, also etwa Betrag, Empfänger und Referenzen.

Der Purpose Code erscheint als verschachteltes Element:

  • <Purp>
  • darunter <Cd>
  • darin der eigentliche Code, etwa SALA

Kurz dargestellt:

XML-Element Bedeutung
<Purp> Bereich für den Zahlungszweck als strukturierte Kategorie
<Cd> Konkreter standardisierter Code

Das sieht in der Praxis etwa so aus: <Purp><Cd>SALA</Cd></Purp>.

Warum die exakte Position wichtig ist

Banken validieren SEPA-Dateien nicht nur fachlich, sondern auch strukturell. Ein inhaltlich richtiger Code nützt nichts, wenn er an der falschen Stelle im XML landet oder in ein freies Textfeld geschrieben wurde.

Typische technische Fehler sind: - der Code wird im Verwendungszweck statt im Purpose-Element abgelegt, - das Element wird an der falschen Ebene eingefügt, - der Wert ist formal kein gültiger Code, - ein Mapping schreibt den Wert in ein benachbartes, aber fachlich anderes Feld.

Wenn Sie XML-Dateien manuell prüfen oder erzeugen, hilft ein Blick auf eine saubere Struktur. Wer tiefer in den Aufbau einsteigen möchte, findet eine gute technische Orientierung im Beitrag SEPA XML Datei erstellen.

Bei XML-Zahlungsdateien ist „fast richtig“ nicht genug. Ein Feld muss nicht nur vorhanden sein, sondern auch an der vorgesehenen Stelle stehen.

Ein einfacher Prüfablauf

Wenn ein Zahlungslauf wegen eines Purpose Codes auffällt, gehen Sie in dieser Reihenfolge vor:

  1. Existiert das Element überhaupt nur dann, wenn es genutzt werden soll?
  2. Steht der Code im richtigen Transaktionsblock?
  3. Ist es ein echter Purpose Code und kein frei erfundener Kurztext?
  4. Wurde das Mapping bei Sammeldateien für jede Transaktion korrekt angewandt?

Damit lassen sich viele XML-Fehler sehr schnell eingrenzen, bevor die Datei an die Bank geht.

Purpose Codes mit GenerateSEPA einfach nutzen

In der Praxis gibt es zwei Nutzergruppen. Die eine arbeitet mit Excel oder CSV und möchte ohne XML-Kenntnisse eine saubere SEPA-Datei erzeugen. Die andere automatisiert Zahlungsprozesse aus ERP, Buchhaltung oder eigener Anwendung heraus. Für beide Gruppen ist der Umgang mit dem Purpose Code am einfachsten, wenn er als normales Datenfeld behandelt wird.

Screenshot from https://www.conversorsepa.es

Für Finanzteams in der Oberfläche

Wenn Sie Zahlungslisten aus Excel oder CSV vorbereiten, ist der sauberste Weg eine eigene Spalte für den Code. Die Spalte kann zum Beispiel Purpose Code, Zweck-Code oder ähnlich heissen. Wichtig ist nicht der Spaltenname an sich, sondern dass er im Mapping korrekt dem Feld zugeordnet wird.

Der Ablauf ist dabei schlicht: - Datei hochladen - Spalten den SEPA-Feldern zuordnen - nur dort einen Code übergeben, wo er fachlich gewollt ist - XML-Datei erzeugen und prüfen

Das ist besonders hilfreich in gemischten Zahlungsläufen. Gehaltszahlungen können einen Code tragen, normale Lieferantenzahlungen nicht. Entscheidend ist, dass das Mapping die Logik nicht verwässert.

Für Entwickler über die API

Im API-Kontext wird derselbe Gedanke noch klarer. Der Purpose Code ist dann einfach ein zusätzliches Attribut in der Nutzlast einer Transaktion. Ein typisches Schema arbeitet mit einem Feld wie purpose_code, dem Sie etwa SALA zuweisen.

Technisch interessant ist dabei weniger der Parametername als die Prozessidee: - Ihre Anwendung entscheidet fachlich, ob ein Code gesetzt wird. - Die Schnittstelle übernimmt die technische Einbettung in die XML-Struktur. - Die Prüfung erfolgt vor dem Versand an die Bank, nicht erst nach einer Rückmeldung.

Wer die JSON-basierte Integration für automatisierte Prozesse aufbauen will, findet den Einstieg auf der GenerateSEPA-API-Utility.

Der eigentliche Vorteil im Betrieb

Der Nutzen liegt nicht darin, dass Teams jetzt „mehr Felder ausfüllen“ können. Der Nutzen liegt darin, dass fachliche Entscheidungen sauber in technische Strukturen übersetzt werden.

Das ist im Alltag wichtig, wenn: - verschiedene Abteilungen dieselbe Zahlungsdatei vorbereiten, - ein ERP nur einen Teil der SEPA-Felder nativ unterstützt, - wiederkehrende Exporte aus Altformaten in XML überführt werden, - Entwickler Rückfragen aus dem Accounting schnell nachvollziehen müssen.

So wird aus einem missverständlichen Feld ein kontrollierter Bestandteil des Zahlungsprozesses.

Häufige Fehler und wie Sie diese vermeiden

Der grösste Fehler ist selten ein kaputtes XML-Tag. Der grösste Fehler ist Unsicherheit. Teams wissen nicht genau, ob der SEPA Purpose Code nötig ist, und reagieren dann entweder mit Übervorsicht oder mit improvisierten Einträgen.

Fehlerbild eins und die Pflichtfeld-Falle

Ein häufiger Ablauf sieht so aus: Das Feld ist sichtbar, also wird es befüllt. Nicht aus fachlicher Notwendigkeit, sondern zur Beruhigung. Dann schreibt jemand interne Kürzel hinein, die im Unternehmen logisch klingen, im SEPA-Kontext aber keine gültigen Codes sind.

Das Problem daran ist doppelt: - Die Zahlungsdatei wird unnötig komplex. - Falsche Werte können Prüfungen oder Ablehnungen auslösen.

Sauberer ist ein einfacher Grundsatz: Wenn kein konkreter fachlicher Grund für einen Purpose Code vorliegt, bleibt das Feld leer.

Fehlerbild zwei und die Verwechslung mit Rückgabecodes

In Deutschland sind standardisierte Codes vor allem auch als Rückgabegründe bekannt. Die HypoVereinsbank nennt in ihrer Übersicht zu SEPA-Geschäftsvorfallcodes und Rückgabecodes Beispiele wie LEGL, AC06, AM04 oder MD07 für bankseitig zurückgegebene Gründe.

Diese Codes beschreiben nicht den Zweck einer neuen Zahlung. Sie beschreiben den Grund einer Rückgabe oder Ablehnung. Genau hier geraten Teams oft durcheinander, besonders wenn sie aus Rückläuferlisten, Bankprotokollen und XML-Feldern gleichzeitig arbeiten.

Wenn ein Code von der Bank nach einer fehlgeschlagenen Verarbeitung zurückkommt, ist es in der Regel kein Purpose Code, sondern ein Rückgabegrund.

Fehlerbild drei und schlechtes Mapping

In Excel-, CSV- oder ERP-Prozessen entsteht ein weiterer Fehler meist im Mapping: - Die Spalte ist nicht eindeutig benannt. - Ein Feld wird versehentlich mit dem Verwendungszweck verbunden. - Der Code wird pauschal auf alle Zahlungen kopiert, obwohl nur einzelne Transaktionen ihn tragen sollen.

Dagegen helfen keine langen Richtlinien, sondern klare Arbeitsregeln:

  • Feldlogik dokumentieren
    Legen Sie intern fest, wann ein Code gepflegt wird und wer das entscheidet.

  • Mischdateien bewusst behandeln
    Gehaltszahlungen und Lieferantenrechnungen sollten nicht automatisch denselben Klassifizierungswert erhalten.

  • Vor dem Bankupload validieren
    Prüfen Sie, ob nur gültige Codes verwendet wurden und ob das Feld wirklich an die richtige XML-Stelle gemappt ist.

Fehlerbild vier und das blinde Vertrauen in Freitext

Manche Teams versuchen, einen fehlenden strukturierten Code mit Formulierungen im Verwendungszweck zu kompensieren. Das funktioniert nur begrenzt. Freitext ist für Menschen gedacht, nicht für die saubere technische Klassifizierung.

Wenn also ein bestimmter Zahlungstyp wirklich als solcher erkannt werden soll, dann gehört die Information in das dafür vorgesehene strukturierte Feld. Wenn das nicht nötig ist, reicht ein klarer Verwendungszweck vollkommen aus.

Am Ende ist die beste Fehlervermeidung erstaunlich unspektakulär: Purpose Codes nur gezielt verwenden, Rückgabecodes nicht verwechseln und Mapping konsequent prüfen.


Wenn Sie SEPA-Dateien aus Excel, CSV, JSON oder Altformaten erzeugen und Purpose Codes sauber in gültiges XML übernehmen möchten, ist GenerateSEPA ein praktischer Weg für Finanzteams und Entwickler. Die Plattform hilft beim Mapping, reduziert typische Formatfehler und macht aus Rohdaten bankfähige SEPA-XML-Dateien ohne manuelle XML-Bearbeitung.


Häufig gestellte Fragen

Ist der SEPA Purpose Code in Deutschland Pflicht?
In den meisten Standardüberweisungen im Massenzahlungsverkehr nicht. Das Feld existiert im Standard, ist aber für die grosse Mehrheit der Inlands-SEPA-Zahlungen optional.
Ersetzt der Purpose Code den Verwendungszweck?
Nein. Der Verwendungszweck bleibt Freitext für Menschen und Buchhaltung. Der Purpose Code klassifiziert die Zahlungsart strukturiert für Systeme, etwa Gehalt oder Handel.
Wo steht der Code in der SEPA-XML-Datei?
Im ISO-20022-Format typischerweise unter Purp mit Unterelement Cd. Das Mapping aus Excel oder ERP muss genau dieses Feld treffen, nicht den Freitext.
Was ist der häufigste Fehler mit Purpose Codes?
Teams verwechseln sie mit Rückgabegründen der Bank oder füllen pauschal alle Zeilen aus Vorsicht. Beides erzeugt Pflegeaufwand oder falsche Klassifizierung — gezielte Nutzung ist besser.

Verwandte Artikel