Zum Hauptinhalt springen
GoCardless · SEPA Core · fehlgeschlagene Zahlung

GoCardless refer_to_payer: MS02, MS03, RR04 und SL01 bei einer SEPA-Lastschrift

Mit refer_to_payer teilt GoCardless mit, dass das Problem auf Seiten des Zahlers liegt und Sie mit ihm sprechen sollten. Bei SEPA Core kommt die Ursache mit einem von vier Codes: MS02, wenn der Kunde die Lastschrift abgelehnt hat, MS03 oder RR04, wenn die Bank keinen Grund angibt, und SL01, wenn sein Konto Lastschriften einschränkt.

FlexigoTech · Verantwortlich: Víctor Gómez · Aktualisiert am 6. November 2026

Das Wichtigste

Versionen
Odoo 17, 18, 19 und 20
Geprüft
im Quellcode des Connectors, Version 17.0, 18.0, 19.0 und 20.0 · in den Quellen am Ende
Lesezeit
5 Min.

Eine Ursache, vier Codes

SEPA-Core-CodeText von GoCardless
MS02The customer refused to accept this payment.
MS03, RR04The payment failed but the reason for the failure was not provided, usually for regulatory reasons.
SL01The payment failed due to a restriction on Direct Debit payments from the payer's bank account.

Die drei Zeilen stammen aus der Tabelle der Zahlungsfehler (payments · failed) in der Dokumentation von GoCardless für SEPA Core. Anders als bei anderen Ursachen steht bei keiner, dass das Mandat gekündigt wird: Der Kunde bleibt dafür autorisiert, dass Sie ihn belasten, auch wenn diese konkrete Lastschrift nicht durchgegangen ist.

GoCardless-Karte der Ursache refer_to_payer
Die Ursache, ihre vier SEPA-Core-Codes und der Text von GoCardless für MS02.

Was hinter jedem Code steckt

MS02 ist die eindeutigste Antwort: Der Kunde hat seiner Bank gesagt, sie solle diese Lastschrift nicht einlösen. Der Konnektor vermerkt in seinem Code, dass dies die Kombination ist, die er bei einer SEPA-Testzahlung in der Sandbox von GoCardless gesehen hat. MS03 und RR04 sind das Gegenteil: Die Zahlung scheitert, und die Bank nennt den Grund nicht, meist aus regulatorischen Gründen. Also bleibt nur, den Kunden zu fragen. SL01 betrifft das Konto: Seine Bank begrenzt die Lastschriften, die ihm belastet werden können, und das kann nur der Kontoinhaber mit seiner Bank ändern.

Bei MS02, RR04 und SL01 führt eine erneute Einreichung der Lastschrift ohne vorheriges Gespräch mit dem Kunden meist zum gleichen Ergebnis und kann eine weitere Gebühr verursachen. Bei MS03 gibt es eine Ausnahme: Laut dem Leitfaden von Success+ zählt MS03 in Österreich, Belgien, Deutschland, Luxemburg und der Slowakei als fehlende Deckung, und Success+ kann es erneut versuchen. Ist das der Fall, kommt das Ereignis mit will_attempt_retry auf true.

Was Odoo mit dem Konnektor macht

Die Transaktion öffnen Sie über die Rechnung, mit der Schaltfläche «Zahlungstransaktion» oben; das Transaktionsmenü erscheint nur im Entwicklermodus und existiert in Odoo 20 nicht. Der Konnektor speichert die Ursache im Feld «GoCardless Cause» und nicht den SEPA-Code, und zeigt «GoCardless could not collect this payment (refer_to_payer).» an. Danach richtet er sich nach dem Ereignis:

  • Steht will_attempt_retry auf true, bleibt die Transaktion auf «Ausstehend», das Kontrollkästchen «Success+ Will Retry» wird gesetzt, und die Meldung lautet «Success+ will retry it automatically; there is nothing to do.». Die Schaltfläche zum Wiederholen erscheint nicht.
  • Andernfalls wechselt die Transaktion auf «Fehler», und es erscheint die Schaltfläche «Retry collection», sofern noch Wiederholungen möglich sind. Hatte Odoo die Zahlung bereits als erledigt verbucht, storniert der Konnektor deren Zahlung, und die Rechnung ist wieder offen.
  • Das Mandat bleibt unberührt. refer_to_payer gehört nicht zu den Ursachen, bei denen der Konnektor ein Mandat archiviert. Die Zahlungsmethode des Kunden steht also für die nächste Belastung weiterhin zur Verfügung.

