Naar hoofdinhoud
GoCardless · SEPA Core · mislukte betaling

GoCardless refer_to_payer: MS02, MS03, RR04 en SL01 bij een SEPA-incasso

Met refer_to_payer laat GoCardless weten dat het probleem aan de kant van de betaler ligt en dat je met hem moet praten. In SEPA Core komt de oorzaak met een van vier codes: MS02 als de klant de incasso heeft geweigerd, MS03 of RR04 als de bank de reden niet geeft en SL01 als zijn rekening incasso's beperkt.

FlexigoTech · Verantwoordelijk: Víctor Gómez · Bijgewerkt op 6 november 2026

In het kort

Versies
Odoo 17, 18, 19 en 20
Gecontroleerd
in de broncode van de connector, versie 17.0, 18.0, 19.0 en 20.0 · in de bronnen onderaan
Leestijd
5 min

Eén oorzaak, vier codes

SEPA Core-codeTekst van 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.

De drie rijen komen uit de tabel met betalingsfouten (payments · failed) in de documentatie van GoCardless voor SEPA Core. Anders dan bij andere oorzaken staat er bij deze nergens dat het mandaat wordt opgezegd: de klant blijft gemachtigd om je te laten incasseren, ook al is deze specifieke incasso niet doorgegaan.

Kaart van de refer_to_payer-oorzaak in GoCardless
De oorzaak, de vier SEPA Core-codes en de tekst van GoCardless voor MS02.

Wat er achter elke code zit

MS02 is het duidelijkst: de klant heeft zijn bank gevraagd die incasso niet uit te voeren. De connector noteert in zijn code dat dit de combinatie is die hij zag in een SEPA-testbetaling in de sandbox van GoCardless. MS03 en RR04 zijn het tegenovergestelde: de betaling mislukt en de bank geeft geen reden, meestal om regelgevende redenen, dus de enige manier om het te weten te komen is de klant vragen. SL01 wijst naar de rekening: zijn bank beperkt de incasso's die op hem afgeschreven kunnen worden, en alleen de rekeninghouder kan dat met zijn bank wijzigen.

Bij MS02, RR04 en SL01 leidt een nieuwe incasso zonder eerst met de klant te praten meestal tot hetzelfde resultaat en kan er extra kosten bij komen. Bij MS03 is er een uitzondering: volgens de gids van Success+ telt MS03 in Oostenrijk, België, Duitsland, Luxemburg en Slowakije als ontoereikend saldo, en Success+ kan het opnieuw proberen. Als dat zo is, komt de gebeurtenis binnen met will_attempt_retry op true.

Wat Odoo met de connector doet

De transactie open je vanuit de factuur, met de knop "Betalingstransactie" bovenaan; het menu met transacties is alleen zichtbaar in de ontwikkelaarsmodus en bestaat niet in Odoo 20. De connector slaat de oorzaak op in het veld "GoCardless Cause", niet de SEPA-code, en toont "GoCardless could not collect this payment (refer_to_payer).". Daarna volgt wat de gebeurtenis aangeeft:

  • Staat will_attempt_retry op true, dan krijgt de transactie de status "In behandeling", wordt het vinkje "Success+ Will Retry" gezet en zegt het bericht "Success+ will retry it automatically; there is nothing to do.". De knop om opnieuw te proberen verschijnt niet.
  • Anders gaat de transactie naar "Fout" en verschijnt de knop "Retry collection", zolang er nog pogingen over zijn. Als Odoo de betaling al als geslaagd had beschouwd, annuleert de connector de betaling en staat de factuur weer open.
  • Het mandaat blijft ongemoeid. refer_to_payer hoort niet bij de oorzaken waarmee de connector een mandaat archiveert, dus de betaalmethode van de klant blijft beschikbaar voor de volgende incasso.

Dit laatste punt is bewust: een mandaat archiveren na een eenmalige weigering zou de klant zonder reden een nieuw laten tekenen.

De twee berichten schrijft de connector bij het verwerken van de gebeurtenis, zonder dat iemand erbij is. De connector is niet in het Nederlands vertaald: deze teksten verschijnen altijd in het Engels, ook in een Nederlandstalige Odoo: "GoCardless could not collect this payment (refer_to_payer)." en "Success+ will retry it automatically; there is nothing to do.".

Wat te doen per code

Odoo laat niet zien welke van de vier codes is binnengekomen: de connector slaat alleen de oorzaak op. De code zie je bij GoCardless. Volgens hun helpcentrum staat de reden van elke fout in de tijdlijn van de betaling, in het Dashboard ("You are able to view the reason for a payment failure in the status timeline of the payment in your GoCardless dashboard."). In de geavanceerde modus staat de exacte code ook in de gebeurtenis (details.reason_code), en het Dashboard bewaart de verzonden webhooks van de afgelopen 3 maanden onder Developers > Webhooks, met hun inhoud.

CodeEerste stap
MS02Vraag de klant waarom hij de incasso heeft geweigerd: bedrag, datum of onenigheid over de factuur.
MS03Kijk naar "Success+ Will Retry": in Oostenrijk, België, Duitsland, Luxemburg en Slowakije kan Success+ MS03 opnieuw proberen als ontoereikend saldo. Staat het vinkje niet aan, vraag de klant zijn bank te raadplegen.
RR04Vraag de klant zijn bank te raadplegen: GoCardless krijgt de reden niet.
SL01De klant moet de incassobeperking op zijn rekening opheffen, of je een andere rekening geven.

