Vai al contenuto principale
GoCardless · SEPA Core · pagamento non riuscito

GoCardless refer_to_payer: MS02, MS03, RR04 e SL01 in un addebito SEPA

Con refer_to_payer GoCardless ti segnala che il problema è dal lato del pagatore e che bisogna parlare con lui. In SEPA Core la causa arriva con uno di quattro codici: MS02 se il cliente ha rifiutato l'addebito, MS03 o RR04 se la banca non spiega il motivo e SL01 se il suo conto limita gli addebiti diretti.

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
5 min

Una causa, quattro codici

Codice SEPA CoreTesto di GoCardless
MS02The customer refused to accept this payment.
MS03, RR04The payment failed but the reason for the failure was not provided, usually for regulatory reasons.
SL01The payment failed due to a restriction on Direct Debit payments from the payer's bank account.

Le tre righe provengono dalla tabella dei pagamenti falliti (payments · failed) della documentazione di GoCardless per SEPA Core. A differenza di altre cause, nessuna dice che il mandato viene annullato: il cliente resta autorizzato ad addebitarti, anche se questo specifico addebito non è andato a buon fine.

Scheda della causa refer_to_payer di GoCardless
La causa, i suoi quattro codici SEPA Core e il testo di GoCardless per MS02.

Cosa c'è dietro ogni codice

MS02 è la risposta più chiara: il cliente ha detto alla sua banca di non pagare quella ricevuta. Il connettore annota nel suo codice che è la combinazione che ha visto in un pagamento SEPA di prova della sandbox di GoCardless. MS03 e RR04 sono il contrario: il pagamento fallisce e la banca non fornisce il motivo, di solito per ragioni normative, quindi l'unico modo per saperlo è chiederlo al cliente. SL01 riguarda il conto: la sua banca limita gli addebiti diretti che possono essergli addebitati, e questo può cambiarlo solo il titolare con la propria banca.

Con MS02, RR04 e SL01, ripresentare l'addebito senza prima parlare con il cliente di solito finisce allo stesso modo e può costare un'altra commissione. MS03 ha un'eccezione: secondo la guida di Success+, in Austria, Belgio, Germania, Lussemburgo e Slovacchia MS03 viene considerato come fondi insufficienti, e Success+ può riprovare. In tal caso l'evento arriva con will_attempt_retry impostato a true.

Cosa fa Odoo con il connettore

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 salva la causa nel campo «GoCardless Cause», non il codice SEPA, e mostra «GoCardless could not collect this payment (refer_to_payer).». Poi segue quanto indicato dall'evento:

  • Se will_attempt_retry è true, la transazione passa a «In sospeso», la casella «Success+ Will Retry» viene spuntata e il messaggio dice «Success+ will retry it automatically; there is nothing to do.». Il pulsante per riprovare non compare.
  • Altrimenti la transazione passa a «Errore» e compare il pulsante «Retry collection», se restano dei tentativi. Se Odoo considerava già il pagamento incassato, il connettore annulla il suo pagamento e la fattura torna da incassare.
  • Il mandato non viene toccato. refer_to_payer non è tra le cause per cui il connettore archivia un mandato, quindi il metodo di pagamento del cliente resta disponibile per il successivo addebito.

Quest'ultimo punto è voluto: archiviare il mandato per un rifiuto puntuale costringerebbe il cliente a firmarne un altro senza motivo.

I due messaggi 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: «GoCardless could not collect this payment (refer_to_payer).» e «Success+ will retry it automatically; there is nothing to do.».

Cosa fare in base al codice

Odoo non ti dice quale dei quattro codici è arrivato: il connettore salva solo la causa. Il codice lo vedi in GoCardless. Secondo il loro centro di assistenza, il motivo di ogni fallimento 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.

CodicePrimo passo
MS02Chiedi al cliente perché ha rifiutato la ricevuta: importo, data o disaccordo con la fattura.
MS03Controlla «Success+ Will Retry»: in Austria, Belgio, Germania, Lussemburgo e Slovacchia, Success+ può riprovare MS03 come fondi insufficienti. Se non è spuntata, chiedi al cliente di rivolgersi alla sua banca.
RR04Chiedi al cliente di rivolgersi alla sua banca: GoCardless non riceve il motivo.
SL01Il cliente deve rimuovere la limitazione sugli addebiti del suo conto, oppure fornirti un altro conto.

Quando il cliente conferma che l'addebito andrà a buon fine, usa «Retry collection» sulla transazione e conferma l'avviso sulla commissione. Il connettore risponde «Retry requested. GoCardless will confirm the new charge date.» e la lascia in sospeso. Ricorda il limite: un pagamento può essere riprovato al massimo 3 volte («Payments can be retried up to 3 times.»).

Il mandato viene annullato se il cliente rifiuta un addebito?

No. Né la documentazione di GoCardless lo dice per questa causa né il connettore archivia il mandato con refer_to_payer. Se il cliente vuole smettere di pagarti tramite addebito diretto, annullerà il mandato con la sua banca e questo arriva con un'altra causa, mandate_cancelled.

Schema: cosa invia GoCardless con refer_to_payer 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; ciò che è barrato è ciò che il connettore non fa con questa causa.

Con il nostro connettore

In Odoo 17, 18, 19 e 20 il connettore trasforma refer_to_payer in una fattura da incassare con la causa in vista e un mandato che resta valido. Non deduce il codice SEPA: Odoo salva la causa nella transazione, e il codice lo consulti in GoCardless. La decisione di riprovare a incassare spetta a te, dopo aver parlato con il cliente.

Continua a leggere

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.GoCardless MD01: mandate_cancelled e authorisation_disputed in un incasso SEPAIl codice SEPA MD01 arriva da GoCardless come mandate_cancelled o authorisation_disputed, in un incasso fallito, stornato o annullato. Cosa fa Odoo con esso.Errore retry_failed di GoCardless nel nuovo tentativo di incasso da OdooGoCardless risponde retry_failed se il pagamento non è fallito o non ammette più tentativi. Quando compare «Retry collection» e cosa fa il connettore.
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/payment
  • docs.gocardless.com/docs/api-reference/payment
  • 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: const.py, riga 79 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 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: const.py, riga 71 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 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 729 in 17.0 (d203ee6), riga 729 in 18.0 (e2ab18b), riga 728 in 19.0 (ce7f5a3) e riga 752 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 122 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 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: 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 356 in 17.0 (d203ee6), riga 356 in 18.0 (e2ab18b), riga 356 in 19.0 (ce7f5a3) e riga 358 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)
  • Codice del modulo: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, riga 1022 in 17.0 (d203ee6), riga 1022 in 18.0 (e2ab18b), riga 1022 in 19.0 (ce7f5a3) e riga 1037 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/optimise/reduced-failed-payments-with-success-plus
  • 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: views/payment_transaction_views.xml, riga 27 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/payment/views/payment_transaction_views.xml
  • Codice del modulo: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, riga 1083 in 17.0 (d203ee6), riga 1083 in 18.0 (e2ab18b), riga 1083 in 19.0 (ce7f5a3) e riga 1090 in 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, riga 1063 in 17.0 (d203ee6), riga 1063 in 18.0 (e2ab18b), riga 1063 in 19.0 (ce7f5a3) e riga 1070 in 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, riga 567 in 17.0 (d203ee6), riga 567 in 18.0 (e2ab18b), riga 567 in 19.0 (ce7f5a3) e riga 569 in 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: models/payment_transaction.py, riga 461 in 17.0 (d203ee6), riga 461 in 18.0 (e2ab18b), riga 460 in 19.0 (ce7f5a3) e riga 479 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