Saltar para o conteúdo principal
GoCardless · SEPA Core · pagamento falhado e mandato cancelado

GoCardless bank_account_closed: AC04 e MD07, a conta já não existe

bank_account_closed é uma falha sem retorno: a conta em que o cliente assinou o mandato está encerrada, ou o seu titular faleceu. A GoCardless comunica-o no pagamento que falha e no mandato, que fica cancelado. Nenhuma nova tentativa o resolve.

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

EventoCódigo SEPA CoreTexto da GoCardless
payments · failedAC04The bank account for this payment has been closed. The mandate will also be cancelled.
payments · failedMD07This payment failed because the customer is deceased.
mandates · cancelledAC04The bank account for this mandate has been closed. Any subscriptions and pending payment will also be cancelled.
mandates · cancelledMD07This mandate has been cancelled because the customer is deceased.

A causa é a mesma nas quatro linhas, bank_account_closed; o código distingue o motivo. Repare na terceira: para além do mandato, a GoCardless cancela os pagamentos pendentes desse mandato, que lhe chegarão como pagamentos cancelados com a mesma causa.

Cartão da causa bank_account_closed da GoCardless
A causa, os seus códigos AC04 e MD07 e o texto da GoCardless para AC04.

Dois eventos para um mesmo facto

Um encerramento de conta chega ao Odoo duas vezes: com o pagamento que falha e com o mandato que se cancela. O conector trata os dois: o primeiro que chega arquiva o mandato e avisa, e o segundo já o encontra arquivado, sem repetir o aviso. Se algum não chegar pelo webhook, a tarefa que de hora a hora pede à GoCardless os eventos perdidos recupera-o, até 100 por passagem.

O que faz o conector

  1. Passa a transação para erro com «A GoCardless não conseguiu cobrar este pagamento (bank_account_closed).» e guarda a causa.
  2. Se a fatura já estava paga com essa cobrança, anula o pagamento no Odoo e a fatura volta a ficar pendente.
  3. Arquiva o método de pagamento do cliente: bank_account_closed é uma das quatro causas com as quais o conector dá o mandato por morto, juntamente com mandate_cancelled, mandate_expired e authorisation_disputed.
  4. Escreve-o na ficha do cliente: «O mandato de débito direto GoCardless de … já não pode ser usado (bank_account_closed). Não é possível cobrar mais nada com ele. Peça ao cliente que crie um novo mandato.»
  5. Cria uma atividade «Mandato da GoCardless perdido» para que alguém trate do assunto antes da próxima fatura.

O mandato arquivado fica no Odoo como histórico, mas já não é oferecido para cobrança. A transação abre-se a partir da fatura, com o botão «Transação de Pagamento» no topo; o menu de transações só aparece em modo de programador, e no Odoo 20 não existe.

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

Como saber se é AC04 ou MD07

No Odoo não se distingue. A causa é a mesma, o conector guarda a causa e não o código SEPA, e a nota do cliente e a atividade dizem o mesmo nos dois casos. O código vê-o na GoCardless. Segundo o seu centro de ajuda, o motivo de cada falha aparece na cronologia do pagamento, no Dashboard («You are able to view the reason for a payment failure in the status timeline of the payment in your GoCardless dashboard.»). No modo avançado, o código exato também vem no evento (details.reason_code), e o Dashboard guarda os envios dos últimos 3 meses em Developers > Webhooks, com o respetivo conteúdo.

Se o código for MD07

MD07 não é um problema técnico. O titular da conta faleceu e o mandato cancela-se. As faturas pendentes desse cliente não vão ser cobradas por débito direto, e como as reclamar é uma questão que cabe ao seu contabilista, não ao conector. O prudente é rever as suas cobranças programadas e subscrições no Odoo para que não se gerem mais. A nota do Odoo pede um mandato novo também neste caso, porque só conhece a causa: com MD07, não o peça.

O que fazer com AC04

  • Contacte o cliente: tem uma conta nova, ou vai ter, e precisa de assinar um mandato com ela.
  • Quando assinar, o mandato novo será outro método de pagamento no Odoo; o antigo continua arquivado.
  • Cobre com o mandato novo as faturas que ficaram pendentes.
Esquema: o que a GoCardless envia com bank_account_closed 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.

Posso voltar a tentar um pagamento com bank_account_closed?

Não faz sentido: a conta não existe. Além disso, o conector arquiva o mandato, e com o mandato arquivado o botão «Tentar cobrar novamente» não aparece na transação.

E se o cliente mudou de banco com o serviço de transferência de contas?

Isso não é um encerramento: a GoCardless comunica-o como mandato transferido, com a causa bank_account_transferred, e o mandato continua válido.

Com o nosso conector

O conector da GoCardless para Odoo 17, 18, 19 e 20 faz com bank_account_closed o que faria uma pessoa atenta: dá a cobrança por falhada, reabre a fatura, retira o mandato morto para que ninguém o volte a usar e deixa um aviso com a causa na ficha do cliente.

Continue a ler

GoCardless invalid_bank_details: AC01 e BE06, a conta indicada não existeGoCardless invalid_bank_details com AC01 ou BE06: a conta do mandato não existe. Porque surge no pagamento e no mandato, e o que o Odoo faz com o conector.GoCardless direct_debit_not_enabled: AG01 e AC06, uma conta que não aceita o débito diretoGoCardless direct_debit_not_enabled com AG01 ou AC06: a conta do cliente não aceita débitos diretos SEPA, ou está bloqueada. O que faz o Odoo 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.
Verificado no código do conector (versão 17.0, 18.0, 19.0 e 20.0) e nas fontes indicadas

Fontes

  • Código do módulo: flexigo_payment_gocardless: const.py, linha 15 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 442 em 17.0 (d203ee6), linha 442 em 18.0 (e2ab18b), linha 441 em 19.0 (ce7f5a3) e linha 456 em 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: const.py, linha 145 em 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
  • docs.gocardless.com/docs/api-reference/events/mandate
  • 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: 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 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: 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: const.py, linha 117 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 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: 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: __manifest__.py, linha 31 em 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
  • docs.gocardless.com/docs/api-reference/events/payment
  • Código do módulo: flexigo_payment_gocardless: views/payment_transaction_views.xml, linha 13 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 63 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 418 em 17.0 (d203ee6), linha 418 em 18.0 (e2ab18b), linha 417 em 19.0 (ce7f5a3) e linha 432 em 20.0 (688d86b)
  • Código do módulo: flexigo_payment_gocardless: i18n/pt.po, linha 1091 em 17.0 (d203ee6), linha 1091 em 18.0 (e2ab18b), linha 1091 em 19.0 (ce7f5a3) e linha 1113 em 20.0 (688d86b)
  • docs.gocardless.com/docs/api-reference/webhooks
  • github.com/odoo/odoo/blob/17.0/odoo/http.py
  • support.gocardless.com/hc/en-gb/articles/360001467265
  • Código do módulo: flexigo_payment_gocardless: const.py, linha 66 em 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
  • github.com/odoo/odoo/blob/20.0/addons/account_payment/views/account_move_views.xml