Skip to main content
GoCardless · SEPA Core · customer account

GoCardless direct_debit_not_enabled: AG01 and AC06, an account that does not accept direct debit

With direct_debit_not_enabled the customer's bank says that account does not accept SEPA direct debits. GoCardless reports it with the codes AG01 or AC06 and cancels the mandate. Very close to it is account_blocked_for_any_financial_transaction, with AC06: the account is blocked. In both cases, you cannot collect from that account.

FlexigoTech · Editor in charge: Víctor Gómez · Updated 6 November 2026

Key facts

Versions
Odoo 17, 18, 19 and 20
Checked
in the connector's source code, version 17.0, 18.0, 19.0 and 20.0 · against the sources linked at the end
Reading time
5 min

What GoCardless says

EventReasonCodesGoCardless text
payments · faileddirect_debit_not_enabledAG01, AC06The bank account for this payment does not support SEPA Direct Debit. The mandate will also be cancelled.
payments · failedaccount_blocked_for_any_financial_transactionAC06This payment failed because the payer's account was blocked.
mandates · cancelleddirect_debit_not_enabledAG01, AC06The bank account for this mandate does not support SEPA direct debit. Any subscriptions and pending payments will also be cancelled.
mandates · cancelledaccount_blocked_for_any_financial_transactionAC06The bank account for this mandate was blocked. Any subscriptions and pending payments will also be cancelled.

Both reasons also appear in payments · cancelled: those are the collections that were still waiting to be submitted under that mandate and that GoCardless cancels along with it.

Card for the GoCardless direct_debit_not_enabled reason
The reason, its SEPA Core codes AG01 and AC06, the neighbouring blocked-account reason and the GoCardless text for the failed payment.

Where it comes from

Here it is not the signature that fails, it is the account. The mandate exists, but when GoCardless submits the debit, the customer's bank answers that direct debits are not accepted on that account, or that it is blocked. That is why these events have origin bank: they are decided by the payer's bank.

direct_debit_not_enabled drags the mandate down with it. GoCardless cancels it, and with it go any subscriptions and collections it had pending. With account_blocked_for_any_financial_transaction the account is blocked; when GoCardless also cancels the mandate for that reason, it reports it in its own event, with the same reason.

What Odoo does with each event

Event receivedWhat the connector does
payments · failedThe transaction moves to “Error” with “GoCardless could not collect this payment (direct_debit_not_enabled).”, or with the blocked-account reason. If that collection had already paid the invoice, it cancels the payment and the invoice is left unpaid again.
payments · cancelledSame as a failed payment.
mandates · cancelledArchives the payment method, writes on the customer's record that this mandate is no longer valid and creates the activity “GoCardless mandate lost”.

Mind the order: the payment event does not retire the mandate, because these reasons are not among the four that make the connector archive it when it receives a payment. The mandate event does that. And if it does not arrive through the webhook, the hourly task that looks for missed events picks it up.

The two quoted texts in the table come from an event, not from a click. The connector writes these texts in English, so in an English-language Odoo they appear exactly as quoted here, whether a user or a scheduled action triggers them: “GoCardless could not collect this payment (direct_debit_not_enabled).” and “GoCardless mandate lost”.

Nor should you wait for Success+: its guide says it only retries payments that fail for lack of funds. The connector, in any case, checks the event's will_attempt_retry field on every failure, and if it is not true it leaves the transaction in error.

And the retry button

To see the message, open the invoice and click “Payment Transaction” at the top. The transactions menu only appears in developer mode and in Odoo 20 it is no longer there.

On a failed payment, as long as Odoo has not archived the mandate, that transaction offers “Retry collection”; on a cancelled one, it does not. It is of little use: GoCardless only retries payments whose mandate is still active, and with direct_debit_not_enabled it has just cancelled it. If the response is retry_failed or mandate_is_inactive, the connector asks about the mandate, archives it if it is dead and leaves a note on the transaction: “The customer's GoCardless mandate is …, so it cannot be charged. Ask the customer for a new mandate.”. From then on the button disappears.

Diagram: what GoCardless sends with direct_debit_not_enabled and what Odoo does with the connector
Path of the reason according to the connector's code (17.0, 18.0, 19.0 and 20.0) and the GoCardless documentation; crossed out, what the payment event does not do.

What to do

  1. Talk to the customer. If the account does not accept direct debits, you need another one that does; if it is blocked (AC06), they will first have to sort it out with their bank.
  2. With a working account, the customer signs a new mandate, which will appear in Odoo as another payment method.
  3. Collect the open invoices again with that method. The collections cancelled by GoCardless will not be submitted on their own.
  4. If you need the exact code, look it up in GoCardless, because Odoo only stores the reason: the connector does not keep the SEPA code. Its help centre explains it like this: “You are able to view the reason for a payment failure in the status timeline of the payment in your GoCardless dashboard.”.

Why does AC06 appear on both reasons?

GoCardless uses the same code AC06 for an account that does not accept direct debits and for a blocked account. In practice it makes no difference: that account is of no use for collecting today, and you need another one or the bank must unblock it.

Can I reactivate the mandate?

If the account does not accept direct debits, it makes no sense: it would still not accept them. What you need is a new mandate with another account.

With our connector

