Naar hoofdinhoud
GoCardless API · gocardless · 500 · 504

GoCardless internal_server_error en request_timed_out: de fout zit bij GoCardless

Soms ligt het probleem niet aan uw verzoek of uw client, maar bij GoCardless: een interne fout (500) of een verzoek dat niet op tijd eindigt (504). De connector van Odoo herhaalt die verzoeken niet zelf en zet de incasso op fout met de request_id. Belangrijk is daarna om niet dubbel hetzelfde te innen.

FlexigoTech · Verantwoordelijk: Víctor Gómez · Bijgewerkt op 6 november 2026

In het kort

Versies
Odoo 17, 18, 19 en 20
Gecontroleerd
in de broncode van de connector, versie 17.0, 18.0, 19.0 en 20.0 · in de bronnen onderaan
Leestijd
4 min

Wat GoCardless zegt

ReasonTipoTexto de 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 groepeert deze reasons onder het type gocardless, dat van fouten die binnen GoCardless ontstaan: "These errors occurred within GoCardless while processing your request.". Hun tabel met HTTP-codes zegt dit over de twee codes:

HTTPTexto de 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.

Op de pagina met limieten stelt GoCardless bovendien vast hoe lang een verzoek mag duren: 29 seconden ("Request timeout 29 seconds").

Kaart van de fout internal_server_error van GoCardless
De reason van een interne fout van GoCardless, de HTTP-codes 500 en 504, request_timed_out en de request_id.

Drie gevallen die de connector niet hetzelfde behandelt

De connector wacht per verzoek tot 30 seconden op het antwoord van GoCardless. Bij een incasso, een terugbetaling of een nieuwe poging kan Odoo drie verschillende situaties tegenkomen:

  • GoCardless antwoordt met een 500 of een 504, met de reason in het antwoord.
  • GoCardless antwoordt niet: de verbinding valt weg of de 30 seconden zijn voorbij.
  • De fout komt bij het verwerken van een gebeurtenis, wanneer de connector bij GoCardless de betaling opvraagt waar de gebeurtenis over gaat.

Wat de connector doet

Bij een 500 of een 504. De connector herhaalt een verzoek alleen wanneer er geen antwoord komt of na een 429. Bij een 500 of een 504 is er wel een antwoord, dus wordt het als afgewezen beschouwd. Bij een incasso gaat de transactie naar "Fout" met "GoCardless rejected the request." en daaronder het bericht van GoCardless met de reason en de request_id tussen haken. De uurlijkse taak stuurt een transactie in fout niet opnieuw. Mocht GoCardless de incasso toch hebben aangemaakt, dan koppelt de eerste gebeurtenis die: elke incasso draagt in zijn metadata de referentie van de Odoo-transactie, de connector zoekt die op en past de betaalstatus toe. Een transactie in fout gaat zo terug naar "In behandeling" of wordt "Bevestigd".

Zonder antwoord. De connector herhaalt het verzoek één keer, met dezelfde idempotentiesleutel. Als ook dan niemand antwoordt, beschouwt hij de incasso niet als verloren: de transactie blijft in behandeling met "GoCardless did not answer, so it is not known yet whether it took the request. It will be sent again, safely, within the hour.". De uurlijkse taak stuurt het opnieuw met dezelfde sleutel; heeft GoCardless het al aangemaakt, dan antwoordt het met 409 en neemt de connector het bestaande over.

Bij het verwerken van een gebeurtenis. Bij elke gebeurtenis van een betaling vraagt de connector die betaling op bij GoCardless. Mislukt die opvraag, dan antwoordt de webhook met 500, zodat GoCardless de verzending opnieuw stuurt, en gebeurtenissen die al verwerkt zijn, worden niet twee keer verwerkt. Ook het uurlijkse herstel laat geen mislukte gebeurtenis liggen.

De connector is niet in het Nederlands vertaald: deze teksten verschijnen altijd in het Engels, ook in een Nederlandstalige Odoo, of een gebruiker of een geplande actie ze nu start: "GoCardless rejected the request." en "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: wat GoCardless bij een 500 of een 504 stuurt en wat Odoo met de connector doet
Schema opgesteld op basis van de code van de connector (17.0, 18.0, 19.0 en 20.0) en de documentatie van GoCardless.

Wat te doen

  1. Open de transactie vanuit de factuur, met de knop "Betalingstransactie" bovenaan; het menu met transacties verschijnt alleen in de ontwikkelaarsmodus en bestaat niet in Odoo 20. Noemt het bericht internal_server_error of request_timed_out, dan lag de fout bij GoCardless en niet bij de klant of diens mandaat.
  2. Zoek voordat u de factuur opnieuw int de incasso op in het Dashboard van GoCardless: de connector zet als omschrijving van elke incasso de referentie van zijn Odoo-transactie. Staat hij er, int dan niet opnieuw; de gebeurtenis koppelt de transactie.
  3. Staat hij er niet, int de factuur dan opnieuw met de opgeslagen betaalmethode van de klant. Een nieuwe incasso is een andere transactie, met een andere idempotentiesleutel: daarom is het verstandig eerst te kijken.
  4. Herhaalt het probleem zich, neem dan contact op met de support van GoCardless met de request_id uit het bericht: hun documentatie vraagt om die bij contact met hun support te vermelden.

