Cosa dice GoCardless
| Reason | Tipo | Testo di GoCardless |
|---|---|---|
refund_payment_invalid_state | invalid_state | Payment must be confirmed or paid_out before it can be refunded. |
Nel riferimento dei rimborsi, GoCardless aggiunge un termine: «A refund can only be created once it is outside the safer refund period (7 calendar days after the charge date) otherwise an error is returned.». Questo periodo si può disattivare: «The safer refund period can be disabled by contacting GoCardless.». E ricorda perché esiste: «A payment that has been (partially) refunded can still receive a late failure or chargeback from the customer's bank.».
I rimborsi tramite API, inoltre, sono disattivati per impostazione predefinita: «This endpoint is disabled by default. To enable it, you will need to enable refunds on your GoCardless Dashboard.».

Le regole di attesa, in breve
| Giorni dall'addebito | GoCardless, per impostazione predefinita | Il connettore |
|---|---|---|
| Meno di 2 | nel periodo sicuro: restituisce un errore | non invia il rimborso |
| 2 o più, ma meno di 7 | nel periodo sicuro: restituisce un errore | lo invia e lascia un avviso nel registro del server |
| 7 o più | fuori dal periodo sicuro | lo invia |
Non contano dallo stesso punto. GoCardless conta dalla data di addebito del pagamento. Il connettore conta dall'ultimo cambio di stato della transazione dell'addebito in Odoo. Se GoCardless ha disattivato il periodo sicuro, tra 2 e 7 giorni il rimborso può andare a buon fine.
Quando compare refund_payment_invalid_state con il connettore
Odoo consente di rimborsare solo una transazione confermata, e il connettore la conferma quando GoCardless indica confirmed o paid_out. Quindi, con il connettore, questo reason significa che il pagamento è cambiato in GoCardless e Odoo non lo sa ancora: un fallimento tardivo, che GoCardless può comunicare dopo che il pagamento è già confermato, oppure un rimborso del cliente il cui evento non è ancora arrivato.
Cosa fa il connettore
- Con meno di 2 giorni, non invia nulla: Odoo si ferma con «GoCardless cannot refund a collection until it has settled. This one was charged … day(s) ago; refunds are possible after 2 days.».
- Altrimenti invia il rimborso a GoCardless con la sua chiave di idempotenza. Se GoCardless lo rifiuta, per questo reason, per il periodo sicuro o per qualsiasi altro motivo, la transazione del rimborso passa a «Errore» con «GoCardless rejected the request.» e, sotto, il messaggio di GoCardless con il reason e il
request_id. - Se lo accetta, la transazione resta «In sospeso» con «Refund submitted. GoCardless will deduct it from a future payout.», e passa a «Confermato» quando GoCardless lo paga o lo detrae da una liquidazione.
Dalla versione 1.1.5, un rimborso in errore non mostra il pulsante «Retry collection»: un rimborso non è un addebito, e non c'è nulla che GoCardless possa ritentare. Se GoCardless non riesce a far arrivare il denaro al cliente, il connettore passa il rimborso in errore con «GoCardless could not pay this refund back (…).». 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 pay this refund back (…).».

