Salta al contingut principal
GoCardless · SEPA Core · mandat anul·lat o disputat

GoCardless MD01: mandate_cancelled i authorisation_disputed en un cobrament SEPA

MD01 arriba quan el client ha anul·lat el mandat al seu banc o diu que mai va autoritzar el cobrament. A GoCardless apareix en tres esdeveniments de pagament diferents, segons el moment, i en tots el resultat per al futur és el mateix: amb aquest mandat ja no es pot cobrar.

FlexigoTech · Responsable: Víctor Gómez · Actualitzat el 6 de novembre de 2026

L'essencial

Versions
Odoo 17, 18, 19 i 20
Comprovat
al codi del connector, versió 17.0, 18.0, 19.0 i 20.0 · a les fonts enllaçades al final
Lectura
4 min

Tres esdeveniments i quatre files, el mateix codi

EsdevenimentCausaText de GoCardless
payments · failedmandate_cancelledThe customer cancelled their mandate at their bank.
payments · charged_backmandate_cancelledThis payment was charged back by the customer's bank, because the customer disputed authorising the transaction.
payments · cancelledauthorisation_disputedThis payment has been cancelled because the payer disputes authorising its mandate.
payments · cancelledmandate_cancelledThis payment has been cancelled because the payer disputes authorising its mandate.

Les quatre files són de la taula de SEPA Core de la documentació de GoCardless i porten MD01; el pagament cancel·lat surt amb dues causes i el mateix text. El mandat també es cancel·la, i GoCardless ho comunica amb el seu propi esdeveniment: «A payment under this mandate failed, indicating that the mandate has been cancelled at the customer's bank. Any subscriptions and pending payments will also be cancelled.».

Targeta de la causa mandate_cancelled de GoCardless
La causa, el codi SEPA Core MD01 i el text de GoCardless per al pagament fallit.

Què canvia segons el moment

Si el client anul·la el mandat abans que es cobri el rebut, el pagament falla: els diners no han arribat. Si ho disputa després de cobrat, és una devolució: els diners han arribat i se'n van. I si hi havia pagaments esperant a presentar-se, GoCardless els cancel·la abans d'enviar-los. El connector anota al seu codi que va veure la causa authorisation_disputed amb MD01 en un pagament de prova del sandbox, com a devolució d'un pagament ja liquidat.

Què fa Odoo amb el connector

La transacció s'obre des de la factura, amb el botó «Transacció de pagament» de dalt; el menú de transaccions només surt en mode desenvolupador, i a Odoo 20 no existeix. En els tres casos, la transacció acaba en «Error» amb la causa a la vista. El missatge depèn de l'esdeveniment: «GoCardless could not collect this payment (mandate_cancelled).» per a un fallit, i «GoCardless reported a chargeback for this payment (mandate_cancelled). The funds have been taken back and will be deducted from a future payout.» per a una devolució. Si Odoo ja tenia la factura pagada amb aquest cobrament, el connector anul·la el pagament i la factura torna a estar pendent.

El important és el mandat. mandate_cancelled i authorisation_disputed són entre les quatre causes amb què el connector el dona per mort, així que:

  • arxiva el mètode de pagament del client, que deixa d'oferir-se per cobrar;
  • escriu a la seva fitxa «The GoCardless direct debit mandate of … is no longer usable (mandate_cancelled). No further collection can be taken against it. Ask the customer to set up a new mandate.»;
  • crea una activitat «GoCardless mandate lost».

Arriben diversos esdeveniments amb la mateixa notícia, el del pagament i el del mandat, però l'avís surt una sola vegada: el segon troba el mandat ja arxivat.

Tots aquests textos els escriu el connector en aplicar l'esdeveniment, sense ningú davant. El connector no està traduït al català: aquests textos surten sempre en anglès, també en un Odoo en català, tant si els llança un usuari com una tasca programada: «GoCardless could not collect this payment (mandate_cancelled).», «GoCardless reported a chargeback for this payment (mandate_cancelled). The funds have been taken back and will be deducted from a future payout.», «The GoCardless direct debit mandate of … is no longer usable (mandate_cancelled). No further collection can be taken against it. Ask the customer to set up a new mandate.» i «GoCardless mandate lost».

Què fer

Abans de demanar un mandat nou, entén per què l'ha anul·lat. Un client que va deixar de voler el servei necessita una baixa, no una altra signatura. Si va ser un error seu o un canvi al seu banc, demana-li que torni a signar i cobra amb el mandat nou les factures que han quedat obertes. Si diu que mai va autoritzar el càrrec, revisa com es va signar el mandat abans de seguir cobrant-li.

