Guide

Your monthly giving total dropped and nobody told you: how failed recurring donations actually work

Recurring gifts are charged by Stripe and PayPal on their servers, not by your website, so when one fails the failure happens somewhere you never look. This guide explains exactly what each processor does by default, how to pull the list of sustainers who quietly fell off last month, and how to tell a recoverable expired card from a donor who genuinely cancelled.

Short answerA failed recurring gift is retried by the payment processor, not by your website. Stripe retries on a schedule you control in your own Stripe dashboard. PayPal retries on a fixed ladder you cannot change. If no retry succeeds, the subscription ends, and for most organisations the only signal is a smaller monthly total. Finding out who fell off means pulling the list from Stripe and PayPal yourself and comparing it to your donation records.

If your monthly giving total dropped by a few hundred dollars and nothing on your website changed, the most likely explanation is boring and fixable: two or three sustainers had a card expire, get reissued after a fraud alert, or hit a bank that declined a small recurring charge. Nobody cancelled. Nobody complained. The money simply stopped arriving, and no report told you.

This happens because of a split that almost nobody explains to nonprofit staff. Your WordPress site collects the first gift and stores the record. Every gift after that is charged by Stripe or PayPal on their own infrastructure, on their own schedule, whether your site is online or not. When one of those charges fails, the failure happens over there. Your website finds out only if a webhook arrives and something is listening. Most of the category writes about growing recurring giving and never about this, because describing the leak means admitting the leak exists.

How do I find out which recurring donations failed last month?

There is no single button anywhere that produces this list. You build it from three sources, which is exactly why so few small organisations ever look.

  1. Stripe. Open the Dashboard and go to Billing, then Subscriptions. Filter the list by status. The statuses you care about are past_due, unpaid and canceled. Set the date range to last month, then use the Export button in the top right to pull a CSV with the customer email, amount and status.
  2. PayPal. Sign in to your business account and open Pay & Get Paid, then Subscriptions or Recurring payments, depending on which interface your account shows. Look for agreements with a status of Suspended or Cancelled. PayPal's reporting here is thinner than Stripe's, so expect to read a list rather than export a clean file.
  3. Your own records. In WordPress, open Donor Merchant's reports dashboard and the donations list, and compare the count of recurring gifts received last month against the month before. The donor list with lifetime totals tells you which of the names on your Stripe and PayPal lists were long-standing sustainers and which had given twice.

Compare the same calendar window in all three places. A gift charged on the 29th of a 30-day month can land in the next month's payout and look like a lapse when it is just a timing artefact. If you also reconcile your bank deposits, the same discipline applies there - see reconciling Stripe payouts with donation records.

What happens when a monthly donor's card expires?

The answer is genuinely different depending on which processor took the gift, and the difference shapes everything you do next.

Stripe

Stripe participates in the card networks' automatic update services, so when a US-issued Visa, Mastercard, American Express or Discover card is reissued, Stripe often receives the new expiry date or number and the saved payment method keeps working with no action from anyone. Support outside the United States varies by country, and Stripe states there is no way to tell in advance which cards are covered.

When the charge does fail, Stripe Billing retries it. Those retries, marketed as Smart Retries, run on Stripe's servers on a schedule you configure at Billing, then Revenue recovery, then Retries. Stripe's recommended default is eight attempts inside two weeks, and you can choose a window of one week up to two months, or replace the whole thing with a custom schedule of up to three retries.

The part that catches people out is the ending. What the subscription becomes after the retries are exhausted is a setting on that same screen, and it is yours, not your donation plugin's. The three options are:

Setting you chose in StripeWhat the subscription becomesWhat it means for you
Cancel the subscriptioncanceledThe gift is gone. Reinstating it means the donor starts a new recurring donation.
Mark the subscription as unpaidunpaidInvoices keep generating as drafts. Nothing is charged. Easy to miss entirely.
Leave the subscription past-duepast_dueThe subscription stays open and keeps trying per your retry rules.

One more detail Stripe publishes and almost nobody repeats: Stripe will not retry a hard decline. If the issuer returns a code such as lost_card, stolen_card, incorrect_number or transaction_not_allowed, the retry schedule keeps counting but no charge is actually attempted until a new payment method appears on the customer. A donor whose card was stolen will never recover on their own. Someone has to ask them.

PayPal

PayPal's behaviour depends on which recurring product created the agreement, and this is where the published information gets thin.

  • Classic Subscribe-button recurring payments. PayPal reattempts the failed payment about three days later. If that fails, it waits roughly five more days and tries once more. If that fails, PayPal cancels the subscription. A reattempt does not happen if another payment on the same subscription is already scheduled within 14 days.
  • The current Subscriptions API, which is what a modern integration such as Donor Merchant's PayPal support uses, retries a failed cycle roughly every five days for up to two attempts. The unpaid amount is added to an outstanding balance carried into the next cycle, and the subscription is suspended once the failure threshold set on the plan is reached.

In both cases the subscriber gets an email from PayPal. The charity, in practice, gets very little that is actionable, which is why a PayPal sustainer can disappear for two months before anyone notices. Verified against PayPal and Stripe developer documentation in September 2026. Both companies change these rules without much fanfare, so confirm against your own dashboard before relying on the timings.

Can I update a donor's card for them on a PayPal recurring donation?

No. Not through your plugin, not through your PayPal dashboard, not by calling PayPal support. On a PayPal billing agreement the funding source belongs to the payer's PayPal account, and only the payer can change it, from their own Automatic Payments settings. There is no merchant-side path.

