Salta al contingut principal
GoCardless · SEPA Core · pagament fallit

GoCardless insufficient_funds (AM04): el compte del client no tenia saldo

És la fallada més habitual d'una domiciliació: el banc del client retorna el deute perquè al compte no hi havia diners. GoCardless ho avisa amb un esdeveniment de pagament failed, la causa insufficient_funds i el codi SEPA AM04. És una de les fallades que el seu servei Success+ pot tornar a intentar sense que hagis de fer res.

FlexigoTech · Responsable: Víctor Gómez · Actualitzat el 6 de novembre de 2026

L'essencial

Versions
Odoo 17, 18, 19 i 20
Comprovat
al codi del connector, versió 17.0, 18.0, 19.0 i 20.0 · a les fonts enllaçades al final
Lectura
5 min

Què diu GoCardless

EsdevenimentCausaCodi SEPA CoreText de GoCardless
payments · failedinsufficient_fundsAM04The customer's account had insufficient funds to make this payment.

La documentació de l'esdeveniment failed afegeix una peça clau: GoCardless reintenta el pagament pel seu compte quan el camp will_attempt_retry de l'esdeveniment és true («GoCardless will automatically retry the payment if event's will_attempt_retry field is true.»). Aquest reintent automàtic és Success+, i per fer-lo servir cal tenir-lo activat al Dashboard de GoCardless.

Segons la guia de Success+, només reintenta pagaments que fallen per falta de fons. En SEPA són dos codis: AM04 i MS03, i MS03 només a Àustria, Bèlgica, Alemanya, Luxemburg i Eslovàquia. Tot i així, GoCardless avisa que els seus criteris poden canviar: el que val per a cada fallada és el camp will_attempt_retry.

Targeta de la causa insufficient_funds de GoCardless
La causa, el seu codi SEPA Core AM04 i el text amb què la documenta GoCardless.

Per què arriba quan la factura ja semblava cobrada

Un deute SEPA no es resol a l'instant: segons GoCardless, cobrar un pagament pot trigar fins a 5 dies hàbils. Gairebé sempre el banc del client avisa de la fallada un dia hàbil després de la data de càrrec, abans que el pagament passi a confirmed. En pocs casos avisa més tard, amb el pagament ja marcat com a confirmed: és una fallada tardana (late failure), i la guia de Success+ posa com a exemple una per falta de fons. Per això AM04 pot aparèixer quan a Odoo el cobrament ja estava confirmat i la factura, conciliada. El connector ho té en compte: si un cobrament que Odoo donava per fet falla, anul·la el seu pagament i la factura torna a estar pendent.

El connector de GoCardless per a Odoo només cobra per SEPA Core i en euros, i per a un pagament fallit de SEPA Core la documentació de GoCardless dona un sol codi amb insufficient_funds: AM04. A Odoo veuràs la causa i no el codi, perquè el connector guarda la causa de l'esdeveniment i no el codi SEPA. El connector anota a més al seu codi que la combinació insufficient_funds amb AM04 és la que va veure en pagaments SEPA reals del sandbox de GoCardless.

Què veus a Odoo amb el connector

Cada cobrament que envia el connector demana a GoCardless retry_if_possible, l'opció de Success+. Quan arriba la fallada poden passar dues coses, i la transacció t'ho diu al seu grup GoCardless: «GoCardless Cause» i la casella «Success+ Will Retry». La transacció s'obre des de la factura, amb el botó «Transacció de pagament» de dalt; el menú de transaccions només surt en mode desenvolupador, i a Odoo 20 no existeix.

will_attempt_retryEstat«Missatge» de la transaccióBotó «Retry collection»
true«Pendent»«GoCardless could not collect this payment (insufficient_funds). Success+ will retry it automatically; there is nothing to do.»No surt
false«Error», i la factura torna a estar pendent«GoCardless could not collect this payment (insufficient_funds).» i, si GoCardless en dona el motiu, «It will not be retried automatically (…).»Surt, si queden reintents i el mandat està actiu

Aquests missatges els escriu el connector en aplicar l'esdeveniment, sense ningú al davant. El connector no està traduït al català: aquests textos surten sempre en anglès, també en un Odoo en català, tant si els llança un usuari com una tasca programada: «GoCardless could not collect this payment (insufficient_funds). Success+ will retry it automatically; there is nothing to do.», «GoCardless could not collect this payment (insufficient_funds).» i «It will not be retried automatically (…).».

La transacció queda pendent a propòsit quan Success+ hi reintentarà: els diners encara poden arribar, i un estat d'error faria creure que el cobrament està perdut. Cada vegada que GoCardless torna a presentar el cobrament envia un esdeveniment resubmission_requested, i el connector puja en un «GoCardless Retries», tant si el reintent és de Success+ com si l'has demanat tu.

Què fer

  1. Obre la transacció des de la factura i mira «GoCardless Cause» i «Success+ Will Retry».
  2. Si Success+ ho reintentarà, no facis res: el botó de reintentar ni tan sols surt. GoCardless demana no cobrar al client per una altra via mentrestant, perquè podria pagar dues vegades.
  3. Si no ho reintentarà, parla abans amb el client per saber quan tindrà saldo i prem «Retry collection» quan t'ho confirmi. El botó no tria data: la nova data de càrrec la posa GoCardless, i la transacció queda en «Retry requested. GoCardless will confirm the new charge date.».
  4. Porta el compte: GoCardless admet com a molt 3 reintents per pagament («Payments can be retried up to 3 times.»), i el connector compta també els de Success+ a «GoCardless Retries».

Un AM04 cancel·la el mandat del client?

No. La causa insufficient_funds no està entre les que fan que el connector arxivi el mandat, que són mandate_cancelled, bank_account_closed, mandate_expired i authorisation_disputed. El client continua tenint el seu mètode de pagament per a la propera factura.

Per què Success+ no reintenta totes les fallades?

Perquè la seva guia ho limita als pagaments sense fons: en SEPA, AM04 i, només en cinc països, MS03. Un client que rebutja el cobrament o un compte tancat no s'arreglen presentant el deute una altra vegada. El connector no ho decideix: segueix el camp will_attempt_retry de cada fallada.

Esquema: què envia GoCardless amb insufficient_funds i què fa Odoo amb el connector
Esquema fet a partir del codi del connector (17.0, 18.0, 19.0 i 20.0) i de la documentació de GoCardless.

Amb el nostre connector

El connector de GoCardless per a Odoo 17, 18, 19 i 20 tradueix l'esdeveniment en quelcom que es pot gestionar des de la factura: deixa la transacció pendent mentre Success+ treballa, la passa a error i reobre la factura quan ja no hi haurà reintent, i compta els reintents per no oferir-te'n un que no toca. El que no pot fer és posar diners al compte del teu client: si el AM04 es repeteix, la conversa amb ell és la que resol el cobrament.

Continua llegint

GoCardless refer_to_payer: MS02, MS03, RR04 i SL01 en un cobrament SEPArefer_to_payer agrupa a GoCardless els codis SEPA MS02, MS03, RR04 i SL01. Què indica cadascun, per què el mandat continua viu i com ho gestiona Odoo.Error retry_failed de GoCardless en reintentar un cobrament des d'OdooGoCardless respon retry_failed si el pagament no ha fallat o ja no admet reintents. Quan surt a Odoo el botó «Retry collection» i què fa el connector.GoCardless MD06: el client demana al seu banc que li retorni un cobramentEl client demana al seu banc que li retorni un adeudament de GoCardless: charged_back, refund_requested i MD06. Què passa a Odoo amb la factura i el mandat.
Comprovat al codi del connector (versió 17.0, 18.0, 19.0 i 20.0) i a les fonts enllaçades

Fonts

  • docs.gocardless.com/docs/api-reference/events/payment
  • docs.gocardless.com/docs/api-reference/payment
  • docs.gocardless.com/docs/optimise/reduced-failed-payments-with-success-plus
  • Codi del mòdul: flexigo_payment_gocardless: const.py, línia 15 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: const.py, línia 76 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: const.py, línia 71 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: models/payment_transaction.py, línia 260 a 17.0 (d203ee6), línia 260 a 18.0 (e2ab18b), línia 260 a 19.0 (ce7f5a3) i línia 271 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: models/payment_transaction.py, línia 729 a 17.0 (d203ee6), línia 729 a 18.0 (e2ab18b), línia 728 a 19.0 (ce7f5a3) i línia 752 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: models/payment_transaction.py, línia 746 a 17.0 (d203ee6), línia 746 a 18.0 (e2ab18b), línia 745 a 19.0 (ce7f5a3) i línia 769 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: models/payment_transaction.py, línia 732 a 17.0 (d203ee6), línia 732 a 18.0 (e2ab18b), línia 731 a 19.0 (ce7f5a3) i línia 755 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: models/payment_transaction.py, línia 754 a 17.0 (d203ee6), línia 754 a 18.0 (e2ab18b), línia 753 a 19.0 (ce7f5a3) i línia 777 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: models/payment_transaction.py, línia 680 a 17.0 (d203ee6), línia 680 a 18.0 (e2ab18b), línia 679 a 19.0 (ce7f5a3) i línia 703 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: models/payment_transaction.py, línia 430 a 17.0 (d203ee6), línia 430 a 18.0 (e2ab18b), línia 429 a 19.0 (ce7f5a3) i línia 444 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: const.py, línia 122 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: const.py, línia 119 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: models/payment_transaction.py, línia 461 a 17.0 (d203ee6), línia 461 a 18.0 (e2ab18b), línia 460 a 19.0 (ce7f5a3) i línia 479 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: models/payment_transaction.py, línia 484 a 17.0 (d203ee6), línia 484 a 18.0 (e2ab18b), línia 483 a 19.0 (ce7f5a3) i línia 502 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: views/payment_transaction_views.xml, línia 13 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: models/payment_transaction.py, línia 63 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: models/payment_transaction.py, línia 418 a 17.0 (d203ee6), línia 418 a 18.0 (e2ab18b), línia 417 a 19.0 (ce7f5a3) i línia 432 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: views/payment_transaction_views.xml, línia 22 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: views/payment_transaction_views.xml, línia 27 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: views/payment_transaction_views.xml, línia 28 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • github.com/odoo/odoo/blob/20.0/addons/payment/views/payment_transaction_views.xml
  • github.com/odoo/odoo/blob/20.0/addons/payment/i18n/ca.po
  • Codi del mòdul: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, línia 436 a 17.0 (d203ee6), línia 436 a 18.0 (e2ab18b), línia 436 a 19.0 (ce7f5a3) i línia 438 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, línia 1083 a 17.0 (d203ee6), línia 1083 a 18.0 (e2ab18b), línia 1083 a 19.0 (ce7f5a3) i línia 1090 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, línia 703 a 17.0 (d203ee6), línia 703 a 18.0 (e2ab18b), línia 703 a 19.0 (ce7f5a3) i línia 710 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, línia 356 a 17.0 (d203ee6), línia 356 a 18.0 (e2ab18b), línia 356 a 19.0 (ce7f5a3) i línia 358 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, línia 1063 a 17.0 (d203ee6), línia 1063 a 18.0 (e2ab18b), línia 1063 a 19.0 (ce7f5a3) i línia 1070 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, línia 408 a 17.0 (d203ee6), línia 408 a 18.0 (e2ab18b), línia 408 a 19.0 (ce7f5a3) i línia 410 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, línia 1016 a 17.0 (d203ee6), línia 1016 a 18.0 (e2ab18b), línia 1016 a 19.0 (ce7f5a3) i línia 1031 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, línia 1022 a 17.0 (d203ee6), línia 1022 a 18.0 (e2ab18b), línia 1022 a 19.0 (ce7f5a3) i línia 1037 a 20.0 (688d86b)
  • Codi del mòdul: flexigo_payment_gocardless: __manifest__.py, línia 31 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • support.gocardless.com/hc/en-gb/articles/360001467265
  • Codi del mòdul: flexigo_payment_gocardless: const.py, línia 66 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • github.com/odoo/odoo/blob/17.0/odoo/http.py
  • github.com/odoo/odoo/blob/20.0/addons/account_payment/views/account_move_views.xml