Przejdź do głównej treści
GoCardless · SEPA Core · zwrot (chargeback)

GoCardless MD06: klient zleca swojemu bankowi zwrot obciążenia

Obciążenie SEPA, które zostało zrealizowane, nie jest ostateczne: przez 8 tygodni klient może zlecić swojemu bankowi jego zwrot. Gdy to zrobi, GoCardless wysyła zdarzenie płatności charged_back z przyczyną refund_requested i kodem MD06 oraz odbiera Ci pieniądze.

FlexigoTech · Odpowiada: Víctor Gómez · Aktualizacja: 6 listopada 2026

Najważniejsze

Wersje
Odoo 17, 18, 19 i 20
Sprawdzone
w kodzie źródłowym konektora, wersja 17.0, 18.0, 19.0 i 20.0 · w źródłach podanych na końcu
Czas czytania
3 min

Co mówi GoCardless

ZdarzeniePrzyczynaKod SEPA CoreTekst GoCardless
payments · charged_backrefund_requestedMD06This payment was charged back by the customer's bank at the customer's request within the 8 week cool-off period.

Ten tekst mówi prawie wszystko: zwrotu żąda klient, obsługuje go jego bank i mieści się on w okresie 8 tygodni, który GoCardless nazywa cool-off period. To nie jest błąd pobrania: pieniądze dotarły, a teraz wracają.

Karta przyczyny refund_requested w GoCardless
Przyczyna, jej kod SEPA Core MD06 i tekst, którym opisuje ją GoCardless.

Kiedy się o tym dowiadujesz

Zwrot MD06 przychodzi, gdy pobranie jest już zamknięte. W Odoo transakcja była zakończona, a faktura opłacona: konektor uznaje pobranie za wykonane, gdy GoCardless oznaczy je jako confirmed lub paid_out. Potem pojawia się jeszcze jedno zdarzenie, które warto znać, chargeback_settled: „This charged back payment has been settled against a payout.”. Czyli zwrot jest potrącany z wypłaty GoCardless, a nie obciążany osobno.

Jeśli bank klienta się wycofa, GoCardless wysyła chargeback_cancelled, a płatność znów liczy się jako pobrana. Między jednym a drugim może minąć kilka dni, więc nie podejmuj decyzji wobec klienta, nie sprawdziwszy najpierw, w jakim stanie jest transakcja w Odoo: to odzwierciedlenie ostatniego zdarzenia wysłanego przez GoCardless. Transakcję otwierasz z faktury, przyciskiem „Transakcja płatnicza” u góry; menu transakcji pojawia się tylko w trybie programisty, a w Odoo 20 go nie ma.

Co robi Odoo z konektorem

KrokCo się zmienia
TransakcjaPrzechodzi z „Potwierdzone” do „Błąd”: zwrot cofa pobranie, które było prawidłowe.
Komunikat„GoCardless reported a chargeback for this payment (refund_requested). The funds have been taken back and will be deducted from a future payout.”
Płatność w OdooZostaje anulowana, a faktura znów czeka na zapłatę.
MandatNadal obowiązuje: refund_requested nie należy do przyczyn, z powodu których konektor archiwizuje mandat.

Komunikat zapisuje konektor, stosując zdarzenie, bez niczyjej obecności. Konektor nie jest przetłumaczony na polski: te teksty zawsze pojawiają się po angielsku, także w Odoo po polsku, niezależnie od tego, czy uruchamia je użytkownik, czy zaplanowane działanie: „GoCardless reported a chargeback for this payment (refund_requested). The funds have been taken back and will be deducted from a future payout.”.

Transakcja zostaje w błędzie z aktywnym mandatem, ale nie pokazuje przycisku „Retry collection”. Od wersji 1.1.4 konektor oferuje go tylko wtedy, gdy płatność w GoCardless ma status failed, a płatność zwrócona ma charged_back. Jest to zgodne z dokumentacją GoCardless: ponowienie działa tylko dla płatności, które się nie powiodły, a na płatność zwróconą odpowiedziałoby retry_failed.

To, że mandat nadal żyje, jest prawidłowe. Prośba o zwrot płatności to nie odwołanie zgody; gdyby klient chciał właśnie tego, przyczyną byłaby inna (mandate_cancelled, z kodem MD01). Po chargeback_cancelled konektor ponownie uznaje transakcję za pobraną.

Co zrobić

Zwrot MD06 to przede wszystkim rozmowa z klientem, a dopiero potem problem techniczny. Zapytaj, co się stało: kwota, której się nie spodziewał, usługa, z której nie jest zadowolony, albo podwójne obciążenie. Zależnie od odpowiedzi:

  1. Jeśli faktura jest prawidłowa i klient to akceptuje, pobierz ją ponownie nowym pobraniem, z zapisaną metodą płatności klienta: mandat nadal jest dostępny. Zwrócona transakcja nie ma przycisku ponowienia.
  2. Jeśli klient miał rację, wystaw odpowiednią fakturę korygującą, a oryginał zostaw nieopłacony.
  3. Jeśli zwroty powtarzają się u tego samego klienta, rozważ dla niego inną formę płatności.

Ile czasu ma klient na zwrot pobranej płatności?

W przypadku MD06 tekst GoCardless mówi o okresie 8 tygodni: klient prosi swój bank o zwrot w tym terminie. Dlatego potwierdzone pobranie SEPA nie jest w pełni ostateczne w tym czasie.

Gdzie zobaczę, że to był zwrot, a nie błąd?

