Drie gebeurtenissen en vier rijen, dezelfde code
| Gebeurtenis | Oorzaak | Tekst van GoCardless |
|---|---|---|
| payments · failed | mandate_cancelled | The customer cancelled their mandate at their bank. |
| payments · charged_back | mandate_cancelled | This payment was charged back by the customer's bank, because the customer disputed authorising the transaction. |
| payments · cancelled | authorisation_disputed | This payment has been cancelled because the payer disputes authorising its mandate. |
| payments · cancelled | mandate_cancelled | This payment has been cancelled because the payer disputes authorising its mandate. |
De vier rijen komen uit de SEPA Core-tabel in de documentatie van GoCardless en dragen MD01; de geannuleerde betaling heeft twee oorzaken met dezelfde tekst. Het mandaat wordt ook geannuleerd, en GoCardless meldt dat met een eigen gebeurtenis: "A payment under this mandate failed, indicating that the mandate has been cancelled at the customer's bank. Any subscriptions and pending payments will also be cancelled.".

Wat verandert er per moment
Als de klant het mandaat annuleert voordat de incasso is uitgevoerd, mislukt de betaling: het geld is niet binnengekomen. Betwist hij het na de afschrijving, dan is het een terugboeking: het geld kwam binnen en gaat weer terug. En als er betalingen in de wachtrij stonden om te worden ingediend, annuleert GoCardless die voordat ze worden verstuurd. De connector vermeldt in zijn code dat hij de oorzaak authorisation_disputed met MD01 zag bij een testbetaling in de sandbox, als terugboeking van een al verrekende betaling.
Wat Odoo met de connector doet
De transactie wordt geopend vanaf de factuur, met de knop "Betalingstransactie" bovenaan; het transactiemenu verschijnt alleen in de ontwikkelaarsmodus en bestaat niet in Odoo 20. In alle drie de gevallen krijgt de transactie de status "Fout" met de oorzaak zichtbaar. De melding hangt af van de gebeurtenis: "GoCardless could not collect this payment (mandate_cancelled)." bij een mislukking, en "GoCardless reported a chargeback for this payment (mandate_cancelled). The funds have been taken back and will be deducted from a future payout." bij een terugboeking. Als Odoo de factuur al als betaald had met die incasso, annuleert de connector de betaling en staat de factuur weer open.
Het belangrijkste is het mandaat. mandate_cancelled en authorisation_disputed behoren tot de vier oorzaken waarmee de connector het mandaat als ongeldig beschouwt, dus:
- archiveert hij de betaalmethode van de klant, die niet meer wordt aangeboden om te innen;
- schrijft hij op zijn kaart "The GoCardless direct debit mandate of … is no longer usable (mandate_cancelled). No further collection can be taken against it. Ask the customer to set up a new mandate.";
- maakt hij een activiteit "GoCardless mandate lost".
Er komen meerdere gebeurtenissen met hetzelfde bericht binnen, die van de betaling en die van het mandaat, maar de melding verschijnt maar één keer: de tweede vindt het mandaat al gearchiveerd.
Al deze teksten schrijft de connector bij het verwerken van de gebeurtenis, zonder dat iemand erbij is. De connector is niet in het Nederlands vertaald: deze teksten verschijnen altijd in het Engels, ook in een Nederlandstalige Odoo, of een gebruiker of een geplande actie ze nu start: "GoCardless could not collect this payment (mandate_cancelled).", "GoCardless reported a chargeback for this payment (mandate_cancelled). The funds have been taken back and will be deducted from a future payout.", "The GoCardless direct debit mandate of … is no longer usable (mandate_cancelled). No further collection can be taken against it. Ask the customer to set up a new mandate." en "GoCardless mandate lost".
Wat te doen
Voordat je om een nieuw mandaat vraagt, moet je begrijpen waarom de klant het heeft geannuleerd. Een klant die de dienst niet meer wil, heeft een opzegging nodig, geen nieuwe handtekening. Als het een fout van de klant was of een wijziging bij zijn bank, vraag hem dan opnieuw te tekenen en int met het nieuwe mandaat de openstaande facturen. Als hij zegt de afschrijving nooit te hebben geautoriseerd, controleer dan hoe het mandaat is ondertekend voordat je hem nog een keer int.
Heeft het zin een betaling met MD01 opnieuw te proberen?
Nee. Het mandaat bestaat niet meer voor zijn bank, en met een gearchiveerd mandaat verschijnt de knop "Retry collection" niet in de transactie. Er is een nieuw mandaat nodig, ondertekend door de klant.

