Salta al contingut principal
GoCardless API · invalid_state · reinstate

GoCardless mandate_not_inactive: el mandat no es pot reactivar

Reactivar un mandat (reinstate) és tornar a presentar als bancs un de cancel·lat o caducat. GoCardless ho rebutja amb mandate_not_inactive si el mandat ja està actiu o ja s'està presentant. Amb el connector només es pot demanar fora de producció, perquè en producció GoCardless restringeix aquesta funció.

FlexigoTech · Responsable: Víctor Gómez · Actualitzat el 6 de novembre de 2026

L'essencial

Versions
Odoo 17, 18, 19 i 20
Comprovat
al codi del connector, versió 17.0, 18.0, 19.0 i 20.0 · a les fonts enllaçades al final
Lectura
4 min

Què diu GoCardless

ReasonTipusText de GoCardless
mandate_not_inactiveinvalid_state«Mandate could not be reinstated» i «it is already active or being submitted.»

GoCardless separa les dues parts del text amb un guió. A la referència de l'API ho detalla: «This will fail with a mandate_not_inactive error if the mandate is already being submitted, or is active.». És un error invalid_state, i per a aquests GoCardless demana avisar l'usuari i no reintentar («invalid_state → inform the end user, do not allow retry.»).

Targeta de l'error mandate_not_inactive de GoCardless
El reason, el seu tipus invalid_state, l'acció de reactivar (actions/reinstate) i el text de GoCardless.

Quins mandats es poden reactivar

La reactivació té més condicions que l'estat:

  • És una funció restringida: «Restricted this endpoint requires approved custom payment pages».
  • Només val per a un mandat cancel·lat des del Dashboard o l'API: «A mandate can only be reinstated if it has been cancelled through the dashboard or the API.». Un que ha cancel·lat el banc, no: «Any mandate that has been cancelled by the bank cannot be reinstated.».
  • Serveix per a mandats cancel·lats o caducats («Reinstates a cancelled or expired mandate to the banks.»), i un mandat es pot tornar a presentar fins a 10 vegades («Mandates can be resubmitted up to 10 times.»).

Després de demanar-la, el procés és el d'un alta: arriba resubmission_requested i després, com diu GoCardless, «so you will receive a submitted webhook, followed by a reinstated or failed webhook up to two working days later.».

Què fa Odoo amb el connector

