formal ยท Attempt 1

Annual subscription failed to renew

From: you@yourcompany.com

Subject: Your annual {{plan_name}} subscription failed to renew

Preheader: Quick fix โ€” keeps your annual plan and savings.

Hi {{customer_name}},

Your annual {{plan_name}} subscription was due to renew today, and the payment didn't go through ({{decline_reason}}).

Annual customers are our favorite kind, so let's get this fixed quickly. The renewal amount is {{amount}}, and you can update payment here:

๐Ÿ‘‰ {{update_card_url}}

If you'd like to talk about pricing or alternatives, just reply.

Best,
{{company_name}}

Variables to replace

  • {{customer_name}}
  • {{plan_name}}
  • {{decline_reason}}
  • {{amount}}
  • {{update_card_url}}
  • {{company_name}}

Why this works

Annual renewals carry larger amounts and need a more measured tone. Acknowledge the customer's value; offer human channel.

Want to see what this looks like on your Stripe?

See which of these templates would actually go out for your real failures โ€” and how much you'd recover. Free 3-min audit.

Run free audit

Frequently asked questions

Can I use this template commercially?+
Yes โ€” copy, paste, modify, ship. No attribution required.
What variables should I replace?+
This template uses: {{customer_name}}, {{plan_name}}, {{decline_reason}}, {{amount}}, {{update_card_url}}, {{company_name}}. Replace each with the corresponding customer/payment data from your system.
When should I send this email?+
On retry attempt 1. Combine with smart retry timing (e.g. day 1, 3, 7) for best results.
What recovery rate should I expect from this template?+
Single emails recover modestly (~5-15%). Combined with smart retry timing, save offers, and proper sequencing, full systems lift recovery to 40-65% โ€” vs ~30% for Stripe Smart Retries alone.
Does Rechurn use these templates?+
Yes โ€” Rechurn ships with versions of these as defaults, AI-rewrites them per customer/failure context, and runs them through smart retry timing automatically.

More templates