Vai al contenuto principale
GoCardless API · invalid_api_usage · 401

GoCardless access_token_revoked: Odoo non riesce più a parlare con il tuo account

Il token di accesso è la chiave con cui Odoo dialoga con il tuo account GoCardless. Se viene revocato o disattivato, GoCardless rifiuta ogni richiesta e non è possibile incassare nulla. Con la connessione in due clic, GoCardless avvisa e il connettore lo registra; in modalità avanzata te ne accorgi dal rifiuto della richiesta successiva.

FlexigoTech · Responsabile: Víctor Gómez · Aggiornato il 6 novembre 2026

In breve

Versioni
Odoo 17, 18, 19 e 20
Verificato
nel codice del connettore, versione 17.0, 18.0, 19.0 e 20.0 · nelle fonti collegate in fondo
Lettura
4 min

Cosa dice GoCardless

ReasonTipoTesto di 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 Odoo i tre significano la stessa cosa: la credenziale con cui chiede le cose non è più valida. Nella sua tabella dei codici HTTP, GoCardless riserva il 401 a questo caso: «Missing or invalid Authorization header, or the user has been disabled.». Sono errori invalid_api_usage, quelli che dipendono da come viene fatta la richiesta, e per questi GoCardless chiede di avvisare il team tecnico («alert your dev team»).

Scheda dell'errore access_token_revoked di GoCardless
I tre reason di un token non più valido, il loro tipo invalid_api_usage e il codice HTTP 401.

Quando il token smette di funzionare

Il connettore si collega a GoCardless in due modi, e il token termina in modo diverso in ciascuno:

  • «Connect my GoCardless account» è la connessione in due clic, tramite FlexigoTech: un'integrazione di partner. Secondo la guida per i partner di GoCardless, il commerciante può revocare quell'accesso dalla sua Dashboard («they can revoke your access from the GoCardless dashboard») oppure chiudere il proprio account. A quel punto GoCardless invia un ultimo webhook e il token smette di funzionare: «Your access token stops working, so you can't make any more API calls for that user.».
  • «Paste an access token (advanced)» è la modalità in cui crei tu il token nella Dashboard di GoCardless e lo incolli in Odoo. Se lo revochi o lo disattivi lì, Odoo se ne accorge alla richiesta successiva, quando GoCardless la rifiuta.

Cosa fa Odoo con il connettore

Con la connessione in due clic, quell'ultimo webhook arriva senza id evento, come organisations · disconnected. Il connettore lo applica così:

  1. Cancella il token e il segreto del webhook, e la connessione del provider passa a «Disconnected in GoCardless».
  2. Scrive nel contatto della tua azienda «GoCardless reports that the account was disconnected from Odoo on … (…). No collection can be taken until it is connected again.», con la data e la causa comunicate da GoCardless.
  3. Crea l'attività «GoCardless disconnected», perché qualcuno se ne accorga senza aprire il provider.

Da quel momento il connettore non richiama più GoCardless con quel provider: l'attività pianificata oraria lo salta, e un incasso con il metodo di pagamento salvato di un cliente passa a «Errore» con «This provider is not connected to GoCardless any more: connect it again first.».

Senza quell'avviso, il token resta salvato e GoCardless rifiuta ogni richiesta. In un incasso, la transazione passa a «Errore» con «GoCardless rejected the request.» e, sotto, il messaggio di GoCardless con il reason (access_token_revoked, access_token_not_active o unauthorized) e il request_id tra parentesi quadre. La fattura resta da incassare, e l'attività oraria non ritenta una transazione in errore.

Il connettore non è tradotto in italiano: questi testi compaiono sempre in inglese, anche in un Odoo in italiano, sia che li avvii un utente sia un'azione pianificata. L'avviso sul contatto e l'attività li scrive il connettore senza nessuno davanti, all'applicazione del webhook: «GoCardless reports that the account was disconnected from Odoo on … (…). No collection can be taken until it is connected again.» e «GoCardless disconnected». I messaggi di un incasso seguono la stessa regola; se lo avvia un'azione pianificata, come il rinnovo di un abbonamento: «This provider is not connected to GoCardless any more: connect it again first.» e «GoCardless rejected the request.».

Schema: cosa invia GoCardless quando il token smette di funzionare e cosa fa Odoo con il connettore
Schema realizzato a partire dal codice del connettore (17.0, 18.0, 19.0 e 20.0) e dalla documentazione di GoCardless.

Cosa fare

  1. Apri la transazione dalla fattura, con il pulsante «Transazione di pagamento» in alto; il menu delle transazioni compare solo in modalità sviluppatore e in Odoo 20 non esiste. Se il messaggio dice che il provider non è più connesso, o cita uno dei tre reason, il problema è la connessione, non il cliente né il suo mandato.
  2. Con la connessione in due clic, apri il provider di pagamento GoCardless e riconnetti con «Connect my GoCardless account».
  3. In modalità avanzata, crea un nuovo token nella Dashboard di GoCardless, incollalo in «GoCardless Access Token» e premi «Test connection». Il connettore chiede a GoCardless il creditore del tuo account con quel token: se GoCardless lo rifiuta, vedrai il suo errore in quel momento e non all'incasso successivo.
  4. Con la connessione di nuovo attiva, incassa di nuovo le fatture rimaste scoperte. Le transazioni in errore non vengono reinviate da sole.
  5. Se ti serve GoCardless, conserva il request_id del messaggio: la sua documentazione chiede di indicarlo quando si contatta il supporto.

