Skip to main content

Refunds & Notifications · Article 6.4

Etapy zwrotu: wystawiony → requested → succeeded (lub ręczny)

Nota kredytowa przechodzi przez do czterech stanów od utworzenia do rozliczenia. Każdy stan odpowiada konkretnemu punktowi w cyklu życia zwrotu, z przewidywalnymi odznakamymi UI i wyzwalaczami e-maili.

Pięcioetapowa maszyna stanów na CreditNote.refund_status to jedyne źródło prawdy dla postępu zwrotu. Zarówno UI freelancera jak i e-maile klienta czytają z niej. Rozumienie znaczenia każdego stanu — i które przejścia są możliwe z których — to najszybsza droga do diagnozowania pytań „dlaczego mój zwrot jest zablokowany?".

Step by step

  1. Obserwuj baner Zwrot oferty.

    Odzwierciedla status noty kredytowej z czytelną dla człowieka kopią: - pending (przepływ Stripe) → „Zwrot w toku — sprawdzanie Stripe" - pending (przepływ SEPA) → „Ręczny zwrot — potwierdź przelew bankowy" - requested → „Zwrot w toku — spodziewany w 3–5 dniach roboczych. Sprawdź status." - failed → „Zwrot nieudany: [powód]. Ponów lub oznacz ręcznie." - succeeded → „Zwrot zakończony [data] przez Stripe." - manual → „Zwrot zakończony [data] przez przelew ręczny."

  2. Użyj właściwej akcji per stan.

    pending przepływ Stripe: czekaj lub ponów. pending przepływ SEPA: wyślij przelew + oznacz jako zwrócono. requested: Odśwież status (artykuł 8.7) jeśli baner pozostaje statyczny przez >5 minut. failed: Ponów (artykuł 8.8) lub oznacz ręcznie (artykuł 8.9).

  3. Audytuj przez Oś czasu.

    Każde przejście stanu emituje zdarzenie na Osi czasu (refund_initiated, refund_completed itp.) z metadanymi (kwota, metoda). Przydatne dla inspektorów podatkowych lub jeśli kiedykolwiek musisz zakwestionować transakcję.

Why this works this way

Przejścia stanów:

ZDoWyzwalaczEfekty uboczne
(brak)pendingNota kredytowa tworzona w _build_credit_note post-signDokumenty (Storno + Berichtigung + Gutschrift) tworzone; klient widzi e-mail „Zwrot zainicjowany"
pendingrequested_trigger_stripe_refund się powiodło (Refund.create zaakceptowany)stripe_refund_id i refund_initiated_at wypełnione; baner czyta „Zwrot w toku, spodziewany w 3–5 dniach roboczych"
pendingfailed_trigger_stripe_refund zgłosiło wyjątek lub obciążenie nie było potwierdzonerefund_failure_reason wypełniony; baner oferuje Ponów + Oznacz ręcznie jako zwrócono
pendingmanualFreelancer kliknął Oznacz jako zwrócono (przepływ SEPA)refund_completed_at i manual_refund_reason wypełnione; klient dostaje e-mail „zwrot zakończony"; oferta zamyka się jeśli dotyczy
requestedsucceededWebhook refund.updated ze status=succeeded LUB synchronizacja pull zwróciła succeededrefund_completed_at wypełniony; e-mail „zwrot zakończony"; oferta się zamyka
requestedfailedWebhook ze status=failed/canceledrefund_failure_reason wypełniony; baner oferuje Ponów + Oznacz ręcznie jako zwrócono
failedrequestedFreelancer kliknął Ponów zwrot Stripe (artykuł 8.8)Powód awarii wyczyszczony; z powrotem do Stripe
failedmanualFreelancer kliknął Oznacz jako zwrócono (po wystawieniu SEPA poza pasmem)Tak samo jak pending → manual

succeeded i manual są terminalne — oba wskazują, że gotówkowa część się rozliczyła, po prostu przez różne kanały. Ścieżka audytu zachowuje który kanał; zachowanie widoczne dla użytkownika jest identyczne (e-mail zamknięcia, oferta Opłacona jeśli dotyczy, PDF noty kredytowej dostępny).

Troubleshooting

Keep reading

Etapy zwrotu: wystawiony → requested → succeeded (lub ręczny) · Help · Clozo