Cosa dice GoCardless
| Evento | Causa | Testo di GoCardless |
|---|---|---|
| mandates · expired | mandate_expired | The mandate is being marked as expired, because no payments have been collected against it for the dormancy period of your service user number. If you have access to the mandate reinstation API endpoint, you can use this to attempt to set this mandate up again. |
| payments · cancelled | mandate_expired | The mandate expired before the payment could be collected. |
La descrizione dell'evento lo rende chiaro: «No collection attempts were made against the mandate within the dormancy period of your service user number.». E la conseguenza: «As a result it has expired, and no further collections can be taken against it.». Lo stato del mandato passa a expired, che GoCardless definisce come scaduto per inattività.

Quando succede
Capita a un mandato firmato e poi non più usato: un cliente che non compra più, oppure uno a cui si addebita così di rado che tra un addebito e il successivo passa tutto il periodo di inattività. Conta il tempo senza tentativi di addebito, non la data della firma.
Se al momento della scadenza c'era un addebito in attesa di essere presentato, GoCardless lo annulla con la stessa causa: «The mandate expired before the payment could be collected.».
Cosa fa Odoo con il connettore
- L'evento del mandato scaduto lo ritira. Il connettore considera non più valido un mandato
expired: archivia il metodo di pagamento del cliente, scrive sulla sua scheda che il mandato non è più utilizzabile e crea l'attività «GoCardless mandate lost». Lo fa solo la prima volta; se un altro evento porta la stessa notizia, lo trova già archiviato. - Il pagamento annullato porta la sua transazione in «Errore», che si apre dalla fattura con il pulsante «Transazione di pagamento» in alto, con «GoCardless could not collect this payment (mandate_expired).». Se la fattura risultava già pagata con quell'addebito, annulla il pagamento e la fattura torna da saldare. E poiché
mandate_expiredè una delle cause con cui il connettore archivia il mandato, anche quell'evento lo ritira, comeexpired. - Nella scheda del metodo di pagamento, «Mandate Status» indica
expired.
Questi testi li scrive il connettore nell'applicare l'evento, senza che nessuno intervenga. 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: «The GoCardless direct debit mandate of … is no longer usable (mandate_expired). No further collection can be taken against it. Ask the customer to set up a new mandate.», «GoCardless mandate lost» e «GoCardless could not collect this payment (mandate_expired).».
Se Odoo tenta di addebitare con il mandato prima di essere al corrente, perché l'evento si è perso per strada, GoCardless risponde mandate_is_inactive. Il connettore allora consulta il mandato, lo archivia e mette nella transazione il proprio messaggio: «The customer's GoCardless mandate is expired, so it cannot be charged. Ask the customer for a new mandate.». L'attività che ogni ora recupera gli eventi persi finisce per portare anche l'evento del mandato.

Riattivarlo o chiederne un altro?
GoCardless lascia due strade. Per continuare a incassare da quel cliente, dice, bisogna chiedergli il permesso e usare la riattivazione del mandato («you should request their permission and use the reinstate endpoint»). Ma quell'endpoint è riservato: richiede pagine di pagamento personalizzate approvate da GoCardless («Restricted this endpoint requires approved custom payment pages»).
Il connettore non riattiva i mandati in produzione: il pulsante «Reinstate mandate (sandbox)» nella scheda del metodo di pagamento compare solo con il provider in test e con il mandato annullato, fallito o scaduto. In produzione la strada è un mandato nuovo.
Cosa fare
- Parla con il cliente: se resta un cliente, chiedigli di firmare un mandato nuovo. In Odoo sarà un nuovo metodo di pagamento.
- Incassa con lui le fatture in sospeso. Gli addebiti che GoCardless ha annullato per la scadenza non si presenteranno da soli.
- Se un cliente viene addebitato molto di rado, metti in conto che il suo mandato possa scadere tra un addebito e l'altro.
Posso incassare con un mandato scaduto se il cliente è d'accordo?
Con quel mandato, no: GoCardless non permette di creare addebiti con esso. Serve uno nuovo oppure, dove è possibile, la riattivazione di GoCardless.
Si può provare la riattivazione?
Sì, nella sandbox di GoCardless. Con il provider in test, la scheda del metodo di pagamento mostra «Reinstate mandate (sandbox)» quando il mandato è scaduto.
Con il nostro connettore
In Odoo 17, 18, 19 e 20 il connettore ritira il mandato scaduto non appena GoCardless lo comunica, lascia l'addebito annullato in errore con la sua causa e avvisa nella scheda del cliente, per chiedere un mandato nuovo prima della fattura successiva.
Continua a leggere
Verificato nel codice del connettore (versione 17.0, 18.0, 19.0 e 20.0) e nelle fonti collegate
Fonti
- docs.gocardless.com/docs/api-reference/events/mandate
- docs.gocardless.com/docs/api-reference/events/payment
- docs.gocardless.com/docs/api-reference/mandate
- 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: 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: const.py, riga 76 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 914 in 17.0 (d203ee6), riga 914 in 18.0 (e2ab18b), riga 913 in 19.0 (ce7f5a3) e riga 937 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: 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: models/payment_transaction.py, riga 278 in 17.0 (d203ee6), riga 278 in 18.0 (e2ab18b), riga 278 in 19.0 (ce7f5a3) e riga 289 in 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: models/payment_transaction.py, riga 321 in 17.0 (d203ee6), riga 321 in 18.0 (e2ab18b), riga 321 in 19.0 (ce7f5a3) e riga 332 in 20.0 (688d86b)
- docs.gocardless.com/docs/api-reference/responses-and-errors
- 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)
- Codice del modulo: flexigo_payment_gocardless: views/payment_token_views.xml, riga 15 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 785 in 17.0 (d203ee6), riga 785 in 18.0 (e2ab18b), riga 785 in 19.0 (ce7f5a3) e riga 800 in 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: views/payment_token_views.xml, riga 23 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 998 in 17.0 (d203ee6), riga 998 in 18.0 (e2ab18b), riga 998 in 19.0 (ce7f5a3) e riga 1013 in 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: models/payment_token.py, riga 162 in 17.0 (d203ee6), riga 162 in 18.0 (e2ab18b), riga 162 in 19.0 (ce7f5a3) e riga 161 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)
- github.com/odoo/odoo/blob/17.0/odoo/http.py
- 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
- Codice del modulo: flexigo_payment_gocardless: __manifest__.py, riga 31 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
