Skip to main content

Refunds & Notifications · Article 6.3

SEPA-/Außerbörsliche Erstattung: wenn Automatisierung nicht helfen kann

Wenn die ursprüngliche Anzahlung per SEPA-Banküberweisung (oder einem anderen Non-Stripe-Kanal) geleistet wurde, kann Clozo nicht automatisch erstatten – die Stripe-API hat nichts zu erstatten. Sie führen die SEPA-Überweisung manuell über Ihre Bank aus und klicken dann auf `Als erstattet markieren`, um die Gutschrift zu aktualisieren und den Kunden zu benachrichtigen.

SEPA-Banküberweisungen sind in der EU verbreitet, insbesondere in Deutschland, den Niederlanden und Österreich, wo Konto-zu-Konto-Zahlung im B2B-Bereich üblich ist. Clozo unterstützt SEPA für die ursprüngliche Anzahlung über den EPC-QR-Code auf der Anzahlungsrechnung – aber Stripe hat an dieser Transaktion keinen Anteil. Wenn eine Erstattung für eine SEPA-gezahlte Anzahlung benötigt wird, kann Stripe nichts tun. Der Ablauf fällt auf manuell zurück: Sie überweisen die Mittel und erfassen die Überweisung dann in Clozo, damit die Gutschrift die Realität widerspiegelt und der Kunde eine Bestätigung erhält.

Step by step

  1. Post-Sign-Auslöser erhalten.

    Nachdem der Kunde den Δ_REFUND-Nachtrag unterzeichnet hat, erscheint die Gutschrift mit Status ausstehend und der Begründung „Manuelle Freiberufler-Auszahlung erforderlich."

  2. Die IBAN des Kunden nachschlagen.

    Entweder aus Ihren Unterlagen (wenn Sie sie bei der ursprünglichen SEPA-Anzahlung gespeichert haben), aus der Anzahlungsrechnungs-E-Mail (der Kunde hat Ihnen die Mittel geschickt; seine IBAN steht im Kontoauszug) oder durch E-Mail an den Kunden, um die Ziel-IBAN zu bestätigen.

  3. Die SEPA-Überweisung über Ihre Bank ausführen.

    Die Gutschriftnummer als Verwendungszweck verwenden (z. B. „Erstattung CRN-2026-0007"). Die meisten EU-Banken verarbeiten SEPA am selben oder nächsten Werktag; grenzüberschreitendes SEPA Instant ist oft innerhalb von Sekunden.

  4. Auf Als erstattet markieren bei der Gutschrift klicken.

    Vom Erstattungs-Banner der Angebotsseite, der Gutschriftenseite (/credit-notes) oder der Gutschriftzeile im Dokumente-Dropdown.

  5. Begründung angeben.

    Mindestens 1 Zeichen; üblich: Bankreferenznummer („Sparkasse Ref. 9XK7-2026-0511") oder eine kurze Notiz. Diese wird dauerhaft auf der Gutschriftzeile gespeichert.

  6. Bestätigen – Gutschrift wechselt zu manuell.

    E-Mail wird an den Kunden versendet; Angebot schließt auf Bezahlt, falls zutreffend.

Das Erstattungs-Banner zeigt „Manuelle Erstattung eingeleitet" mit Gutschriftdetails, Ihrer maskierten Bankverbindung und einer Schaltfläche „Erstattung abgeschlossen bestätigen". Nach dem Klicken und Angeben einer Begründung wechselt das Banner zu „Erstattung abgeschlossen per manueller Überweisung am [Datum]" mit dem Begründungstext direkt daneben.

Why this works this way

Die Übergabe erfolgt innerhalb von _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." ) ``

Damit wird die Gutschrift so eingerichtet, dass die manuelle Erstattungs-UI angezeigt wird. Das Angebots-Banner lautet „Manuelle Erstattung eingeleitet – Banküberweisung bestätigen" mit den Gutschriftdetails und einem CTA zum Markieren als abgeschlossen.

Die Freiberufler-Aktion (CreditNoteMarkRefundedView in amendment_views.py:686):

1. Prüft, dass die Gutschrift nicht bereits succeeded ist (idempotent – gibt 409 zurück, wenn sie es ist). 2. Verlangt ein reason-Feld im Body (1–500 Zeichen) – typischerweise eine Bankreferenznummer, Auszahlungsdatum oder kurze Notiz. Wird als manual_refund_reason für das Prüfprotokoll gespeichert. 3. Setzt refund_status=manual, refund_completed_at=now, speichert. 4. Ruft close_proposal_if_settled auf, um das Angebot auf Paid zu setzen, wenn keine weiteren Verpflichtungen bestehen. 5. Stellt send_credit_note_refund_completed_email in die Warteschlange – dieselbe E-Mail-Vorlage wie beim Stripe-Erstattung-abgeschlossen-Pfad; die Kundenerfahrung ist identisch.

Der Status manual (vs. succeeded) bewahrt die Prüfunterscheidung: succeeded bedeutet, Stripe-Webhook hat bestätigt; manual bedeutet, der Freiberufler bezeugt, dass die Erstattung außerbörslich ausgestellt wurde. Beide schließen die Gutschrift für Buchungszwecke; nur der Prüfpfad verfolgt den Unterschied.

Troubleshooting

Keep reading