Naar hoofdinhoud
GoCardless API · invalid_api_usage · 401

GoCardless access_token_revoked: Odoo kan niet meer met je account praten

Het toegangstoken is de sleutel waarmee Odoo met je GoCardless-account praat. Wordt het ingetrokken of gedeactiveerd, dan wijst GoCardless elk verzoek af en kun je niets meer incasseren. Met de verbinding in twee klikken meldt GoCardless de afkoppeling en schrijft de connector die vast; in de geavanceerde modus merk je het pas bij de afwijzing van het volgende verzoek.

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

Wat GoCardless zegt

ReasonTipoTexto 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.

Voor Odoo betekenen de drie hetzelfde: de referentie waarmee het verzoeken doet, werkt niet meer. In hun tabel met HTTP-codes reserveert GoCardless de 401 voor dat geval: "Missing or invalid Authorization header, or the user has been disabled.". Het zijn invalid_api_usage-fouten, die komen door de manier waarop het verzoek is gedaan, en voor die fouten vraagt GoCardless om het technische team te waarschuwen ("alert your dev team").

Kaart van de fout access_token_revoked van GoCardless
De drie reasons van een token dat niet meer werkt, hun type invalid_api_usage en de HTTP-code 401.

Wanneer het token ophoudt te werken

De connector verbindt op twee manieren met GoCardless, en het token sterft op een andere manier in elk geval:

  • "Connect my GoCardless account" is de verbinding in twee klikken, via FlexigoTech: een partnerintegratie. Volgens de partnergids van GoCardless kan de handelaar die toegang intrekken via zijn Dashboard ("they can revoke your access from the GoCardless dashboard") of zijn account sluiten. Dan stuurt GoCardless een laatste webhook en werkt het token niet meer: "Your access token stops working, so you can't make any more API calls for that user.".
  • "Paste an access token (advanced)" is de modus waarin jij het token aanmaakt in het Dashboard van GoCardless en het in Odoo plakt. Als je het daar intrekt of deactiveert, ontdekt Odoo dat bij het volgende verzoek, wanneer GoCardless het afwijst.

Wat Odoo met de connector doet

Bij de verbinding in twee klikken komt die laatste webhook zonder event-id, als organisations · disconnected. De connector verwerkt hem zo:

  1. Hij wist het token en het geheim van de webhook, en de verbinding van de provider wordt "Disconnected in GoCardless".
  2. Hij schrijft op het contact van je bedrijf "GoCardless reports that the account was disconnected from Odoo on … (…). No collection can be taken until it is connected again.", met de datum en de oorzaak die GoCardless meldt.
  3. Hij maakt de activiteit "GoCardless disconnected", zodat iemand het ziet zonder de provider te openen.

Vanaf dat moment roept de connector GoCardless met die provider niet meer aan: de taak van elk uur slaat hem over, en een incasso met de opgeslagen betaalmethode van een klant krijgt de status "Fout" met "This provider is not connected to GoCardless any more: connect it again first.".

Zonder die melding blijft het token opgeslagen en wijst GoCardless elk verzoek af. Bij een incasso krijgt de transactie de status "Fout" met "GoCardless rejected the request." en daaronder het bericht van GoCardless met de reason (access_token_revoked, access_token_not_active of unauthorized) en de request_id tussen vierkante haken. De factuur blijft openstaan voor incasso, en de taak van elk uur stuurt een transactie in fout niet opnieuw.

De melding op het contact en de activiteit schrijft de connector zonder dat iemand erbij is, bij het verwerken van de webhook. 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: "GoCardless reports that the account was disconnected from Odoo on … (…). No collection can be taken until it is connected again." en "GoCardless disconnected". De berichten van een incasso verschijnen in de taal van wie hem start; start een geplande actie hem, zoals de verlenging van een abonnement, dan geldt dezelfde regel: "This provider is not connected to GoCardless any more: connect it again first." en "GoCardless rejected the request.".

Schema: wat GoCardless stuurt wanneer het token ophoudt te werken 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 te doen

  1. Open de transactie vanaf de factuur, via de knop "Betalingstransactie" bovenaan; het menu met transacties verschijnt alleen in de ontwikkelaarsmodus, en in Odoo 20 bestaat het niet. Als het bericht zegt dat de provider niet meer verbonden is, of een van de drie reasons noemt, ligt het probleem bij de verbinding, niet bij de klant of zijn mandaat.
  2. Bij de verbinding in twee klikken open je de betaalprovider GoCardless en verbind je opnieuw met "Connect my GoCardless account".
  3. In de geavanceerde modus maak je een nieuw token aan in het Dashboard van GoCardless, plak je het in "GoCardless Access Token" en klik je op "Test connection". De connector vraagt met dat token de schuldeiser van je account op: als GoCardless het afwijst, zie je de fout op dat moment en niet pas bij de volgende incasso.
  4. Als de verbinding weer werkt, incasseer je de facturen die openstaan opnieuw. Transacties in fout worden niet vanzelf opnieuw verstuurd.
  5. Heb je GoCardless nodig, bewaar dan de request_id uit het bericht: hun documentatie vraagt om die bij contact met hun support te vermelden.

