Aller au contenu principal
GoCardless · SEPA Core · remboursement (chargeback)

GoCardless MD06 : le client demande à sa banque de rembourser un encaissement

Un prélèvement SEPA encaissé n'est pas définitif : pendant 8 semaines, le client peut demander à sa banque de le rembourser. Lorsqu'il le fait, GoCardless envoie l'événement de paiement charged_back avec la cause refund_requested et le code MD06, et vous retire les fonds.

FlexigoTech · Responsable : Víctor Gómez · Mis à jour le 6 novembre 2026

L'essentiel

Versions
Odoo 17, 18, 19 et 20
Vérifié
dans le code du connecteur, version 17.0, 18.0, 19.0 et 20.0 · dans les sources citées à la fin
Lecture
4 min

Ce que dit GoCardless

ÉvénementCauseCode SEPA CoreTexte de GoCardless
payments · charged_backrefund_requestedMD06This payment was charged back by the customer's bank at the customer's request within the 8 week cool-off period.

Le texte dit presque tout : le remboursement est demandé par le client, traité par sa banque et intervient dans la période de 8 semaines que GoCardless appelle cool-off period. Ce n'est pas un échec de l'encaissement : l'argent est bien arrivé, et il repart maintenant.

Fiche de la cause refund_requested de GoCardless
La cause, son code SEPA Core MD06 et le texte avec lequel GoCardless la documente.

Quand vous vous en rendez compte

Un remboursement MD06 arrive alors que l'encaissement est déjà clos. Dans Odoo, la transaction était terminée et la facture payée : le connecteur considère un encaissement comme effectué quand GoCardless le marque confirmed ou paid_out. Il existe ensuite un autre événement à connaître, chargeback_settled : « This charged back payment has been settled against a payout. ». Autrement dit, le remboursement est déduit d'un versement de GoCardless, il n'est pas débité à part.

Si la banque du client revient sur sa décision, GoCardless envoie chargeback_cancelled et le paiement compte de nouveau comme encaissé. Il peut s'écouler plusieurs jours entre les deux, et mieux vaut ne prendre aucune décision avec le client sans avoir vérifié dans Odoo l'état de la transaction : c'est le reflet du dernier événement envoyé par GoCardless. La transaction s'ouvre depuis la facture, avec le bouton « Transaction de paiement » en haut ; le menu des transactions n'apparaît qu'en mode développeur, et il n'existe pas dans Odoo 20.

Ce que fait Odoo avec le connecteur

ÉtapeCe qui change
La transactionPasse de « Confirmé » à « Erreur » : un remboursement annule un encaissement qui était correct.
Le message« GoCardless reported a chargeback for this payment (refund_requested). The funds have been taken back and will be deducted from a future payout. »
Le paiement dans OdooIl est annulé, et la facture redevient en attente d'encaissement.
Le mandatReste valide : refund_requested ne fait pas partie des causes pour lesquelles le connecteur archive le mandat.

Le message est écrit par le connecteur lors de l'application de l'événement, sans personne devant l'écran. Le connecteur n'est pas traduit en français : ces textes apparaissent toujours en anglais, même dans un Odoo en français, qu'ils soient déclenchés par un utilisateur ou par une action planifiée : « GoCardless reported a chargeback for this payment (refund_requested). The funds have been taken back and will be deducted from a future payout. ».

La transaction reste en erreur avec le mandat actif, mais elle n'affiche pas le bouton « Retry collection ». Depuis la version 1.1.4, le connecteur ne le propose que si le paiement est en failed chez GoCardless, et un paiement remboursé est en charged_back. C'est conforme à la documentation de GoCardless : la nouvelle tentative ne vaut que pour les paiements échoués, et pour un paiement remboursé la réponse serait retry_failed.

Il est normal que le mandat reste actif. Demander le remboursement d'un prélèvement ne revient pas à révoquer l'autorisation ; si le client voulait cela, la cause serait autre (mandate_cancelled, avec le code MD01). Avec chargeback_cancelled, le connecteur considère de nouveau la transaction comme encaissée.

Que faire

Un remboursement MD06 est d'abord une conversation avec le client avant d'être un problème technique. Demandez ce qui s'est passé : un montant inattendu, un service qui ne le satisfait pas ou un prélèvement en double. Selon la réponse :

  1. Si la facture est correcte et que le client l'accepte, encaissez-la de nouveau avec un nouvel encaissement, avec son mode de paiement enregistré : le mandat reste disponible. La transaction remboursée n'a pas de bouton de nouvelle tentative.
  2. Si le client avait raison, émettez l'avoir correspondant et laissez la facture d'origine non encaissée.
  3. Si les remboursements se répètent avec le même client, envisagez un autre mode de paiement pour lui.

Combien de temps le client a-t-il pour faire rembourser un prélèvement ?

Pour un MD06, le texte de GoCardless parle d'une période de 8 semaines : le client demande le remboursement à sa banque dans ce délai. C'est pourquoi un prélèvement SEPA confirmé n'est pas tout à fait ferme pendant cette période.

Où vois-je qu'il s'agit d'un remboursement et non d'un échec ?

Dans la transaction, que vous ouvrez depuis la facture avec le bouton « Transaction de paiement » : le champ « GoCardless Cause » indique refund_requested et le message parle d'un remboursement, pas d'un encaissement qui n'a pas pu être fait.

Schéma : ce que GoCardless envoie avec un remboursement MD06 et ce que fait Odoo avec le connecteur
Schéma réalisé à partir du code du connecteur (17.0, 18.0, 19.0 et 20.0) et de la documentation de GoCardless ; ce qui est barré est ce que le connecteur ne fait pas avec cette cause.

Avec notre connecteur

