Why Is My WooCommerce Subscription Renewal Not Working?

Diagram of a WooCommerce subscription renewal flow with a failed step highlighted between the scheduled action and the payment gateway

Why This Happens

WooCommerce Subscriptions renews a subscription through WordPress's scheduled-action system (Action Scheduler), which fires a renewal at the scheduled time, generates a renewal order, and asks the original payment gateway to charge the stored payment method automatically. A renewal can fail at any one of those three steps, and each has a different cause and a different fix.

The fastest way to narrow it down is the subscription's own order notes (WooCommerce → Subscriptions → open the subscription → Order notes panel). WooCommerce Subscriptions writes a note at every stage of the renewal attempt, including the gateway's own decline reason when a payment fails — that single log entry usually tells you which of the causes below actually applies, rather than guessing.

Common Causes

  • Declined or expired card. By far the most common cause. The stored payment method on file has expired, hit its limit, or the issuing bank declined the specific transaction.
  • Action Scheduler not running. Renewals depend on WP-Cron (or a real server cron job calling wp-cron.php) firing on schedule. A site with very low traffic, an aggressive caching setup, or a disabled WP-Cron will silently miss scheduled renewals.
  • Payment gateway API changes or outages. A gateway plugin update, an expired API key, or a temporary outage on the gateway's side can cause every renewal attempt to fail at once, not just one customer's.
  • Plugin or theme conflict. A plugin hooking into the checkout or order-creation process (fraud-prevention plugins are a frequent culprit) can interrupt the renewal order before payment even gets attempted.
  • Subscription or customer account changes. A subscription that was manually edited, a customer account that got deleted or merged, or a product that was changed after the subscription started can all break the data the renewal process expects.
  • Database or meta corruption. Rare, but a renewal can fail if the subscription's own meta data (next payment date, linked order IDs) gets out of sync — usually after a bad import, a failed migration, or another plugin writing to the same post meta.

How to Fix It

  1. Read the order notes first. This step alone resolves most cases, because the gateway's decline reason ("insufficient funds," "expired card," "do not honor") tells you immediately whether this is a customer-side payment problem or something on the site.
  2. Confirm Action Scheduler is actually running. Go to WooCommerce → Status → Scheduled Actions and check whether pending renewal actions are stuck in "pending" past their scheduled time. If they are, WP-Cron isn't firing — usually fixed by setting up a real server cron job to call wp-cron.php on a fixed interval instead of relying on site traffic to trigger it.
  3. Test the payment gateway independently. Place a small manual test order using the same gateway to confirm it's processing payments at all right now, separate from the subscription renewal logic.
  4. Check for a recent plugin or theme update. If failures started right after an update, temporarily deactivate suspect plugins (fraud/security plugins first) on a staging copy and re-test a manual renewal.
  5. Retry the renewal manually. From the subscription's admin screen, WooCommerce Subscriptions provides a manual "Process renewal" action, which reruns the charge attempt without waiting for the next scheduled cycle — useful for confirming a fix actually worked.

If renewals are failing for many customers at once rather than one at a time, treat it as urgent: that pattern almost always means the gateway integration or the scheduler itself is broken, not that a batch of cards all happened to expire together.

Available for new projects

NEXT STEP

Rather have it fixed than keep reading?

Based in Bangladesh — serving clients worldwide. Tell me what's happening and you'll have a reply within one working day.

  • Reply within one working day
  • Fixed quote before work starts
  • UK, EU and US hours covered