Dieser letzte Punkt ist bewusst so gewählt: Ein Mandat wegen einer einzelnen Ablehnung zu archivieren, würde den Kunden ohne Grund zwingen, ein neues zu unterschreiben.

Die beiden Meldungen schreibt der Konnektor beim Verarbeiten des Ereignisses, ohne dass jemand daneben steht. Der Konnektor ist nicht ins Deutsche übersetzt: Diese Texte erscheinen immer auf Englisch, auch in einem deutschen Odoo, egal ob ein Benutzer oder eine geplante Aktion sie auslöst: «GoCardless could not collect this payment (refer_to_payer).» und «Success+ will retry it automatically; there is nothing to do.».

Was zu tun ist, je nach Code

Odoo zeigt Ihnen nicht an, welcher der vier Codes eingegangen ist: Der Konnektor speichert nur die Ursache. Den Code sehen Sie bei GoCardless. Laut deren Hilfezentrum steht der Grund für jeden Fehlschlag im Verlauf der Zahlung im Dashboard («You are able to view the reason for a payment failure in the status timeline of the payment in your GoCardless dashboard.»). Im erweiterten Modus steht der genaue Code außerdem im Ereignis (details.reason_code), und das Dashboard speichert die Zustellungen der letzten 3 Monate unter Developers > Webhooks samt Inhalt.

CodeErster Schritt
MS02Fragen Sie den Kunden, warum er die Lastschrift abgelehnt hat: Betrag, Datum oder Unstimmigkeit mit der Rechnung.
MS03Prüfen Sie «Success+ Will Retry»: In Österreich, Belgien, Deutschland, Luxemburg und der Slowakei kann Success+ MS03 als fehlende Deckung erneut versuchen. Ist das Kästchen nicht gesetzt, bitten Sie den Kunden, sich mit seiner Bank in Verbindung zu setzen.
RR04Bitten Sie den Kunden, sich mit seiner Bank in Verbindung zu setzen: GoCardless erhält den Grund nicht.
SL01Der Kunde muss die Lastschriftbegrenzung seines Kontos aufheben oder Ihnen ein anderes Konto nennen.

Sobald der Kunde bestätigt, dass die Lastschrift eingelöst werden kann, nutzen Sie in der Transaktion «Retry collection» und bestätigen den Hinweis zur Gebühr. Der Konnektor antwortet mit «Retry requested. GoCardless will confirm the new charge date.» und lässt die Zahlung ausstehend. Denken Sie an die Grenze: Eine Zahlung kann höchstens 3 Mal wiederholt werden («Payments can be retried up to 3 times.»).

Wird das Mandat gekündigt, wenn der Kunde eine Lastschrift ablehnt?

Nein. Die Dokumentation von GoCardless nennt das für diese Ursache nicht, und der Konnektor archiviert das Mandat bei refer_to_payer nicht. Möchte der Kunde keine Lastschriften mehr von Ihnen, kündigt er das Mandat bei seiner Bank, und das kommt mit einer anderen Ursache an, mandate_cancelled.

Schema: was GoCardless bei refer_to_payer sendet und was Odoo mit dem Konnektor macht
Schema auf Grundlage des Konnektor-Codes (17.0, 18.0, 19.0 und 20.0) und der Dokumentation von GoCardless; das Durchgestrichene ist das, was der Konnektor bei dieser Ursache nicht tut.

Mit unserem Konnektor

In Odoo 17, 18, 19 und 20 wandelt der Konnektor refer_to_payer in eine offene Rechnung um, deren Ursache sichtbar ist, und in ein Mandat, das weiterhin gültig ist. Er rät den SEPA-Code nicht: Odoo speichert die Ursache in der Transaktion, und den Code schauen Sie bei GoCardless nach. Die Entscheidung, erneut zu belasten, treffen Sie selbst, nachdem Sie mit dem Kunden gesprochen haben.

Weiterlesen

