Vai al contenuto principale
GoCardless API · invalid_state · rimborsi

GoCardless refund_payment_invalid_state: questo addebito non si può ancora rimborsare

Un rimborso GoCardless restituisce al cliente il denaro di un addebito, e GoCardless lo accetta solo se quell'addebito è confermato o già liquidato. In caso contrario risponde refund_payment_invalid_state. Inoltre GoCardless prevede un periodo di rimborso sicuro di 7 giorni di calendario, e il connettore di Odoo aggiunge una propria regola di 2 giorni.

FlexigoTech · Responsabile: Víctor Gómez · Aggiornato il 6 novembre 2026

In breve

Versioni
Odoo 17, 18, 19 e 20
Verificato
nel codice del connettore, versione 17.0, 18.0, 19.0 e 20.0 · nelle fonti collegate in fondo
Lettura
4 min

Cosa dice GoCardless

ReasonTipoTesto di GoCardless
refund_payment_invalid_stateinvalid_statePayment 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.».

Scheda dell'errore refund_payment_invalid_state di GoCardless
Il reason, il suo tipo invalid_state e gli stati confirmed e paid_out che GoCardless richiede per rimborsare.

Le regole di attesa, in breve

Giorni dall'addebitoGoCardless, per impostazione predefinitaIl connettore
Meno di 2nel periodo sicuro: restituisce un errorenon invia il rimborso
2 o più, ma meno di 7nel periodo sicuro: restituisce un errorelo invia e lascia un avviso nel registro del server
7 o piùfuori dal periodo sicurolo 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

  1. 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.».
  2. 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.
  3. 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 (…).».

Schema: cosa risponde GoCardless al rimborso e cosa fa Odoo con il connettore
Schema realizzato a partire dal codice del connettore (17.0, 18.0, 19.0 e 20.0) e dalla documentazione di GoCardless.

Cosa fare

  1. 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.
  2. 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.
  3. Se il rifiuto dipende dal periodo sicuro, attendi che siano passati 7 giorni dalla data di addebito, oppure chiedi a GoCardless di disattivarlo.
  4. 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

GoCardless total_amount_confirmation_invalid: il totale rimborsato non tornaGoCardless rifiuta un rimborso con total_amount_confirmation_invalid se il totale rimborsato non torna, o con number_of_refunds_exceeded dopo 5.GoCardless MD06: il cliente chiede alla propria banca di stornare un addebitoIl cliente chiede alla propria banca di stornare un addebito GoCardless: charged_back, refund_requested e MD06. Cosa succede in Odoo con fattura e mandato.GoCardless insufficient_funds (AM04): il conto del cliente non aveva fondi sufficientiUn addebito GoCardless fallisce con insufficient_funds e codice SEPA AM04. Cosa significa, quando lo riprova Success+ e cosa fa Odoo con la fattura.
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)