Failed Subscription Payments Are Quietly Killing Your Revenue

To recover failed subscription payments in WordPress, you need three things working together: a retry schedule that respects the psychology of why cards fail, a dunning email sequence that escalates without alienating, and a way to automate the whole process so you are not manually chasing customers one by one. Krom Automation handles all three natively, including the WooCommerce Subscriptions and MemberPress triggers that fire the moment a payment fails.

Most guides stop at “set up retries and send some emails.” That is necessary but not sufficient. The sites recovering 60 to 70 percent of failed payments are also doing something the reactive guides miss entirely: they are preventing a meaningful share of failures before they happen. We will cover both sides.

Before we get into the mechanics, one number worth fixing in your mind: industry data from payment processors consistently puts involuntary churn from failed payments at 20 to 40 percent of all subscription cancellations. Your site is almost certainly losing recurring revenue every week to a problem that is largely automatable.

See how Krom Automation handles subscription recovery workflows

Why Subscription Payments Fail in the First Place

Understanding the failure category changes how you respond to it. A card declined for insufficient funds needs a different message than a card declined because it expired three days ago. Sending the same generic “your payment failed” email to both situations is the most common dunning mistake.

The main failure categories break down like this:

  • Expired cards, the most preventable category. The card was valid when the customer subscribed; it expired before renewal. A pre-expiry nudge sent 30 days out eliminates most of these.
  • Insufficient funds, timing sensitive. Retrying on day 1 and day 3 often works because the customer gets paid between attempts. Retrying only once on day 2 misses the window.
  • Card reported lost or stolen, the customer knows. They need a direct link to update their payment method, not a generic reminder.
  • SCA and 3DS2 challenges, the bank required customer authentication and did not get it. The fix is a re-authentication link, not a retry against the same token.
  • Hard declines, the bank permanently rejected the charge. No retry will work. Move straight to the email sequence and suspend the account.
  • WP-Cron not firing, a WordPress infrastructure failure, not a payment failure. Covered in its own section below.

Getting the error code from your payment gateway and mapping it to a response type is worth the setup time. WooCommerce Subscriptions logs the gateway response against each failed renewal order, and that data should be driving your first-response action.

The Proactive Layer: Stop Failures Before They Happen

Every competitor guide we have read starts at the moment of failure. That is already too late for the most preventable category. Expired cards account for a large share of involuntary churn, and every one of them can be flagged in advance.

The highest-ROI dunning action is the one that fires before the payment even fails. Reacting to a decline costs more than preventing it.

Here is what a proactive layer looks like in practice:

  • 30-day pre-expiry email, send a friendly reminder that the card on file expires next month. Include a direct link to the billing portal or payment method update page. No alarm language needed at this stage.
  • 7-day pre-expiry follow-up, a shorter message to customers who did not act on the first. One sentence, one link.
  • Account updater services, Stripe and Braintree both offer automatic card updating where Visa and Mastercard push new card details to merchants when a card is reissued. This requires no customer action at all. If your gateway supports it, enable it.
  • SCA-compliant payment flows, if you are on Stripe, ensure you are using their latest billing APIs with authentication support. A 3DS failure that looks like a card decline is actually a solvable authentication problem.

You can build the pre-expiry email workflow in Krom Automation using a scheduled trigger combined with a conditional branch that checks days until subscription renewal. The WooCommerce Subscriptions integration documentation shows the exact triggers and data fields available.

Retry Timing: The Psychology Behind the Schedule

The retry schedule is where most sites leave the most money on the table. Retrying too soon means the underlying problem has not changed. Retrying too late means the customer has already mentally cancelled.

The retry schedule that consistently performs well across subscription businesses:

  • Day 1 (immediate), a transient network issue or a brief bank outage clears within hours. The first retry should happen same-day.
  • Day 3, catches customers who had temporarily insufficient funds but have since been paid.
  • Day 7, a second salary cycle for weekly-paid customers, and enough time for a customer to respond to your email and update their card.
  • Day 14, final attempt before suspension. By this point, your email sequence has run. If the card still fails, it is a hard problem or a disengaged customer.

WooCommerce Subscriptions has a built-in retry system under WooCommerce Settings Subscriptions Payment Retry Rules. You can configure the number of retries and the intervals.