Serveix de res reintentar un pagament amb MD01?

No. El mandat ja no existeix per al seu banc, i amb el mandat arxivat el botó «Retry collection» no surt a la transacció. Cal un mandat nou signat pel client.

Esquema: què envia GoCardless amb MD01 i què fa Odoo amb el connector
Esquema fet a partir del codi del connector (17.0, 18.0, 19.0 i 20.0) i de la documentació de GoCardless.

Amb el nostre connector

A Odoo 17, 18, 19 i 20, el connector distingeix el fallit de la devolució, reobre la factura si cal, retira el mandat i et deixa la tasca de parlar amb el client a la seva fitxa. El que no fa és demanar el mandat nou pel seu compte: aquesta conversa és teva.

Continua llegint

GoCardless MD06: el client demana al seu banc que li retorni un cobramentEl client demana al seu banc que li retorni un adeudament de GoCardless: charged_back, refund_requested i MD06. Què passa a Odoo amb la factura i el mandat.Error mandate_is_inactive de GoCardless en crear un cobrament des d'OdooGoCardless respon mandate_is_inactive en crear un pagament amb un mandat cancel·lat, fallit o caducat. Per què passa i com ho resol el connector a Odoo.GoCardless bank_account_closed: AC04 i MD07, el compte ja no existeixGoCardless bank_account_closed amb AC04 (compte tancat) o MD07 (titular traspassat): el mandat queda cancel·lat. Què fa Odoo amb la factura i amb el client.
Comprovat al codi del connector (versió 17.0, 18.0, 19.0 i 20.0) i a les fonts enllaçades

Fonts

  • Codi del mòdul: flexigo_payment_gocardless: const.py, línia 15 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: models/payment_transaction.py, línia 442 a 17.0 (d203ee6), línia 442 a 18.0 (e2ab18b), línia 441 a 19.0 (ce7f5a3) i línia 456 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: const.py, línia 76 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: const.py, línia 71 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: models/payment_transaction.py, línia 725 a 17.0 (d203ee6), línia 725 a 18.0 (e2ab18b), línia 724 a 19.0 (ce7f5a3) i línia 748 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: models/payment_transaction.py, línia 713 a 17.0 (d203ee6), línia 713 a 18.0 (e2ab18b), línia 712 a 19.0 (ce7f5a3) i línia 736 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: models/payment_transaction.py, línia 754 a 17.0 (d203ee6), línia 754 a 18.0 (e2ab18b), línia 753 a 19.0 (ce7f5a3) i línia 777 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: models/payment_token.py, línia 131 a 17.0 (d203ee6), línia 131 a 18.0 (e2ab18b), línia 131 a 19.0 (ce7f5a3) i línia 130 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: models/payment_token.py, línia 83 a 17.0 (d203ee6), línia 83 a 18.0 (e2ab18b), línia 83 a 19.0 (ce7f5a3) i línia 82 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, línia 436 a 17.0 (d203ee6), línia 436 a 18.0 (e2ab18b), línia 436 a 19.0 (ce7f5a3) i línia 438 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, línia 529 a 17.0 (d203ee6), línia 529 a 18.0 (e2ab18b), línia 529 a 19.0 (ce7f5a3) i línia 531 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, línia 1148 a 17.0 (d203ee6), línia 1148 a 18.0 (e2ab18b), línia 1148 a 19.0 (ce7f5a3) i línia 1155 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, línia 495 a 17.0 (d203ee6), línia 495 a 18.0 (e2ab18b), línia 495 a 19.0 (ce7f5a3) i línia 497 a 20.0 (688d86b)
  • docs.gocardless.com/docs/api-reference/events/mandate
  • Codi del mòdul: flexigo_payment_gocardless: __manifest__.py, línia 31 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • docs.gocardless.com/docs/api-reference/events/payment
  • Codi del mòdul: flexigo_payment_gocardless: views/payment_transaction_views.xml, línia 13 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: models/payment_transaction.py, línia 63 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: models/payment_transaction.py, línia 418 a 17.0 (d203ee6), línia 418 a 18.0 (e2ab18b), línia 417 a 19.0 (ce7f5a3) i línia 432 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, línia 1016 a 17.0 (d203ee6), línia 1016 a 18.0 (e2ab18b), línia 1016 a 19.0 (ce7f5a3) i línia 1031 a 20.0 (688d86b)
  • github.com/odoo/odoo/blob/20.0/addons/payment/i18n/ca.po
  • 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