Zum Hauptinhalt springen
GoCardless · SEPA Core · fehlgeschlagene Zahlung

GoCardless insufficient_funds (AM04): Das Kundenkonto war nicht gedeckt

Es ist der häufigste Fehler bei einer Lastschrift: Die Bank des Kunden gibt die Lastschrift zurück, weil auf dem Konto kein Geld war. GoCardless meldet das mit einem Zahlungsereignis failed, der Ursache insufficient_funds und dem SEPA-Code AM04. Es ist einer der Fehler, die sein Dienst Success+ erneut versuchen kann, ohne dass Sie etwas tun müssen.

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.

Was GoCardless sagt

EreignisUrsacheSEPA-Core-CodeText von GoCardless
payments · failedinsufficient_fundsAM04The customer's account had insufficient funds to make this payment.

Die Dokumentation des Ereignisses failed enthält einen wichtigen Punkt: GoCardless versucht die Zahlung selbstständig erneut, wenn das Feld will_attempt_retry des Ereignisses auf true steht («GoCardless will automatically retry the payment if event's will_attempt_retry field is true.»). Dieser automatische Versuch ist Success+, und um ihn zu nutzen, muss er im GoCardless-Dashboard aktiviert sein.

Laut dem Leitfaden von Success+ werden nur Zahlungen erneut versucht, die wegen fehlender Deckung fehlschlagen. Bei SEPA sind das zwei Codes: AM04 und MS03, wobei MS03 nur in Österreich, Belgien, Deutschland, Luxemburg und der Slowakei gilt. GoCardless weist allerdings darauf hin, dass sich seine Kriterien ändern können: Maßgeblich für jeden Fehler ist das Feld will_attempt_retry.

GoCardless-Karte zur Ursache insufficient_funds
Die Ursache, ihr SEPA-Core-Code AM04 und der Text, mit dem GoCardless sie dokumentiert.

Warum es auftritt, wenn die Rechnung schon bezahlt schien

Eine SEPA-Lastschrift wird nicht sofort abgeschlossen: Laut GoCardless kann die Einziehung bis zu 5 Bankarbeitstage dauern. Meist meldet die Bank des Kunden den Fehler einen Bankarbeitstag nach dem Belastungsdatum, bevor die Zahlung den Status confirmed erhält. In wenigen Fällen kommt die Meldung später, wenn die Zahlung bereits als confirmed markiert ist: Das ist ein spät eintretender Fehler (late failure), und der Leitfaden von Success+ nennt als Beispiel einen wegen fehlender Deckung. Deshalb kann AM04 auftreten, obwohl die Einziehung in Odoo bereits bestätigt und die Rechnung abgestimmt war. Der Konnektor berücksichtigt das: Schlägt eine Einziehung fehl, die Odoo als erledigt betrachtet hat, storniert er ihre Zahlung und die Rechnung ist wieder offen.

Der GoCardless-Konnektor für Odoo bucht nur per SEPA Core und in Euro ein, und für eine fehlgeschlagene SEPA-Core-Zahlung gibt die Dokumentation von GoCardless bei insufficient_funds nur einen einzigen Code an: AM04. In Odoo sehen Sie die Ursache und nicht den Code, denn der Konnektor speichert die Ursache des Ereignisses, nicht den SEPA-Code. Der Konnektor vermerkt in seinem Code außerdem, dass die Kombination insufficient_funds mit AM04 bei echten SEPA-Zahlungen im Sandbox von GoCardless beobachtet wurde.

Was Sie in Odoo mit dem Konnektor sehen

Jede Einziehung, die der Konnektor sendet, verlangt bei GoCardless retry_if_possible, die Option von Success+. Tritt der Fehler auf, können zwei Dinge passieren, und die Transaktion zeigt Ihnen in ihrer GoCardless-Gruppe, welches: «GoCardless Cause» und das Kontrollkästchen «Success+ Will Retry». 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.

will_attempt_retryStatus«Mitteilung» der TransaktionSchaltfläche «Retry collection»
true«Ausstehend»«GoCardless could not collect this payment (insufficient_funds). Success+ will retry it automatically; there is nothing to do.»Erscheint nicht
false«Fehler», und die Rechnung ist wieder offen«GoCardless could not collect this payment (insufficient_funds).» und, wenn GoCardless den Grund angibt, «It will not be retried automatically (…).»Erscheint, wenn noch Versuche übrig sind und das Mandat aktiv ist

Diese Mitteilungen schreibt der Konnektor beim Anwenden des Ereignisses, ohne dass jemand davorsitzt. 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 (insufficient_funds). Success+ will retry it automatically; there is nothing to do.», «GoCardless could not collect this payment (insufficient_funds).» und «It will not be retried automatically (…).».

Die Transaktion bleibt bewusst ausstehend, wenn Success+ erneut versuchen wird: Das Geld kann noch eingehen, und ein Fehlerstatus würde den Eindruck erwecken, die Einziehung sei verloren. Jedes Mal, wenn GoCardless die Einziehung erneut einreicht, sendet es ein Ereignis resubmission_requested, und der Konnektor erhöht «GoCardless Retries» um eins, unabhängig davon, ob der Versuch von Success+ stammt oder von Ihnen angestoßen wurde.

Was zu tun ist

  1. Öffnen Sie die Transaktion über die Rechnung und prüfen Sie «GoCardless Cause» und «Success+ Will Retry».
  2. Wird Success+ es erneut versuchen, unternehmen Sie nichts: Die Schaltfläche zum erneuten Versuch erscheint gar nicht. GoCardless bittet, den Kunden in der Zwischenzeit nicht auf einem anderen Weg zu belasten, weil er sonst zweimal zahlen könnte.
  3. Wird Success+ es nicht erneut versuchen, sprechen Sie zuerst mit dem Kunden, um zu erfahren, wann wieder Guthaben vorhanden ist, und drücken Sie «Retry collection», sobald er es bestätigt. Die Schaltfläche legt kein Datum fest: Das neue Belastungsdatum bestimmt GoCardless, und die Transaktion zeigt «Retry requested. GoCardless will confirm the new charge date.».
  4. Behalten Sie den Überblick: GoCardless erlaubt höchstens 3 Wiederholungen pro Zahlung («Payments can be retried up to 3 times.»), und der Konnektor zählt auch die Versuche von Success+ unter «GoCardless Retries» mit.

Kündigt ein AM04 das Mandat des Kunden?

Nein. Die Ursache insufficient_funds gehört nicht zu den Gründen, bei denen der Konnektor das Mandat archiviert: mandate_cancelled, bank_account_closed, mandate_expired und authorisation_disputed. Der Kunde behält seine Zahlungsart für die nächste Rechnung.

Warum versucht Success+ nicht jeden Fehler erneut?

Weil sein Leitfaden das auf Zahlungen ohne Deckung beschränkt: bei SEPA AM04 und, nur in fünf Ländern, MS03. Ein Kunde, der die Abbuchung ablehnt, oder ein geschlossenes Konto lassen sich nicht durch erneutes Einreichen beheben. Der Konnektor entscheidet das nicht selbst: Er folgt dem Feld will_attempt_retry jedes Fehlers.

Schema: was GoCardless bei insufficient_funds meldet und was Odoo mit dem Konnektor tut
Schema auf Grundlage des Konnektorcodes (17.0, 18.0, 19.0 und 20.0) und der Dokumentation von GoCardless.

Mit unserem Konnektor

Der GoCardless-Konnektor für Odoo 17, 18, 19 und 20 übersetzt das Ereignis in etwas, das sich über die Rechnung steuern lässt: Er lässt die Transaktion ausstehend, solange Success+ arbeitet, setzt sie auf Fehler und öffnet die Rechnung wieder, wenn kein Versuch mehr folgt, und zählt die Versuche, damit Ihnen keiner angeboten wird, der nicht an der Reihe ist. Was er nicht kann, ist Geld auf das Konto Ihres Kunden zu bringen: Wiederholt sich AM04, löst das Gespräch mit ihm die Einziehung.

Weiterlesen

GoCardless refer_to_payer: MS02, MS03, RR04 und SL01 bei einer SEPA-Lastschriftrefer_to_payer bündelt bei GoCardless die SEPA-Codes MS02, MS03, RR04 und SL01. Was jeder bedeutet, warum das Mandat bleibt und wie Odoo es verarbeitet.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.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.
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
  • docs.gocardless.com/docs/optimise/reduced-failed-payments-with-success-plus
  • 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 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 260 in 17.0 (d203ee6), Zeile 260 in 18.0 (e2ab18b), Zeile 260 in 19.0 (ce7f5a3) und Zeile 271 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 746 in 17.0 (d203ee6), Zeile 746 in 18.0 (e2ab18b), Zeile 745 in 19.0 (ce7f5a3) und Zeile 769 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: models/payment_transaction.py, Zeile 732 in 17.0 (d203ee6), Zeile 732 in 18.0 (e2ab18b), Zeile 731 in 19.0 (ce7f5a3) und Zeile 755 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_transaction.py, Zeile 680 in 17.0 (d203ee6), Zeile 680 in 18.0 (e2ab18b), Zeile 679 in 19.0 (ce7f5a3) und Zeile 703 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: models/payment_transaction.py, Zeile 430 in 17.0 (d203ee6), Zeile 430 in 18.0 (e2ab18b), Zeile 429 in 19.0 (ce7f5a3) und Zeile 444 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: const.py, Zeile 119 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 461 in 17.0 (d203ee6), Zeile 461 in 18.0 (e2ab18b), Zeile 460 in 19.0 (ce7f5a3) und Zeile 479 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: models/payment_transaction.py, Zeile 484 in 17.0 (d203ee6), Zeile 484 in 18.0 (e2ab18b), Zeile 483 in 19.0 (ce7f5a3) und Zeile 502 in 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: 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 22 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 27 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 28 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) und 20.0 (688d86b)
  • github.com/odoo/odoo/blob/20.0/addons/payment/views/payment_transaction_views.xml
  • github.com/odoo/odoo/blob/20.0/addons/payment/i18n/de.po
  • 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 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 703 in 17.0 (d203ee6), Zeile 703 in 18.0 (e2ab18b), Zeile 703 in 19.0 (ce7f5a3) und Zeile 710 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 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 408 in 17.0 (d203ee6), Zeile 408 in 18.0 (e2ab18b), Zeile 408 in 19.0 (ce7f5a3) und Zeile 410 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)
  • 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/17.0/odoo/http.py
  • github.com/odoo/odoo/blob/20.0/addons/account_payment/views/account_move_views.xml