The default is too conservative for most stores. Four attempts across 14 days recovers meaningfully more than two attempts across 7 days, without triggering the “harassment” response from customers.

MemberPress handles this differently. It offers a grace period setting rather than a true retry schedule.

For multi-attempt retry logic with MemberPress, you need a payment gateway that retries natively (Stripe does this well) or a supplementary automation layer. The MemberPress integration documentation covers the subscription, expiry, and payment triggers available to build on top of that grace period.

The Dunning Email Sequence: What Each Message Should Say

A dunning sequence is not a collection of payment reminders. It is a structured conversation that starts with practical help and ends with a clear consequence. The tone shifts with each message.

Email one is customer service. Email three is a last chance. Treating all three the same way is why most dunning sequences fail.

Email 1: Immediate, Practical, Low Pressure

Send this within an hour of the failed payment. The subject line should state the problem without alarm: “There was a problem with your payment.” The body should explain what happened in one sentence, provide a direct link to update payment details, and confirm that access is unchanged for now. No threats, no urgency language, no guilt.

Key elements to include:

  • The exact subscription or product the payment was for
  • The amount that failed
  • A direct, one-click link to the payment update page
  • Confirmation that access has not been suspended

Email 2: Day 3, Gentle Follow-Up

Acknowledge that customers miss emails. Keep this short. Restate the problem, restate the link, add one sentence about when access will be affected if nothing changes.

The tone is helpful, not accusatory. About 40 percent of recoveries happen after email 2, making it the single most important message in the sequence.

Email 3: Day 7, Stakes Become Visible

Be specific about what the customer will lose and when. “Your access to [product] will be suspended on [date] unless your payment is updated.” Include the update link again.

Some sites add a discount code here to remove the friction of an upgrade barrier. That works best for customers who originally signed up during a promotion and may feel the full price is not worth it.

Email 4: Day 13, Final Notice

Short, direct, personal in tone. “Tomorrow we will suspend your account.” Include the link.

Consider offering a one-month extension for a manual payment if your product supports it. This is your last chance before the access revocation triggers.

After Suspension: The Win-Back Email

Send this 7 to 14 days after suspension. A segment of suspended customers genuinely intended to stay and were caught in a bad billing period. A simple “your account is still available if you want to return” email with a reactivation link recovers 5 to 15 percent of suspended accounts in our experience with similar automation flows.

You can build the entire sequence using Krom Automation’s visual email builder and the delay scheduling between steps. The delays and scheduling documentation covers the exact options for minutes, hours, and days between actions.

Compare Krom Automation to manual and third-party alternatives

Sequence Timing at a Glance

Email Timing Primary Goal Access Status Expected Recovery Share
Email 1 Within 1 hour of failure Inform and provide update link Full access maintained 25 to 30%
Email 2 Day 3 Follow up, restate link Full access maintained 35 to 40% cumulative
Retry attempt Day 7 Automatic charge against card Full access maintained Depends on card type
Email 3 Day 7 State consequence and date Full access maintained 50 to 55% cumulative
Email 4 Day 13 Final notice, offer reactivation Full access maintained 60 to 65% cumulative
Access suspended Day 14 Revoke access automatically Suspended N/A
Win-back email Day 21 to 28 Offer reactivation Suspended 5 to 15% of suspended

When WP-Cron Is the Real Problem

A common and frustrating scenario: the card is valid, the customer has funds, but the renewal payment never fires. The subscription sits on “pending renewal” indefinitely. This is almost always a WP-Cron problem, not a payment problem.

WP-Cron runs on page load. On low-traffic sites, a scheduled renewal event might not fire for hours after its due time because no one visits the site in that window. On high-traffic sites, concurrent page loads can cause cron jobs to run in parallel and step on each other.

The fix is a real server cron job. Disable WP-Cron by adding define('DISABLE_WP_CRON', true); to wp-config.php, then set up a system cron job on your server to call wp-cron.php every 5 minutes. Most managed WordPress hosts let you configure this from the hosting dashboard without server access.

WooCommerce Subscriptions uses Action Scheduler to queue renewal events. You can inspect the Action Scheduler queue at Tools Scheduled Actions in the WordPress admin.

If renewal actions are sitting in “pending” status past their scheduled time, cron is the culprit. If they are running and failing with a gateway error, that is a payment problem and the dunning sequence applies.