Perché il connettore cancella il token invece di continuare a riprovare?

Perché GoCardless dice che quel token non funziona più. Così gli incassi successivi spiegano cosa succede (che il provider non è più connesso) invece di ricevere un rifiuto dopo l'altro, e nel contatto dell'azienda resta scritto quando e perché è stato disconnesso.

Un token del sandbox funziona con l'account di produzione?

No. L'aiuto del campo del token lo dice: i token del sandbox iniziano con sandbox_ e funzionano solo con l'API del sandbox. Per incassare davvero serve un token di produzione.

Con il nostro connettore

In Odoo 17, 18, 19 e 20 il connettore non permette che un token non più valido si trasformi in una catena di incassi falliti senza spiegazioni: se GoCardless segnala la disconnessione, lo dice nell'azienda e in un'attività, e se non la segnala, ogni rifiuto riporta il reason e il request_id di GoCardless.

Continua a leggere

Webhook di GoCardless: 498 Token Invalid, 204 e la firma Webhook-SignatureGoCardless risponde 498 se la firma Webhook-Signature non torna e 204 se non riconosce l'evento. Cosa risponde Odoo 17, 18, 19 e 20 e perché in 20 è un 401.GoCardless internal_server_error e request_timed_out: il guasto è di GoCardlessGoCardless risponde 500 internal_server_error o 504 request_timed_out se il guasto è suo. Cosa fa il connettore in Odoo e come non incassare due volte.GoCardless 429 rate_limit_exceeded: troppe richieste al minutoGoCardless risponde 429 rate_limit_exceeded oltre 1.600 richieste al minuto. Come il connettore attende e ripete la richiesta e cosa fare se si ripresenta.
Verificato nel codice del connettore (versione 17.0, 18.0, 19.0 e 20.0) e nelle fonti collegate

Fonti

  • 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
  • Codice del modulo: flexigo_payment_gocardless: models/payment_provider.py, riga 71 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, riga 143 in 17.0 (d203ee6), riga 143 in 18.0 (e2ab18b), riga 143 in 19.0 (ce7f5a3) e riga 145 in 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, riga 888 in 17.0 (d203ee6), riga 888 in 18.0 (e2ab18b), riga 888 in 19.0 (ce7f5a3) e riga 903 in 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: models/payment_provider.py, riga 1237 in 17.0 (d203ee6), riga 1237 in 18.0 (e2ab18b), riga 1237 in 19.0 (ce7f5a3) e riga 1234 in 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: models/payment_provider.py, riga 1241 in 17.0 (d203ee6), riga 1241 in 18.0 (e2ab18b), riga 1241 in 19.0 (ce7f5a3) e riga 1238 in 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, riga 265 in 17.0 (d203ee6), riga 265 in 18.0 (e2ab18b), riga 265 in 19.0 (ce7f5a3) e riga 267 in 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, riga 545 in 17.0 (d203ee6), riga 545 in 18.0 (e2ab18b), riga 545 in 19.0 (ce7f5a3) e riga 547 in 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, riga 456 in 17.0 (d203ee6), riga 456 in 18.0 (e2ab18b), riga 456 in 19.0 (ce7f5a3) e riga 458 in 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: models/payment_provider.py, riga 732 in 17.0 (d203ee6), riga 732 in 18.0 (e2ab18b), riga 732 in 19.0 (ce7f5a3) e riga 734 in 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: models/payment_provider.py, riga 336 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, riga 1740 in 17.0 (d203ee6), riga 1740 in 18.0 (e2ab18b), riga 1740 in 19.0 (ce7f5a3) e riga 1745 in 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: models/payment_provider.py, riga 397 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: models/payment_provider.py, riga 462 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, riga 521 in 17.0 (d203ee6), riga 521 in 18.0 (e2ab18b), riga 521 in 19.0 (ce7f5a3) e riga 523 in 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: models/payment_transaction.py, riga 281 in 17.0 (d203ee6), riga 281 in 18.0 (e2ab18b), riga 281 in 19.0 (ce7f5a3) e riga 292 in 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: models/payment_transaction.py, riga 247 in 17.0 (d203ee6), riga 247 in 18.0 (e2ab18b), riga 247 in 19.0 (ce7f5a3) e riga 258 in 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: models/payment_provider.py, riga 623 in 17.0 (d203ee6), riga 623 in 18.0 (e2ab18b), riga 623 in 19.0 (ce7f5a3) e riga 625 in 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: models/payment_provider.py, riga 742 in 17.0 (d203ee6), riga 742 in 18.0 (e2ab18b), riga 742 in 19.0 (ce7f5a3) e riga 744 in 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, riga 1100 in 17.0 (d203ee6), riga 1100 in 18.0 (e2ab18b), riga 1100 in 19.0 (ce7f5a3) e riga 1107 in 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, riga 346 in 17.0 (d203ee6), riga 346 in 18.0 (e2ab18b), riga 346 in 19.0 (ce7f5a3) e riga 348 in 20.0 (688d86b)
  • Codice del modulo: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, riga 1167 in 17.0 (d203ee6), riga 1167 in 18.0 (e2ab18b), riga 1167 in 19.0 (ce7f5a3) e riga 1174 in 20.0 (688d86b)
  • github.com/odoo/odoo/blob/20.0/addons/payment/i18n/it.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
  • Codice del modulo: flexigo_payment_gocardless: __manifest__.py, riga 31 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)