Zum Hauptinhalt springen
GoCardless API · invalid_state · reinstate

GoCardless mandate_not_inactive: Das Mandat kann nicht reaktiviert werden

Ein Mandat zu reaktivieren (reinstate) heißt, ein gekündigtes oder abgelaufenes Mandat erneut an die Banken einzureichen. GoCardless lehnt das mit mandate_not_inactive ab, wenn das Mandat bereits aktiv ist oder gerade eingereicht wird. Mit dem Konnektor lässt sich das nur außerhalb der Produktion anfordern, denn in der Produktion schränkt GoCardless diese Funktion ein.

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.

Was GoCardless meldet

ReasonTypText von GoCardless
mandate_not_inactiveinvalid_state«Mandate could not be reinstated» und «it is already active or being submitted.»

GoCardless trennt die beiden Teile des Textes mit einem Gedankenstrich. In der API-Referenz heißt es dazu: «This will fail with a mandate_not_inactive error if the mandate is already being submitted, or is active.». Es handelt sich um einen invalid_state-Fehler, und für solche Fälle verlangt GoCardless, den Benutzer zu informieren und keinen erneuten Versuch zuzulassen («invalid_state → inform the end user, do not allow retry.»).

Karte des Fehlers mandate_not_inactive von GoCardless
Der Reason, sein Typ invalid_state, die Aktion zum Reaktivieren (actions/reinstate) und der Text von GoCardless.

Welche Mandate sich reaktivieren lassen

Die Reaktivierung hat mehr Bedingungen als nur den Status:

  • Es ist eine eingeschränkte Funktion: «Restricted this endpoint requires approved custom payment pages».
  • Sie gilt nur für ein Mandat, das über das Dashboard oder die API gekündigt wurde: «A mandate can only be reinstated if it has been cancelled through the dashboard or the API.». Ein von der Bank gekündigtes Mandat dagegen nicht: «Any mandate that has been cancelled by the bank cannot be reinstated.».
  • Sie dient gekündigten oder abgelaufenen Mandaten («Reinstates a cancelled or expired mandate to the banks.»), und ein Mandat kann bis zu 10-mal erneut eingereicht werden («Mandates can be resubmitted up to 10 times.»).

Nach der Anforderung läuft der Vorgang wie eine Neuanlage ab: Es kommt resubmission_requested, und danach, wie GoCardless schreibt, «so you will receive a submitted webhook, followed by a reinstated or failed webhook up to two working days later.».

Was der Konnektor in Odoo tut

Auf der Karte der Zahlungsart des Kunden zeigt der Konnektor die Schaltfläche «Reinstate mandate (sandbox)» an. Sie erscheint nur, wenn das Mandat von GoCardless stammt, der Anbieter nicht in der Produktion ist (in Odoo 17, 18 und 19 der Status des Anbieters, in Odoo 20 das Kontrollkästchen für die Produktion) und «Mandate Status» den Wert cancelled, failed oder expired hat.

Beim Klick:

  1. Der Konnektor fordert bei GoCardless die Reaktivierung dieses Mandats an.
  2. Akzeptiert GoCardless das, wechselt der Status zu reinstate_requested, und auf der Kundenkarte steht «Reinstatement of the GoCardless mandate requested. It stays unusable until the bank confirms it.». Die Zahlungsart bleibt archiviert.
  3. Wenn reinstated eintrifft, bestätigt der Konnektor das wieder: Er reaktiviert das Mandat und schreibt «The GoCardless mandate is usable again (reinstated).».

Antwortet GoCardless mit mandate_not_inactive, fängt der Konnektor das nicht ab: Odoo zeigt «GoCardless rejected the request.» mit der Meldung von GoCardless, dem Reason und der request_id, und das Mandat bleibt unverändert. Das geschieht, wenn Odoo das Mandat für erledigt hält, GoCardless es aber bereits als aktiv oder in Einreichung führt, weil dessen Ereignisse Odoo noch nicht erreicht haben. Nach einer angenommenen Anforderung erscheint die Schaltfläche nicht mehr, da der Status zu reinstate_requested wechselt.

Den Hinweis, dass das Mandat wieder verwendbar ist, schreibt der Konnektor beim Anwenden des Ereignisses, ohne dass jemand davor sitzt. 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: «The GoCardless mandate is usable again (reinstated).».

Schema: was GoCardless bei mandate_not_inactive sendet und was der Konnektor in Odoo tut
Schema auf Grundlage des Konnektor-Codes (17.0, 18.0, 19.0 und 20.0) und der GoCardless-Dokumentation.

