Refunds & Notifications · Article 6.9
Email: Auto-reminders for overdue invoices (3 / 7 / 14 day escalation)
When a final invoice goes unpaid past its due date, Clozo sends three escalating reminders to the client at +3, +7, and +14 days. Tone moves from gentle to formal; the +14-day reminder cites the EU Late Payment Directive.
Late payments are the most common pain point for EU freelancers — the European Commission's own data puts average payment delay at 23 days past due. Clozo's auto-reminder cadence is built to nudge politely first, escalate gradually, and end with a legally weighty formal notice that you'd have to write yourself otherwise.
Step by step
Invoice goes overdue.
Once the final invoice's due date passes, status flips to
Overdueand the proposal becomes eligible for reminders.Tier 1 fires at +3 days.
At 09:00 local for the client. Timeline event recorded. Client gets the gentle nudge email.
Tier 2 fires at +7 days.
Same time, escalated tone. Timeline event recorded.
Tier 3 fires at +14 days.
Formal notice with Directive reference. Timeline event recorded. After Tier 3, no more automated reminders — further follow-up is on you (manual reminders or external collection).
Status badge Overdue with a sub-counter "Reminder N of 3 sent". Timeline gains an event per tier. Action menu offers Disable auto-reminders for this proposal (turns off all future tiers) and Send manual reminder (off-cycle nudge with custom note).
Why this works this way
The cadence (REMINDER_TIERS = (3, 7, 14)) is calibrated to behavioural research and EU legal practice:
- Day +3 (Tier 1 — gentle nudge): Subject (EN): "Quick reminder: invoice {{number}} from {{your_name}}". Body opens with "Just a quick reminder — invoice {{number}} for €X was due on [date]." No threats, no fees, just a polite ping. Most overdue invoices clear at this stage.
- Day +7 (Tier 2 — firmer): Subject (EN): "Invoice {{number}} is now {{days}} days overdue". Body acknowledges this is the second reminder, restates the amount, includes the same payment CTA, and notes that continued non-payment will trigger formal late-payment terms.
- Day +14 (Tier 3 — formal notice): Subject (EN): "Formal notice: invoice {{number}} {{days}} days overdue". This is the legal escalation. Body cites EU Directive 2011/7/EU on combating late payment in commercial transactions: "Statutory late-payment interest now accrues on the unpaid amount. In addition, a flat recovery fee applies (Article 6 of the Directive)." Localised in EN/DE/NL/FR/PL/ES — the German version cites "Richtlinie 2011/7/EU", French cites "Directive 2011/7/UE", etc. The recovery fee is tiered by invoice amount per Directive Art. 6 ([VERIFIED 2026-05-03] tasks.py:2094): €40 for invoices under €1,000, €70 for €1,000–€10,000, €100 above €10,000.
Reminders fire at 09:00 in the client's local timezone (resolved from the client's country code), so a German client gets the morning email at 09:00 CET, a Spanish client at 09:00 CET/CEST, etc. Day-of-week filtering: by default reminders fire any day; you can configure weekday-only via your profile.
Idempotency is enforced by recording a ProposalTimelineEvent of type overdue_reminder_sent with metadata.tier = N. Before firing, the beat task checks for that event — if it exists, it skips. Even if the beat task runs twice in the same hour (e.g., during a Celery restart), each tier sends exactly once per proposal.