This single fact should decide your recovery process, because Stripe is the opposite. With Stripe, Donor Merchant's passwordless donor portal emails the donor a magic link, and from there they open a Stripe billing portal session where they replace the card and are done in under a minute, with no password to remember and no account to create.

Stripe sustainerPayPal sustainer
Who fixes the payment methodDonor, via the donor portal link you sendDonor, inside PayPal, only
Can you do it for themNo, but the portal link makes it one clickNo, by any means
Retry schedule you controlYes, in your Stripe dashboardNo, PayPal sets it
Your practical ask"Here is a link, takes a minute""Please restart your monthly gift here"

Do failed recurring donations retry automatically, or do I have to do something?

They retry automatically, and you still have to do something. The retries run without you. What does not happen without you is the human follow-up, and that is where the recovery actually comes from. Vendor-published benchmarks commonly put recovery of failed recurring payments at roughly 30 to 50 percent when an organisation runs a deliberate process, with much higher figures claimed for full dunning suites. Treat those numbers as directional rather than audited, but the direction is not in doubt: organisations that email lapsed sustainers recover more than organisations that do not.

How do I tell a recoverable lapse from a real cancellation?

These two need opposite responses, and confusing them is how a charity annoys a donor who already decided to stop.

SignalLikely a recoverable lapseLikely a genuine cancellation
Statuspast_due, unpaid, PayPal SuspendedCancelled by the donor, often mid-cycle
TimingStops on a renewal date, no warningStops right after an email or appeal
Decline reasonExpired card, reissued card, insufficient fundsNot applicable, no charge was attempted
Donor historyYears of clean payments, then silenceRecent complaint, refund request, or unsubscribe
What to doSend one warm, specific emailThank them and stop

An expired card that lapsed in silence is the cheapest money your organisation will ever raise, and most organisations never send the email. A donor who cancelled deliberately should not be chased.

What the recovery email should actually say

Send it within days of the lapse, not at the end of the quarter. Recovery is strongest in the first 30 to 90 days, after which a lapsed sustainer starts to feel like a former donor rather than a current one.

  • Lead with the mechanical cause, not with the ask. "Your bank declined your monthly gift on the 3rd, almost certainly because your card was reissued." People are relieved to hear it was a card, not a mistake they made.
  • One link, one action. For Stripe donors, the donor portal magic link. For PayPal donors, a direct link to your donation page pre-set to their old amount.
  • Say what the gift does, in one sentence and one number. Not the mission statement.
  • Give them an easy out. "If now is not the right time, that is completely fine, and you can reply to this email and we will not chase it."
  • Do not imply they owe a back payment, do not send four automated reminders, and do not use the word "failed" in the subject line. "Your monthly gift needs a new card" reads better than "Payment failure notice".

A fifteen-minute monthly monitoring routine

  1. Turn on Donor Merchant's monthly summary email in Settings, under the Email tab. It arrives without you remembering to look, which is the entire point.
  2. Each month, write down two numbers: how many recurring gifts were received, and their total. Compare against last month.
  3. If the count dropped, do not assume seasonality. Recurring gifts are not seasonal. A drop in the count is a drop in sustainers.
  4. Pull the Stripe subscriptions export filtered to past_due, unpaid and canceled, and skim PayPal for suspended agreements.
  5. Sort the lapsed names into recoverable and genuinely cancelled, then send the recovery emails the same week.
  6. Note in your donor records who you contacted, so that January's year-end statement run does not surprise anyone.

What Donor Merchant does and does not do here

Being straight with youDonor Merchant 2.5.2 does not ship a dunning engine. It does not send automated failed-payment recovery emails, it does not run its own retry ladder, and it does not override the retry schedule you set in your Stripe dashboard. Retries are a processor function and they stay a processor function.

What it does give you is the part most small organisations are actually missing: the record of every gift in your own database rather than only inside a processor, a donor portal where a Stripe donor updates their own card or cancels without emailing you, a reports dashboard and an optional monthly summary email so a drop is visible, PDF receipts and year-end statements, and outgoing webhooks if you want to pipe events into your own tooling. Configure the retry window and the end state in Stripe yourself. Stripe setup and PayPal setup cover the connection side.

The cheapest prevention costs nothing

Make cancelling genuinely easy. A donor who can stop a monthly gift in thirty seconds through the donor portal does not call their bank. A donor who cannot find the cancel button does call their bank, and a bank-initiated stop is a dispute, which costs you the money plus a fee and counts against your account. Frictionless cancellation is the cheapest chargeback prevention available, and it is free. The same instinct applies to card-testing attacks: the goal is fewer nasty surprises in the processor dashboard, not more locked doors.

Keeping sustainers is not the same job as adding them

Almost every article in this category is about growth: how to ask, where to put the monthly toggle, what suggested amounts to use. That is a real job, and we have written it up in how to increase recurring donations. This page is the other job. Growth adds sustainers at the top; failed payments drain them out of the bottom, quietly, in an amount nobody has measured because nobody produced the report. If your recurring programme has stopped growing despite steady sign-ups, the leak is the likelier explanation, and the cheaper one to fix.

Donor Merchant is a free GPL plugin on WordPress.org with recurring giving included at no cost on both Stripe and PayPal, with no platform fee on top of what your processor charges. You can download it and keep every record on your own server, which is the first condition of ever noticing a gift that stopped.

Your next monthly donor is on your website right now

Give them a form worth filling out. Install Donor Merchant free and take your first recurring gift today.

Download Donor Merchant free No signup. No platform fees. Or try the live demo first.