Le connecteur GoCardless pour Odoo 17, 18, 19 et 20 ne laisse pas une facture marquée comme payée avec un argent que vous n'avez plus : il annule le paiement, rouvre la facture et conserve la cause. Et il ne pénalise pas le client en archivant son mandat pour un remboursement ponctuel.

À lire aussi

GoCardless MD01 : mandate_cancelled et authorisation_disputed sur un prélèvement SEPALe code SEPA MD01 arrive dans GoCardless sous mandate_cancelled ou authorisation_disputed, sur un prélèvement échoué, rejeté ou annulé. Ce que fait Odoo.GoCardless insufficient_funds (AM04) : le compte du client ne disposait pas de soldeUn prélèvement GoCardless échoue avec insufficient_funds et le code SEPA AM04. Ce qu'il signifie, quand Success+ le retente et ce que fait Odoo avec la facture.GoCardless refer_to_payer : MS02, MS03, RR04 et SL01 sur un prélèvement SEPArefer_to_payer regroupe dans GoCardless les codes SEPA MS02, MS03, RR04 et SL01. Ce que signifie chacun, pourquoi le mandat reste actif et comment Odoo le gère.
Vérifié dans le code du connecteur (version 17.0, 18.0, 19.0 et 20.0) et dans les sources citées

Sources

  • Code du module : flexigo_payment_gocardless: const.py, ligne 15 en 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) et 20.0 (688d86b)
  • Code du module : flexigo_payment_gocardless: models/payment_transaction.py, ligne 694 en 17.0 (d203ee6), ligne 694 en 18.0 (e2ab18b), ligne 693 en 19.0 (ce7f5a3) et ligne 717 en 20.0 (688d86b)
  • Code du module : flexigo_payment_gocardless: const.py, ligne 41 en 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) et 20.0 (688d86b)
  • Code du module : flexigo_payment_gocardless: const.py, ligne 76 en 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) et 20.0 (688d86b)
  • Code du module : flexigo_payment_gocardless: models/payment_transaction.py, ligne 713 en 17.0 (d203ee6), ligne 713 en 18.0 (e2ab18b), ligne 712 en 19.0 (ce7f5a3) et ligne 736 en 20.0 (688d86b)
  • Code du module : flexigo_payment_gocardless: models/payment_transaction.py, ligne 754 en 17.0 (d203ee6), ligne 754 en 18.0 (e2ab18b), ligne 753 en 19.0 (ce7f5a3) et ligne 777 en 20.0 (688d86b)
  • Code du module : flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, ligne 529 en 17.0 (d203ee6), ligne 529 en 18.0 (e2ab18b), ligne 529 en 19.0 (ce7f5a3) et ligne 531 en 20.0 (688d86b)
  • Code du module : flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, ligne 356 en 17.0 (d203ee6), ligne 356 en 18.0 (e2ab18b), ligne 356 en 19.0 (ce7f5a3) et ligne 358 en 20.0 (688d86b)
  • docs.gocardless.com/docs/api-reference/events/payment
  • Code du module : flexigo_payment_gocardless: __manifest__.py, ligne 31 en 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) et 20.0 (688d86b)
  • docs.gocardless.com/docs/api-reference/events/mandate
  • Code du module : flexigo_payment_gocardless: views/payment_transaction_views.xml, ligne 13 en 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) et 20.0 (688d86b)
  • Code du module : flexigo_payment_gocardless: models/payment_transaction.py, ligne 63 en 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) et 20.0 (688d86b)
  • Code du module : flexigo_payment_gocardless: models/payment_transaction.py, ligne 418 en 17.0 (d203ee6), ligne 418 en 18.0 (e2ab18b), ligne 417 en 19.0 (ce7f5a3) et ligne 432 en 20.0 (688d86b)
  • github.com/odoo/odoo/blob/20.0/addons/payment/i18n/fr.po
  • github.com/odoo/odoo/blob/20.0/addons/payment/views/payment_transaction_views.xml
  • Code du module : flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, ligne 1016 en 17.0 (d203ee6), ligne 1016 en 18.0 (e2ab18b), ligne 1016 en 19.0 (ce7f5a3) et ligne 1031 en 20.0 (688d86b)
  • Code du module : flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, ligne 567 en 17.0 (d203ee6), ligne 567 en 18.0 (e2ab18b), ligne 567 en 19.0 (ce7f5a3) et ligne 569 en 20.0 (688d86b)
  • docs.gocardless.com/docs/api-reference/payment
  • docs.gocardless.com/docs/api-reference/responses-and-errors
  • Code du module : flexigo_payment_gocardless: models/payment_transaction.py, ligne 469 en 17.0 (d203ee6), ligne 469 en 18.0 (e2ab18b), ligne 468 en 19.0 (ce7f5a3) et ligne 487 en 20.0 (688d86b)
  • Code du module : flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, ligne 521 en 17.0 (d203ee6), ligne 521 en 18.0 (e2ab18b), ligne 521 en 19.0 (ce7f5a3) et ligne 523 en 20.0 (688d86b)
  • Code du module : flexigo_payment_gocardless: models/payment_provider.py, ligne 397 en 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) et 20.0 (688d86b)
  • Code du module : flexigo_payment_gocardless: views/payment_transaction_views.xml, ligne 22 en 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) et 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
  • Code du module : flexigo_payment_gocardless: models/payment_transaction.py, ligne 435 en 17.0 (d203ee6), ligne 435 en 18.0 (e2ab18b), ligne 434 en 19.0 (ce7f5a3) et ligne 449 en 20.0 (688d86b)
  • Code du module : flexigo_payment_gocardless: models/payment_transaction.py, ligne 247 en 17.0 (d203ee6), ligne 247 en 18.0 (e2ab18b), ligne 247 en 19.0 (ce7f5a3) et ligne 258 en 20.0 (688d86b)