Saltar para o conteúdo principal
GoCardless · mandatos · expired

GoCardless mandate_expired: o mandato caducou por não ser usado

Um mandato da GoCardless não fica ativo para sempre se não for usado. Quando passa o período de inatividade sem nenhuma tentativa de cobrança, a GoCardless marca-o como expired e deixa de permitir cobrar com ele. Comunica-o num evento do mandato e, se ainda houvesse uma cobrança por apresentar, também no evento do pagamento, que fica cancelado.

FlexigoTech · Responsável: Víctor Gómez · Atualizado em 6 de novembro de 2026

O essencial

Módulo
GoCardless
Versões
Odoo 17, 18, 19 e 20
Verificado
no código do conector, versão 17.0, 18.0, 19.0 e 20.0 · nas fontes indicadas no fim
Leitura
4 min

O que diz a GoCardless

EventoCausaTexto da GoCardless
mandates · expiredmandate_expiredThe mandate is being marked as expired, because no payments have been collected against it for the dormancy period of your service user number. If you have access to the mandate reinstation API endpoint, you can use this to attempt to set this mandate up again.
payments · cancelledmandate_expiredThe mandate expired before the payment could be collected.

A descrição do evento deixa-o claro: «No collection attempts were made against the mandate within the dormancy period of your service user number.». E a consequência: «As a result it has expired, and no further collections can be taken against it.». O estado do mandato passa a expired, que a GoCardless define como caducado por inatividade.

Cartão da causa mandate_expired da GoCardless
A causa, o evento do mandato caducado, o pagamento cancelado e o texto da GoCardless.

Quando aparece

Acontece a um mandato que foi assinado e depois deixou de ser usado: um cliente que já não compra, ou um a quem se cobra tão de tempos a tempos que entre uma cobrança e a seguinte passa todo o período de inatividade. Conta o tempo sem tentativas de cobrança, não a data da assinatura.

Se, quando caducou, havia uma cobrança à espera de ser apresentada, a GoCardless cancela-a com a mesma causa: «The mandate expired before the payment could be collected.».

O que faz o Odoo com o conector

  • O evento do mandato caducado retira-o. O conector dá por morto um mandato expired: arquiva o método de pagamento do cliente, escreve na sua ficha que o mandato já não pode ser usado e cria a atividade «Mandato da GoCardless perdido». Só o faz da primeira vez; se outro evento trouxer a mesma notícia, já o encontra arquivado.
  • O pagamento cancelado passa a «Erro» a sua transação, que se abre a partir da fatura com o botão «Transação de Pagamento» no topo, com «A GoCardless não conseguiu cobrar este pagamento (mandate_expired).». Se a fatura já estava paga com essa cobrança, anula o pagamento e a fatura volta a ficar pendente. E como mandate_expired é uma das causas com que o conector arquiva o mandato, esse evento também o retira, como expired.
  • Na ficha do método de pagamento, «Estado do mandato» indica expired.

Estes textos são escritos pelo conector ao aplicar o evento, sem ninguém à frente. Numa base de dados criada em português saem assim; numa criada em inglês e passada depois para português, em inglês: «The GoCardless direct debit mandate of … is no longer usable (mandate_expired). No further collection can be taken against it. Ask the customer to set up a new mandate.», «GoCardless mandate lost» e «GoCardless could not collect this payment (mandate_expired).».

Se o Odoo tentar cobrar com o mandato antes de se aperceber, porque o evento se perdeu pelo caminho, a GoCardless responde mandate_is_inactive. O conector consulta então o mandato, arquiva-o e põe na transação a sua própria mensagem: «O mandato GoCardless do cliente está no estado expired, pelo que não pode ser cobrado. Peça ao cliente um novo mandato.». A tarefa que de hora a hora recupera os eventos perdidos acaba por trazer também o evento do mandato.

Esquema: o que a GoCardless envia com mandate_expired e o que o Odoo faz com o conector
Esquema feito a partir do código do conector (17.0, 18.0, 19.0 e 20.0) e da documentação da GoCardless.

Reativar ou pedir outro?

A GoCardless deixa dois caminhos. Para continuar a cobrar a esse cliente, diz, é preciso pedir-lhe autorização e usar a reativação do mandato («you should request their permission and use the reinstate endpoint»). Mas esse endpoint é restrito: exige páginas de pagamento próprias aprovadas pela GoCardless («Restricted this endpoint requires approved custom payment pages»).

O conector não reativa mandatos em produção: o botão «Reativar mandato (sandbox)» da ficha do método de pagamento só aparece com o fornecedor em testes e com o mandato cancelado, falhado ou caducado. Em produção, o caminho é um mandato novo.

O que fazer

  1. Fale com o cliente: se continuar a ser cliente, peça-lhe que assine um novo mandato. No Odoo será um novo método de pagamento.
  2. Cobre com ele as faturas pendentes. As cobranças que a GoCardless cancelou por causa da caducidade não se apresentarão sozinhas.
  3. Se um cliente é cobrado muito de tempos a tempos, conte com que o seu mandato possa caducar entre uma cobrança e outra.

Posso cobrar com um mandato caducado se o cliente concordar?

Com esse mandato, não: a GoCardless não permite criar cobranças com ele. É preciso um novo ou, onde for possível, a reativação feita pela GoCardless.

Pode-se testar a reativação?

Sim, no sandbox da GoCardless. Com o fornecedor em testes, a ficha do método de pagamento mostra «Reativar mandato (sandbox)» quando o mandato está caducado.

Com o nosso conector

No Odoo 17, 18, 19 e 20 o conector retira o mandato caducado assim que a GoCardless o comunica, deixa a cobrança cancelada em erro com a sua causa e avisa na ficha do cliente, para pedir um novo mandato antes da próxima fatura.

Continue a ler

