Naar hoofdinhoud
GoCardless · mandaten · replaced

GoCardless mandate_replaced: het mandaat heeft een vervanger

Soms annuleert GoCardless een mandaat en vervangt het door een nieuw, bijvoorbeeld wanneer de crediteur van scheme-identifier verandert. GoCardless meldt dat met de gebeurtenis replaced, die het id van het nieuwe mandaat bevat, en de connector zet de betaalmethode van de klant dan over naar dat mandaat. Als Odoo toch met het oude mandaat probeert te incasseren voordat het dat weet, antwoordt de API met mandate_replaced.

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

Wat GoCardless zegt

WaarReason of oorzaakTekst van GoCardless
API, bij het aanmaken van een betaling (invalid_state)mandate_replacedMandate has been replaced. Check links[new_mandate] in the error or on the mandate itself.
mandates · replacedscheme_identifier_changedThe creditor has changed to a different scheme identifier, so this mandate has been cancelled and replaced by a new one.

De documentatie van gebeurtenissen legt het zo uit: "The mandate has been cancelled and replaced by a new mandate (for example, because the creditor has moved to a new Service User Number).". En wat de gebeurtenis bevat: "The event will include links[new_mandate] with the ID of the new mandate.".

mandate_replaced is een fout invalid_state: de actie is in de huidige status niet geldig. Bij dat soort fouten vraagt GoCardless de gebruiker te informeren en niet opnieuw te proberen ("invalid_state → inform the end user, do not allow retry.").

Kaart van de mandate_replaced-fout van GoCardless
De reason, het type invalid_state, het veld links.new_mandate en de oorzaak scheme_identifier_changed van de gebeurtenis.

Wanneer verschijnt het

De wijziging wordt niet door de klant of diens bank veroorzaakt: de gebeurtenis replaced heeft als bron gocardless, en de gedocumenteerde oorzaak is dat de crediteur, het account waarmee je bij GoCardless incasseert, is overgestapt naar een ander schema-identifier. GoCardless annuleert het oude mandaat en maakt er een nieuw voor in de plaats.

mandate_replaced verschijnt alleen als Odoo met het oude mandaat probeert te incasseren: de incasso van een abonnement dat wordt verlengd, of een betaling die wordt geregistreerd met de opgeslagen betaalmethode van de klant, voordat Odoo de gebeurtenis heeft verwerkt.

Wat Odoo met de connector doet

Bij de gebeurtenis replaced:

  1. Haalt Odoo het nieuwe mandaat uit links.new_mandate.
  2. Koppelt het opgeslagen betaalmethode van de klant aan dat nieuwe mandaat en houdt het als geldig, in plaats van het als verloren te beschouwen. Stond de methode gearchiveerd, dan wordt ze opnieuw geactiveerd; Odoo 17 laat een betaalmethode niet dearchiveren, en daar maakt de connector een nieuwe betaalmethode voor het nieuwe mandaat aan.
  3. Schrijft dit in het klantdossier: "The GoCardless mandate is usable again (replaced).".

Die notitie schrijft de connector zelf bij het verwerken van de gebeurtenis, zonder dat iemand ingrijpt. De connector is niet in het Nederlands vertaald: deze teksten verschijnen altijd in het Engels, ook in een Nederlandstalige Odoo, of een gebruiker of een geplande actie ze nu start.

Bij mandate_replaced in een betaling doet de connector niets bijzonders: bij het aanmaken van een betaling behandelt hij alleen mandate_is_inactive apart. De transactie gaat naar "Fout" met "GoCardless rejected the request." en daaronder het bericht van GoCardless met mandate_replaced en de request_id tussen haakjes. Het nieuwe mandaat haalt hij uit de gebeurtenis, niet uit de fout.

Schema: wat GoCardless bij replaced 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 doorgehaald is, hoeft niet.

