We recently investigated an issue where a client’s long-standing PayPal subscriptions stopped renewing after an update to the WooCommerce PayPal Payments plugin.

The affected subscriptions were still active, but WooCommerce wasn’t creating their monthly renewal orders. Instead, the subscription notes contained the error:

Unable to change subscription status to "on-hold".

Identifying the failure

Under WooCommerce → Status → Scheduled Actions, we searched for woocommerce_scheduled_subscription_payment and found eight failed actions, all reporting the same error.

The actions had started successfully but failed almost immediately. The error trace pointed to WC_Subscription::update_status() in WooCommerce Subscriptions.

Looking at the source code, we found that WooCommerce only permits an active subscription to move to On hold if its payment gateway supports subscription_suspension:

case 'on-hold':
    if (
        $this->payment_method_supports('subscription_suspension')
        && $this->has_status('active')
    ) {
        $can_be_updated = true;
    } else {
        $can_be_updated = false;
    }
    break;

All eight subscriptions were active and used the PayPal Payments gateway (ppcp-gateway).

We ran a read-only PHP diagnostic against the affected subscriptions and discovered that the gateway was no longer reporting support for subscription suspension, reactivation, cancellation or subscriptions themselves.

Comparing PayPal Payments versions

The site’s update history showed that WooCommerce PayPal Payments had been updated from 4.0.3 to 4.1.3 on 13 October 2026. The first failed renewal occurred later that day.

We downloaded both plugin versions and compared the subscription handling code.

In version 4.1.3, we found an additional condition in SubscriptionHelper::resolve_subscription_mode():

$save_paypal_and_venmo =
    $settings_provider->save_paypal_and_venmo();

if (
    $this->accept_manual_renewals()
    && !$save_paypal_and_venmo
) {
    return self::SUBSCRIPTION_MODE_VALUE_DISABLED;
}

This condition disables PayPal subscription support when:

  • WooCommerce’s Allow manual renewals at checkout setting is enabled.
  • PayPal Vaulting (Save PayPal and Venmo) is disabled.

Our client’s website had exactly this configuration. Although new subscriptions were handled through Stripe, existing customers still had automatic PayPal subscriptions using the PayPal Subscriptions API.

The new condition meant those existing subscriptions could no longer pass WooCommerce’s status validation.

Confirming the cause on staging

We created a diagnostic to report PayPal’s resolved subscription mode and supported gateway features.

With Allow manual renewals at checkout enabled, the results were:

Subscription mode: disable_paypal_subscriptions
Supports subscriptions: No
Supports suspension: No
Supports reactivation: No
Supports cancellation: No

After temporarily disabling manual renewals at checkout, the results changed to:

Subscription mode: subscriptions_api
Supports subscriptions: Yes
Supports suspension: Yes
Supports reactivation: Yes
Supports cancellation: Yes

This confirmed that the new subscription-mode condition was responsible for the missing gateway capabilities and the resulting WooCommerce renewal errors.

How to resolve it

There are two potential solutions:

  1. Disable manual renewals at checkout. If the website doesn’t need to accept new subscriptions using manual payment methods, disabling this WooCommerce Subscriptions setting restores PayPal’s subscription capabilities without custom code.
  2. Apply a targeted compatibility fix. If manual renewals must remain available, a code-level fix could preserve that option while maintaining support for existing automatic PayPal subscriptions. This would require careful testing and ongoing compatibility checks.

Rolling back PayPal Payments to 4.0.3 is another possibility, but it would also remove subsequent fixes and improvements, so we wouldn’t favour it as a long-term solution.

Important: Restoring the gateway capabilities doesn’t automatically recover missed renewals. Before retrying failed actions, check whether PayPal has already collected the payments to avoid duplicate charges. The complete renewal and payment process should also be tested before deploying a fix to production.

What caused the issue?

The problem wasn’t a failed cron job, a PayPal API error or an issue with the individual subscriptions.

A change in WooCommerce PayPal Payments 4.1.3 altered how the plugin interprets the combination of manual renewals and disabled Vaulting. This removed subscription capabilities that existing automatic PayPal subscriptions still depended on.

Our staging tests reproduced the capability failure and confirmed the immediate cause of the renewal exceptions. The investigation illustrates how a plugin update can affect historic payment arrangements even when those payment methods are no longer offered to new customers.