With Odoo 17, 18, 19 and 20, this failure does not stay hidden: the transaction shows the GoCardless reason, the invoice is reopened if it had been paid and, as soon as the mandate cancellation arrives, the customer is flagged so you ask for another account before the next invoice.

Keep reading

GoCardless invalid_bank_details: AC01 and BE06, the bank account specified does not existGoCardless invalid_bank_details with AC01 or BE06: the mandate's bank account does not exist. Why it appears and what Odoo does with the connector.GoCardless bank_account_closed: AC04 and MD07, the account no longer existsGoCardless bank_account_closed with AC04 (account closed) or MD07 (holder deceased): the mandate is cancelled. What Odoo does with the invoice and customer.GoCardless mandate_is_inactive error when creating a collection from OdooGoCardless returns mandate_is_inactive when a payment is created against a cancelled, failed or expired mandate. Why it happens and how Odoo handles it.
Checked in the connector's source code (version 17.0, 18.0, 19.0 and 20.0) and the linked sources

Sources

  • Module source code: flexigo_payment_gocardless: const.py, line 15 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) and 20.0 (688d86b)
  • docs.gocardless.com/docs/api-reference/events/payment
  • docs.gocardless.com/docs/api-reference/events/mandate
  • Module source code: flexigo_payment_gocardless: const.py, line 76 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) and 20.0 (688d86b)
  • Module source code: flexigo_payment_gocardless: const.py, line 33 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) and 20.0 (688d86b)
  • Module source code: flexigo_payment_gocardless: models/payment_token.py, line 83 in 17.0 (d203ee6), line 83 in 18.0 (e2ab18b), line 83 in 19.0 (ce7f5a3) and line 82 in 20.0 (688d86b)
  • Module source code: flexigo_payment_gocardless: models/payment_token.py, line 131 in 17.0 (d203ee6), line 131 in 18.0 (e2ab18b), line 131 in 19.0 (ce7f5a3) and line 130 in 20.0 (688d86b)
  • Module source code: flexigo_payment_gocardless: models/payment_transaction.py, line 725 in 17.0 (d203ee6), line 725 in 18.0 (e2ab18b), line 724 in 19.0 (ce7f5a3) and line 748 in 20.0 (688d86b)
  • Module source code: flexigo_payment_gocardless: models/payment_transaction.py, line 754 in 17.0 (d203ee6), line 754 in 18.0 (e2ab18b), line 753 in 19.0 (ce7f5a3) and line 777 in 20.0 (688d86b)
  • Module source code: flexigo_payment_gocardless: const.py, line 117 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) and 20.0 (688d86b)
  • Module source code: flexigo_payment_gocardless: const.py, line 74 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) and 20.0 (688d86b)
  • Module source code: flexigo_payment_gocardless: models/payment_transaction.py, line 435 in 17.0 (d203ee6), line 435 in 18.0 (e2ab18b), line 434 in 19.0 (ce7f5a3) and line 449 in 20.0 (688d86b)
  • docs.gocardless.com/docs/optimise/reduced-failed-payments-with-success-plus
  • Module source code: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, line 436 in 17.0 (d203ee6), line 436 in 18.0 (e2ab18b), line 436 in 19.0 (ce7f5a3) and line 438 in 20.0 (688d86b)
  • Module source code: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, line 1148 in 17.0 (d203ee6), line 1148 in 18.0 (e2ab18b), line 1148 in 19.0 (ce7f5a3) and line 1155 in 20.0 (688d86b)
  • Module source code: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, line 495 in 17.0 (d203ee6), line 495 in 18.0 (e2ab18b), line 495 in 19.0 (ce7f5a3) and line 497 in 20.0 (688d86b)
  • Module source code: flexigo_payment_gocardless: views/payment_transaction_views.xml, line 13 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) and 20.0 (688d86b)
  • Module source code: flexigo_payment_gocardless: models/payment_transaction.py, line 63 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) and 20.0 (688d86b)
  • Module source code: flexigo_payment_gocardless: models/payment_transaction.py, line 418 in 17.0 (d203ee6), line 418 in 18.0 (e2ab18b), line 417 in 19.0 (ce7f5a3) and line 432 in 20.0 (688d86b)
  • Module source code: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, line 1016 in 17.0 (d203ee6), line 1016 in 18.0 (e2ab18b), line 1016 in 19.0 (ce7f5a3) and line 1031 in 20.0 (688d86b)
  • docs.gocardless.com/docs/api-reference/payment
  • Module source code: flexigo_payment_gocardless: models/payment_transaction.py, line 469 in 17.0 (d203ee6), line 469 in 18.0 (e2ab18b), line 468 in 19.0 (ce7f5a3) and line 487 in 20.0 (688d86b)
  • Module source code: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, line 1233 in 17.0 (d203ee6), line 1233 in 18.0 (e2ab18b), line 1233 in 19.0 (ce7f5a3) and line 1240 in 20.0 (688d86b)
  • github.com/odoo/odoo/blob/20.0/addons/payment/i18n/payment.pot
  • 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
  • support.gocardless.com/hc/en-gb/articles/360001467265
  • Module source code: flexigo_payment_gocardless: const.py, line 66 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) and 20.0 (688d86b)
  • Module source code: flexigo_payment_gocardless: __manifest__.py, line 31 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) and 20.0 (688d86b)
  • docs.gocardless.com/docs/api-reference/responses-and-errors