Salta al contingut principal
GoCardless API · invalid_api_usage · 401

GoCardless access_token_revoked: Odoo ja no pot parlar amb el teu compte

El token d'accés és la clau amb què Odoo parla amb el teu compte de GoCardless. Si es revoca o es desactiva, GoCardless rebutja cada petició i no es pot cobrar res. Amb la connexió en dos clics, GoCardless avisa i el connector ho deixa escrit; en el mode avançat, t'enters pel rebuig de la següent petició.

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

Què diu GoCardless

ReasonTipusText de GoCardless
access_token_revokedinvalid_api_usageToken has been revoked by the user.
access_token_not_activeinvalid_api_usageToken has been disabled.
unauthorizedinvalid_api_usageCredentials not recognised.

Per a Odoo els tres significen el mateix: la credencial amb què demana les coses ja no serveix. A la seva taula de codis HTTP, GoCardless reserva el 401 per a aquest cas: «Missing or invalid Authorization header, or the user has been disabled.». Són errors invalid_api_usage, els que vénen de com es fa la petició, i per a aquests GoCardless demana avisar l'equip tècnic («alert your dev team»).

Targeta de l'error access_token_revoked de GoCardless
Els tres reasons d'un token que ja no val, el seu tipus invalid_api_usage i el codi HTTP 401.

Quan deixa de valer el token

El connector es connecta a GoCardless de dues maneres, i el token mor de forma diferent a cadascuna:

  • «Connect my GoCardless account» és la connexió en dos clics, a través de FlexigoTech: una integració de partner. Segons la guia de partners de GoCardless, el comerç pot revocar aquest accés des del seu Dashboard («they can revoke your access from the GoCardless dashboard») o tancar el seu compte. Aleshores GoCardless envia un últim webhook i el token deixa de funcionar: «Your access token stops working, so you can't make any more API calls for that user.».
  • «Paste an access token (advanced)» és el mode en què crees tu el token al Dashboard de GoCardless i l'enganxes a Odoo. Si el revoques o el desactives allà, Odoo ho descobreix en la següent petició, quan GoCardless la rebutja.

Què fa Odoo amb el connector

Amb la connexió en dos clics, aquell últim webhook arriba sense id d'esdeveniment, com organisations · disconnected. El connector l'aplica així:

  1. Esborra el token i el secret del webhook, i la connexió del proveïdor passa a «Disconnected in GoCardless».
  2. Escriu al contacte de la teva empresa «GoCardless reports that the account was disconnected from Odoo on … (…). No collection can be taken until it is connected again.», amb la data i la causa que envia GoCardless.
  3. Crea l'activitat «GoCardless disconnected», perquè algú se n'assabenti sense obrir el proveïdor.

Des d'aquell moment el connector no torna a trucar a GoCardless amb aquest proveïdor: la tasca de cada hora se'l salta, i un cobrament amb el mètode de pagament guardat d'un client passa a «Error» amb «This provider is not connected to GoCardless any more: connect it again first.».

Sense aquest avís, el token continua guardat i GoCardless rebutja cada petició. En un cobrament, la transacció passa a «Error» amb «GoCardless rejected the request.» i, a sota, el missatge de GoCardless amb el reason (access_token_revoked, access_token_not_active o unauthorized) i el request_id entre claudàtors. La factura continua pendent de cobrament, i la tasca de cada hora no reenvia una transacció en error.

L'avís del contacte i l'activitat els escriu el connector sense ningú al davant, en aplicar el webhook. 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: «GoCardless reports that the account was disconnected from Odoo on … (…). No collection can be taken until it is connected again.» i «GoCardless disconnected». Els missatges d'un cobrament surten en l'idioma de qui el llança; si el llança una tasca programada, com la renovació d'una subscripció, segueixen la mateixa regla: «This provider is not connected to GoCardless any more: connect it again first.» i «GoCardless rejected the request.».

Esquema: què envia GoCardless quan el token deixa de valer 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. Obre la transacció des de la factura, amb el botó «Transacció de pagament» de dalt; el menú de transaccions només surt en mode desenvolupador, i a Odoo 20 no existeix. Si el missatge diu que el proveïdor ja no està connectat, o n'anomena un dels tres reasons, el problema és la connexió, no el client ni el seu mandat.
  2. Amb la connexió en dos clics, obre el proveïdor de pagament GoCardless i torna a connectar amb «Connect my GoCardless account».
  3. En el mode avançat, crea un token nou al Dashboard de GoCardless, enganxa'l a «GoCardless Access Token» i prem «Test connection». El connector demana a GoCardless el creditor del teu compte amb aquest token: si GoCardless el rebutja, veuràs el seu error en aquell moment i no en el següent cobrament.
  4. Amb la connexió de nou en marxa, torna a cobrar les factures que es van quedar sense cobrar. Les transaccions en error no es reenvien soles.
  5. Si necessites GoCardless, guarda el request_id del missatge: la seva documentació demana incloure'l en contactar amb el seu suport.

