Skip to main content

Refunds & Notifications · Article 6.1

Wanneer terugbetalingen plaatsvinden: de Δ_REFUND-addendum-takken

Een terugbetaling in Clozo is altijd gekoppeld aan een Δ_REFUND-addendum-tak — gedeeltelijk (herzien totaal kleiner dan betaalde aanbetaling) of volledig (herzien totaal op nul). Het addendum is de juridische trigger; de terugbetaling is de geldconsequentie.

Clozo heeft geen knop "geef de klant wat geld terug" los van het contract. Elke terugbetaling is de geldleg van een ondertekend addendum dat het totaal heeft verminderd tot onder het bedrag dat de klant al als aanbetaling heeft betaald. Dit ontwerp is opzettelijk — terugbetalingen zonder een overeenkomstige contractwijziging zijn een nachtmerrie voor belastingaudits; door elke terugbetaling te koppelen aan een ondertekend addendum worden de juridische documenten (Stornorechnung, Berichtigung, Gutschrift) en de geldbeweging altijd gesynchroniseerd.

Quick visual tour

  1. when-refunds-happen step 1: Terugbetalingsverzoek ontvangen. Geen paniek — er is een duidelijk pad.

    Step 1: Terugbetalingsverzoek ontvangen. Geen paniek — er is een duidelijk pad.

  2. when-refunds-happen step 2: Controleer de geschiktheid op de beslissingsboom. De meeste gevallen zijn geldig.

    Step 2: Controleer de geschiktheid op de beslissingsboom. De meeste gevallen zijn geldig.

  3. when-refunds-happen step 3: Druk op Terugbetalen. Stripe handelt de daadwerkelijke geldbeweging af.

    Step 3: Druk op Terugbetalen. Stripe handelt de daadwerkelijke geldbeweging af.

  4. when-refunds-happen step 4: Zie de munten terugvliegen van uw kluis naar de klant.

    Step 4: Zie de munten terugvliegen van uw kluis naar de klant.

  5. when-refunds-happen step 5: Geef een creditnota uit. De boekhouding sluit netjes.

    Step 5: Geef een creditnota uit. De boekhouding sluit netjes.

Step by step

  1. Bepaal het terugbetalingsbedrag.

    Het is geen getal dat u invoert — het is de consequentie van het bewerken van regelitems in een addendum. Nieuw totaal onder geïnde aanbetaling → terugbetaling. Nieuw totaal op nul → volledige aanbetaling terugbetaald.

  2. Open de addendum-wizard.

    /proposals/{id}/amend. Verklein regelitems in Stap 1 totdat de aanbetalingscontext-banner van de wizard "Terugbetaling: €X" toont.

  3. Stel de reden in op Stap 2.

    Minimaal 30 tekens (het langere minimum weerspiegelt dat u vermindert — maak het expliciet). De reden verschijnt op het addendum, op de creditnota-tekst, en is onderdeel van het audittraject.

  4. Verstuur en wacht tot de klant ondertekent.

    Het addendum doorloopt de standaard PIN-beveiligde stroom (artikel 7.4). Bij ondertekening wordt de terugbetalingspipeline uitgevoerd.

  5. Volg de terugbetalingstijdlijn.

    Een banner "Terugbetaling in behandeling" verschijnt op de offertepagina zodra het is ondertekend. Fasen: uitgegeven → aangevraagd (Stripe geaccepteerd) → afgerekend (Stripe-webhook bevestigd) — zie artikel 8.4.

Nadat de klant het Δ_REFUND-addendum ondertekent, wisselt de offertebanner naar "Terugbetaling in behandeling" met het creditnotanummer en een verwacht venster. Het dropdown-menu Documenten krijgt de nieuwe documenten (Stornorechnung, Berichtigung, Gutschrift). De refund_status van de creditnota stuurt de UI: aangevraagd → "Terugbetaling in behandeling, verwacht binnen 3–5 werkdagen"; mislukt → "Terugbetaling mislukt" met opnieuw proberen / handmatige opties; geslaagd / handmatig → "Terugbetaling voltooid op [datum]".

Why this works this way

De terugbetalingsstroom is verankerd in process_amendment_signed (backend/apps/proposals/amendment_postsign.py). Bij ondertekening controleert de functie amendment.triggers_refund. Als dit waar is, berekent het refund_gross = aanbetaling_betaald − herzien_totaal (afgekapt op nul) en:

1. Maakt een DepositInvoiceCorrection (Berichtigung der Anzahlungsrechnung) aan met correction_type=partial_refund of full_cancellation. 2. Maakt een CreditNote (Gutschrift) aan met refund_status=in behandeling, de bruto/netto/btw-bedragen gesplitst via _split_refund_vat, en verwijzingen naar de oorspronkelijke aanbetalingsfactuur (nummer + datum) per Art. 219 EU BTW-richtlijn. 3. Roept _trigger_stripe_refund aan om de geldleg via de Stripe API op de verbonden rekening van de freelancer te proberen.

Twee verschillende "trigger"-bronnen produceren een terugbetaling:

TriggerTakDocumenten aangemaaktGeldleg
Addendum met herzien_totaal < aanbetaling_betaald, oorspronkelijke aanbetaling via StripeΔ_REFUND gedeeltelijk OF volledigStornorechnung + Berichtigung + Gutschrift (+ geannuleerde Eindafrekening bij volledig)Stripe-terugbetaling (artikel 8.2)
Addendum met herzien_totaal < aanbetaling_betaald, oorspronkelijke aanbetaling via SEPA / buiten systeemΔ_REFUND gedeeltelijk OF volledigZelfde documentenHandmatige SEPA (artikel 8.3 + 8.9)

Er is geen pad voor "terugbetaling van de eindafrekening" omdat de eindafrekening geen aanbetaling is — zodra Betaald, is het contract afgerekend. Om een deeltje van een betaald contract terug te betalen, maakt u een addendum aan dat de scope vermindert (Δ−), ondertekent het; de offerte gaat terug naar Wachten op eindafrekening met een kleiner saldo, en elk te veel geïnd bedrag wordt via de post-ondertekeningspipeline verwerkt als een Δ_REFUND. Het addendum is altijd de enige ingang.

Opmerking: vanaf 2026-05-07 is directe verwijdering van een in_work-offerte ook verboden — de backend weigert DELETE met HTTP 409 in_work_requires_amendment. De rode callout 'Alles terugbetalen' in de addendum-wizard (Stap 1) is het enige UI-pad om een betaalde aanbetaling terug te betalen; klikken stelt elke regelitem-hoeveelheid in op 0, de wizard toont de Δ_REFUND-volledige-tak, en bij handtekening van de klant wordt de pipeline van dit artikel uitgevoerd (per [D-125]).

Troubleshooting

Keep reading