Zum Hauptinhalt springen
GoCardless API · gocardless · 500 · 504

GoCardless internal_server_error und request_timed_out: der Fehler liegt bei GoCardless

Manchmal liegt das Problem weder an Ihrer Anfrage noch an Ihrem Client, sondern bei GoCardless: ein interner Fehler (500) oder eine Anfrage, die nicht rechtzeitig fertig wird (504). Der Odoo-Konnektor wiederholt solche Anfragen nicht von selbst und setzt die Zahlung mit der request_id auf Fehler. Wichtig ist danach, dieselbe Zahlung nicht ein zweites Mal einzuziehen.

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
internal_server_errorgocardlessAn internal error occurred. Report to support with request_id.
request_timed_outgocardlessRequest did not complete in time. Retry, report if persistent.

GoCardless ordnet diese Reasons dem Typ gocardless zu, also den Fehlern, die bei GoCardless selbst während der Verarbeitung Ihrer Anfrage auftreten: «These errors occurred within GoCardless while processing your request.». Die HTTP-Codes-Tabelle beschreibt die beiden Codes so:

HTTPText von GoCardless
500Server-side error. Retry, and report to support with the request_id if it persists.
504Request timed out. Retry, and report with request_id if it persists.

Auf der Seite zu den Limits legt GoCardless außerdem fest, wie lange eine Anfrage höchstens dauern darf: 29 Sekunden («Request timeout 29 seconds»).

Karte des GoCardless-Fehlers internal_server_error
Der Reason eines internen Fehlers bei GoCardless, die HTTP-Codes 500 und 504, request_timed_out und die request_id.

Drei Fälle, die der Konnektor nicht gleich behandelt

Der Konnektor wartet bei jeder Anfrage bis zu 30 Sekunden auf die Antwort von GoCardless. Bei einer Zahlung, einer Rückerstattung oder einem Wiederholungsversuch kann Odoo auf drei verschiedene Situationen stoßen:

  • GoCardless antwortet mit einem 500 oder einem 504, und die Antwort enthält den Reason.
  • GoCardless antwortet nicht: Die Verbindung bricht ab oder die 30 Sekunden sind abgelaufen.
  • Der Fehler tritt beim Verarbeiten eines Ereignisses auf, wenn der Konnektor bei GoCardless die Zahlung abfragt, auf die sich das Ereignis bezieht.

Was der Konnektor tut

Bei einem 500 oder 504. Der Konnektor wiederholt eine Anfrage nur, wenn keine Antwort kommt oder nach einem 429. Bei einem 500 oder 504 gibt es eine Antwort, also wertet er sie als Ablehnung. Bei einer Abbuchung wechselt die Transaktion auf «Fehler» mit «GoCardless rejected the request.» und darunter der Meldung von GoCardless mit dem Reason und der request_id in eckigen Klammern. Die stündliche Aufgabe sendet eine fehlerhafte Transaktion nicht erneut. Sollte GoCardless die Abbuchung trotzdem angelegt haben, verknüpft sie das erste Ereignis: Jede Abbuchung trägt in ihren Metadaten die Referenz der Odoo-Transaktion, der Konnektor sucht sie darüber und übernimmt den Zahlungsstatus. Eine fehlerhafte Transaktion geht so wieder auf «Ausstehend» oder wird «Bestätigt».

Ohne Antwort. Der Konnektor wiederholt die Anfrage einmal mit demselben Idempotenzschlüssel. Antwortet auch dann niemand, gilt die Abbuchung nicht als verloren: Die Transaktion bleibt ausstehend mit «GoCardless did not answer, so it is not known yet whether it took the request. It will be sent again, safely, within the hour.». Die stündliche Aufgabe sendet sie mit demselben Schlüssel erneut; hat GoCardless sie bereits angelegt, antwortet es mit 409, und der Konnektor übernimmt das Vorhandene.

Beim Verarbeiten eines Ereignisses. Bei jedem Ereignis zu einer Zahlung fragt der Konnektor diese Zahlung bei GoCardless ab. Schlägt die Abfrage fehl, antwortet der Webhook mit 500, damit GoCardless die Zustellung wiederholt; bereits verarbeitete Ereignisse werden nicht doppelt angewendet. Auch die stündliche Nachholung lässt kein fehlgeschlagenes Ereignis liegen.

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, etwa die Verlängerung eines Abonnements oder die erneute Sendung durch den Konnektor selbst: «GoCardless rejected the request.» und «GoCardless did not answer, so it is not known yet whether it took the request. It will be sent again, safely, within the hour.».

Schema: was GoCardless bei einem 500 oder 504 sendet 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.

Was zu tun ist

  1. Öffnen Sie die Transaktion über die Rechnung, mit der Schaltfläche «Zahlungstransaktion» oben; das Transaktionsmenü erscheint nur im Entwicklermodus und existiert in Odoo 20 nicht. Nennt die Meldung internal_server_error oder request_timed_out, lag der Fehler bei GoCardless, nicht beim Kunden oder bei dessen Mandat.
  2. Bevor Sie die Rechnung erneut einziehen, suchen Sie die Abbuchung im GoCardless-Dashboard: Der Konnektor setzt als Beschreibung jeder Abbuchung die Referenz seiner Odoo-Transaktion. Ist sie dort, ziehen Sie nicht erneut ein; ihr Ereignis verknüpft die Transaktion.
  3. Ist sie nicht dort, ziehen Sie die Rechnung mit der gespeicherten Zahlungsmethode des Kunden erneut ein. Eine neue Abbuchung ist eine andere Transaktion mit einem anderen Idempotenzschlüssel, deshalb lohnt sich der Blick vorher.
  4. Tritt der Fehler wieder auf, schreiben Sie an den Support von GoCardless und nennen die request_id aus der Meldung: Laut deren Dokumentation gehört sie zu jeder Anfrage an den Support.

