Cosa dice GoCardless
| Evento | Causa | Codici | Testo di 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. |
Le due cause compaiono anche in payments · cancelled: lì vanno gli incassi che aspettavano ancora di essere presentati con quel mandato e che GoCardless annulla insieme a esso.

Da dove viene
Qui non fallisce la firma, fallisce il conto. Il mandato esiste, ma quando GoCardless presenta l'addebito, la banca del cliente risponde che su quel conto non si accettano addebiti diretti SEPA, o che è bloccato. Per questo questi eventi hanno origine bank: li decide la banca del pagatore.
direct_debit_not_enabled trascina con sé il mandato. GoCardless lo annulla e, con esso, cadono gli abbonamenti e gli incassi che aveva in sospeso. Con account_blocked_for_any_financial_transaction il conto è bloccato; quando GoCardless annulla anche il mandato per quel motivo, lo comunica nel proprio evento, con la stessa causa.
Cosa fa Odoo con ogni evento
| Evento in arrivo | Cosa fa il connettore |
|---|---|
| payments · failed | La transazione passa a «Errore» con «GoCardless could not collect this payment (direct_debit_not_enabled).», o con la causa del conto bloccato. Se quell'incasso aveva già pagato la fattura, annulla il pagamento e la fattura torna da incassare. |
| payments · cancelled | Lo stesso di un pagamento fallito. |
| mandates · cancelled | Archivia il metodo di pagamento, annota nella scheda del cliente che quel mandato non serve più e crea l'attività «GoCardless mandate lost». |
Attenzione all'ordine: l'evento del pagamento non ritira il mandato, perché queste cause non figurano tra le quattro che portano il connettore ad archiviarlo alla ricezione di un pagamento. Lo fa l'evento del mandato. E se non arrivasse tramite il webhook, lo raccoglie l'azione pianificata oraria che cerca gli eventi persi.
I due testi citati della tabella nascono da un evento, non da un clic. 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 (direct_debit_not_enabled).» e «GoCardless mandate lost».
Neppure da Success+ c'è da aspettarsi nulla: la sua guida dice che riprova soltanto i pagamenti che falliscono per mancanza di fondi. Il connettore, comunque, a ogni fallimento guarda il campo will_attempt_retry dell'evento e, se non è a true, lascia la transazione in errore.
E il pulsante per riprovare
Per vedere il messaggio, entra nella fattura e premi in alto «Transazione di pagamento». Il menu delle transazioni compare solo in modalità sviluppatore e in Odoo 20 non c'è più.
In un pagamento fallito, finché Odoo non ha archiviato il mandato, quella transazione offre «Retry collection»; in uno annullato, no. Serve a poco: GoCardless riprova soltanto pagamenti il cui mandato è ancora attivo e con direct_debit_not_enabled lo ha appena annullato. Se la risposta è retry_failed o mandate_is_inactive, il connettore interroga il mandato, lo archivia se è morto e lo annota nella transazione: «The customer's GoCardless mandate is …, so it cannot be charged. Ask the customer for a new mandate.». Da lì in poi il pulsante scompare.

Cosa fare
- Parla con il cliente. Se il conto non ammette addebiti, serve un altro conto che li ammetta; se è bloccato (AC06), dovrà prima risolverlo con la sua banca.
- Con il conto giusto, il cliente firma un nuovo mandato, che in Odoo comparirà come un altro metodo di pagamento.
- Incassa di nuovo con quel metodo le fatture aperte. Gli incassi annullati da GoCardless non verranno presentati da soli.
- Se ti serve il codice esatto, cercalo in GoCardless, perché Odoo conserva solo la causa: il connettore non conserva il codice SEPA. Il loro centro assistenza lo spiega così: «You are able to view the reason for a payment failure in the status timeline of the payment in your GoCardless dashboard.».
Perché AC06 compare in entrambe le cause?
GoCardless usa lo stesso codice AC06 per il conto che non ammette addebiti e per il conto bloccato. In pratica è lo stesso: oggi quel conto non serve per incassare, e ne serve un altro oppure che la banca lo sblocchi.
Posso riattivare il mandato?
Se il conto non ammette addebiti, non ha senso: continuerebbe a non ammetterli. Serve un nuovo mandato con un altro conto.
Con il nostro connettore
Con Odoo 17, 18, 19 e 20, questo errore non resta nascosto: la transazione mostra la causa di GoCardless, la fattura si riapre se era pagata e, non appena arriva l'annullamento del mandato, il cliente viene segnalato per chiedergli un altro conto prima della prossima fattura.
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)
- docs.gocardless.com/docs/api-reference/events/payment
- 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 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: 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: const.py, riga 74 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 435 in 17.0 (d203ee6), riga 435 in 18.0 (e2ab18b), riga 434 in 19.0 (ce7f5a3) e riga 449 in 20.0 (688d86b)
- docs.gocardless.com/docs/optimise/reduced-failed-payments-with-success-plus
- 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: 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/payment
- Codice del modulo: flexigo_payment_gocardless: models/payment_transaction.py, riga 469 in 17.0 (d203ee6), riga 469 in 18.0 (e2ab18b), riga 468 in 19.0 (ce7f5a3) e riga 487 in 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, riga 1233 in 17.0 (d203ee6), riga 1233 in 18.0 (e2ab18b), riga 1233 in 19.0 (ce7f5a3) e riga 1240 in 20.0 (688d86b)
- github.com/odoo/odoo/blob/20.0/addons/payment/i18n/it.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
- Codice del modulo: flexigo_payment_gocardless: const.py, riga 66 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 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/responses-and-errors
