Saltar al contenido principal
GoCardless · SEPA Core · devolución (chargeback)

GoCardless MD06: el cliente pide a su banco que le devuelva un cobro

Un adeudo SEPA cobrado no es definitivo: durante 8 semanas, el cliente puede pedir a su banco que se lo devuelva. Cuando lo hace, GoCardless manda el evento de pago charged_back con la causa refund_requested y el código MD06, y te retira el dinero.

FlexigoTech · Responsable: Víctor Gómez · Actualizado el 6 de noviembre de 2026

Lo esencial

Módulo
GoCardless
Versiones
Odoo 17, 18, 19 y 20
Comprobado
en el código del conector, versión 17.0, 18.0, 19.0 y 20.0 · en las fuentes enlazadas al final
Lectura
4 min

Qué dice GoCardless

EventoCausaCódigo SEPA CoreTexto 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.

El texto lo dice casi todo: la devolución la pide el cliente, la tramita su banco y cabe dentro del periodo de 8 semanas que GoCardless llama cool-off period. No es un fallo del cobro: el dinero llegó, y ahora vuelve.

Tarjeta de la causa refund_requested de GoCardless
La causa, su código SEPA Core MD06 y el texto con el que la documenta GoCardless.

Cuándo te das cuenta

Una devolución MD06 llega con el cobro ya cerrado. En Odoo, la transacción estaba hecha y la factura, pagada: el conector da un cobro por hecho cuando GoCardless lo marca confirmed o paid_out. Después hay otro evento que conviene conocer, chargeback_settled: «This charged back payment has been settled against a payout.». Es decir, la devolución se descuenta de una liquidación de GoCardless, no te la cargan aparte.

Si el banco del cliente se echa atrás, GoCardless manda chargeback_cancelled y el pago vuelve a contar como cobrado. Entre una cosa y otra pueden pasar días, y conviene no tomar decisiones con el cliente sin mirar antes en qué estado está la transacción en Odoo: es el reflejo del último evento que mandó GoCardless. La transacción se abre desde la factura, con el botón «Transacción de pago» de arriba; el menú de transacciones solo sale en modo desarrollador, y en Odoo 20 no existe.

Lo que hace Odoo con el conector

PasoQué cambia
La transacciónPasa de «Confirmado» a «Error»: una devolución deshace un cobro que estaba bien.
El mensaje«GoCardless ha comunicado una devolución de este pago (refund_requested). El dinero se ha retirado y se descontará de una liquidación futura.»
El pago en OdooSe anula, y la factura vuelve a estar pendiente de cobro.
El mandatoSigue valiendo: refund_requested no está entre las causas con las que el conector archiva el mandato.

El mensaje lo escribe el conector al aplicar el evento, sin nadie delante. En una base de datos creada en castellano sale así; en una creada en inglés y pasada después a castellano sale en inglés: «GoCardless reported a chargeback for this payment (refund_requested). The funds have been taken back and will be deducted from a future payout.».

La transacción queda en error con el mandato activo, pero no enseña el botón «Reintentar el cobro». Desde la versión 1.1.4, el conector solo lo ofrece si el pago está en failed en GoCardless, y un pago devuelto está en charged_back. Va en línea con la documentación de GoCardless: el reintento solo vale para pagos que han fallado, y a un pago devuelto le contestaría retry_failed.

Que el mandato siga vivo es lo correcto. Pedir la devolución de un recibo no es revocar la autorización; si el cliente quisiera eso, la causa sería otra (mandate_cancelled, con el código MD01). Con el chargeback_cancelled, el conector vuelve a dar la transacción por cobrada.

Qué hacer

Una devolución MD06 es una conversación con el cliente antes que un problema técnico. Pregunta qué pasó: un importe que no esperaba, un servicio con el que no está conforme o un cargo duplicado. Con la respuesta:

  1. Si la factura es correcta y el cliente lo acepta, cóbrala otra vez con un cobro nuevo, con su método de pago guardado: el mandato sigue disponible. La transacción devuelta no tiene botón de reintento.
  2. Si el cliente tenía razón, emite la factura rectificativa que corresponda y deja la original sin cobrar.
  3. Si las devoluciones se repiten con el mismo cliente, plantéate otra forma de pago para él.

¿Cuánto tiempo tiene el cliente para devolver un cobro?

Para un MD06, el texto de GoCardless habla de un periodo de 8 semanas: la devolución la pide el cliente a su banco dentro de ese plazo. Por eso un cobro SEPA confirmado no es del todo firme durante ese tiempo.

¿Dónde veo que fue una devolución y no un fallo?

En la transacción, que abres desde la factura con el botón «Transacción de pago»: el campo «Causa según GoCardless» dice refund_requested y el mensaje habla de una devolución, no de un cobro que no se pudo hacer.

Esquema: qué manda GoCardless con una devolución MD06 y qué hace Odoo con el conector
Esquema hecho a partir del código del conector (17.0, 18.0, 19.0 y 20.0) y de la documentación de GoCardless; lo tachado es lo que el conector no hace con esta causa.

Con nuestro conector

El conector de GoCardless para Odoo 17, 18, 19 y 20 no deja una factura marcada como pagada con un dinero que ya no tienes: anula el pago, reabre la factura y guarda la causa. Y no castiga al cliente archivando su mandato por una devolución puntual.

Sigue leyendo