What It Actually Costs to Do This Manually

Consider what manual dunning looks like for a store with 200 active subscriptions and a 5 percent monthly failure rate. That is 10 failed payments per month. Each one requires:

  • Identifying the failure in WooCommerce or MemberPress (5 minutes per account)
  • Sending a personalised email with the correct subscription details and update link (10 minutes)
  • Following up on day 3 and day 7 if no response (10 minutes each)
  • Manually suspending access if unresolved by day 14 (5 minutes)
  • Logging the outcome for reporting purposes (5 minutes)

That is roughly 35 minutes per failed payment, or 350 minutes (nearly 6 hours) per month for 10 failures. At a VA rate of $20 per hour, that is $120 per month in labour, or $1,440 per year, to handle a process that an automation workflow executes in zero human hours once configured. If even 3 of those 10 failures convert to paid customers through the sequence, the revenue recovery alone exceeds the automation cost.

Six hours a month chasing failed payments is not a billing problem. It is a workflow problem. Automation does not need a salary.

Building the Workflow in Krom Automation

The full dunning workflow in Krom Automation starts with a WooCommerce trigger and branches based on the failure type. Here is the structure at a high level:

  1. Trigger: Order Status Changed to “Failed” or WooCommerce Subscription payment failure event
  2. Branch: Check whether the subscription has failed before. First failure goes to the dunning sequence. Repeat failures within the same period go to a shorter path.
  3. Action: Send Email (Email 1) with merge tags pulling in the customer name, subscription name, amount, and a tokenised update URL
  4. Delay: 3 days
  5. Action: Send Email (Email 2)
  6. Delay: 4 days (total 7 from failure)
  7. Action: Send Email (Email 3) with suspension date calculated from the workflow start date
  8. Delay: 6 days (total 13 from failure)
  9. Action: Send Email (Email 4), final notice
  10. Delay: 1 day
  11. Action: Change User Role or trigger a MemberPress/WooCommerce Subscriptions status change to suspend access
  12. Delay: 7 to 14 days
  13. Action: Send win-back email

The “run once per entity” enforcement built into Krom Automation prevents the workflow from firing multiple times for the same subscription renewal event, which is the most common cause of customers receiving duplicate dunning emails. See the workflow settings documentation for how to configure that correctly.

For merge tags, the merge tags documentation covers every dynamic variable available from WooCommerce order and subscription data. Customer name, order total, subscription end date, and payment update URL are all available as merge tags you drop directly into the email body.

Plan and Cost Comparison

Approach Setup cost Monthly labour Year 1 total (200 subs) Scales past 500 subs?
Manual process only $0 $120+ at VA rates $1,440+ Linearly worse
Native WooCommerce Subscriptions retries only $0 extra (included) $0 for retries, still manual for emails Partial. Recovers ~25% without email Yes for retries, no for comms
Krom Automation Pro (Basic, 1 site) $299 lifetime or $119/year $0 after setup $299 lifetime or $119 year 1 Yes, unlimited executions
Third-party SaaS dunning tool Varies $50 to $200+/month $600 to $2,400+ Yes, but data leaves your server

When to Give Up and Cancel the Subscription

Persistent chasing damages your sender reputation and irritates customers who have genuinely decided to leave. The right suspension point for most subscription businesses is day 14 to 21 after the first failure. Four to five email touchpoints across that window is the practical ceiling before diminishing returns kick in hard.

After suspension, one win-back email is worth sending. Two is marginal. Three is harassment.

The customers who come back after suspension almost always do so within 30 days. After 60 days with no response, the account is a loss and should be treated as churn for reporting purposes.

The reporting side matters here. Krom Automation’s analytics dashboard shows success rate per workflow and a per-step audit trail. That means you can see exactly which email in the sequence generates the most recoveries and which step is losing people.

That data is the basis for improving the sequence over time, not guessing. You can read more about building a complete picture of automation ROI in our guide to working out whether automation is saving you money.

What the Marketing Pages Do Not Tell You

