Wat GoCardless zegt
| Reason | Tipo | Texto de GoCardless |
|---|---|---|
refund_payment_invalid_state | invalid_state | Payment 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.".

De termijnregels in één oogopslag
| Dagen sinds de incasso | GoCardless, standaard | De connector |
|---|---|---|
| Minder dan 2 | binnen de veilige periode: geeft een fout terug | stuurt de terugbetaling niet |
| 2 of meer, maar minder dan 7 | binnen de veilige periode: geeft een fout terug | stuurt ze en laat een melding achter in het serverlogboek |
| 7 of meer | buiten de veilige periode | stuurt 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
- 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.".
- 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. - 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 (…).".

Wat te doen
- 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.
- Als de reason
refund_payment_invalid_stateis, 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. - 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.
- 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
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)