GoCardless insufficient_funds (AM04): Das Kundenkonto war nicht gedecktEine GoCardless-Lastschrift scheitert an insufficient_funds mit SEPA-Code AM04. Was das heißt, wann Success+ erneut versucht und was Odoo mit der Rechnung tut.GoCardless MD01: mandate_cancelled und authorisation_disputed bei einer SEPA-LastschriftMD01 erscheint bei GoCardless als mandate_cancelled oder authorisation_disputed bei fehlgeschlagenen, rückbelasteten oder stornierten SEPA-Zahlungen.GoCardless-Fehler retry_failed bei der Wiederholung einer Lastschrift aus OdooGoCardless antwortet mit retry_failed, wenn die Zahlung nicht fehlgeschlagen ist oder keine Wiederholung mehr zulässt. Wann Odoo den Button zeigt.
Geprüft im Quellcode des Connectors (Version 17.0, 18.0, 19.0 und 20.0) und in den verlinkten Quellen

Quellen

  • docs.gocardless.com/docs/api-reference/events/payment
  • docs.gocardless.com/docs/api-reference/payment
  • Quellcode des Moduls: flexigo_payment_gocardless: const.py, Zeile 15 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) und 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: const.py, Zeile 79 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) und 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: const.py, Zeile 76 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) und 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: const.py, Zeile 71 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) und 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: models/payment_transaction.py, Zeile 725 in 17.0 (d203ee6), Zeile 725 in 18.0 (e2ab18b), Zeile 724 in 19.0 (ce7f5a3) und Zeile 748 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: models/payment_transaction.py, Zeile 729 in 17.0 (d203ee6), Zeile 729 in 18.0 (e2ab18b), Zeile 728 in 19.0 (ce7f5a3) und Zeile 752 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: models/payment_transaction.py, Zeile 754 in 17.0 (d203ee6), Zeile 754 in 18.0 (e2ab18b), Zeile 753 in 19.0 (ce7f5a3) und Zeile 777 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: const.py, Zeile 122 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) und 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: views/payment_transaction_views.xml, Zeile 13 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) und 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, Zeile 436 in 17.0 (d203ee6), Zeile 436 in 18.0 (e2ab18b), Zeile 436 in 19.0 (ce7f5a3) und Zeile 438 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, Zeile 356 in 17.0 (d203ee6), Zeile 356 in 18.0 (e2ab18b), Zeile 356 in 19.0 (ce7f5a3) und Zeile 358 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, Zeile 1016 in 17.0 (d203ee6), Zeile 1016 in 18.0 (e2ab18b), Zeile 1016 in 19.0 (ce7f5a3) und Zeile 1031 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, Zeile 1022 in 17.0 (d203ee6), Zeile 1022 in 18.0 (e2ab18b), Zeile 1022 in 19.0 (ce7f5a3) und Zeile 1037 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: __manifest__.py, Zeile 31 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) und 20.0 (688d86b)
  • docs.gocardless.com/docs/optimise/reduced-failed-payments-with-success-plus
  • Quellcode des Moduls: flexigo_payment_gocardless: models/payment_transaction.py, Zeile 63 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) und 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: models/payment_transaction.py, Zeile 418 in 17.0 (d203ee6), Zeile 418 in 18.0 (e2ab18b), Zeile 417 in 19.0 (ce7f5a3) und Zeile 432 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: views/payment_transaction_views.xml, Zeile 27 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) und 20.0 (688d86b)
  • github.com/odoo/odoo/blob/20.0/addons/payment/i18n/de.po
  • github.com/odoo/odoo/blob/20.0/addons/payment/views/payment_transaction_views.xml
  • Quellcode des Moduls: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, Zeile 1083 in 17.0 (d203ee6), Zeile 1083 in 18.0 (e2ab18b), Zeile 1083 in 19.0 (ce7f5a3) und Zeile 1090 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, Zeile 1063 in 17.0 (d203ee6), Zeile 1063 in 18.0 (e2ab18b), Zeile 1063 in 19.0 (ce7f5a3) und Zeile 1070 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, Zeile 567 in 17.0 (d203ee6), Zeile 567 in 18.0 (e2ab18b), Zeile 567 in 19.0 (ce7f5a3) und Zeile 569 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: models/payment_transaction.py, Zeile 461 in 17.0 (d203ee6), Zeile 461 in 18.0 (e2ab18b), Zeile 460 in 19.0 (ce7f5a3) und Zeile 479 in 20.0 (688d86b)
  • docs.gocardless.com/docs/api-reference/webhooks
  • github.com/odoo/odoo/blob/17.0/odoo/http.py
  • support.gocardless.com/hc/en-gb/articles/360001467265
  • Quellcode des Moduls: flexigo_payment_gocardless: const.py, Zeile 66 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) und 20.0 (688d86b)
  • github.com/odoo/odoo/blob/20.0/addons/account_payment/views/account_move_views.xml