Was zu tun ist

  1. Erscheint mandate_not_inactive, suchen Sie das Mandat im GoCardless-Dashboard. Ist es aktiv oder wird es eingereicht, gibt es nichts zu reaktivieren: Warten Sie, bis dessen Ereignisse eintreffen. Die Aufgabe, die stündlich verlorene Ereignisse nachholt, holt sie ab.
  2. Hat die Bank das Mandat gekündigt, versuchen Sie es nicht: GoCardless reaktiviert solche Mandate nicht. Bitten Sie den Kunden um ein neues Mandat.
  3. In der Produktion bietet der Konnektor keine Reaktivierung an: Der Weg ist ein neues, vom Kunden unterschriebenes Mandat.
  4. Zum Testen nutzen Sie die Sandbox von GoCardless mit dem Anbieter im Testbetrieb.

Warum erscheint die Schaltfläche nur außerhalb der Produktion?

Weil GoCardless die Reaktivierung auf Konten mit genehmigten eigenen Zahlungsseiten beschränkt, und der Konnektor sie nur außerhalb der Produktion anbietet.

Wie lange dauert es, bis das Mandat wieder gilt?

So lange, wie die Banken brauchen: Laut GoCardless meldet es zuerst, dass die Reaktivierung angefordert wurde, danach, dass das Mandat eingereicht wurde, und bis zu zwei Werktage später, ob es reaktiviert wurde oder fehlgeschlagen ist. Bis dahin verwendet der Konnektor das Mandat nicht.

Mit unserem Konnektor

In Odoo 17, 18, 19 und 20 bietet der Konnektor eine Reaktivierung nur für ein gekündigtes, fehlgeschlagenes oder abgelaufenes Mandat an, und nur außerhalb der Produktion. Er verwendet das Mandat erst wieder, wenn GoCardless die Reaktivierung mit seinem Ereignis bestätigt.

Weiterlesen

GoCardless mandate_expired: das Mandat ist wegen Nichtnutzung abgelaufenGoCardless markiert ein Mandat als expired, wenn im gesamten Inaktivitätszeitraum kein Einzug damit versucht wurde. Was Odoo tut und wie Sie weiter einziehen.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 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.
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/responses-and-errors
  • docs.gocardless.com/docs/api-reference/mandate
  • docs.gocardless.com/docs/api-reference/events/mandate
  • Quellcode des Moduls: flexigo_payment_gocardless: const.py, Zeile 134 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) und 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: views/payment_token_views.xml, Zeile 23 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) und 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: views/payment_token_views.xml, Zeile 22 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 998 in 17.0 (d203ee6), Zeile 998 in 18.0 (e2ab18b), Zeile 998 in 19.0 (ce7f5a3) und Zeile 1013 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: models/payment_token.py, Zeile 176 in 17.0 (d203ee6), Zeile 176 in 18.0 (e2ab18b), Zeile 176 in 19.0 (ce7f5a3) und Zeile 175 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: models/payment_token.py, Zeile 173 in 17.0 (d203ee6), Zeile 173 in 18.0 (e2ab18b), Zeile 173 in 19.0 (ce7f5a3) und Zeile 172 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, Zeile 1004 in 17.0 (d203ee6), Zeile 1004 in 18.0 (e2ab18b), Zeile 1004 in 19.0 (ce7f5a3) und Zeile 1019 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: models/payment_token.py, Zeile 170 in 17.0 (d203ee6), Zeile 170 in 18.0 (e2ab18b), Zeile 170 in 19.0 (ce7f5a3) und Zeile 169 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: models/payment_provider.py, Zeile 397 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) und 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: models/payment_provider.py, Zeile 462 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 521 in 17.0 (d203ee6), Zeile 521 in 18.0 (e2ab18b), Zeile 521 in 19.0 (ce7f5a3) und Zeile 523 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: const.py, Zeile 158 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) und 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: models/payment_token.py, Zeile 77 in 17.0 (d203ee6), Zeile 77 in 18.0 (e2ab18b), Zeile 77 in 19.0 (ce7f5a3) und Zeile 76 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, Zeile 1157 in 17.0 (d203ee6), Zeile 1157 in 18.0 (e2ab18b), Zeile 1157 in 19.0 (ce7f5a3) und Zeile 1164 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: views/payment_token_views.xml, Zeile 15 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 785 in 17.0 (d203ee6), Zeile 785 in 18.0 (e2ab18b), Zeile 785 in 19.0 (ce7f5a3) und Zeile 800 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: const.py, Zeile 117 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
  • github.com/odoo/odoo/blob/17.0/odoo/http.py
  • Quellcode des Moduls: flexigo_payment_gocardless: __manifest__.py, Zeile 31 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) und 20.0 (688d86b)