Troubleshooting & Reference · Article 7.17
« Mon client a reçu un e-mail de rappel mais il avait déjà payé »
Condition de concurrence rare — rappel envoyé quelques instants avant que la confirmation de paiement ne se propage. La tâche beat de rappel revérifie le statut de paiement au moment de l'envoi ; si payé, elle saute. Si vous constatez cela, l'écart était de l'ordre de quelques secondes.
Un e-mail de rappel envoyé à un client qui a déjà payé est embarrassant mais sans conséquence. Clozo s'en protège deux fois (la vérification d'idempotence des événements de chronologie + la revérification du statut de paiement par envoi), mais une étroite course entre le traitement du webhook et l'envoi peut passer à travers. Si cela arrive une fois, excusez-vous et passez à autre chose ; si cela arrive à plusieurs reprises, c'est un bug que nous voulons connaître.
Step by step
Excusez-vous auprès du client.
Message personnel : « Toutes nos excuses — ce rappel est parti quelques instants avant que notre système ne voit votre paiement. Vous êtes en règle. »
Vérifiez que le statut de paiement
est correctement
Payédans Clozo. Si ce n'est pas le cas, c'est un problème différent (section 10.14).Si reproductible (plusieurs devis payés recevant des rappels)
, contactez le support.
Why this works this way
La tâche beat send_overdue_reminders (tasks.py L2107) s'exécute toutes les heures et met en file des envois par niveau. Le dispatcher send_overdue_reminder_email (L2165) revérifie proposal.status != Proposal.STATUS_OVERDUE au moment de l'envoi et saute si payé. La fenêtre de concurrence est les quelques centaines de millisecondes entre la revérification et l'appel API Resend réel.
Si l'e-mail de rappel s'est déclenché sur un devis payé, le paiement a dû arriver dans cette étroite fenêtre. Très inhabituel.
Troubleshooting
Keep reading
Refunds & Notifications
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.
Lifecycle
Status: Awaiting final payment, then Paid
You've issued the final invoice. The client now owes the remaining balance (full amount minus the deposit they already paid). When the money lands, status flips to `Paid` and the final receipt is generated.
Refunds & Notifications
Every email Clozo sends, in one table
Clozo dispatches 13 distinct transactional emails across the proposal and amendment lifecycle. This page lists each one, who triggers it, who receives it, and what's attached.