renewal remindersfriendly fraudchargebacksdunning

Pre-Renewal Reminders: The Stripe Setting Most SaaS Teams Never Touch Before the Charge Hits

73.7% of merchants say friendly-fraud disputes are rising, often just a forgotten renewal. Here's the pre-charge fix dunning can't cover.

XY
2 September 2026 · 8 min read

Somewhere in your Stripe dashboard, under Settings, there's a toggle that sends a renewal reminder to every subscriber a week before they're charged. Most SaaS teams either never find it or flip it on once during onboarding and never think about it again. That's a mistake, because the alternative to a subscriber knowing a charge is coming isn't silence — it's a subscriber who finds out from their bank statement instead, and increasingly, disputes it rather than asking you about it first.

Key stat
73.7%
Of merchants say friendly-fraud disputes — a cardholder disputing a charge they actually authorized — have increased over the past three years
Source: Chargebacks911, 2026 Chargeback Field Report (June 2026, survey of 250+ merchants)

A renewal charge is the single most common trigger for that kind of dispute. The subscriber signed up months or a year ago, the charge lands on a statement with no warning, and disputing it with their bank is less effort than remembering what the line item is for. Our chargebacks and disputes guide covers the mechanics of fighting these after they're filed. This is about the cheaper fix: making sure the charge was never a surprise in the first place.

What Stripe already does for you, and where it stops

Stripe's built-in renewal reminder isn't a secret, but it's easy to miss because it's buried a few settings pages deep and it's off by default on a lot of accounts that were set up before anyone thought to look for it. Turn it on and Stripe sends a renewal notice roughly 7 days before a subscription's next charge, using your logo and your domain. That's the entire feature. There's one switch, for every customer on every plan, and Stripe's own documentation is explicit that you can't change when it sends or what the copy says beyond the branding.

For a lot of SaaS businesses, that's still better than nothing — a generic 7-day heads-up on an annual plan will stop some disputes it would otherwise have caused. But it treats a $9/month plan and a $2,400/year enterprise renewal identically, which is exactly backwards. The accounts where a surprise charge does the most damage — in dispute fees, in support load, in trust — are the ones paying the most per renewal, and those are exactly the accounts a single global toggle can't treat any differently.

Building your own reminder on top of two Stripe signals

A custom reminder needs two pieces of information Stripe already gives you, and neither requires new infrastructure. The subscription object's current_period_end field tells you exactly when the next charge attempt happens, which is all you need to schedule a reminder any number of days ahead — 10 days for annual plans, 2-3 for monthly plans worth reminding at all. The invoice.upcoming webhook fires shortly before Stripe actually generates that invoice, and it carries a real preview of the amount about to be charged, proration and coupons included, which the fixed-timing dashboard reminder can't show you because it fires too early to know.

SignalStripe's built-in reminderCustom (current_period_end + invoice.upcoming)
Where it livesSettings > Billing > Subscriptions and emailsYour own scheduler + webhook handler
TimingFixed at ~7 days before renewalWhatever fits the plan — annual vs monthly vs high-value
CopyGeneric, logo/domain onlyFully custom, can reference plan and cancel history
SegmentationNone — one toggle for every customerPer-plan, per-interval, per-account-value
Amount shownNot available at send timeExact, from the invoice.upcoming preview

Most teams don't need to choose one over the other. Keep Stripe's toggle on as a floor for accounts you haven't built custom logic for yet, and layer a targeted reminder on top for the segments where a generic notice isn't enough — annual plans, anything above your median contract value, and any account that's had a failed payment or a dispute in the last 12 months, since those are the accounts most likely to distrust the next charge that shows up.

Why annual plans need this more than monthly ones do

The case for a reminder scales directly with how surprising a charge is likely to be, and that's mostly a function of how long it's been since the subscriber last thought about you. Our annual vs monthly billing guide covers why annual subscribers churn less overall — fewer renewal decision points — but the flip side is that when an annual renewal does go wrong, it goes wrong at a much larger dollar amount, once a year, after 12 months of the subscriber not looking at a bill. A monthly subscriber who's forgotten about you sees a small, familiar-looking charge every 30 days. An annual subscriber who's forgotten about you sees one large, unfamiliar-looking charge, once, with no recent charges on the statement to anchor it against.

How merchants are experiencing rising friendly fraud
All merchants reporting an increase over 3 years73.7%
Enterprise merchants reporting an increase83.4%
Merchants calling it a moderate-to-significant concern74.4%

Source: Chargebacks911, 2026 Chargeback Field Report (June 2026).

This isn't a fixed-cost problem you can solve once. Recurly's 2026 State of Subscriptions report puts the revenue recovered through automated recovery tools at over $155 million for the Software industry and nearly $100 million for Digital Media in 2025 alone — but that's recovery after a payment already failed, the same territory our Stripe dunning guide covers. A renewal reminder operates one step earlier than any of that. It doesn't recover a failed charge or win a filed dispute; it reduces how often the charge looks unfamiliar enough to fail or get disputed in the first place, which is a cheaper problem to prevent than to fix.