Waarom herhaalt de connector een 500 niet zoals bij geen antwoord?

Omdat hij alleen blind herhaalt wat zonder risico opnieuw kan: een verzoek zonder antwoord, met dezelfde sleutel, of een verzoek dat een 429 kreeg (volgens GoCardless kunnen die zonder probleem opnieuw worden verstuurd). Een 500 of een 504 is een antwoord, en de connector behandelt het als afwijzing.

Kan er een dubbele incasso ontstaan?

Met dezelfde sleutel niet: GoCardless antwoordt dan met 409 en de connector neemt de bestaande incasso over. Het risico zit in opnieuw innen vanaf de factuur, want dat maakt een nieuwe transactie met een nieuwe sleutel. Zoek daarom eerst de incasso op in het Dashboard.

Met onze connector

In Odoo 17, 18, 19 en 20 onderscheidt de connector een fout van GoCardless van een verzoek zonder antwoord: de eerste komt op fout met zijn request_id, het tweede blijft in behandeling en wordt opnieuw verstuurd met dezelfde sleutel, en in beide gevallen koppelt de gebeurtenis van een incasso die wel bestaat hem aan zijn transactie.

Lees verder

GoCardless 409 idempotent_creation_conflict: de incasso bestond alGoCardless geeft 409 idempotent_creation_conflict als een idempotentiesleutel al iets heeft aangemaakt. Geen fout: zo voorkomt de connector dubbele incasso.GoCardless 429 rate_limit_exceeded: te veel verzoeken per minuutGoCardless antwoordt met 429 rate_limit_exceeded bij meer dan 1.600 verzoeken per minuut. Zo wacht en herhaalt de connector, en wat je doet bij een nieuwe fout.GoCardless access_token_revoked: Odoo kan niet meer met je account pratenGoCardless wijst verzoeken met een ingetrokken token af. Wat Odoo doet en hoe je opnieuw verbindt.
Gecontroleerd in de broncode van de connector (versie 17.0, 18.0, 19.0 en 20.0) en in de gelinkte bronnen

Bronnen

  • docs.gocardless.com/docs/api-reference/responses-and-errors
  • docs.gocardless.com/docs/api-reference/limits
  • Broncode van de module: flexigo_payment_gocardless: models/payment_provider.py, regel 361 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_provider.py, regel 394 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_provider.py, regel 357 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_provider.py, regel 373 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, regel 448 in 17.0 (d203ee6), regel 448 in 18.0 (e2ab18b), regel 448 in 19.0 (ce7f5a3) en regel 450 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, regel 29 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_transaction.py, regel 299 in 17.0 (d203ee6), regel 299 in 18.0 (e2ab18b), regel 299 in 19.0 (ce7f5a3) en regel 310 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_provider.py, regel 391 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_transaction.py, regel 68 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_provider.py, regel 397 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_provider.py, regel 462 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, regel 521 in 17.0 (d203ee6), regel 521 in 18.0 (e2ab18b), regel 521 in 19.0 (ce7f5a3) en regel 523 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_transaction.py, regel 281 in 17.0 (d203ee6), regel 281 in 18.0 (e2ab18b), regel 281 in 19.0 (ce7f5a3) en regel 292 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_transaction.py, regel 258 in 17.0 (d203ee6), regel 258 in 18.0 (e2ab18b), regel 258 in 19.0 (ce7f5a3) en regel 269 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_transaction.py, regel 115 in 17.0 (d203ee6), regel 115 in 18.0 (e2ab18b), regel 115 in 19.0 (ce7f5a3) en regel 118 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_transaction.py, regel 572 in 17.0 (d203ee6), regel 572 in 18.0 (e2ab18b), regel 571 in 19.0 (ce7f5a3) en regel 590 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_transaction.py, regel 697 in 17.0 (d203ee6), regel 697 in 18.0 (e2ab18b), regel 696 in 19.0 (ce7f5a3) en regel 720 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_provider.py, regel 623 in 17.0 (d203ee6), regel 623 in 18.0 (e2ab18b), regel 623 in 19.0 (ce7f5a3) en regel 625 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_transaction.py, regel 589 in 17.0 (d203ee6), regel 589 in 18.0 (e2ab18b), regel 588 in 19.0 (ce7f5a3) en regel 607 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: controllers/main.py, regel 124 in 17.0 (d203ee6), regel 124 in 18.0 (e2ab18b), regel 124 in 19.0 (ce7f5a3) en regel 127 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_provider.py, regel 603 in 17.0 (d203ee6), regel 603 in 18.0 (e2ab18b), regel 603 in 19.0 (ce7f5a3) en regel 605 in 20.0 (688d86b)
  • github.com/odoo/odoo/blob/20.0/addons/payment/i18n/nl.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
  • Broncode van de module: flexigo_payment_gocardless: __manifest__.py, regel 31 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 20.0 (688d86b)