A few things worth knowing before you commit to any dunning setup:

  • WooCommerce Subscriptions retry rules require a compatible payment gateway. Stripe, PayPal, and most major gateways support retries. Older or regional gateways may not, and the retry rule UI still appears even when the gateway ignores it.
  • MemberPress grace periods are not the same as retry schedules. Grace period keeps the member active but does not attempt to charge the card again. You need gateway-level retry or a separate automation workflow for that.
  • Tokenised payment update links are gateway-specific. Stripe’s customer portal generates them automatically. PayPal’s are less reliable. Some gateways require you to build a custom update form. Check your gateway’s documentation before promising customers a one-click update experience.
  • Email deliverability affects recovery rate significantly. Dunning emails sent from a domain with poor DKIM and SPF configuration land in spam at a higher rate than transactional email. Fix your sending authentication before tuning the copy.
  • Automation does not replace a human touch for high-value accounts. For subscriptions above $200/month, a personal call or direct message recovers more than a four-email sequence. Use the automation for volume; flag high-value failures for personal follow-up.

Our Verdict

If you are running a subscription business on WordPress and you do not have an automated dunning sequence in place, you are losing revenue every renewal cycle to a problem that takes a few hours to fix once. The recovery rate difference between no sequence and a four-email sequence with proper retry timing is not marginal. It is the difference between recovering 20 to 25 percent of failures and recovering 60 to 65 percent.

Build the proactive layer first: the pre-expiry email and account updater save you the dunning conversation entirely for a meaningful share of potential failures. Then build the retry schedule and email sequence on top.

Use Krom Automation for the workflow layer and your existing subscription plugin for the access control. The two work together rather than competing.

Who should not bother with this yet: sites with fewer than 50 active subscriptions and a single admin who can handle the volume manually. The automation is worth building before you need it, but the ROI case is harder to make at very small scale. For everyone else, the setup cost is a one-time investment against a recurring revenue recovery that compounds every month.

Download Krom Automation free from the WordPress.org plugin directory to start with the visual workflow builder, and upgrade to Pro when you are ready to add the WooCommerce Subscriptions and MemberPress triggers that power the full dunning sequence.

See Krom Automation Pro plans and pricing

Frequently Asked Questions

How many retry attempts should I set before cancelling a failed subscription in WooCommerce?

Four attempts spread across 14 days is the practical optimum for most stores. Retrying on day 1, day 3, day 7, and day 14 catches the most common failure causes without exhausting customer goodwill. After the fourth failed attempt, move to suspension rather than additional retries.

Why does my WooCommerce subscription renewal keep failing even though the card is valid?

The most common cause is WP-Cron not firing reliably, which means the renewal charge never triggers at all. Check the Action Scheduler queue at Tools Scheduled Actions.

If renewal events are stuck in “pending” status past their due time, configure a real server cron job to replace WP-Cron. If the events are running and returning gateway errors, the issue is with the payment token or a 3DS authentication requirement.

How do I let customers update their credit card after a failed payment in WooCommerce?

WooCommerce Subscriptions adds a “Change Payment” button to the My Account Subscriptions page by default. If you are using Stripe, you can also generate a customer portal link that handles card updates directly. Include this link in every dunning email so the update action requires only one click from the email.

What is the difference between a grace period and a payment retry in MemberPress?

A grace period keeps the member’s access active for a set number of days after a missed payment without attempting to charge the card again. A payment retry actively attempts to charge the card on a schedule. MemberPress uses grace periods natively; retry logic depends on your payment gateway or a supplementary automation workflow.

How do I stop the same dunning email going out multiple times for one failed payment?

In Krom Automation, enable “run once per entity” in the workflow settings. This prevents the workflow from triggering more than once for the same subscription or order ID. Without this setting, a workflow can fire multiple times if the failure event is logged more than once, which results in duplicate emails within minutes of each other.

Should I offer a discount in dunning emails to recover failed payments?

Discount codes in dunning emails work best for customers who originally signed up during a promotion and are experiencing price resistance alongside the payment failure. For customers on a standard plan, a discount can signal that the regular price is negotiable and create a long-term expectation. Reserve discounts for email 3 or later in the sequence, after the customer has had two opportunities to update the card without an incentive.

Leaving Without Grabbing 80% Discount?

Krom Automation Pro is now Live!
Give it a try and claim 80% discount on Launch Price. 20 seats available only!
Share your email and we will send a free license ASAP.


Early bird discount form

This will close in 0 seconds