Cosa fare
- Apri la transazione dell'addebito 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. Da lì, il pulsante dei rimborsi porta alla transazione del rimborso e al suo messaggio.
- Se il reason è
refund_payment_invalid_state, controlla il pagamento nella Dashboard di GoCardless. Se è fallito in ritardo o il cliente lo ha restituito, non c'è nulla da rimborsare: il denaro non è più tuo. Odoo lo rifletterà quando arriverà l'evento; l'attività pianificata che ogni ora recupera gli eventi persi lo porta. - Se il rifiuto dipende dal periodo sicuro, attendi che siano passati 7 giorni dalla data di addebito, oppure chiedi a GoCardless di disattivarlo.
- Per rimborsare di nuovo, fallo dal pagamento dell'addebito, con il suo pulsante di rimborso. Il connettore ammette rimborsi parziali.
Perché il connettore consente il rimborso dai 2 giorni se GoCardless parla di 7?
I 2 giorni sono il minimo del connettore: sotto questa soglia non invia nulla. GoCardless consente di disattivare il proprio periodo sicuro, e finché è attivo è GoCardless a rifiutare il rimborso prima dei 7 giorni. Tra 2 e 7 giorni il connettore avvisa nel registro, perché un fallimento SEPA può ancora arrivare.
Un addebito rimborsato può fallire in seguito?
Sì. GoCardless lo avverte: un pagamento rimborsato, in tutto o in parte, può ancora ricevere un fallimento tardivo o una restituzione dalla banca del cliente. In quel caso avresti restituito un denaro che non hai mai trattenuto davvero.
Con il nostro connettore
In Odoo 17, 18, 19 e 20 il connettore non invia rimborsi di addebiti con meno di 2 giorni, lascia in errore con il suo request_id quelli che GoCardless rifiuta e non offre di ritentare un rimborso, che non è un addebito.
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/responses-and-errors
- docs.gocardless.com/docs/api-reference/refund
- support.gocardless.com/hc/en-gb/articles/360001467265
- Codice del modulo: flexigo_payment_gocardless: const.py, riga 41 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
- github.com/odoo/odoo/blob/20.0/addons/payment/models/payment_transaction.py
- github.com/odoo/odoo/blob/20.0/addons/account_payment/views/account_payment_views.xml
- Codice del modulo: flexigo_payment_gocardless: models/payment_provider.py, riga 256 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: const.py, riga 106 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 361 in 17.0 (d203ee6), riga 361 in 18.0 (e2ab18b), riga 360 in 19.0 (ce7f5a3) e riga 375 in 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: models/payment_transaction.py, riga 365 in 17.0 (d203ee6), riga 365 in 18.0 (e2ab18b), riga 364 in 19.0 (ce7f5a3) e riga 379 in 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, riga 414 in 17.0 (d203ee6), riga 414 in 18.0 (e2ab18b), riga 414 in 19.0 (ce7f5a3) e riga 416 in 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: models/payment_transaction.py, riga 371 in 17.0 (d203ee6), riga 371 in 18.0 (e2ab18b), riga 370 in 19.0 (ce7f5a3) e riga 385 in 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: models/payment_transaction.py, riga 397 in 17.0 (d203ee6), riga 397 in 18.0 (e2ab18b), riga 396 in 19.0 (ce7f5a3) e riga 411 in 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: models/payment_provider.py, riga 397 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: models/payment_provider.py, riga 462 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 521 in 17.0 (d203ee6), riga 521 in 18.0 (e2ab18b), riga 521 in 19.0 (ce7f5a3) e riga 523 in 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: models/payment_transaction.py, riga 413 in 17.0 (d203ee6), riga 413 in 18.0 (e2ab18b), riga 412 in 19.0 (ce7f5a3) e riga 427 in 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: models/payment_transaction.py, riga 605 in 17.0 (d203ee6), riga 605 in 18.0 (e2ab18b), riga 604 in 19.0 (ce7f5a3) e riga 625 in 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: models/payment_provider.py, riga 352 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 987 in 17.0 (d203ee6), riga 987 in 18.0 (e2ab18b), riga 987 in 19.0 (ce7f5a3) e riga 1002 in 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: models/payment_transaction.py, riga 611 in 17.0 (d203ee6), riga 611 in 18.0 (e2ab18b), riga 610 in 19.0 (ce7f5a3) e riga 631 in 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, riga 442 in 17.0 (d203ee6), riga 442 in 18.0 (e2ab18b), riga 442 in 19.0 (ce7f5a3) e riga 444 in 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: models/payment_transaction.py, riga 424 in 17.0 (d203ee6), riga 424 in 18.0 (e2ab18b), riga 423 in 19.0 (ce7f5a3) e riga 438 in 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: 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: const.py, riga 117 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 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
- Codice del modulo: flexigo_payment_gocardless: __manifest__.py, riga 31 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
