Cosa dice GoCardless
| Evento | Codice SEPA Core | Testo di GoCardless |
|---|---|---|
| payments · failed | AC04 | The bank account for this payment has been closed. The mandate will also be cancelled. |
| payments · failed | MD07 | This payment failed because the customer is deceased. |
| mandates · cancelled | AC04 | The bank account for this mandate has been closed. Any subscriptions and pending payment will also be cancelled. |
| mandates · cancelled | MD07 | This mandate has been cancelled because the customer is deceased. |
La causa è la stessa in tutte e quattro le righe, bank_account_closed; il codice distingue il motivo. Guarda la terza: oltre al mandato, GoCardless annulla i pagamenti in sospeso di quel mandato, che ti arriveranno come pagamenti annullati con la stessa causa.

Due eventi per lo stesso fatto
La chiusura di un conto arriva a Odoo due volte: con il pagamento che fallisce e con il mandato che viene annullato. Il connettore gestisce entrambi: il primo che arriva archivia il mandato e avvisa, e il secondo lo trova già archiviato, senza ripetere l'avviso. Se uno dei due non arriva tramite webhook, l'attività pianificata che ogni ora chiede a GoCardless gli eventi mancanti lo recupera, fino a 100 per passaggio.
Cosa fa il connettore
- Porta la transazione in errore con «GoCardless could not collect this payment (bank_account_closed).» e memorizza la causa.
- Se la fattura era già pagata con quell'incasso, annulla il pagamento in Odoo e la fattura torna in sospeso.
- Archivia il metodo di pagamento del cliente:
bank_account_closedè una delle quattro cause per cui il connettore considera il mandato non più valido, insieme amandate_cancelled,mandate_expiredeauthorisation_disputed. - Lo scrive nella scheda del cliente: «The GoCardless direct debit mandate of … is no longer usable (bank_account_closed). No further collection can be taken against it. Ask the customer to set up a new mandate.»
- Crea un'attività «GoCardless mandate lost» perché qualcuno se ne occupi prima della prossima fattura.
Il mandato archiviato resta in Odoo come storico, ma non viene più proposto per gli incassi. La transazione si apre dalla fattura, con il pulsante «Transazione di pagamento» in alto; il menu delle transazioni compare solo in modalità sviluppatore, e in Odoo 20 non esiste.
Il connettore non è tradotto in italiano: questi testi compaiono sempre in inglese, anche in un Odoo in italiano, sia che li avvii un utente sia un'azione pianificata: «GoCardless could not collect this payment (bank_account_closed).», «The GoCardless direct debit mandate of … is no longer usable (bank_account_closed). No further collection can be taken against it. Ask the customer to set up a new mandate.» e «GoCardless mandate lost».
Come capire se è AC04 o MD07
Da Odoo non si distingue. La causa è la stessa, il connettore memorizza la causa e non il codice SEPA, e la nota del cliente e l'attività dicono la stessa cosa nei due casi. Il codice lo vedi in GoCardless. Secondo il loro centro di assistenza, il motivo di ogni errore compare nella cronologia del pagamento, nella Dashboard («You are able to view the reason for a payment failure in the status timeline of the payment in your GoCardless dashboard.»). In modalità avanzata, il codice esatto è anche nell'evento (details.reason_code), e la Dashboard conserva gli invii degli ultimi 3 mesi in Developers > Webhooks, con il loro contenuto.
Se il codice è MD07
MD07 non è un problema tecnico. Il titolare del conto è deceduto e il mandato viene annullato. Le fatture in sospeso di quel cliente non verranno incassate tramite addebito diretto, e come recuperarle è una questione che riguarda il tuo consulente, non il connettore. La cosa prudente è controllare in Odoo i suoi incassi programmati e gli abbonamenti, perché non se ne generino altri. La nota di Odoo chiede comunque un nuovo mandato, perché conosce solo la causa: con MD07, non richiederlo.
Cosa fare con AC04
- Contatta il cliente: ha un conto nuovo, o lo avrà, e deve firmare un mandato con quello.
- Quando firma, il nuovo mandato sarà un altro metodo di pagamento in Odoo; quello vecchio resta archiviato.
- Incassa con il nuovo mandato le fatture rimaste in sospeso.