GoCardless MD01: mandate_cancelled y authorisation_disputed en un cobro SEPAEl código SEPA MD01 llega en GoCardless como mandate_cancelled o authorisation_disputed, en un cobro fallido, devuelto o cancelado. Qué hace Odoo con ello.GoCardless insufficient_funds (AM04): la cuenta del cliente no tenía saldoUn adeudo de GoCardless falla con insufficient_funds y el código SEPA AM04. Qué significa, cuándo lo reintenta Success+ y qué hace Odoo con la factura.GoCardless refer_to_payer: MS02, MS03, RR04 y SL01 en un cobro SEPArefer_to_payer junta en GoCardless los códigos SEPA MS02, MS03, RR04 y SL01. Qué dice cada uno, por qué el mandato sigue vivo y cómo lo gestiona Odoo.
Comprobado en el código del conector (versión 17.0, 18.0, 19.0 y 20.0) y en las fuentes enlazadas

Fuentes

  • Código del módulo: flexigo_payment_gocardless: const.py, línea 15 en 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) y 20.0 (688d86b)
  • Código del módulo: flexigo_payment_gocardless: models/payment_transaction.py, línea 694 en 17.0 (d203ee6), línea 694 en 18.0 (e2ab18b), línea 693 en 19.0 (ce7f5a3) y línea 717 en 20.0 (688d86b)
  • Código del módulo: flexigo_payment_gocardless: const.py, línea 41 en 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) y 20.0 (688d86b)
  • Código del módulo: flexigo_payment_gocardless: const.py, línea 76 en 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) y 20.0 (688d86b)
  • Código del módulo: flexigo_payment_gocardless: models/payment_transaction.py, línea 713 en 17.0 (d203ee6), línea 713 en 18.0 (e2ab18b), línea 712 en 19.0 (ce7f5a3) y línea 736 en 20.0 (688d86b)
  • Código del módulo: flexigo_payment_gocardless: models/payment_transaction.py, línea 754 en 17.0 (d203ee6), línea 754 en 18.0 (e2ab18b), línea 753 en 19.0 (ce7f5a3) y línea 777 en 20.0 (688d86b)
  • Código del módulo: flexigo_payment_gocardless: i18n/es.po, línea 570 en 17.0 (d203ee6), línea 570 en 18.0 (e2ab18b), línea 570 en 19.0 (ce7f5a3) y línea 575 en 20.0 (688d86b)
  • Código del módulo: flexigo_payment_gocardless: i18n/es.po, línea 380 en 17.0 (d203ee6), línea 380 en 18.0 (e2ab18b), línea 380 en 19.0 (ce7f5a3) y línea 385 en 20.0 (688d86b)
  • docs.gocardless.com/docs/api-reference/events/payment
  • Código del módulo: flexigo_payment_gocardless: __manifest__.py, línea 31 en 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) y 20.0 (688d86b)
  • docs.gocardless.com/docs/api-reference/events/mandate
  • Código del módulo: flexigo_payment_gocardless: views/payment_transaction_views.xml, línea 13 en 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) y 20.0 (688d86b)
  • Código del módulo: flexigo_payment_gocardless: models/payment_transaction.py, línea 63 en 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) y 20.0 (688d86b)
  • Código del módulo: flexigo_payment_gocardless: models/payment_transaction.py, línea 418 en 17.0 (d203ee6), línea 418 en 18.0 (e2ab18b), línea 417 en 19.0 (ce7f5a3) y línea 432 en 20.0 (688d86b)
  • github.com/odoo/odoo/blob/20.0/addons/payment/i18n/es.po
  • github.com/odoo/odoo/blob/20.0/addons/payment/views/payment_transaction_views.xml
  • Código del módulo: flexigo_payment_gocardless: i18n/es.po, línea 1092 en 17.0 (d203ee6), línea 1092 en 18.0 (e2ab18b), línea 1092 en 19.0 (ce7f5a3) y línea 1113 en 20.0 (688d86b)
  • Código del módulo: flexigo_payment_gocardless: i18n/es.po, línea 618 en 17.0 (d203ee6), línea 618 en 18.0 (e2ab18b), línea 618 en 19.0 (ce7f5a3) y línea 623 en 20.0 (688d86b)
  • docs.gocardless.com/docs/api-reference/payment
  • docs.gocardless.com/docs/api-reference/responses-and-errors
  • Código del módulo: flexigo_payment_gocardless: models/payment_transaction.py, línea 469 en 17.0 (d203ee6), línea 469 en 18.0 (e2ab18b), línea 468 en 19.0 (ce7f5a3) y línea 487 en 20.0 (688d86b)
  • Código del módulo: flexigo_payment_gocardless: i18n/es.po, línea 560 en 17.0 (d203ee6), línea 560 en 18.0 (e2ab18b), línea 560 en 19.0 (ce7f5a3) y línea 565 en 20.0 (688d86b)
  • Código del módulo: flexigo_payment_gocardless: models/payment_provider.py, línea 397 en 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) y 20.0 (688d86b)
  • Código del módulo: flexigo_payment_gocardless: views/payment_transaction_views.xml, línea 22 en 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) y 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
  • Código del módulo: flexigo_payment_gocardless: models/payment_transaction.py, línea 435 en 17.0 (d203ee6), línea 435 en 18.0 (e2ab18b), línea 434 en 19.0 (ce7f5a3) y línea 449 en 20.0 (688d86b)
  • Código del módulo: flexigo_payment_gocardless: models/payment_transaction.py, línea 247 en 17.0 (d203ee6), línea 247 en 18.0 (e2ab18b), línea 247 en 19.0 (ce7f5a3) y línea 258 en 20.0 (688d86b)