Zodra de klant bevestigt dat de incasso kan doorgaan, gebruik je "Retry collection" in de transactie en bevestig je de melding over de kosten. De connector antwoordt "Retry requested. GoCardless will confirm the new charge date." en laat de transactie in behandeling. Let op de limiet: een betaling kan maximaal 3 keer opnieuw worden geprobeerd ("Payments can be retried up to 3 times.").

Wordt het mandaat opgezegd als de klant een incasso weigert?

Nee. Voor deze oorzaak zegt de documentatie van GoCardless dat niet, en de connector archiveert het mandaat niet bij refer_to_payer. Als de klant niet meer via automatische incasso wil betalen, zegt hij het mandaat op bij zijn bank, en dat komt binnen met een andere oorzaak: mandate_cancelled.

Schema: wat GoCardless bij refer_to_payer stuurt en wat Odoo met de connector doet
Schema op basis van de code van de connector (17.0, 18.0, 19.0 en 20.0) en de documentatie van GoCardless; wat doorgestreept is, doet de connector bij deze oorzaak niet.

Met onze connector

In Odoo 17, 18, 19 en 20 zet de connector refer_to_payer om in een openstaande factuur met de oorzaak zichtbaar en een mandaat dat nog geldig is. Hij raadt de SEPA-code niet: Odoo slaat de oorzaak op in de transactie, en de code zoek je op in GoCardless. De beslissing om opnieuw te incasseren is aan jou, nadat je met de klant hebt gesproken.

Lees verder

GoCardless insufficient_funds (AM04): het account van de klant had geen saldoEen GoCardless-incasso mislukt met insufficient_funds en SEPA-code AM04. Wat het betekent, wanneer Success+ opnieuw probeert en wat Odoo met de factuur doet.GoCardless MD01: mandate_cancelled en authorisation_disputed bij een SEPA-incassoSEPA-code MD01 komt bij GoCardless als mandate_cancelled of authorisation_disputed, bij een mislukte, teruggeboekte of geannuleerde incasso. Wat Odoo doet.GoCardless-fout retry_failed bij het herhalen van een incasso vanuit OdooGoCardless antwoordt retry_failed als de betaling niet mislukt is of geen herhaling meer toelaat. Wanneer de knop in Odoo verschijnt en wat de connector doet.
Gecontroleerd in de broncode van de connector (versie 17.0, 18.0, 19.0 en 20.0) en in de gelinkte bronnen

Bronnen

  • docs.gocardless.com/docs/api-reference/events/payment
  • docs.gocardless.com/docs/api-reference/payment
  • Broncode van de module: flexigo_payment_gocardless: const.py, regel 15 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: const.py, regel 79 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: const.py, regel 76 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: const.py, regel 71 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_transaction.py, regel 725 in 17.0 (d203ee6), regel 725 in 18.0 (e2ab18b), regel 724 in 19.0 (ce7f5a3) en regel 748 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_transaction.py, regel 729 in 17.0 (d203ee6), regel 729 in 18.0 (e2ab18b), regel 728 in 19.0 (ce7f5a3) en regel 752 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_transaction.py, regel 754 in 17.0 (d203ee6), regel 754 in 18.0 (e2ab18b), regel 753 in 19.0 (ce7f5a3) en regel 777 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: const.py, regel 122 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: views/payment_transaction_views.xml, regel 13 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, regel 436 in 17.0 (d203ee6), regel 436 in 18.0 (e2ab18b), regel 436 in 19.0 (ce7f5a3) en regel 438 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, regel 356 in 17.0 (d203ee6), regel 356 in 18.0 (e2ab18b), regel 356 in 19.0 (ce7f5a3) en regel 358 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, regel 1016 in 17.0 (d203ee6), regel 1016 in 18.0 (e2ab18b), regel 1016 in 19.0 (ce7f5a3) en regel 1031 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, regel 1022 in 17.0 (d203ee6), regel 1022 in 18.0 (e2ab18b), regel 1022 in 19.0 (ce7f5a3) en regel 1037 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: __manifest__.py, regel 31 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 20.0 (688d86b)
  • docs.gocardless.com/docs/optimise/reduced-failed-payments-with-success-plus
  • Broncode van de module: flexigo_payment_gocardless: models/payment_transaction.py, regel 63 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_transaction.py, regel 418 in 17.0 (d203ee6), regel 418 in 18.0 (e2ab18b), regel 417 in 19.0 (ce7f5a3) en regel 432 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: views/payment_transaction_views.xml, regel 27 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 20.0 (688d86b)
  • github.com/odoo/odoo/blob/20.0/addons/payment/i18n/nl.po
  • github.com/odoo/odoo/blob/20.0/addons/payment/views/payment_transaction_views.xml
  • Broncode van de module: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, regel 1083 in 17.0 (d203ee6), regel 1083 in 18.0 (e2ab18b), regel 1083 in 19.0 (ce7f5a3) en regel 1090 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, regel 1063 in 17.0 (d203ee6), regel 1063 in 18.0 (e2ab18b), regel 1063 in 19.0 (ce7f5a3) en regel 1070 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, regel 567 in 17.0 (d203ee6), regel 567 in 18.0 (e2ab18b), regel 567 in 19.0 (ce7f5a3) en regel 569 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_transaction.py, regel 461 in 17.0 (d203ee6), regel 461 in 18.0 (e2ab18b), regel 460 in 19.0 (ce7f5a3) en regel 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
  • Broncode van de module: flexigo_payment_gocardless: const.py, regel 66 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 20.0 (688d86b)
  • github.com/odoo/odoo/blob/20.0/addons/account_payment/views/account_move_views.xml