Naar hoofdinhoud
GoCardless API · invalid_state · terugbetalingen

GoCardless refund_payment_invalid_state: deze incasso kan nog niet worden terugbetaald

Een terugbetaling via GoCardless geeft de klant het geld van een incasso terug, en GoCardless accepteert dat alleen als die incasso bevestigd of al uitbetaald is. Anders antwoordt het met refund_payment_invalid_state. Bovendien heeft GoCardless een veilige terugbetalingsperiode van 7 kalenderdagen, en de connector in Odoo voegt een eigen regel van 2 dagen toe.

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
refund_payment_invalid_stateinvalid_statePayment must be confirmed or paid_out before it can be refunded.

In de referentie voor terugbetalingen voegt GoCardless een termijn toe: "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.". Die periode kan worden uitgeschakeld: "The safer refund period can be disabled by contacting GoCardless.". En het vertelt waarom ze bestaat: "A payment that has been (partially) refunded can still receive a late failure or chargeback from the customer's bank.".

Terugbetalingen via de API staan bovendien standaard uit: "This endpoint is disabled by default. To enable it, you will need to enable refunds on your GoCardless Dashboard.".

Kaart van de fout refund_payment_invalid_state van GoCardless
De reason, het type invalid_state en de statussen confirmed en paid_out die GoCardless vraagt om terug te betalen.

De termijnregels in één oogopslag

Dagen sinds de incassoGoCardless, standaardDe connector
Minder dan 2binnen de veilige periode: geeft een fout terugstuurt de terugbetaling niet
2 of meer, maar minder dan 7binnen de veilige periode: geeft een fout terugstuurt ze en laat een melding achter in het serverlogboek
7 of meerbuiten de veilige periodestuurt ze

De twee tellen niet vanaf dezelfde datum. GoCardless telt vanaf de incassodatum van de betaling. De connector telt vanaf de laatste statuswijziging van de incassotransactie in Odoo. Als GoCardless de veilige periode heeft opgeheven, kan de terugbetaling tussen 2 en 7 dagen wel doorgaan.

Wanneer verschijnt refund_payment_invalid_state met de connector

Odoo laat alleen een bevestigde transactie terugbetalen, en de connector bevestigt haar wanneer GoCardless confirmed of paid_out zegt. Met de connector betekent deze reason dus dat de betaling in GoCardless is veranderd en Odoo dat nog niet weet: een late fout, die GoCardless kan melden terwijl de betaling al bevestigd was, of een terugboeking door de klant waarvan het event nog niet is aangekomen.

Wat de connector doet

  1. Bij minder dan 2 dagen stuurt hij niets: Odoo stopt met "GoCardless cannot refund a collection until it has settled. This one was charged … day(s) ago; refunds are possible after 2 days.".
  2. Anders stuurt hij de terugbetaling naar GoCardless met de idempotentiesleutel. Als GoCardless ze weigert, om deze reason, door de veilige periode of om een andere reden, gaat de terugbetalingstransactie naar "Fout" met "GoCardless rejected the request." en daaronder het bericht van GoCardless met de reason en de request_id.
  3. Als GoCardless ze accepteert, staat de transactie op "In behandeling" met "Refund submitted. GoCardless will deduct it from a future payout.", en gaat ze naar "Bevestigd" wanneer GoCardless ze uitbetaalt of verrekent met een uitbetaling.

Vanaf versie 1.1.5 toont een terugbetaling in fout de knop "Retry collection" niet: een terugbetaling is geen incasso, en er is niets wat GoCardless opnieuw kan proberen. Als GoCardless het geld niet aan de klant kan laten terugkeren, zet de connector de terugbetaling op fout met "GoCardless could not pay this refund back (…).". Die tekst schrijft hij bij het toepassen van het event, zonder dat iemand erbij zit. 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 could not pay this refund back (…).".

Schema: wat GoCardless antwoordt bij een terugbetaling en wat Odoo met de connector doet
Schema 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 incassotransactie vanuit de factuur, met de knop "Betalingstransactie" bovenaan; het transactiemenu verschijnt alleen in de ontwikkelaarsmodus, en in Odoo 20 bestaat het niet. Vanaf daar leidt de terugbetalingsknop naar de terugbetalingstransactie en haar bericht.
  2. Als de reason refund_payment_invalid_state is, bekijk de betaling dan in het GoCardless Dashboard. Als ze laat is mislukt of de klant ze heeft teruggeboekt, valt er niets meer terug te betalen: het geld is niet meer bij jou. Odoo zal het weergeven zodra het event aankomt; de taak die elk uur de gemiste events ophaalt, haalt het op.
  3. Als de afwijzing van de veilige periode komt, wacht dan tot er 7 dagen zijn verstreken sinds de incassodatum, of vraag GoCardless om die op te heffen.
  4. Om opnieuw terug te betalen, doe dat vanuit de betaling van de incasso, met de terugbetalingsknop. De connector staat gedeeltelijke terugbetalingen toe.