Per què el connector esborra el token en lloc de seguir intentant-ho?

Perquè GoCardless diu que aquell token ja no funciona. Així els cobraments següents expliquen què passa (que el proveïdor ja no està connectat) en lloc de rebre un rebuig rere un altre, i al contacte de l'empresa queda escrit quan i per què es va desconnectar.

Un token del sandbox serveix amb el compte de producció?

No. L'ajuda del camp del token ho diu: els tokens del sandbox comencen per sandbox_ i només funcionen amb l'API del sandbox. Per cobrar de debò cal un token de producció.

Amb el nostre connector

A Odoo 17, 18, 19 i 20 el connector no deixa que un token mort es converteixi en una cadena de cobraments fallits sense explicació: si GoCardless avisa de la desconnexió, ho diu a l'empresa i en una activitat, i si no avisa, cada rebuig porta el reason i el request_id de GoCardless.

Continua llegint

Webhook de GoCardless: 498 Token Invalid, 204 i la signatura Webhook-SignatureGoCardless demana 498 si la Webhook-Signature no quadra i 204 si no reconeix l'esdeveniment. Què respon Odoo 17, 18, 19 i 20 i per què a la 20 és un 401.GoCardless internal_server_error i request_timed_out: la fallada és a GoCardlessGoCardless respon 500 internal_server_error o 504 request_timed_out quan falla pel seu costat. Què fa el connector a Odoo i com no cobrar dues vegades.GoCardless 429 rate_limit_exceeded: massa peticions per minutGoCardless respon 429 rate_limit_exceeded en superar les 1.600 peticions per minut. Com espera i repeteix el connector i què fer si torna a fallar.
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/partner-integrations/connect-your-merchants
  • docs.gocardless.com/docs/partner-integrations/webhooks-for-partners
  • Codi del mòdul: flexigo_payment_gocardless: models/payment_provider.py, línia 71 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 143 a 17.0 (d203ee6), línia 143 a 18.0 (e2ab18b), línia 143 a 19.0 (ce7f5a3) i línia 145 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, línia 888 a 17.0 (d203ee6), línia 888 a 18.0 (e2ab18b), línia 888 a 19.0 (ce7f5a3) i línia 903 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: models/payment_provider.py, línia 1237 a 17.0 (d203ee6), línia 1237 a 18.0 (e2ab18b), línia 1237 a 19.0 (ce7f5a3) i línia 1234 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: models/payment_provider.py, línia 1241 a 17.0 (d203ee6), línia 1241 a 18.0 (e2ab18b), línia 1241 a 19.0 (ce7f5a3) i línia 1238 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, línia 265 a 17.0 (d203ee6), línia 265 a 18.0 (e2ab18b), línia 265 a 19.0 (ce7f5a3) i línia 267 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, línia 545 a 17.0 (d203ee6), línia 545 a 18.0 (e2ab18b), línia 545 a 19.0 (ce7f5a3) i línia 547 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, línia 456 a 17.0 (d203ee6), línia 456 a 18.0 (e2ab18b), línia 456 a 19.0 (ce7f5a3) i línia 458 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: models/payment_provider.py, línia 732 a 17.0 (d203ee6), línia 732 a 18.0 (e2ab18b), línia 732 a 19.0 (ce7f5a3) i línia 734 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: models/payment_provider.py, línia 336 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 1740 a 17.0 (d203ee6), línia 1740 a 18.0 (e2ab18b), línia 1740 a 19.0 (ce7f5a3) i línia 1745 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: models/payment_transaction.py, línia 281 a 17.0 (d203ee6), línia 281 a 18.0 (e2ab18b), línia 281 a 19.0 (ce7f5a3) i línia 292 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: models/payment_transaction.py, línia 247 a 17.0 (d203ee6), línia 247 a 18.0 (e2ab18b), línia 247 a 19.0 (ce7f5a3) i línia 258 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: models/payment_provider.py, línia 623 a 17.0 (d203ee6), línia 623 a 18.0 (e2ab18b), línia 623 a 19.0 (ce7f5a3) i línia 625 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: models/payment_provider.py, línia 742 a 17.0 (d203ee6), línia 742 a 18.0 (e2ab18b), línia 742 a 19.0 (ce7f5a3) i línia 744 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, línia 1100 a 17.0 (d203ee6), línia 1100 a 18.0 (e2ab18b), línia 1100 a 19.0 (ce7f5a3) i línia 1107 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, línia 346 a 17.0 (d203ee6), línia 346 a 18.0 (e2ab18b), línia 346 a 19.0 (ce7f5a3) i línia 348 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, línia 1167 a 17.0 (d203ee6), línia 1167 a 18.0 (e2ab18b), línia 1167 a 19.0 (ce7f5a3) i línia 1174 a 20.0 (688d86b)
  • github.com/odoo/odoo/blob/20.0/addons/payment/i18n/ca.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
  • 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)