Co mówi GoCardless
| Zdarzenie | Przyczyna | Kod SEPA Core | Tekst GoCardless |
|---|---|---|---|
| payments · charged_back | refund_requested | MD06 | This 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ą.

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
| Krok | Co się zmienia |
|---|---|
| Transakcja | Przechodzi 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 Odoo | Zostaje anulowana, a faktura znów czeka na zapłatę. |
| Mandat | Nadal 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:
- 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.
- Jeśli klient miał rację, wystaw odpowiednią fakturę korygującą, a oryginał zostaw nieopłacony.
- 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ć.

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
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)
