Qué dice GoCardless
| Evento | Causa | Código | Texto de GoCardless |
|---|---|---|---|
| mandates · transferred | bank_account_transferred | AMEND | The customer's bank account was transferred to a different bank or building society. |
| mandates · transferred | mandate_transferred | (ninguno) | This mandate was transferred to a new bank account through GoCardless. |
La documentación de eventos describe los dos caminos en una frase: «The mandate has been transferred to a different bank account either using a bank switching service (where it is supported) or with help from GoCardless Support». El primero tiene origen bank y el segundo, api.
Y añade un matiz sobre el primero: «When using a bank switching service, the mandate may have been submitted again, depending on how the involved banks handled the transfer.».

Cuándo aparece
Cuando el cliente cambia de banco y su banco nuevo traslada sus adeudos domiciliados, o cuando el cliente pide a GoCardless que cobre en otra cuenta y su soporte hace el cambio después de comprobar los datos. En los dos casos el mandato sigue siendo el mismo: lo que cambia es la cuenta de la que sale el dinero.
Lo que hace Odoo con el conector
- Si el método de pago estaba activo: el conector deja el estado del mandato como estaba. El cambio de cuenta no lo vuelve inservible, así que el método de pago del cliente sigue disponible para la siguiente factura, y «Estado del mandato» no cambia. No hay nada que ver en Odoo.
- Si estaba archivado, porque antes llegó un evento que lo daba por muerto,
transferredes uno de los eventos con los que el conector lo vuelve a dar por bueno: lo reactiva y lo escribe en la ficha del cliente, «El mandato de GoCardless se puede volver a usar (transferred).». Odoo 17 no deja desarchivar un método de pago; ahí el conector crea uno nuevo para el mismo mandato.
Esa nota la 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, en inglés: «The GoCardless mandate is usable again (transferred).».
El conector aplica los eventos de mandato en orden, del más antiguo al más reciente, y si alguno no llegó por el webhook, la tarea que cada hora recupera los eventos perdidos lo trae.

No es lo mismo que un mandato sustituido
Con transferred el mandato no cambia; con replaced sí. En una sustitución GoCardless cancela el mandato y crea otro, y el evento trae el nuevo («The event will include links[new_mandate] with the ID of the new mandate.»). El conector pasa entonces el método de pago al mandato nuevo. En un traslado no hay mandato nuevo: el conector se queda con el que tenía.
Tampoco es una cancelación. Un mandato cancelado, fallido, caducado, consumido o bloqueado está muerto para el conector, que lo archiva y pide uno nuevo. Un mandato trasladado sigue vivo.
Qué hacer
- Nada en Odoo: las siguientes facturas se cobran con el mismo método de pago.
- Si el cliente te avisa de que ha cambiado de banco, no hace falta pedirle otro mandato: el traslado lo comunica GoCardless.
- Si el método de pago estaba archivado y vuelve a estar disponible, comprueba en la ficha del cliente la nota del conector y cobra con él las facturas que se quedaron pendientes.
¿Tengo que pedir al cliente un mandato nuevo?
No. GoCardless ha pasado el mismo mandato a la cuenta nueva del cliente, y el conector lo sigue usando.
¿Qué significa AMEND?
Es el código con el que GoCardless documenta este evento en SEPA Core, cuando el traslado llega del banco. En Odoo no lo verás: el conector no guarda ni enseña el código SEPA.
Con nuestro conector
En Odoo 17, 18, 19 y 20 el conector no convierte un cambio de cuenta en un problema: mantiene el mandato y el método de pago del cliente y, si estaba archivado, lo recupera y deja una nota en su ficha.
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
- docs.gocardless.com/docs/api-reference/events/mandate
- Código del módulo: flexigo_payment_gocardless: const.py, línea 145 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 158 en 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) y 20.0 (688d86b)
- Código del módulo: flexigo_payment_gocardless: models/payment_token.py, línea 77 en 17.0 (d203ee6), línea 77 en 18.0 (e2ab18b), línea 77 en 19.0 (ce7f5a3) y línea 76 en 20.0 (688d86b)
- Código del módulo: flexigo_payment_gocardless: models/payment_token.py, línea 96 en 17.0 (d203ee6), línea 96 en 18.0 (e2ab18b), línea 96 en 19.0 (ce7f5a3) y línea 95 en 20.0 (688d86b)
- Código del módulo: flexigo_payment_gocardless: i18n/es.po, línea 1250 en 17.0 (d203ee6), línea 1250 en 18.0 (e2ab18b), línea 1250 en 19.0 (ce7f5a3) y línea 1261 en 20.0 (688d86b)
- Código del módulo: flexigo_payment_gocardless: const.py, línea 33 en 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) y 20.0 (688d86b)
- Código del módulo: flexigo_payment_gocardless: models/payment_token.py, línea 72 en 17.0 (d203ee6), línea 72 en 18.0 (e2ab18b), línea 72 en 19.0 (ce7f5a3) y línea 71 en 20.0 (688d86b)
- Código del módulo: flexigo_payment_gocardless: i18n/es.po, línea 847 en 17.0 (d203ee6), línea 847 en 18.0 (e2ab18b), línea 847 en 19.0 (ce7f5a3) y línea 868 en 20.0 (688d86b)
- Código del módulo: flexigo_payment_gocardless: const.py, línea 117 en 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) y 20.0 (688d86b)
- Código del módulo: flexigo_payment_gocardless: models/payment_provider.py, línea 527 en 17.0 (d203ee6), línea 527 en 18.0 (e2ab18b), línea 527 en 19.0 (ce7f5a3) y línea 529 en 20.0 (688d86b)
- Código del módulo: flexigo_payment_gocardless: const.py, línea 66 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 15 en 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) y 20.0 (688d86b)
- github.com/odoo/odoo/blob/17.0/odoo/http.py
- 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)
- github.com/odoo/odoo/blob/20.0/addons/account_payment/views/account_move_views.xml