Posso ritentare un pagamento con bank_account_closed?
Non ha senso: il conto non esiste. Inoltre il connettore archivia il mandato, e con il mandato archiviato il pulsante «Retry collection» non compare nella transazione.
E se il cliente ha cambiato banca con il servizio di trasferimento dei conti?
Non è una chiusura: GoCardless lo comunica come mandato trasferito, con la causa bank_account_transferred, e il mandato resta valido.
Con il nostro connettore
Il connettore di GoCardless per Odoo 17, 18, 19 e 20 fa con bank_account_closed quello che farebbe una persona attenta: dà l'incasso per fallito, riapre la fattura, ritira il mandato non più valido perché nessuno lo riutilizzi e lascia un avviso con la causa nella scheda del cliente.
Continua a leggere
Verificato nel codice del connettore (versione 17.0, 18.0, 19.0 e 20.0) e nelle fonti collegate
Fonti
- Codice del modulo: flexigo_payment_gocardless: const.py, riga 15 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: models/payment_transaction.py, riga 442 in 17.0 (d203ee6), riga 442 in 18.0 (e2ab18b), riga 441 in 19.0 (ce7f5a3) e riga 456 in 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: models/payment_token.py, riga 83 in 17.0 (d203ee6), riga 83 in 18.0 (e2ab18b), riga 83 in 19.0 (ce7f5a3) e riga 82 in 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: const.py, riga 145 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
- docs.gocardless.com/docs/api-reference/events/mandate
- Codice del modulo: flexigo_payment_gocardless: const.py, riga 76 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: const.py, riga 33 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: models/payment_token.py, riga 131 in 17.0 (d203ee6), riga 131 in 18.0 (e2ab18b), riga 131 in 19.0 (ce7f5a3) e riga 130 in 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: models/payment_transaction.py, riga 725 in 17.0 (d203ee6), riga 725 in 18.0 (e2ab18b), riga 724 in 19.0 (ce7f5a3) e riga 748 in 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: models/payment_transaction.py, riga 754 in 17.0 (d203ee6), riga 754 in 18.0 (e2ab18b), riga 753 in 19.0 (ce7f5a3) e riga 777 in 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: const.py, riga 117 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, riga 436 in 17.0 (d203ee6), riga 436 in 18.0 (e2ab18b), riga 436 in 19.0 (ce7f5a3) e riga 438 in 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, riga 1148 in 17.0 (d203ee6), riga 1148 in 18.0 (e2ab18b), riga 1148 in 19.0 (ce7f5a3) e riga 1155 in 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, riga 495 in 17.0 (d203ee6), riga 495 in 18.0 (e2ab18b), riga 495 in 19.0 (ce7f5a3) e riga 497 in 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: __manifest__.py, riga 31 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
- docs.gocardless.com/docs/api-reference/events/payment
- Codice del modulo: flexigo_payment_gocardless: views/payment_transaction_views.xml, riga 13 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: models/payment_transaction.py, riga 63 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: models/payment_transaction.py, riga 418 in 17.0 (d203ee6), riga 418 in 18.0 (e2ab18b), riga 417 in 19.0 (ce7f5a3) e riga 432 in 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, riga 1016 in 17.0 (d203ee6), riga 1016 in 18.0 (e2ab18b), riga 1016 in 19.0 (ce7f5a3) e riga 1031 in 20.0 (688d86b)
- docs.gocardless.com/docs/api-reference/webhooks
- github.com/odoo/odoo/blob/17.0/odoo/http.py
- support.gocardless.com/hc/en-gb/articles/360001467265
- Codice del modulo: flexigo_payment_gocardless: const.py, riga 66 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
- github.com/odoo/odoo/blob/20.0/addons/account_payment/views/account_move_views.xml