What actually goes in the email

The version most teams send, when they send anything at all, is a single line: "Your subscription renews on [date]." That's not wrong, it's just doing the minimum. A reminder that's actually earning its send includes the exact charge amount pulled from invoice.upcoming rather than a vague reference to "your plan price," a one-click link to update the payment method on file, and a visible link to the cancellation flow itself — not hidden, not buried behind a support request. That last part feels counterintuitive. Making it easy to cancel inside the reminder seems like it should increase cancellations. What it actually does is move the decision from your bank's dispute form back onto your own page, where you control the offer, the reason capture, and the outcome, instead of finding out secondhand weeks later the way bank-initiated cancellations already routes some of your subscribers around you entirely.

For accounts with a documented cancel reason from a previous save or a past dispute, the reminder is also the natural place to reference it. A subscriber who paused because they weren't using the product enough gets a different renewal email than one who's never had a payment issue — the same reason-matching logic our cancel-reasons guide applies to retention offers works just as well applied one step earlier, before the charge instead of after the cancel click.

The one thing not to do: stack it with a discount pitch

A renewal reminder is not the moment to upsell or push a retention offer preemptively — that's a different email with a different job, and combining them undermines both. Our cancellation confirmation email guide makes a similar point about the opposite end of the lifecycle: stacking a discount offer onto a transactional message reads as pressure, not help, whether it's sent right after someone cancels or right before they're charged. Keep the renewal reminder purely informational — date, amount, a way to change or cancel — and save the offer for the moment someone actually signals they're leaving.

Measuring whether it's working

Track three numbers against each other, segmented by whether the account received a custom reminder: the dispute rate on renewal charges, the rate of voluntary cancellations that happen in the days between the reminder and the charge, and the failed-payment rate on the charge itself (a card that's expired since the last renewal is exactly the kind of thing an early reminder catches before it becomes a decline). If disputes drop and voluntary cancellations tick up slightly, the reminder is doing its job — it moved decisions from an uncontrolled channel into one you can see and act on. If disputes stay flat while cancellations rise sharply, the reminder is probably arriving too early or too generic, prompting people to leave who weren't actually going to dispute anything. Run the numbers on what even a modest shift in either direction is worth with our churn calculator before deciding how much engineering time this is worth investing in.

None of this replaces a real cancellation flow — it just makes sure fewer subscribers end up disputing a charge because your own product never gave them a chance to see it coming. CancelFlow is built for the moment someone does decide to leave: capturing the reason, offering a pause or discount that actually fits, and closing the loop before a bank has to do it for you. A renewal reminder is the same philosophy applied a few days earlier — give the subscriber the information and the option before the decision gets made for them.

Frequently asked questions

When should I send a subscription renewal reminder email?+

For annual and other high-value plans, 7-10 days ahead gives someone enough runway to update a card, downgrade, or cancel through your flow instead of disputing the charge later — and it lines up with Stripe's own default of 7 days for the renewal email it can send automatically. For monthly plans the math usually doesn't work: a reminder sent 5 days before a $29 charge often creates more voluntary cancellations than it prevents disputes on. Reserve monthly reminders for higher-priced plans or subscribers who've already had a failed payment or dispute on file.

Does Stripe automatically send renewal reminder emails?+

Yes, but it's limited. Under Settings > Billing > Subscriptions and emails, there's a toggle that sends a renewal reminder roughly 7 days before a subscription renews. It's a single on/off switch for your entire customer base — you can't change the timing, edit the copy beyond your logo and domain, or send it only to annual or high-value subscribers. Most teams either never find the toggle or turn it on once and never revisit whether generic copy is doing the job.

What's the Stripe invoice.upcoming webhook and how is it different from the built-in reminder?+

invoice.upcoming fires before Stripe generates the next invoice for a subscription, which means it carries a live preview of what's actually about to be charged — including any proration, tax, or coupon changes — rather than a generic renewal notice. You can use it to trigger your own reminder with the real dollar amount in it, or to add last-minute invoice items. For trial-to-paid conversions specifically, it fires 3 days before the trial ends by default, which is the window most teams use for a 'your trial is ending' email.

Won't reminding people their subscription is about to renew just increase voluntary cancellations?+

Some, but that's the trade you want. A subscriber who was going to cancel anyway is better off doing it through your cancellation flow — where you can capture the reason and offer a pause or discount — than disputing the charge with their bank weeks later, which costs you the revenue plus a flat dispute fee and no chance to make an offer at all. The net effect in practice is a small, controllable increase in voluntary cancellations against a larger reduction in disputes and support tickets you don't control the timing of.

Try CancelFlow

Stop losing subscribers today

One script tag. One function call. A live cancellation flow in under 10 minutes.

Start free trial →
← All postsHome