Zum Hauptinhalt springen
GoCardless API · invalid_state · Rückerstattungen

GoCardless refund_payment_invalid_state: diese Lastschrift kann noch nicht erstattet werden

Eine Rückerstattung über GoCardless gibt dem Kunden das Geld einer Lastschrift zurück, und GoCardless nimmt sie nur an, wenn diese Lastschrift bestätigt oder bereits ausgezahlt ist. Andernfalls antwortet GoCardless mit refund_payment_invalid_state. Außerdem gilt bei GoCardless ein sicherer Rückerstattungszeitraum von 7 Kalendertagen, und der Odoo-Konnektor hat seine eigene Regel von 2 Tagen.

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 sagt

ReasonTypText von GoCardless
refund_payment_invalid_stateinvalid_statePayment must be confirmed or paid_out before it can be refunded.

In der Referenz zu den Rückerstattungen nennt GoCardless eine Frist: «A refund can only be created once it is outside the safer refund period (7 calendar days after the charge date) otherwise an error is returned.». Dieser Zeitraum lässt sich deaktivieren: «The safer refund period can be disabled by contacting GoCardless.». Und er erklärt, warum es ihn gibt: «A payment that has been (partially) refunded can still receive a late failure or chargeback from the customer's bank.».

Rückerstattungen über die API sind außerdem standardmäßig deaktiviert: «This endpoint is disabled by default. To enable it, you will need to enable refunds on your GoCardless Dashboard.».

Karte des Fehlers refund_payment_invalid_state bei GoCardless
Der reason, sein Typ invalid_state und die Status confirmed und paid_out, die GoCardless für eine Rückerstattung verlangt.

Die Fristregeln auf einen Blick

Tage seit der LastschriftGoCardless, StandardDer Konnektor
Weniger als 2innerhalb des sicheren Zeitraums: gibt einen Fehler zurücksendet die Rückerstattung nicht
2 oder mehr, aber weniger als 7innerhalb des sicheren Zeitraums: gibt einen Fehler zurücksendet sie und hinterlässt einen Hinweis im Serverprotokoll
7 oder mehraußerhalb des sicheren Zeitraumssendet sie

Beide zählen nicht ab demselben Zeitpunkt. GoCardless zählt ab dem Belastungsdatum der Zahlung. Der Konnektor zählt ab der letzten Statusänderung der Zahlungstransaktion der Lastschrift in Odoo. Wenn GoCardless Ihnen den sicheren Zeitraum erlassen hat, kann die Rückerstattung zwischen 2 und 7 Tagen durchgehen.

Wann refund_payment_invalid_state beim Konnektor erscheint

Odoo erlaubt nur die Erstattung einer bestätigten Transaktion, und der Konnektor bestätigt sie, wenn GoCardless confirmed oder paid_out meldet. Dieser reason bedeutet beim Konnektor also: Die Zahlung hat sich bei GoCardless geändert, und Odoo weiß es noch nicht. Das kann ein später Fehlschlag sein, den GoCardless bei bereits bestätigter Zahlung meldet, oder eine Rückbuchung durch den Kunden, deren Ereignis noch nicht angekommen ist.

Was der Konnektor macht

  1. Bei weniger als 2 Tagen sendet er nichts: Odoo bricht mit «GoCardless cannot refund a collection until it has settled. This one was charged … day(s) ago; refunds are possible after 2 days.» ab.
  2. Andernfalls sendet er die Rückerstattung mit seinem Idempotenzschlüssel an GoCardless. Lehnt GoCardless sie ab, aus diesem reason, wegen des sicheren Zeitraums oder aus einem anderen Grund, geht die Rückerstattungstransaktion auf «Fehler» mit «GoCardless rejected the request.» und darunter der Meldung von GoCardless mit dem reason und der request_id.
  3. Nimmt GoCardless sie an, bleibt die Transaktion auf «Ausstehend» mit «Refund submitted. GoCardless will deduct it from a future payout.» und wechselt zu «Bestätigt», sobald GoCardless sie auszahlt oder aus einer Auszahlung verrechnet.

Seit Version 1.1.5 zeigt eine fehlerhafte Rückerstattung nicht die Schaltfläche «Retry collection»: Eine Rückerstattung ist keine Lastschrift, und es gibt nichts, was GoCardless erneut versuchen könnte. Wenn GoCardless das Geld nicht zum Kunden zurückbringen kann, setzt der Konnektor die Rückerstattung auf Fehler mit «GoCardless could not pay this refund back (…).». 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.