Waarom laat de connector terugbetalen vanaf 2 dagen als GoCardless over 7 spreekt?

De 2 dagen zijn het minimum van de connector: daaronder stuurt hij niets. GoCardless laat zijn veilige periode opheffen, en zolang die actief is, is het GoCardless dat de terugbetaling vóór 7 dagen weigert. Tussen 2 en 7 dagen waarschuwt de connector in het logboek, omdat een SEPA-fout nog kan binnenkomen.

Kan een terugbetaalde incasso later nog mislukken?

Ja. GoCardless waarschuwt ervoor: een betaling die geheel of gedeeltelijk is terugbetaald, kan nog een late fout of een terugboeking door de bank van de klant krijgen. In dat geval zou je geld hebben teruggegeven dat je nooit hebt ontvangen.

Met onze connector

In Odoo 17, 18, 19 en 20 stuurt de connector geen terugbetalingen van incasso's van minder dan 2 dagen, zet hij de terugbetalingen die GoCardless weigert op fout met hun request_id, en biedt hij geen opnieuw proberen aan voor een terugbetaling, die geen incasso is.

Lees verder

GoCardless total_amount_confirmation_invalid: het teruggegeven totaal klopt nietGoCardless weigert een terugbetaling met total_amount_confirmation_invalid als het teruggegeven totaal niet klopt, of met number_of_refunds_exceeded na 5.GoCardless MD06: de klant vraagt zijn bank om een incasso terug te boekenDe klant vraagt zijn bank om een GoCardless-incasso terug te boeken: charged_back, refund_requested en MD06. Wat er in Odoo gebeurt met factuur en mandaat.GoCardless insufficient_funds (AM04): het account van de klant had geen saldoEen GoCardless-incasso mislukt met insufficient_funds en SEPA-code AM04. Wat het betekent, wanneer Success+ opnieuw probeert en wat Odoo met de factuur doet.
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/refund
  • support.gocardless.com/hc/en-gb/articles/360001467265
  • Broncode van de module: flexigo_payment_gocardless: const.py, regel 41 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 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
  • Broncode van de module: flexigo_payment_gocardless: models/payment_provider.py, regel 256 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: const.py, regel 106 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 361 in 17.0 (d203ee6), regel 361 in 18.0 (e2ab18b), regel 360 in 19.0 (ce7f5a3) en regel 375 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_transaction.py, regel 365 in 17.0 (d203ee6), regel 365 in 18.0 (e2ab18b), regel 364 in 19.0 (ce7f5a3) en regel 379 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, regel 414 in 17.0 (d203ee6), regel 414 in 18.0 (e2ab18b), regel 414 in 19.0 (ce7f5a3) en regel 416 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_transaction.py, regel 371 in 17.0 (d203ee6), regel 371 in 18.0 (e2ab18b), regel 370 in 19.0 (ce7f5a3) en regel 385 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_transaction.py, regel 397 in 17.0 (d203ee6), regel 397 in 18.0 (e2ab18b), regel 396 in 19.0 (ce7f5a3) en regel 411 in 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 413 in 17.0 (d203ee6), regel 413 in 18.0 (e2ab18b), regel 412 in 19.0 (ce7f5a3) en regel 427 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_transaction.py, regel 605 in 17.0 (d203ee6), regel 605 in 18.0 (e2ab18b), regel 604 in 19.0 (ce7f5a3) en regel 625 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_provider.py, regel 352 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 987 in 17.0 (d203ee6), regel 987 in 18.0 (e2ab18b), regel 987 in 19.0 (ce7f5a3) en regel 1002 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_transaction.py, regel 611 in 17.0 (d203ee6), regel 611 in 18.0 (e2ab18b), regel 610 in 19.0 (ce7f5a3) en regel 631 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, regel 442 in 17.0 (d203ee6), regel 442 in 18.0 (e2ab18b), regel 442 in 19.0 (ce7f5a3) en regel 444 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_transaction.py, regel 424 in 17.0 (d203ee6), regel 424 in 18.0 (e2ab18b), regel 423 in 19.0 (ce7f5a3) en regel 438 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_transaction.py, regel 418 in 17.0 (d203ee6), regel 418 in 18.0 (e2ab18b), regel 417 in 19.0 (ce7f5a3) en regel 432 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_transaction.py, regel 63 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: const.py, regel 117 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 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)