GoCardless mandate_not_inactive: o mandato não pode ser reativadoA GoCardless devolve mandate_not_inactive ao reativar um mandato ativo ou já em apresentação. Quando se pode reativar e o que o Odoo faz com o conector.Erro mandate_is_inactive da GoCardless ao criar uma cobrança a partir do OdooA GoCardless responde mandate_is_inactive ao criar um pagamento com um mandato cancelado, falhado ou expirado. Porquê e como o conector o resolve no Odoo.GoCardless MD01: mandate_cancelled e authorisation_disputed num débito SEPAO código SEPA MD01 chega na GoCardless como mandate_cancelled ou authorisation_disputed, num débito falhado, devolvido ou cancelado. O que o Odoo faz com ele.
Verificado no código do conector (versão 17.0, 18.0, 19.0 e 20.0) e nas fontes indicadas

Fontes

  • docs.gocardless.com/docs/api-reference/events/mandate
  • docs.gocardless.com/docs/api-reference/events/payment
  • docs.gocardless.com/docs/api-reference/mandate
  • Código do módulo: flexigo_payment_gocardless: const.py, linha 33 em 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
  • Código do módulo: flexigo_payment_gocardless: models/payment_token.py, linha 83 em 17.0 (d203ee6), linha 83 em 18.0 (e2ab18b), linha 83 em 19.0 (ce7f5a3) e linha 82 em 20.0 (688d86b)
  • Código do módulo: flexigo_payment_gocardless: models/payment_token.py, linha 131 em 17.0 (d203ee6), linha 131 em 18.0 (e2ab18b), linha 131 em 19.0 (ce7f5a3) e linha 130 em 20.0 (688d86b)
  • Código do módulo: flexigo_payment_gocardless: i18n/pt.po, linha 1244 em 17.0 (d203ee6), linha 1244 em 18.0 (e2ab18b), linha 1244 em 19.0 (ce7f5a3) e linha 1256 em 20.0 (688d86b)
  • Código do módulo: flexigo_payment_gocardless: i18n/pt.po, linha 525 em 17.0 (d203ee6), linha 525 em 18.0 (e2ab18b), linha 525 em 19.0 (ce7f5a3) e linha 531 em 20.0 (688d86b)
  • Código do módulo: flexigo_payment_gocardless: const.py, linha 76 em 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
  • Código do módulo: flexigo_payment_gocardless: models/payment_transaction.py, linha 914 em 17.0 (d203ee6), linha 914 em 18.0 (e2ab18b), linha 913 em 19.0 (ce7f5a3) e linha 937 em 20.0 (688d86b)
  • Código do módulo: flexigo_payment_gocardless: models/payment_transaction.py, linha 725 em 17.0 (d203ee6), linha 725 em 18.0 (e2ab18b), linha 724 em 19.0 (ce7f5a3) e linha 748 em 20.0 (688d86b)
  • Código do módulo: flexigo_payment_gocardless: models/payment_transaction.py, linha 754 em 17.0 (d203ee6), linha 754 em 18.0 (e2ab18b), linha 753 em 19.0 (ce7f5a3) e linha 777 em 20.0 (688d86b)
  • Código do módulo: flexigo_payment_gocardless: i18n/pt.po, linha 462 em 17.0 (d203ee6), linha 462 em 18.0 (e2ab18b), linha 462 em 19.0 (ce7f5a3) e linha 468 em 20.0 (688d86b)
  • Código do módulo: flexigo_payment_gocardless: models/payment_transaction.py, linha 278 em 17.0 (d203ee6), linha 278 em 18.0 (e2ab18b), linha 278 em 19.0 (ce7f5a3) e linha 289 em 20.0 (688d86b)
  • Código do módulo: flexigo_payment_gocardless: models/payment_transaction.py, linha 321 em 17.0 (d203ee6), linha 321 em 18.0 (e2ab18b), linha 321 em 19.0 (ce7f5a3) e linha 332 em 20.0 (688d86b)
  • docs.gocardless.com/docs/api-reference/responses-and-errors
  • Código do módulo: flexigo_payment_gocardless: i18n/pt.po, linha 1346 em 17.0 (d203ee6), linha 1346 em 18.0 (e2ab18b), linha 1346 em 19.0 (ce7f5a3) e linha 1358 em 20.0 (688d86b)
  • Código do módulo: flexigo_payment_gocardless: views/payment_token_views.xml, linha 15 em 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
  • Código do módulo: flexigo_payment_gocardless: i18n/pt.po, linha 847 em 17.0 (d203ee6), linha 847 em 18.0 (e2ab18b), linha 847 em 19.0 (ce7f5a3) e linha 869 em 20.0 (688d86b)
  • Código do módulo: flexigo_payment_gocardless: views/payment_token_views.xml, linha 23 em 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
  • Código do módulo: flexigo_payment_gocardless: i18n/pt.po, linha 1071 em 17.0 (d203ee6), linha 1071 em 18.0 (e2ab18b), linha 1071 em 19.0 (ce7f5a3) e linha 1093 em 20.0 (688d86b)
  • Código do módulo: flexigo_payment_gocardless: models/payment_token.py, linha 162 em 17.0 (d203ee6), linha 162 em 18.0 (e2ab18b), linha 162 em 19.0 (ce7f5a3) e linha 161 em 20.0 (688d86b)
  • Código do módulo: flexigo_payment_gocardless: const.py, linha 117 em 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
  • github.com/odoo/odoo/blob/17.0/odoo/http.py
  • github.com/odoo/odoo/blob/20.0/addons/payment/i18n/pt.po
  • github.com/odoo/odoo/blob/20.0/addons/account_payment/views/account_move_views.xml
  • Código do módulo: flexigo_payment_gocardless: __manifest__.py, linha 31 em 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)