Schema: was GoCardless bei der Rückerstattung antwortet und was Odoo mit dem Konnektor 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. Öffnen Sie die Transaktion der Lastschrift über die Rechnung mit der Schaltfläche «Zahlungstransaktion» oben; das Menü der Transaktionen erscheint nur im Entwicklermodus und existiert in Odoo 20 nicht. Von dort führt die Schaltfläche für Rückerstattungen zur Transaktion der Rückerstattung und zu ihrer Meldung.
  2. Lautet der reason refund_payment_invalid_state, prüfen Sie die Zahlung im GoCardless-Dashboard. Ist sie spät fehlgeschlagen oder hat der Kunde sie zurückgebucht, gibt es nichts mehr zu erstatten: Das Geld ist nicht mehr bei Ihnen. Odoo bildet das ab, sobald das Ereignis ankommt; die stündliche Aufgabe, die verlorene Ereignisse nachholt, bringt es.
  3. Stammt die Ablehnung vom sicheren Zeitraum, warten Sie 7 Tage ab dem Belastungsdatum oder bitten Sie GoCardless, ihn zu erlassen.
  4. Für eine erneute Rückerstattung gehen Sie über die Zahlung der Lastschrift und deren Schaltfläche für Rückerstattungen. Der Konnektor unterstützt Teilrückerstattungen.

Warum erlaubt der Konnektor die Erstattung ab 2 Tagen, wenn GoCardless von 7 spricht?

Die 2 Tage sind das Mindestmaß des Konnektors: Darunter sendet er nichts. GoCardless erlaubt, den sicheren Zeitraum zu entfernen, und solange er aktiv ist, lehnt GoCardless die Rückerstattung vor 7 Tagen ab. Zwischen 2 und 7 Tagen warnt der Konnektor im Protokoll, weil ein SEPA-Fehlschlag noch eintreffen kann.

Kann eine erstattete Lastschrift danach noch fehlschlagen?

Ja. GoCardless warnt davor: Eine ganz oder teilweise erstattete Zahlung kann trotzdem einen späten Fehlschlag oder eine Rückbuchung durch die Bank des Kunden erhalten. Dann hätten Sie Geld zurückgegeben, das Sie gar nicht behalten haben.

Mit unserem Konnektor

In Odoo 17, 18, 19 und 20 sendet der Konnektor keine Rückerstattungen für Lastschriften, die weniger als 2 Tage alt sind, setzt die von GoCardless abgelehnten mit ihrer request_id auf Fehler und bietet kein erneutes Versuchen für eine Rückerstattung an, weil diese keine Lastschrift ist.

Weiterlesen

GoCardless total_amount_confirmation_invalid: der erstattete Gesamtbetrag stimmt nichtGoCardless lehnt eine Rückerstattung mit total_amount_confirmation_invalid ab, wenn der Gesamtbetrag nicht passt, oder mit number_of_refunds_exceeded.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 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.
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/refund
  • support.gocardless.com/hc/en-gb/articles/360001467265
  • Quellcode des Moduls: flexigo_payment_gocardless: const.py, Zeile 41 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) und 20.0 (688d86b)
  • github.com/odoo/odoo/blob/20.0/addons/payment/models/payment_transaction.py
  • github.com/odoo/odoo/blob/20.0/addons/account_payment/views/account_payment_views.xml
  • Quellcode des Moduls: flexigo_payment_gocardless: models/payment_provider.py, Zeile 256 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) und 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: const.py, Zeile 106 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 361 in 17.0 (d203ee6), Zeile 361 in 18.0 (e2ab18b), Zeile 360 in 19.0 (ce7f5a3) und Zeile 375 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: models/payment_transaction.py, Zeile 365 in 17.0 (d203ee6), Zeile 365 in 18.0 (e2ab18b), Zeile 364 in 19.0 (ce7f5a3) und Zeile 379 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, Zeile 414 in 17.0 (d203ee6), Zeile 414 in 18.0 (e2ab18b), Zeile 414 in 19.0 (ce7f5a3) und Zeile 416 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: models/payment_transaction.py, Zeile 371 in 17.0 (d203ee6), Zeile 371 in 18.0 (e2ab18b), Zeile 370 in 19.0 (ce7f5a3) und Zeile 385 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: models/payment_transaction.py, Zeile 397 in 17.0 (d203ee6), Zeile 397 in 18.0 (e2ab18b), Zeile 396 in 19.0 (ce7f5a3) und Zeile 411 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: models/payment_transaction.py, Zeile 413 in 17.0 (d203ee6), Zeile 413 in 18.0 (e2ab18b), Zeile 412 in 19.0 (ce7f5a3) und Zeile 427 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: models/payment_transaction.py, Zeile 605 in 17.0 (d203ee6), Zeile 605 in 18.0 (e2ab18b), Zeile 604 in 19.0 (ce7f5a3) und Zeile 625 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: models/payment_provider.py, Zeile 352 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 987 in 17.0 (d203ee6), Zeile 987 in 18.0 (e2ab18b), Zeile 987 in 19.0 (ce7f5a3) und Zeile 1002 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: models/payment_transaction.py, Zeile 611 in 17.0 (d203ee6), Zeile 611 in 18.0 (e2ab18b), Zeile 610 in 19.0 (ce7f5a3) und Zeile 631 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, Zeile 442 in 17.0 (d203ee6), Zeile 442 in 18.0 (e2ab18b), Zeile 442 in 19.0 (ce7f5a3) und Zeile 444 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: models/payment_transaction.py, Zeile 424 in 17.0 (d203ee6), Zeile 424 in 18.0 (e2ab18b), Zeile 423 in 19.0 (ce7f5a3) und Zeile 438 in 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: 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: 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/payment/i18n/de.po
  • 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)