Zum Hauptinhalt springen
GoCardless · SEPA Core · Mandat storniert oder bestritten

GoCardless MD01: mandate_cancelled und authorisation_disputed bei einer SEPA-Lastschrift

MD01 kommt, wenn der Kunde das Mandat bei seiner Bank storniert hat oder bestreitet, die Lastschrift je autorisiert zu haben. Bei GoCardless erscheint er in drei verschiedenen Zahlungsereignissen, je nach Zeitpunkt, und in allen gilt für die Zukunft dasselbe: Mit diesem Mandat kann nicht mehr eingezogen werden.

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
4 Min.

Drei Ereignisse und vier Zeilen, derselbe Code

EreignisUrsacheText von GoCardless
payments · failedmandate_cancelledThe customer cancelled their mandate at their bank.
payments · charged_backmandate_cancelledThis payment was charged back by the customer's bank, because the customer disputed authorising the transaction.
payments · cancelledauthorisation_disputedThis payment has been cancelled because the payer disputes authorising its mandate.
payments · cancelledmandate_cancelledThis payment has been cancelled because the payer disputes authorising its mandate.

Alle vier Zeilen stammen aus der SEPA-Core-Tabelle der GoCardless-Dokumentation und tragen MD01; die stornierte Zahlung erscheint mit zwei Ursachen und demselben Text. Auch das Mandat wird storniert, und GoCardless meldet das mit einem eigenen Ereignis: «A payment under this mandate failed, indicating that the mandate has been cancelled at the customer's bank. Any subscriptions and pending payments will also be cancelled.».

GoCardless-Karte der Ursache mandate_cancelled
Die Ursache, der SEPA-Core-Code MD01 und der Text von GoCardless für die fehlgeschlagene Zahlung.

Was sich je nach Zeitpunkt ändert

Storniert der Kunde das Mandat, bevor die Lastschrift eingezogen wird, schlägt die Zahlung fehl: Das Geld ist nicht eingegangen. Bestreitet er sie nach dem Einzug, handelt es sich um eine Rückbelastung: Das Geld ist eingegangen und wird zurückgebucht. Und wenn Zahlungen zur Einreichung anstanden, storniert GoCardless sie, bevor sie übermittelt werden. Der Konnektor vermerkt in seinem Code, dass er die Ursache authorisation_disputed mit MD01 bei einer Testzahlung der Sandbox als Rückbelastung einer bereits abgerechneten Zahlung gesehen hat.

Was Odoo mit dem Konnektor macht

Die Transaktion wird von der Rechnung aus geöffnet, über die Schaltfläche «Zahlungstransaktion» oben; das Menü der Transaktionen erscheint nur im Entwicklermodus und existiert in Odoo 20 nicht. In allen drei Fällen endet die Transaktion mit «Fehler» und der sichtbaren Ursache. Die Meldung hängt vom Ereignis ab: «GoCardless could not collect this payment (mandate_cancelled).» bei einem Fehlschlag und «GoCardless reported a chargeback for this payment (mandate_cancelled). The funds have been taken back and will be deducted from a future payout.» bei einer Rückbelastung. Hatte Odoo die Rechnung mit dieser Lastschrift bereits als bezahlt markiert, storniert der Konnektor die Zahlung, und die Rechnung ist wieder offen.

Entscheidend ist das Mandat. mandate_cancelled und authorisation_disputed gehören zu den vier Ursachen, mit denen der Konnektor es für ungültig erklärt, also:

  • archiviert er die Zahlungsart des Kunden, die nicht mehr zum Einzug angeboten wird;
  • schreibt er in dessen Datensatz «The GoCardless direct debit mandate of … is no longer usable (mandate_cancelled). No further collection can be taken against it. Ask the customer to set up a new mandate.»;
  • erstellt er eine Aktivität «GoCardless mandate lost».

Es kommen mehrere Ereignisse mit derselben Nachricht, das der Zahlung und das des Mandats, aber die Meldung erscheint nur einmal: Das zweite findet das Mandat bereits archiviert vor.

Alle diese Texte schreibt der Konnektor beim Anwenden des Ereignisses, ohne dass jemand eingreift. 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 (mandate_cancelled).», «GoCardless reported a chargeback for this payment (mandate_cancelled). The funds have been taken back and will be deducted from a future payout.», «The GoCardless direct debit mandate of … is no longer usable (mandate_cancelled). No further collection can be taken against it. Ask the customer to set up a new mandate.» und «GoCardless mandate lost».

