Refunds & Notifications · Article 6.3
SEPA / buiten-systeem-terugbetaling: wanneer automatisering niet kan helpen
Wanneer de oorspronkelijke aanbetaling via SEPA-bankoverschrijving (of een ander niet-Stripe-kanaal) is betaald, kan Clozo niet automatisch terugbetalen — de Stripe API heeft niets te terugbetalen. U voert de SEPA-overschrijving handmatig uit vanuit uw bank en klikt vervolgens op `Als terugbetaald markeren` om de creditnota bij te werken en de klant te informeren.
SEPA-bankoverschrijvingen komen veel voor in de EU, met name in Duitsland, Nederland en Oostenrijk waar betaling van rekening naar rekening gangbaar is bij B2B. Clozo ondersteunt SEPA bij de oorspronkelijke aanbetaling via de EPC QR-code op de aanbetalingsfactuur — maar Stripe speelt geen rol in die transactie, dus wanneer een terugbetaling nodig is op een via SEPA betaalde aanbetaling, kan Stripe niets doen. De stroom valt terug op handmatig: u maakt het geld over, en registreert de overschrijving dan in Clozo zodat de creditnota de werkelijkheid weerspiegelt en de klant een bevestiging ontvangt.
Step by step
Ontvang de post-ondertekeningsactivering.
Nadat de klant het Δ_REFUND-addendum ondertekent, verschijnt de creditnota met status
in behandelingen reden "Handmatige freelanceruitbetaling vereist."Zoek het IBAN van de klant op.
Uit uw eigen administratie (als u het heeft opgeslagen tijdens de oorspronkelijke SEPA-aanbetaling), uit de aanbetalingsfactuur-e-mail (de klant heeft u de fondsen gestuurd; hun IBAN staat op het bankafschrift), of door de klant te e-mailen om te bevestigen dat het doel-IBAN hetzelfde is als het IBAN waarmee ze hebben betaald.
Voer de SEPA-overschrijving uit vanuit uw bank.
Gebruik het creditnotanummer als referentie (bijv. "Terugbetaling CRN-2026-0007"). De meeste EU-banken verwerken SEPA dezelfde dag of volgende werkdag; grensoverschrijdende SEPA Instant is vaak binnen seconden.
Klik op
Als terugbetaald markerenop de creditnota.Via de terugbetalingsbanner op de offertepagina, de creditnota-pagina (
/credit-notes), of de creditnotarij in het dropdown-menu Documenten.Geef een reden op.
Minimaal 1 teken; typisch: bankreferentienummer ("Sparkasse ref 9XK7-2026-0511") of een korte notitie. Dit wordt permanent opgeslagen op de creditnotarij.
Bevestig — creditnota gaat naar
handmatig.E-mail gaat uit naar klant; offerte sluit naar
Betaaldindien van toepassing.
De terugbetalingsbanner toont "Handmatige terugbetaling geïnitieerd" met creditnotadetails, uw bankrekening gemaskeerd, en een knop Terugbetaling voltooid bevestigen. Na het klikken en opgeven van een reden wisselt de banner naar "Terugbetaling voltooid via handmatige overschrijving op [datum]" met de redentext inline.
Why this works this way
De overdracht vindt plaats binnen _trigger_stripe_refund (amendment_postsign.py:472):
``
if not payment:
credit_note.refund_status = REFUND_PENDING
credit_note.refund_failure_reason = (
"No Stripe PaymentIntent found — likely SEPA flow. "
"Manual freelancer payout required."
)
``
Dit stelt de creditnota in om de handmatige terugbetalings-UI te tonen. De offertebanner toont "Handmatige terugbetaling geïnitieerd — bevestig bankoverschrijving" met de creditnotadetails en een CTA om de terugbetaling als voltooid te markeren.
De actie aan de kant van de freelancer (CreditNoteMarkRefundedView in amendment_views.py:686):
1. Valideer dat de creditnota nog niet geslaagd is (idempotent — retourneert 409 als dat wel zo is).
2. Vereis een reason-veld in de body (1–500 tekens) — doorgaans een bankreferentienummer, uitbetalingsdatum of korte notitie. Opgeslagen als manual_refund_reason voor audit.
3. Stel refund_status=manual, refund_completed_at=nu in, opslaan.
4. Roep close_proposal_if_settled aan om de offerte naar Betaald te zetten als er geen andere verplichtingen meer zijn.
5. Zet send_credit_note_refund_completed_email in de wachtrij — hetzelfde e-mailsjabloon als het Stripe-terugbetaling-voltooid-pad; de ervaring van de klant is identiek.
De handmatig-status (vs geslaagd) bewaart het auditonderscheid: geslaagd betekent dat de Stripe-webhook heeft bevestigd; handmatig betekent dat de freelancer bevestigt dat de terugbetaling buiten het systeem is uitgegeven. Beide sluiten de creditnota voor boekhoudkundige doeleinden; alleen het audittraject registreert het verschil.
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
Mark refunded manually — for SEPA and out-of-band proof
When a refund is issued outside Stripe — SEPA bank transfer, cash, PayPal, mailed cheque — `Mark refunded` is how you record it in Clozo. Reason field is mandatory (typically a bank reference). The credit note moves to `manual` status and the client receives a confirmation email.
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
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.