Warum wiederholt der Konnektor einen 500er nicht so wie eine Anfrage ohne Antwort?

Weil er nur das blind wiederholt, was ohne Risiko wiederholbar ist: eine Anfrage ohne Antwort mit demselben Schlüssel oder eine, die einen 429 erhalten hat (laut GoCardless lassen sich diese problemlos wiederholen). Ein 500 oder 504 ist eine Antwort, und der Konnektor behandelt sie als Ablehnung.

Kann eine Abbuchung doppelt entstehen?

Mit demselben Schlüssel nicht: GoCardless antwortet mit einem 409, und der Konnektor übernimmt die bereits vorhandene Abbuchung. Das Risiko liegt darin, die Rechnung erneut einzuziehen, denn das erzeugt eine neue Transaktion mit neuem Schlüssel. Deshalb suchen Sie vorher im Dashboard nach der Abbuchung.

Mit unserem Konnektor

In Odoo 17, 18, 19 und 20 unterscheidet der Konnektor einen Fehler bei GoCardless von einer Anfrage ohne Antwort: Der erste Fall geht mit seiner request_id auf Fehler, der zweite bleibt ausstehend und wird mit demselben Schlüssel erneut gesendet. In beiden Fällen verknüpft das Ereignis einer tatsächlich vorhandenen Abbuchung diese mit ihrer Transaktion.

Weiterlesen

GoCardless 409 idempotent_creation_conflict: Die Abbuchung existierte bereitsGoCardless gibt 409 zurück, wenn ein Idempotenzschlüssel schon etwas angelegt hat. Warum das kein Fehler ist und wie der Konnektor Doppelabbuchungen verhindert.GoCardless 429 rate_limit_exceeded: zu viele Anfragen pro MinuteGoCardless antwortet bei über 1.600 Anfragen pro Minute mit 429 rate_limit_exceeded. So wartet und wiederholt der Konnektor, und was bei erneutem Fehler hilft.GoCardless access_token_revoked: Odoo kann Ihr Konto nicht mehr erreichenGoCardless lehnt Anfragen mit einem ungültigen Token ab. Was Odoo dann tut und wie Sie die Verbindung wiederherstellen.
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/limits
  • Quellcode des Moduls: flexigo_payment_gocardless: models/payment_provider.py, Zeile 361 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 394 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 357 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 373 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 448 in 17.0 (d203ee6), Zeile 448 in 18.0 (e2ab18b), Zeile 448 in 19.0 (ce7f5a3) und Zeile 450 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, Zeile 29 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 299 in 17.0 (d203ee6), Zeile 299 in 18.0 (e2ab18b), Zeile 299 in 19.0 (ce7f5a3) und Zeile 310 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: models/payment_provider.py, Zeile 391 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 68 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 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 281 in 17.0 (d203ee6), Zeile 281 in 18.0 (e2ab18b), Zeile 281 in 19.0 (ce7f5a3) und Zeile 292 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: models/payment_transaction.py, Zeile 258 in 17.0 (d203ee6), Zeile 258 in 18.0 (e2ab18b), Zeile 258 in 19.0 (ce7f5a3) und Zeile 269 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: models/payment_transaction.py, Zeile 115 in 17.0 (d203ee6), Zeile 115 in 18.0 (e2ab18b), Zeile 115 in 19.0 (ce7f5a3) und Zeile 118 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: models/payment_transaction.py, Zeile 572 in 17.0 (d203ee6), Zeile 572 in 18.0 (e2ab18b), Zeile 571 in 19.0 (ce7f5a3) und Zeile 590 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: models/payment_transaction.py, Zeile 697 in 17.0 (d203ee6), Zeile 697 in 18.0 (e2ab18b), Zeile 696 in 19.0 (ce7f5a3) und Zeile 720 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: models/payment_provider.py, Zeile 623 in 17.0 (d203ee6), Zeile 623 in 18.0 (e2ab18b), Zeile 623 in 19.0 (ce7f5a3) und Zeile 625 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: models/payment_transaction.py, Zeile 589 in 17.0 (d203ee6), Zeile 589 in 18.0 (e2ab18b), Zeile 588 in 19.0 (ce7f5a3) und Zeile 607 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: controllers/main.py, Zeile 124 in 17.0 (d203ee6), Zeile 124 in 18.0 (e2ab18b), Zeile 124 in 19.0 (ce7f5a3) und Zeile 127 in 20.0 (688d86b)
  • Quellcode des Moduls: flexigo_payment_gocardless: models/payment_provider.py, Zeile 603 in 17.0 (d203ee6), Zeile 603 in 18.0 (e2ab18b), Zeile 603 in 19.0 (ce7f5a3) und Zeile 605 in 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)