Skip to main content
February 19, 20261.0.41v1.0.41RSS

v1.0.41 — [Intelligence] Dunning cron auto-suspends and cancels customers but never sends the email — all email actions are no-ops

Release Notes

Current behavior: billing-crons.ts dunning loop logs 'Email skipped for {actionType} on invoice {id} — Resend not configured' for EVERY email_reminder, warning, final_warning action type. The suspension and cancellation DB updates do run, but customers never receive a single email during the entire dunning sequence. Expected behavior: Each dunning step (reminder_day_1, reminder_day_2, final_warning) sends a real email via Resend. The email templates, subject lines, and HTML are already built in churn-crons.ts's sendWinBackEmail helper — the pattern exists, just not connected here. File: N/A Recommendation: Add a sendDunningEmail() helper modeled on sendWinBackEmail(). Wire it inside the dunning loop for all email-based action types. RESEND_API_KEY is already registered as an env var.