Why Isn't WooCommerce Creating a Renewal Order?

Why This Happens

A renewal order is generated by a scheduled action (via Action Scheduler, which runs on top of WP-Cron by default) firing at the subscription's next payment date. If that action never fires — because WP-Cron isn't running, the site has very little natural traffic to trigger it, or the action queue itself has stalled — no renewal order gets created at all, which looks different from a payment simply failing (in a failed payment, the order exists but shows a failed status).

Common Causes

  • WP-Cron not firing reliably. WordPress's default "cron" only runs when a visitor loads a page, so a very low-traffic site (or one with aggressive full-page caching serving cached pages without triggering PHP at all) can miss scheduled events for long stretches.
  • Action Scheduler queue backed up or stalled. A large number of pending scheduled actions from other plugins can delay when WooCommerce's own renewal actions actually get processed.
  • The scheduled action itself failed silently. A PHP error thrown during renewal-order creation (often from a conflicting plugin hooked into the same process) can prevent the order from being created without leaving an obvious error for a site owner to notice.
  • Subscription's next payment date is incorrect. A subscription with corrupted or manually miscalculated meta data can have a next-payment date in the past or far future, so nothing was actually due when expected.
  • The subscription is already in a non-renewing status (on hold, cancelled, expired) and correctly isn't generating a renewal — worth confirming the status before assuming it's a bug.

How to Fix It

  1. Check WooCommerce → Status → Scheduled Actions for the specific subscription's renewal action — "pending" past its scheduled time confirms a scheduler problem rather than a payment one.
  2. Set up a real server cron job calling wp-cron.php on a fixed interval (every 5–15 minutes is typical) instead of relying on site traffic, and disable WordPress's default pseudo-cron in wp-config.php once that's in place.
  3. Check for PHP errors in the site's error log around the time the renewal should have run, particularly if other plugins also hook into order creation.
  4. Verify the subscription's own next-payment date directly on its admin screen — if it looks wrong, it can be corrected manually, though it's worth finding out why it drifted in the first place.
  5. Manually trigger the renewal from the subscription admin screen once the underlying scheduling issue is fixed, to bring the subscription back on schedule without waiting for the next natural cycle.

A scheduler problem affecting one subscription is usually affecting many others too, quietly — worth a full check across all active subscriptions once one is found. See WooCommerce fixes if this needs a proper audit.

Available for new projects

NEXT STEP

Rather have it fixed than keep reading?

Based in Dhaka, 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