Refunds & Notifications Β· Article 6.4
Terugbetalingsfasen: uitgegeven β aangevraagd β geslaagd (of handmatig)
De creditnota doorloopt maximaal vier staten van aanmaak tot afrekening. Elke staat correspondeert met een specifiek punt in de terugbetalingslevenscyclus, met voorspelbare UI-badges en e-mailtriggers.
De vijftilstandsmachine op CreditNote.refund_status is de enige bron van waarheid voor terugbetalingsvoortgang. Zowel de freelancer-UI als de klant-e-mails lezen ervan. Het begrijpen van de betekenis van elke staat β en welke overgangen mogelijk zijn vanuit welke β is de snelste weg naar het diagnosticeren van "waarom zit mijn terugbetaling vast?"-vragen.
Step by step
Volg de Terugbetaling-banner van de offerte.
Het weerspiegelt de status van de creditnota met voor mensen leesbare tekst: -
in behandeling(Stripe-stroom) β "Terugbetaling in behandeling β Stripe controleren" -in behandeling(SEPA-stroom) β "Handmatige terugbetaling β bevestig bankoverboeking" -aangevraagdβ "Terugbetaling in behandeling β verwacht binnen 3β5 werkdagen. Status controleren." -misluktβ "Terugbetaling mislukt: [reden]. Opnieuw proberen of handmatig markeren." -geslaagdβ "Terugbetaling voltooid op [datum] via Stripe." -handmatigβ "Terugbetaling voltooid op [datum] via handmatige overboeking."Gebruik de juiste actie per staat.
in behandelingStripe-stroom: wacht of probeer opnieuw.in behandelingSEPA-stroom: voer overboeking uit + markeer als terugbetaald.aangevraagd: Status vernieuwen (artikel 8.7) als de banner meer dan 5 minuten statisch blijft.mislukt: Opnieuw proberen (artikel 8.8) of handmatig markeren (artikel 8.9).Controleer via de tijdlijn.
Elke staatovergang stuurt een tijdlijngebeurtenis (
refund_initiated,refund_completed, enz.) met metadata (bedrag, methode). Nuttig voor belastinginspecteurs of als u ooit een transactie moet betwisten.
Why this works this way
Staatovergangen:
| Van | Naar | Trigger | Bijwerkingen |
|---|---|---|---|
| (geen) | in behandeling | Creditnota aangemaakt in _build_credit_note post-ondertekening | Documenten (Storno + Berichtigung + Gutschrift) aangemaakt; klant ziet e-mail "Terugbetaling geΓ―nitieerd" |
in behandeling | aangevraagd | _trigger_stripe_refund geslaagd (Refund.create geaccepteerd) | stripe_refund_id en refund_initiated_at ingevuld; banner zegt "Terugbetaling in behandeling, verwacht binnen 3β5 werkdagen" |
in behandeling | mislukt | _trigger_stripe_refund heeft een uitzondering gegenereerd of de afschrijving was niet bevestigd | refund_failure_reason ingevuld; banner biedt Opnieuw proberen + Handmatig als terugbetaald markeren |
in behandeling | handmatig | Freelancer heeft op Handmatig als terugbetaald markeren geklikt (SEPA-stroom) | refund_completed_at en manual_refund_reason ingevuld; klant ontvangt e-mail "terugbetaling voltooid"; offerte sluit indien van toepassing |
aangevraagd | geslaagd | Webhook refund.updated met status=geslaagd OF pull-gebaseerde synchronisatie retourneerde geslaagd | refund_completed_at ingevuld; e-mail "terugbetaling voltooid"; offerte sluit |
aangevraagd | mislukt | Webhook met status=mislukt/geannuleerd | refund_failure_reason ingevuld; banner biedt Opnieuw proberen + Handmatig als terugbetaald markeren |
mislukt | aangevraagd | Freelancer heeft op Stripe-terugbetaling opnieuw proberen geklikt (artikel 8.8) | Faalreden gewist; terug naar Stripe |
mislukt | handmatig | Freelancer heeft op Handmatig als terugbetaald markeren geklikt (na uitvoering van SEPA buiten het systeem) | Hetzelfde als in behandeling β handmatig |
geslaagd en handmatig zijn eindstaten β beide geven aan dat het kassegment is afgerekend, alleen via verschillende kanalen. Het audittraject bewaart welk kanaal; het gebruikersvisibele gedrag is identiek (afsluit-e-mail, offerte Betaald indien van toepassing, creditnota-PDF toegankelijk).
Troubleshooting
Keep reading
Refunds & Notifications
When refunds happen: the Ξ_REFUND amendment branches
A refund in Clozo is always tied to a Ξ_REFUND amendment branch β partial (revised total smaller than deposit paid) or full (revised total at zero). The amendment is the legal trigger; the refund is the cash consequence.
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
SEPA / out-of-band refund: when automation can't help
When the original deposit was paid via SEPA bank transfer (or any non-Stripe channel), Clozo can't refund automatically β Stripe API has nothing to refund. You issue the SEPA transfer manually from your bank, then click `Mark refunded` to update the credit note and notify the client.
Refunds & Notifications
Refresh status β pull-based sync when the Stripe webhook didn't land
Webhooks aren't perfect. When a credit note appears stuck in `requested` despite Stripe having processed the refund, click `Refresh status` to pull the current state from Stripe directly. Same transition logic as the webhook; no risk of double-firing side-effects.