Skip to content

cloud-api: dunning email copy claims cancellation at the next retry date (false) #133

Closed

Description

@sre-helmcode

Report

Member hola@alexmegah.com (inference, $65 USD) reported on 2026-09-30: renewal failed Sep 21, a dunning email promised a retry date; the Sep 28 smart retry failed too and a second identical email granted another 'grace period'. The member (in good faith) concluded the system was repeatedly granting grace periods it should only grant once.

Root cause

The email copy is false, not the flow. SendPaymentFailedNotice (internal/email/resend.go) said: 'Si para esa fecha sigue sin poder cobrar, la suscripción se cancelará' — but Stripe Smart Retries keep retrying after that date (up to ~4 attempts over ~14 days, one email per failed attempt per handleInvoicePaymentFailed). Key stays active during past_due by design (revocation only on subscription cancellation → 7-day grace).

Fix

State the real behaviour: retries continue for the next few days, the subscription stays active while retries are pending, cancellation only when retries are exhausted. Pin with tests.

Verification

  • Stripe timeline: charges failed 2026-09-21 23:13 UTC and 2026-09-28 20:13 UTC; next attempt 2026-10-05 20:13 UTC; sub past_due, not cancelled; member DB state subscribed (correct).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions