Qué dice GoCardless
| Evento | Causa | Código SEPA Core | Texto de GoCardless |
|---|---|---|---|
| payments · charged_back | refund_requested | MD06 | This 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.

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
| Paso | Qué cambia |
|---|---|
| La transacción | Pasa 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 Odoo | Se anula, y la factura vuelve a estar pendiente de cobro. |
| El mandato | Sigue 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:
- 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.
- Si el cliente tenía razón, emite la factura rectificativa que corresponda y deja la original sin cobrar.
- 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.

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
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)