Was zu tun ist

Bevor Sie ein neues Mandat anfordern, klären Sie, warum der Kunde es storniert hat. Ein Kunde, der den Dienst nicht mehr möchte, braucht eine Kündigung, keine neue Unterschrift. War es ein Fehler seinerseits oder eine Änderung bei seiner Bank, bitten Sie ihn, erneut zu unterschreiben, und ziehen Sie die offenen Rechnungen mit dem neuen Mandat ein. Behauptet er, die Lastschrift nie autorisiert zu haben, prüfen Sie, wie das Mandat unterschrieben wurde, bevor Sie weiter von ihm einziehen.

Hat es einen Sinn, eine Zahlung mit MD01 erneut zu versuchen?

Nein. Das Mandat existiert für seine Bank nicht mehr, und bei archiviertem Mandat erscheint die Schaltfläche «Retry collection» in der Transaktion nicht. Es braucht ein neues, vom Kunden unterschriebenes Mandat.

Schema: was GoCardless mit MD01 meldet und was Odoo mit dem Konnektor macht
Schema auf Grundlage des Codes des Konnektors (17.0, 18.0, 19.0 und 20.0) und der GoCardless-Dokumentation.

Mit unserem Konnektor

In Odoo 17, 18, 19 und 20 unterscheidet der Konnektor den Fehlschlag von der Rückbelastung, öffnet die Rechnung bei Bedarf wieder, entfernt das Mandat und hinterlässt Ihnen im Datensatz die Aufgabe, mit dem Kunden zu sprechen. Was er nicht tut, ist, selbstständig ein neues Mandat anzufordern: Dieses Gespräch ist Ihre Aufgabe.

Weiterlesen

GoCardless MD06: Der Kunde lässt seine Bank eine Lastschrift zurückbuchenDer Kunde lässt eine GoCardless-Lastschrift über seine Bank zurückbuchen: charged_back, refund_requested und MD06. Was in Odoo mit Rechnung und Mandat passiert.GoCardless-Fehler mandate_is_inactive beim Anlegen einer Zahlung aus OdooGoCardless meldet mandate_is_inactive bei Zahlungen mit gekündigtem, fehlgeschlagenem oder abgelaufenem Mandat. Ursache und Lösung im Odoo-Konnektor.GoCardless bank_account_closed: AC04 und MD07, das Konto existiert nicht mehrGoCardless bank_account_closed mit AC04 (Konto geschlossen) oder MD07 (Kontoinhaber verstorben): Das Mandat wird storniert. Was Odoo mit Rechnung und Kunde tut.
Geprüft im Quellcode des Connectors (Version 17.0, 18.0, 19.0 und 20.0) und in den verlinkten Quellen

Quellen

  • 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: models/payment_transaction.py, Zeile 442 in 17.0 (d203ee6), Zeile 442 in 18.0 (e2ab18b), Zeile 441 in 19.0 (ce7f5a3) und Zeile 456 in 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 713 in 17.0 (d203ee6), Zeile 713 in 18.0 (e2ab18b), Zeile 712 in 19.0 (ce7f5a3) und Zeile 736 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: models/payment_token.py, Zeile 131 in 17.0 (d203ee6), Zeile 131 in 18.0 (e2ab18b), Zeile 131 in 19.0 (ce7f5a3) und Zeile 130 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: models/payment_token.py, Zeile 83 in 17.0 (d203ee6), Zeile 83 in 18.0 (e2ab18b), Zeile 83 in 19.0 (ce7f5a3) und Zeile 82 in 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 529 in 17.0 (d203ee6), Zeile 529 in 18.0 (e2ab18b), Zeile 529 in 19.0 (ce7f5a3) und Zeile 531 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, Zeile 1148 in 17.0 (d203ee6), Zeile 1148 in 18.0 (e2ab18b), Zeile 1148 in 19.0 (ce7f5a3) und Zeile 1155 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, Zeile 495 in 17.0 (d203ee6), Zeile 495 in 18.0 (e2ab18b), Zeile 495 in 19.0 (ce7f5a3) und Zeile 497 in 20.0 (688d86b)
  • docs.gocardless.com/docs/api-reference/events/mandate
  • 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/api-reference/events/payment
  • 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: 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: 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)
  • github.com/odoo/odoo/blob/20.0/addons/payment/i18n/de.po
  • github.com/odoo/odoo/blob/17.0/odoo/http.py
  • github.com/odoo/odoo/blob/20.0/addons/account_payment/views/account_move_views.xml