COMPLIANCEDUNNING

Annual plan renewals: reminders, notice rules and how to keep customers

How to handle annual subscription renewals: reminder timing, California and card network notice rules, Stripe renewal emails, and a pre-renewal checklist.

Published 8 min read

Annual plans are good for retention on paper: the customer commits for a year, and there is only one renewal to get through instead of twelve. But that single renewal is a large charge, on a card the customer may not have used with you for twelve months, for a product some of them have stopped thinking about. When it goes wrong, it goes wrong in one of three ways: the payment fails, the customer disputes a charge they forgot about, or they ask for a refund and leave.

Most of this is avoidable with a reminder sent at the right time, which in several places is also a legal or card network requirement. This guide covers the rules we could verify, Stripe’s built-in tools, and a practical renewal sequence.

This is not legal advice. The rules below are summarized as of November 3, 2026, for the jurisdictions named. Laws differ by state and country and change often; check with a lawyer for your situation.

Why annual renewals are fragile

Compared with a monthly renewal, an annual one has a few specific risks:

  • The card is old. A card saved twelve months ago is more likely to have expired or been replaced. See expiring cards and network tokens and card updater.
  • The amount is large. A charge of ten or twelve months’ price is more likely to hit a spending limit or a fraud check, and a soft decline like insufficient_funds or card_velocity_exceeded is more likely. See Stripe decline codes explained.
  • The customer forgot. A surprise charge is a refund request or a dispute waiting to happen.
  • The person changed. In B2B, the person who bought the plan may have left, and the card may belong to someone who never heard of you.

A reminder before the renewal addresses all four: it prompts a card update, warns about the amount, reminds the customer, and reaches whoever now owns the account.

The rules we could verify

California

California’s Automatic Renewal Law (Cal. Bus. & Prof. Code sections 17600 and following) has specific timing rules. From the text of section 17602 (accessed November 2026):

  • For an automatic renewal with an initial term of one year or longer, the business must send a notice at least 15 days and not more than 45 days before the renewal.
  • For a free trial or promotional price lasting more than 31 days, a notice is due at least 3 and at most 21 days before the trial or promotion ends.

AB 2863 (Chapter 515, Statutes of 2024) added further requirements, with most changes taking effect July 1, 2025 according to law firm summaries such as Davis Wright Tremaine’s. They include an annual reminder of the subscription terms (what it is, what it costs, how to cancel), and notice 7 to 30 days before a price change under an existing renewal. The law protects consumers in California. Our click-to-cancel rules overview covers the cancellation side.

Germany

For consumer contracts concluded since March 1, 2022, the German “fair consumer contracts” law changed section 309 no. 9 of the Civil Code (BGB): standard terms can no longer tacitly extend a contract by a fixed year. After the initial term, a tacitly extended contract must be cancellable at any time with at most one month’s notice (IHK Köln summary, in German). This does not require a reminder, but it changes what “annual renewal” means for German consumers: after year one, the customer can leave with a month’s notice. Germany also requires a cancellation button for consumer contracts concluded online (section 312k BGB, see our click-to-cancel overview).

United Kingdom

The Digital Markets, Competition and Consumers Act 2024 includes a subscription contracts regime with reminder notices before renewals and before the end of free or discounted trials. As of this writing it is not in force; the government announced a start in January 2027, with secondary legislation still pending (Wiggin tracker). If you sell to UK consumers, plan for renewal reminders now.

Other places

Many US states have their own automatic renewal laws with different notice windows, and some cover B2B contracts too. We could not verify a current, complete list from primary sources, so we do not reproduce one here. If you sell nationally in the US, a common approach is to design to the strictest rule you are subject to and apply it to everyone.

Card network rules

Card networks have their own requirements, which apply regardless of the customer’s location and to B2B as well as B2C.

According to Stripe’s guidance on Mastercard recurring billing requirements (accessed November 2026), merchants must send an email or other electronic reminder before charging subscriptions billed six or more months apart, such as annual plans. Stripe recommends configuring an upcoming renewal event between 7 and 30 days before renewal for billing periods longer than 180 days. The same page covers a written confirmation when a subscription is cancelled.

Visa’s trial subscription rules require a reminder with a link to cancel at least seven days before charging at the end of a trial or promotional period. That is about trials, but the same logic applies if your annual plan starts with a discounted first year.

A timing that satisfies the strictest rules above

If you want one schedule for everyone, the overlap of the rules above gives you a window:

Rule Window before an annual renewal
California, initial term of one year or longer 15 to 45 days
Mastercard, via Stripe’s guidance Reminder required; Stripe suggests 7 to 30 days
Overlap 15 to 30 days

A practical sequence:

When Message Purpose
30 days before Renewal reminder: date, amount, plan, how to change or cancel, card on file (brand and last four) Compliance, and time to update the card
7 days before Short reminder, only if the card expires before the renewal date or was removed Prevent a failed payment
Renewal day Receipt Reduce “what is this charge?” disputes
If it fails Your normal dunning sequence Recover the payment

Check the dates against your own markets. If a law you are subject to requires a different window, it wins.

What the reminder should contain

Write it like a useful notice, not a marketing email.

  • Subject: “Your [Product] plan renews on [date]”
  • The facts: plan name, renewal date, exact amount including tax, billing interval.
  • The card: “We’ll charge your Visa ending in 4242.” If the card expires before the renewal date, say so and link to the update page.
  • What they got: one or two lines on usage over the year, only if you have real numbers for this customer.
  • Choices: a link to switch plans (monthly, a smaller plan) and a link to cancel. Both should work online and quickly.
  • Who to contact: a reply address that reaches a person.

Do not hide the cancel link, and do not make it harder to cancel than to renew. Besides the legal risk, a customer who could not find the exit is the one who files a dispute.

Example

Subject: Your Planwise plan renews on March 14

Hi Sam,

Your Planwise Team plan (annual) renews on March 14, 2027. We’ll charge $1,188.00 to your Visa ending in 4242.

Nothing to do if you’d like to continue. If you’d rather switch to monthly billing, change plans, or cancel, you can do it here: [Manage subscription]

Questions? Just reply to this email.

Setting it up in Stripe

Stripe has the building blocks:

  • Renewal reminder emails. In the customer emails settings, turn on emails about upcoming renewals. Stripe documents that these are not sent for subscriptions with collection_method set to send_invoice.
  • The lead time. The “upcoming renewal events” setting controls how many days before renewal Stripe sends the invoice.upcoming webhook and the reminder. For existing subscriptions, a change takes effect from the next billing period.
  • Your own email. If you want custom content, listen to invoice.upcoming and send your own message, and turn Stripe’s reminder off to avoid sending two.
  • Card checks. On invoice.upcoming, compare the card’s expiry with the renewal date, and check that a default payment method still exists.

Stripe’s reminder setting is account-wide. If monthly plans should not get reminders but annual plans should, filter on the price interval in your own handler.

Reducing churn at renewal, honestly

A reminder will make some customers cancel who would otherwise have renewed without noticing. That is the point of the rules, and those customers were likely to dispute or ask for a refund anyway. You can still keep many of them with a fair offer:

  • Offer monthly billing. Some customers are not leaving the product, they are leaving the commitment.
  • Offer a smaller plan. Seat counts and usage often shrink over a year.
  • Offer a pause if the customer’s need is seasonal. See pause vs discount vs downgrade.
  • Ask why when they cancel, with a short reasons list. See cancel flow best practices.

Measure the renewal rate of annual plans by cohort, and separate failed payments from cancellations. They have different fixes.

Pre-renewal checklist

  • Annual renewals get a reminder 15 to 30 days before (or the window your rules require).
  • The reminder shows date, amount, card and how to cancel.
  • Customers whose card expires before renewal get a separate card update request.
  • Customers without a default payment method are flagged before renewal.
  • Price changes trigger a notice in the required window.
  • Cancellation works online, in a few clicks.
  • A receipt goes out on renewal day.
  • Failed annual renewals enter a dunning sequence the same day.
  • B2B reminders go to the billing contact, not only the original signup.

How NoChurn helps

NoChurn watches for the problems that make renewals fail. Each customer gets a churn score at signup, partly based on the payment method, and customers who remove their card before renewal are flagged so you can reach them before the payment fails. If a renewal fails anyway, NoChurn retries at better times and sends AI-written recovery emails, reviewed before sending, with a hosted card update page. Customers who cancel go through a cancel flow with one relevant offer and a cancel button that is always visible, and win-back emails follow at 30, 60 and 90 days.

It connects to Stripe in one click, and pricing depends only on MRR. See the churn score, cancel flows and pricing.

PROMPT

Read https://www.nochurn.sh/llms.txt,
then follow https://www.nochurn.sh/docs/quickstart/
to add NoChurn to this app. Use a test key
(nc_test_…) until I say we go live.

Stop leaking revenue.

  • Free until $300 MRR
  • No card needed
  • Live in 10 minutes
  • Never a cut of what we recover