W transakcji, którą otwierasz z faktury przyciskiem „Transakcja płatnicza”: pole „GoCardless Cause” wskazuje refund_requested, a komunikat mówi o zwrocie, a nie o pobraniu, którego nie udało się wykonać.

Schemat: co wysyła GoCardless przy zwrocie MD06 i co robi Odoo z konektorem
Schemat przygotowany na podstawie kodu konektora (17.0, 18.0, 19.0 i 20.0) oraz dokumentacji GoCardless; przekreślone jest to, czego konektor nie robi przy tej przyczynie.

Z naszym konektorem

Konektor GoCardless dla Odoo 17, 18, 19 i 20 nie zostawia faktury oznaczonej jako opłacona za pieniądze, których już nie masz: anuluje płatność, ponownie otwiera fakturę i zapisuje przyczynę. I nie karze klienta archiwizacją mandatu za jednorazowy zwrot.

Czytaj dalej

GoCardless MD01: mandate_cancelled i authorisation_disputed przy płatności SEPAKod SEPA MD01 pojawia się w GoCardless jako mandate_cancelled lub authorisation_disputed przy nieudanej, zwróconej lub anulowanej płatności. Co z tym robi Odoo.GoCardless insufficient_funds (AM04): na koncie klienta brakowało środkówPolecenie zapłaty GoCardless kończy się błędem insufficient_funds i kodem SEPA AM04. Co oznacza, kiedy Success+ ponawia próbę i co Odoo robi z fakturą.GoCardless refer_to_payer: MS02, MS03, RR04 i SL01 w polecie SEPArefer_to_payer łączy w GoCardless kody SEPA MS02, MS03, RR04 i SL01. Co oznacza każdy z nich, dlaczego mandat pozostaje aktywny i jak obsługuje to Odoo.
Sprawdzone w kodzie źródłowym konektora (wersja 17.0, 18.0, 19.0 i 20.0) i w podlinkowanych źródłach

Źródła

  • Kod modułu: flexigo_payment_gocardless: const.py, wiersz 15 w 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: models/payment_transaction.py, wiersz 694 w 17.0 (d203ee6), wiersz 694 w 18.0 (e2ab18b), wiersz 693 w 19.0 (ce7f5a3) i wiersz 717 w 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: const.py, wiersz 41 w 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: const.py, wiersz 76 w 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: models/payment_transaction.py, wiersz 713 w 17.0 (d203ee6), wiersz 713 w 18.0 (e2ab18b), wiersz 712 w 19.0 (ce7f5a3) i wiersz 736 w 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: models/payment_transaction.py, wiersz 754 w 17.0 (d203ee6), wiersz 754 w 18.0 (e2ab18b), wiersz 753 w 19.0 (ce7f5a3) i wiersz 777 w 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, wiersz 529 w 17.0 (d203ee6), wiersz 529 w 18.0 (e2ab18b), wiersz 529 w 19.0 (ce7f5a3) i wiersz 531 w 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, wiersz 356 w 17.0 (d203ee6), wiersz 356 w 18.0 (e2ab18b), wiersz 356 w 19.0 (ce7f5a3) i wiersz 358 w 20.0 (688d86b)
  • docs.gocardless.com/docs/api-reference/events/payment
  • Kod modułu: flexigo_payment_gocardless: __manifest__.py, wiersz 31 w 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • docs.gocardless.com/docs/api-reference/events/mandate
  • Kod modułu: flexigo_payment_gocardless: views/payment_transaction_views.xml, wiersz 13 w 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: models/payment_transaction.py, wiersz 63 w 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: models/payment_transaction.py, wiersz 418 w 17.0 (d203ee6), wiersz 418 w 18.0 (e2ab18b), wiersz 417 w 19.0 (ce7f5a3) i wiersz 432 w 20.0 (688d86b)
  • github.com/odoo/odoo/blob/20.0/addons/payment/i18n/pl.po
  • github.com/odoo/odoo/blob/20.0/addons/payment/views/payment_transaction_views.xml
  • Kod modułu: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, wiersz 1016 w 17.0 (d203ee6), wiersz 1016 w 18.0 (e2ab18b), wiersz 1016 w 19.0 (ce7f5a3) i wiersz 1031 w 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, wiersz 567 w 17.0 (d203ee6), wiersz 567 w 18.0 (e2ab18b), wiersz 567 w 19.0 (ce7f5a3) i wiersz 569 w 20.0 (688d86b)
  • docs.gocardless.com/docs/api-reference/payment
  • docs.gocardless.com/docs/api-reference/responses-and-errors
  • Kod modułu: flexigo_payment_gocardless: models/payment_transaction.py, wiersz 469 w 17.0 (d203ee6), wiersz 469 w 18.0 (e2ab18b), wiersz 468 w 19.0 (ce7f5a3) i wiersz 487 w 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, wiersz 521 w 17.0 (d203ee6), wiersz 521 w 18.0 (e2ab18b), wiersz 521 w 19.0 (ce7f5a3) i wiersz 523 w 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: models/payment_provider.py, wiersz 397 w 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: views/payment_transaction_views.xml, wiersz 22 w 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
  • Kod modułu: flexigo_payment_gocardless: models/payment_transaction.py, wiersz 435 w 17.0 (d203ee6), wiersz 435 w 18.0 (e2ab18b), wiersz 434 w 19.0 (ce7f5a3) i wiersz 449 w 20.0 (688d86b)
  • Kod modułu: flexigo_payment_gocardless: models/payment_transaction.py, wiersz 247 w 17.0 (d203ee6), wiersz 247 w 18.0 (e2ab18b), wiersz 247 w 19.0 (ce7f5a3) i wiersz 258 w 20.0 (688d86b)