Wat te doen

  1. Blijft een betaling op een fout met mandate_replaced staan, open dan de transactie vanuit de factuur, met de knop "Betalingstransactie" bovenaan; het menu met transacties verschijnt alleen in de ontwikkelaarsmodus, en in Odoo 20 bestaat het niet.
  2. Controleer in het klantdossier of de notitie staat dat het mandaat opnieuw bruikbaar is (replaced). Staat ze er, dan verwijst de betaalmethode al naar het nieuwe mandaat.
  3. Staat ze er niet, dan is de gebeurtenis nog niet binnengekomen. De taak die elk uur verloren gebeurtenissen ophaalt, brengt die alsnog binnen; duurt dat langer, controleer dan of de webhooks van GoCardless bij Odoo aankomen.
  4. Is de betaalmethode actueel, incasseer de factuur dan opnieuw.

Moet de klant opnieuw tekenen?

Nee, om met de connector door te incasseren niet: het nieuwe mandaat maakt GoCardless aan, en de connector koppelt de opgeslagen betaalmethode eraan.

Wat gebeurt er in Odoo 17?

Hetzelfde, met één verschil: stond de oude betaalmethode gearchiveerd, dan laat Odoo 17 die niet opnieuw activeren, dus maakt de connector een nieuwe betaalmethode voor het nieuwe mandaat aan. In 18, 19 en 20 wordt de bestaande geactiveerd.

Met onze connector

In Odoo 17, 18, 19 en 20 volgt de connector het nieuwe mandaat zodra GoCardless de vervanging meldt: de klant behoudt zijn betaalmethode en de volgende factuur wordt geïncasseerd met het mandaat dat GoCardless in de plaats heeft gezet.

Lees verder

Fout mandate_is_inactive van GoCardless bij het aanmaken van een incasso vanuit OdooGoCardless antwoordt met mandate_is_inactive bij een betaling met een geannuleerd, mislukt of verlopen mandaat. Waarom het gebeurt en wat de connector doet.GoCardless bank_account_transferred: AMEND, het mandaat gaat naar een andere rekeningGoCardless meldt transferred met code AMEND: het mandaat is naar een andere rekening van de klant gegaan. Wat de connector doet en wat jij niet hoeft te doen.GoCardless mandate_expired: het mandaat is verlopen omdat het niet is gebruiktGoCardless markeert een mandaat als expired als er in de hele inactiviteitsperiode niet mee is geïncasseerd. Wat Odoo doet en hoe je blijft incasseren.
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/responses-and-errors
  • docs.gocardless.com/docs/api-reference/events/mandate
  • Broncode van de module: flexigo_payment_gocardless: models/payment_token.py, regel 72 in 17.0 (d203ee6), regel 72 in 18.0 (e2ab18b), regel 72 in 19.0 (ce7f5a3) en regel 71 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: const.py, regel 150 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: const.py, regel 158 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_token.py, regel 77 in 17.0 (d203ee6), regel 77 in 18.0 (e2ab18b), regel 77 in 19.0 (ce7f5a3) en regel 76 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_token.py, regel 96 in 17.0 (d203ee6), regel 96 in 18.0 (e2ab18b), regel 96 in 19.0 (ce7f5a3) en regel 95 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, regel 1157 in 17.0 (d203ee6), regel 1157 in 18.0 (e2ab18b), regel 1157 in 19.0 (ce7f5a3) en regel 1164 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_transaction.py, regel 278 in 17.0 (d203ee6), regel 278 in 18.0 (e2ab18b), regel 278 in 19.0 (ce7f5a3) en regel 289 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_transaction.py, regel 281 in 17.0 (d203ee6), regel 281 in 18.0 (e2ab18b), regel 281 in 19.0 (ce7f5a3) en regel 292 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_provider.py, regel 397 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_provider.py, regel 462 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 521 in 17.0 (d203ee6), regel 521 in 18.0 (e2ab18b), regel 521 in 19.0 (ce7f5a3) en regel 523 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: const.py, regel 117 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 247 in 17.0 (d203ee6), regel 247 in 18.0 (e2ab18b), regel 247 in 19.0 (ce7f5a3) en regel 258 in 20.0 (688d86b)
  • github.com/odoo/odoo/blob/20.0/addons/payment/i18n/nl.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
  • 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)