Refunds & Notifications Β· Article 6.10
Email: "Refund completed β β¬X returned"
The closing email of a refund flow. Fires when Stripe confirms the refund succeeded (or when you mark a SEPA refund as complete). Carries the credit note PDF.
A refund without a clear confirmation email leaves the client wondering. This email is the closing artefact β money returned, credit note issued, audit trail closed.
Step by step
Refund initiated.
Either automatically (Ξβ amendment branch) or manually (Refund initiation flow).
Refund completes.
Stripe webhook (
charge.refunded) or your manual confirmation.Email dispatches.
Single email to client with credit note attached.
Status badge Refund completed. Timeline event "Refund completed via [method] β β¬X". Documents dropdown contains CRN-XXXX. No additional action needed; the proposal moves to its post-refund terminal state.
Why this works this way
The credit note (CRN-, also called Gutschrift in DE / nota de crΓ©dito in ES / note de crΓ©dit in FR) is the legal voucher for the refund. Under EU VAT rules it must reference the original invoice and break down the refund net amount + VAT amount. The PDF is generated by render_credit_note_pdf() (pdf/service.py L560) and stored in R2.
Stripe-rail refunds: the email fires when the charge.refunded webhook arrives with status=succeeded. SEPA / out-of-band refunds: the email fires when you click Mark refund as completed on the credit note record.
Troubleshooting
Keep reading
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
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.
Refunds & Notifications
Retry Stripe refund β when transient failures clear
A failed Stripe refund can usually be retried β most failures are transient (rate limits, brief Stripe outages, or deposit-paid webhook arriving after the post-sign pipeline ran). The Retry button calls `_trigger_stripe_refund` afresh on the credit note.