A la fitxa del mètode de pagament del client, el connector posa el botó «Reinstate mandate (sandbox)». Només surt si el mandat és de GoCardless, el proveïdor no està en producció (a Odoo 17, 18 i 19, l'estat del proveïdor; a Odoo 20, la casella de producció) i «Mandate Status» és cancelled, failed o expired.

En prémer-lo:

  1. El connector demana a GoCardless la reactivació d'aquell mandat.
  2. Si GoCardless l'accepta, l'estat passa a reinstate_requested i a la fitxa del client queda «Reinstatement of the GoCardless mandate requested. It stays unusable until the bank confirms it.». El mètode de pagament continua arxivat.
  3. Quan arriba reinstated, el connector ho torna a donar per bo: el reactiva i escriu «The GoCardless mandate is usable again (reinstated).».

Si GoCardless contesta mandate_not_inactive, el connector no ho captura: Odoo mostra «GoCardless rejected the request.» amb el missatge de GoCardless, el reason i el request_id, i el mandat es queda com estava. Passa quan Odoo creu que el mandat està mort i a GoCardless ja és actiu o s'està presentant, perquè els seus esdeveniments encara no han arribat a Odoo. Després d'una petició acceptada, el botó ja no surt, perquè l'estat passa a reinstate_requested.

La nota que el mandat es pot tornar a usar l'escriu el connector en aplicar l'esdeveniment, sense ningú davant. El connector no està traduït al català: aquests textos surten sempre en anglès, també en un Odoo en català, tant si els llança un usuari com una tasca programada: «The GoCardless mandate is usable again (reinstated).».

Esquema: què envia GoCardless amb mandate_not_inactive i què fa Odoo amb el connector
Esquema fet a partir del codi del connector (17.0, 18.0, 19.0 i 20.0) i de la documentació de GoCardless.

Què fer

  1. Si surt mandate_not_inactive, busca el mandat al Dashboard de GoCardless. Si està actiu o presentant-se, no hi ha res a reactivar: espera que arribin els seus esdeveniments. La tasca que cada hora recupera els esdeveniments perduts els porta.
  2. Si el mandat l'ha cancel·lat el banc, no ho intentis: GoCardless no reactiva aquests. Demana al client un mandat nou.
  3. En producció, el connector no ofereix la reactivació: el camí és un mandat nou signat pel client.
  4. Per provar-ho, usa el sandbox de GoCardless amb el proveïdor en proves.

Per què el botó només surt fora de producció?

Perquè GoCardless restringeix la reactivació a qui té pàgines de pagament pròpies aprovades, i el connector només l'ofereix fora de producció.

Quant triga a tornar a valer el mandat?

El que triguin els bancs: segons GoCardless, primer avisa que s'ha demanat la reactivació, després que el mandat s'ha presentat i, fins a dos dies hàbils més tard, si ha quedat reactivat o ha fallat. Fins llavors, el connector no l'usa.

Amb el nostre connector

A Odoo 17, 18, 19 i 20 el connector només ofereix reactivar un mandat cancel·lat, fallit o caducat, i només fora de producció, i no el torna a usar fins que GoCardless confirma la reactivació amb el seu esdeveniment.

Continua llegint

GoCardless mandate_expired: el mandat va caducar per no usar-loGoCardless marca un mandat com a expired quan no s'ha intentat cobrar amb ell durant tot el període d'inactivitat. Què fa Odoo i com seguir cobrant.GoCardless MD01: mandate_cancelled i authorisation_disputed en un cobrament SEPAEl codi SEPA MD01 arriba a GoCardless com a mandate_cancelled o authorisation_disputed, en un cobrament fallit, retornat o cancel·lat. Què fa Odoo amb ell.Error mandate_is_inactive de GoCardless en crear un cobrament des d'OdooGoCardless respon mandate_is_inactive en crear un pagament amb un mandat cancel·lat, fallit o caducat. Per què passa i com ho resol el connector a Odoo.
Comprovat al codi del connector (versió 17.0, 18.0, 19.0 i 20.0) i a les fonts enllaçades

Fonts

  • docs.gocardless.com/docs/api-reference/responses-and-errors
  • docs.gocardless.com/docs/api-reference/mandate
  • docs.gocardless.com/docs/api-reference/events/mandate
  • Codi del mòdul: flexigo_payment_gocardless: const.py, línia 134 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: views/payment_token_views.xml, línia 23 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: views/payment_token_views.xml, línia 22 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, línia 998 a 17.0 (d203ee6), línia 998 a 18.0 (e2ab18b), línia 998 a 19.0 (ce7f5a3) i línia 1013 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: models/payment_token.py, línia 176 a 17.0 (d203ee6), línia 176 a 18.0 (e2ab18b), línia 176 a 19.0 (ce7f5a3) i línia 175 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: models/payment_token.py, línia 173 a 17.0 (d203ee6), línia 173 a 18.0 (e2ab18b), línia 173 a 19.0 (ce7f5a3) i línia 172 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, línia 1004 a 17.0 (d203ee6), línia 1004 a 18.0 (e2ab18b), línia 1004 a 19.0 (ce7f5a3) i línia 1019 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: models/payment_token.py, línia 170 a 17.0 (d203ee6), línia 170 a 18.0 (e2ab18b), línia 170 a 19.0 (ce7f5a3) i línia 169 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: models/payment_provider.py, línia 397 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: models/payment_provider.py, línia 462 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, línia 521 a 17.0 (d203ee6), línia 521 a 18.0 (e2ab18b), línia 521 a 19.0 (ce7f5a3) i línia 523 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: const.py, línia 158 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: models/payment_token.py, línia 77 a 17.0 (d203ee6), línia 77 a 18.0 (e2ab18b), línia 77 a 19.0 (ce7f5a3) i línia 76 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, línia 1157 a 17.0 (d203ee6), línia 1157 a 18.0 (e2ab18b), línia 1157 a 19.0 (ce7f5a3) i línia 1164 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: views/payment_token_views.xml, línia 15 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, línia 785 a 17.0 (d203ee6), línia 785 a 18.0 (e2ab18b), línia 785 a 19.0 (ce7f5a3) i línia 800 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: const.py, línia 117 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • 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
  • Codi del mòdul: flexigo_payment_gocardless: __manifest__.py, línia 31 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)