Met onze connector
In Odoo 17, 18, 19 en 20 onderscheidt de connector de mislukking van de terugboeking, opent hij de factuur indien nodig opnieuw, trekt hij het mandaat in en laat hij de taak om met de klant te praten op zijn kaart staan. Wat hij niet doet, is zelfstandig om een nieuw mandaat vragen: dat gesprek is aan jou.
Lees verder
Gecontroleerd in de broncode van de connector (versie 17.0, 18.0, 19.0 en 20.0) en in de gelinkte bronnen
Bronnen
- Broncode van de module: flexigo_payment_gocardless: const.py, regel 15 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: models/payment_transaction.py, regel 442 in 17.0 (d203ee6), regel 442 in 18.0 (e2ab18b), regel 441 in 19.0 (ce7f5a3) en regel 456 in 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: const.py, regel 76 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: const.py, regel 71 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: models/payment_transaction.py, regel 725 in 17.0 (d203ee6), regel 725 in 18.0 (e2ab18b), regel 724 in 19.0 (ce7f5a3) en regel 748 in 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: models/payment_transaction.py, regel 713 in 17.0 (d203ee6), regel 713 in 18.0 (e2ab18b), regel 712 in 19.0 (ce7f5a3) en regel 736 in 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: models/payment_transaction.py, regel 754 in 17.0 (d203ee6), regel 754 in 18.0 (e2ab18b), regel 753 in 19.0 (ce7f5a3) en regel 777 in 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: models/payment_token.py, regel 131 in 17.0 (d203ee6), regel 131 in 18.0 (e2ab18b), regel 131 in 19.0 (ce7f5a3) en regel 130 in 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: models/payment_token.py, regel 83 in 17.0 (d203ee6), regel 83 in 18.0 (e2ab18b), regel 83 in 19.0 (ce7f5a3) en regel 82 in 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, regel 436 in 17.0 (d203ee6), regel 436 in 18.0 (e2ab18b), regel 436 in 19.0 (ce7f5a3) en regel 438 in 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, regel 529 in 17.0 (d203ee6), regel 529 in 18.0 (e2ab18b), regel 529 in 19.0 (ce7f5a3) en regel 531 in 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, regel 1148 in 17.0 (d203ee6), regel 1148 in 18.0 (e2ab18b), regel 1148 in 19.0 (ce7f5a3) en regel 1155 in 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, regel 495 in 17.0 (d203ee6), regel 495 in 18.0 (e2ab18b), regel 495 in 19.0 (ce7f5a3) en regel 497 in 20.0 (688d86b)
- docs.gocardless.com/docs/api-reference/events/mandate
- Broncode van de module: flexigo_payment_gocardless: __manifest__.py, regel 31 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 20.0 (688d86b)
- docs.gocardless.com/docs/api-reference/events/payment
- Broncode van de module: flexigo_payment_gocardless: views/payment_transaction_views.xml, regel 13 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: models/payment_transaction.py, regel 63 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) en 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: models/payment_transaction.py, regel 418 in 17.0 (d203ee6), regel 418 in 18.0 (e2ab18b), regel 417 in 19.0 (ce7f5a3) en regel 432 in 20.0 (688d86b)
- Broncode van de module: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, regel 1016 in 17.0 (d203ee6), regel 1016 in 18.0 (e2ab18b), regel 1016 in 19.0 (ce7f5a3) en regel 1031 in 20.0 (688d86b)
- github.com/odoo/odoo/blob/20.0/addons/payment/i18n/nl.po
- 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
