Què diu GoCardless
| Esdeveniment | Causa | Codis | Text de GoCardless |
|---|---|---|---|
| payments · failed | direct_debit_not_enabled | AG01, AC06 | The bank account for this payment does not support SEPA Direct Debit. The mandate will also be cancelled. |
| payments · failed | account_blocked_for_any_financial_transaction | AC06 | This payment failed because the payer's account was blocked. |
| mandates · cancelled | direct_debit_not_enabled | AG01, AC06 | The bank account for this mandate does not support SEPA direct debit. Any subscriptions and pending payments will also be cancelled. |
| mandates · cancelled | account_blocked_for_any_financial_transaction | AC06 | The bank account for this mandate was blocked. Any subscriptions and pending payments will also be cancelled. |
Les dues causes apareixen també a payments · cancelled: allà van els cobraments que encara esperaven presentar-se amb aquest mandat i que GoCardless cancel·la juntament amb ell.

D'on ve
Aquí no falla la signatura, falla el compte. El mandat existeix, però quan GoCardless presenta el rebut, el banc del client respon que en aquest compte no s'accepten rebuts directes SEPA, o que està bloquejat. Per això aquests esdeveniments tenen origen bank: els decideix el banc del pagador.
direct_debit_not_enabled arrossega el mandat. GoCardless el cancel·la, i amb ell cauen les subscripcions i els cobraments que tingués pendents. Amb account_blocked_for_any_financial_transaction el compte està bloquejat; quan GoCardless cancel·la també el mandat per aquest motiu, ho comunica en el seu propi esdeveniment, amb la mateixa causa.
Què fa Odoo amb cada esdeveniment
| Esdeveniment que arriba | Què fa el connector |
|---|---|
| payments · failed | La transacció passa a «Error» amb «GoCardless could not collect this payment (direct_debit_not_enabled).», o amb la causa del compte bloquejat. Si aquest cobrament ja havia pagat la factura, anul·la el pagament i la factura queda una altra vegada per cobrar. |
| payments · cancelled | El mateix que un pagament fallit. |
| mandates · cancelled | Arxiva el mètode de pagament, deixa escrit a la fitxa del client que aquest mandat ja no serveix i crea l'activitat «GoCardless mandate lost». |
Compte amb l'ordre: l'esdeveniment del pagament no retira el mandat, perquè aquestes causes no figuren entre les quatre que fan que el connector l'arxivi en rebre un pagament. Això ho fa l'esdeveniment del mandat. I si no arribés pel webhook, el recull la tasca horària que busca els esdeveniments perduts.
Els dos textos citats de la taula neixen d'un esdeveniment, no d'un clic. 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 (direct_debit_not_enabled).» i «GoCardless mandate lost».
Tampoc cal esperar res de Success+: la seva guia diu que només torna a intentar els pagaments que fallen per falta de fons. El connector, de totes maneres, mira en cada fallada el camp will_attempt_retry de l'esdeveniment, i si no ve a true deixa la transacció en error.
I el botó de reintentar
Per veure el missatge, entra a la factura i prem a dalt «Transacció de pagament». El menú de transaccions només apareix en mode desenvolupador i a Odoo 20 ja no hi és.
En un pagament fallit, mentre Odoo no hagi arxivat el mandat, aquesta transacció ofereix «Retry collection»; en un de cancel·lat, no. Serveix de poc: GoCardless reintenta únicament pagaments el mandat dels quals continua actiu, i amb direct_debit_not_enabled acaba de cancel·lar-lo. Si la resposta és retry_failed o mandate_is_inactive, el connector pregunta pel mandat, l'arxiva si és mort i ho deixa dit a la transacció: «The customer's GoCardless mandate is …, so it cannot be charged. Ask the customer for a new mandate.». A partir d'aquí el botó desapareix.

Què fer
- Parla amb el client. Si el compte no admet rebuts, necessites un altre que sí els admeti; si està bloquejat (AC06), primer haurà de resoldre-ho amb el seu banc.
- Amb el compte bo, el client signa un mandat nou, que a Odoo apareixerà com un altre mètode de pagament.
- Torna a cobrar amb aquest mètode les factures obertes. Els cobraments cancel·lats per GoCardless no es presentaran per si sols.
- Si necessites el codi exacte, cerca'l a GoCardless, perquè Odoo només guarda la causa: el connector no conserva el codi SEPA. El seu centre d'ajuda ho explica així: «You are able to view the reason for a payment failure in the status timeline of the payment in your GoCardless dashboard.».
Per què AC06 surt a les dues causes?
GoCardless fa servir el mateix codi AC06 per al compte que no admet rebuts i per al compte bloquejat. A la pràctica és igual: avui aquest compte no serveix per cobrar, i cal un altre o que el banc el desbloquegi.
Puc reactivar el mandat?
Si el compte no admet rebuts, no té sentit: continuaria sense admetre'ls. El que cal és un mandat nou amb un altre compte.
Amb el nostre connector
Amb Odoo 17, 18, 19 i 20, aquesta fallada no es queda amagada: la transacció mostra la causa de GoCardless, la factura es reobre si estava pagada i, tan bon punt arriba la cancel·lació del mandat, el client queda marcat per demanar-li un altre compte abans de la propera factura.
Continua llegint
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)
- docs.gocardless.com/docs/api-reference/events/payment
- docs.gocardless.com/docs/api-reference/events/mandate
- 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 33 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 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: 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_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 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: const.py, línia 117 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 74 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 435 a 17.0 (d203ee6), línia 435 a 18.0 (e2ab18b), línia 434 a 19.0 (ce7f5a3) i línia 449 a 20.0 (688d86b)
- docs.gocardless.com/docs/optimise/reduced-failed-payments-with-success-plus
- 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 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)
- 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)
- docs.gocardless.com/docs/api-reference/payment
- Codi del mòdul: flexigo_payment_gocardless: models/payment_transaction.py, línia 469 a 17.0 (d203ee6), línia 469 a 18.0 (e2ab18b), línia 468 a 19.0 (ce7f5a3) i línia 487 a 20.0 (688d86b)
- Codi del mòdul: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, línia 1233 a 17.0 (d203ee6), línia 1233 a 18.0 (e2ab18b), línia 1233 a 19.0 (ce7f5a3) i línia 1240 a 20.0 (688d86b)
- github.com/odoo/odoo/blob/20.0/addons/payment/i18n/ca.po
- github.com/odoo/odoo/blob/20.0/addons/account_payment/views/account_move_views.xml
- github.com/odoo/odoo/blob/17.0/odoo/http.py
- support.gocardless.com/hc/en-gb/articles/360001467265
- Codi del mòdul: flexigo_payment_gocardless: const.py, línia 66 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
- 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/responses-and-errors
