Refunds & Notifications · Article 6.7
Odśwież status — synchronizacja pull gdy webhook Stripe nie dotarł
Webhooki nie są doskonałe. Gdy nota kredytowa wydaje się utknięta w `requested` pomimo tego, że Stripe przetworzył zwrot, kliknij `Odśwież status`, żeby pobrać bieżący stan bezpośrednio ze Stripe. Ta sama logika przejść co webhook; bez ryzyka podwójnego wystrzelenia efektów ubocznych.
Odśwież status to przycisk „sprawdź czy działa". Gdy wszystko działa, webhook dostarcza werdykt Stripe w sekundy i nie potrzebujesz tego przycisku. Gdy webhook jest opóźniony lub zgubiony (usterka sieci na Twoim endpoincie, kolejka webhooka Stripe z backlogiem, Twój endpoint zwrócił odpowiedź 5xx, która wyczerpała 3-dniowe okno ponowień Stripe), Odśwież pozwala ominąć kanał push i pobrać odpowiedź bezpośrednio. Wynik jest taki sam jakby webhook dotarł czysto.
Step by step
Zauważ zablokowany status
requested.Baner czyta „Zwrot w toku, spodziewany w 3–5 dniach roboczych" i pozostaje statyczny przez >24 godziny.
Kliknij
Odśwież status.Z banera Zwrot lub wiersza strony Not kredytowych.
Poczekaj ~2 sekundy.
Serwer wywołuje API Stripe na połączonym koncie; rozwiązuje kanoniczny stan.
UI aktualizuje się w miejscu.
Jeśli Stripe mówi succeeded → baner zmienia się na „Zwrot zakończony [data]"; e-mail „zwrot zakończony" jest wysyłany; oferta zamyka się jeśli dotyczy. Jeśli failed → baner oferuje opcje Ponów / Oznacz jako zwrócono. Jeśli nadal oczekuje po stronie Stripe → kopia banera odświeża się, żeby odzwierciedlać zgłoszony stan Stripe.
Nie potrzeba dalszego działania jeśli stan się zmienił.
Wszystkie downstream hooki odppalają się automatycznie.
Baner Zwrot z przyciskiem Odśwież status. Po kliknięciu, krótki spinner, a następnie albo brak zmiany (Stripe nadal oczekujące) albo aktualizacja banera do stanu terminalnego.
Why this works this way
Dlaczego ręczny przycisk zamiast codziennego crona synchronizacyjnego? Koszt i opóźnienie. Cron job odpytujący Stripe codziennie dla każdej requested noty kredytowej dodaje stałe obciążenie API do limitów szybkości Stripe ORAZ wprowadza opóźnienie do 24h przed aktualizacją UI. Ręczny przycisk kładzie koszt tam gdzie jest faktycznie potrzebny (freelancer zastanawia się dlaczego baner jest zablokowany) i daje niemal natychmiastowe rozwiązanie. Możemy dodać automatyczną synchronizację w przyszłości jeśli zgłoszenia do pomocy technicznej pokażą, że byłoby to cenne, ale ręczna ścieżka obejmuje ~95% przypadków.
Troubleshooting
Keep reading
Refunds & Notifications
Stripe automatic refund (Direct Charges via Connect)
When the original deposit was paid via Stripe, the refund is automatic. Clozo issues a Refund on the freelancer's connected account, watches for the `refund.updated` webhook, and flips the credit note to `succeeded` once Stripe confirms — typically within 3–5 business days for the cash to reach the client.
Refunds & Notifications
Refund stages: issued → requested → succeeded (or manual)
The credit note moves through up to four states from creation to settled. Each state corresponds to a specific point in the refund lifecycle, with predictable UI badges and email triggers.
Refunds & Notifications
Failed refunds & recovery — common Stripe failure reasons
A `failed` credit note has a `refund_failure_reason` string from Stripe. Most reasons fall into a small set; here's what each means and the recommended recovery.
Refunds & Notifications
The Credit Notes page
A first-class section in the freelancer dashboard that lists every credit note across all your proposals, with status, refund amount, linked proposal, and action buttons. Use this when you want to manage refunds without drilling into each proposal individually.