Waarom verwijdert de connector het token in plaats van het te blijven proberen?

Omdat GoCardless zegt dat dat token niet meer werkt. Zo leggen de volgende incasso's uit wat er aan de hand is (dat de provider niet meer verbonden is), in plaats van de ene afwijzing na de andere te krijgen, en op het contact van het bedrijf staat geschreven wanneer en waarom het is losgekoppeld.

Werkt een token van de sandbox met het productieaccount?

Nee. De help van het tokenveld zegt het: sandboxtokens beginnen met sandbox_ en werken alleen met de sandbox-API. Om echt te incasseren heb je een productietoken nodig.

Met onze connector

In Odoo 17, 18, 19 en 20 laat de connector niet toe dat een dood token overgaat in een reeks mislukte incasso's zonder uitleg: als GoCardless de afkoppeling meldt, zegt de connector dat op het bedrijf en in een activiteit, en als GoCardless dat niet meldt, bevat elke afwijzing de reason en de request_id van GoCardless.

Lees verder

GoCardless-webhook: 498 Token Invalid, 204 en de Webhook-Signature-handtekeningGoCardless vraagt 498 als de Webhook-Signature niet klopt en 204 bij een onbekend event. Wat Odoo 17, 18, 19 en 20 antwoordt en waarom het in 20 een 401 is.GoCardless internal_server_error en request_timed_out: de fout zit bij GoCardlessGoCardless antwoordt met 500 internal_server_error of 504 request_timed_out als het misgaat aan hun kant. Wat de connector doet en hoe u niet dubbel int.GoCardless 429 rate_limit_exceeded: te veel verzoeken per minuutGoCardless antwoordt met 429 rate_limit_exceeded bij meer dan 1.600 verzoeken per minuut. Zo wacht en herhaalt de connector, en wat je doet bij een nieuwe fout.
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/partner-integrations/connect-your-merchants
  • docs.gocardless.com/docs/partner-integrations/webhooks-for-partners
  • Broncode van de module: flexigo_payment_gocardless: models/payment_provider.py, regel 71 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 143 in 17.0 (d203ee6), regel 143 in 18.0 (e2ab18b), regel 143 in 19.0 (ce7f5a3) en regel 145 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, regel 888 in 17.0 (d203ee6), regel 888 in 18.0 (e2ab18b), regel 888 in 19.0 (ce7f5a3) en regel 903 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_provider.py, regel 1237 in 17.0 (d203ee6), regel 1237 in 18.0 (e2ab18b), regel 1237 in 19.0 (ce7f5a3) en regel 1234 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_provider.py, regel 1241 in 17.0 (d203ee6), regel 1241 in 18.0 (e2ab18b), regel 1241 in 19.0 (ce7f5a3) en regel 1238 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, regel 265 in 17.0 (d203ee6), regel 265 in 18.0 (e2ab18b), regel 265 in 19.0 (ce7f5a3) en regel 267 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, regel 545 in 17.0 (d203ee6), regel 545 in 18.0 (e2ab18b), regel 545 in 19.0 (ce7f5a3) en regel 547 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, regel 456 in 17.0 (d203ee6), regel 456 in 18.0 (e2ab18b), regel 456 in 19.0 (ce7f5a3) en regel 458 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_provider.py, regel 732 in 17.0 (d203ee6), regel 732 in 18.0 (e2ab18b), regel 732 in 19.0 (ce7f5a3) en regel 734 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_provider.py, regel 336 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 1740 in 17.0 (d203ee6), regel 1740 in 18.0 (e2ab18b), regel 1740 in 19.0 (ce7f5a3) en regel 1745 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: 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_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)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_provider.py, regel 623 in 17.0 (d203ee6), regel 623 in 18.0 (e2ab18b), regel 623 in 19.0 (ce7f5a3) en regel 625 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: models/payment_provider.py, regel 742 in 17.0 (d203ee6), regel 742 in 18.0 (e2ab18b), regel 742 in 19.0 (ce7f5a3) en regel 744 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, regel 1100 in 17.0 (d203ee6), regel 1100 in 18.0 (e2ab18b), regel 1100 in 19.0 (ce7f5a3) en regel 1107 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, regel 346 in 17.0 (d203ee6), regel 346 in 18.0 (e2ab18b), regel 346 in 19.0 (ce7f5a3) en regel 348 in 20.0 (688d86b)
  • Broncode van de module: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, regel 1167 in 17.0 (d203ee6), regel 1167 in 18.0 (e2ab18b), regel 1167 in 19.0 (ce7f5a3) en regel 1174 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)