# Members on a Stripe plan that isn't available for their account

URL: https://wpusermanager.com/article/348-stripe-plan-not-available/
Last updated: 2026-10-20

From version 2.10, WP User Manager only counts a Stripe subscription as active if it's for one of the member's plans, or an upgrade on them. A member's plans are the plan they registered for and the other plans on the registration form they used.

An upgrade is a price that:

- is one of the **Eligible Products** in **Users > Settings > Stripe**, if you've chosen any
- is in the same currency as the plan they registered for
- costs at least as much as that plan. Monthly and annual prices are compared by their cost per day.

If a member's subscription is moved to any other price, such as a cheaper plan from another registration form, they no longer have paid access. They keep their account, but they can only read the site until their subscription is back on one of their plans.

The admin notice
----------------

When this happens, you'll see a notice in your WordPress admin:

> WP User Manager: 1 member has a Stripe subscription to a plan that isn't available for their account, so they don't have paid access.

Click **Show members** to see who it affects. For each member it lists the Stripe price their subscription is on, and the registration form they used.

WP User Manager checks every member once a day, and again whenever Stripe tells your site that a subscription has changed. To check straight away, click **Check again**.

Why it happens
--------------

A subscription's price usually changes in one of two ways:

- **The Stripe customer portal.** If you let customers switch plans in the portal (see [Recurring Subscriptions](https://wpusermanager.com/article/337-recurring-subscriptions/)), they can pick any price you offer there, including a cheaper one that isn't on their registration form.
- **The Stripe dashboard.** Someone on your team moved the subscription to another price.

What to do
----------

1. **If the member should have access with that price**, add the price to the plans of their registration form in **Users > Registration Forms**. If it costs at least as much as their plan, you can add it to **Eligible Products** instead. They'll get access again straight away.
2. **If they shouldn't**, ask them to switch back to their plan. They can do this from **Account > Billing > Manage Billing** on your site. You can also change their subscription back in the Stripe dashboard.
3. **To stop it happening again**, check the [Customer Portal settings](https://dashboard.stripe.com/settings/billing/portal) in Stripe. They apply to every customer, so a member can switch to any price you offer there. Upgrades keep their access, but if your registration forms have plans at different prices, a member who moves to a cheaper one loses it. To avoid that, add the cheaper prices to the forms whose members may move to them, or turn off switching plans.

What the member sees
--------------------

On the **Billing** tab of their account page, the member sees:

> Your subscription has been changed to a plan that isn't available for your account. Use Manage Billing to switch back to your plan.

The **Manage Billing** button opens the Stripe customer portal, where they can switch back.

For developers
--------------

To allow more prices for a member, use the `wpum_stripe_user_allowed_plan_ids` filter. It receives the list of Stripe price IDs the member may pay for, and the member:

```
add_filter( 'wpum_stripe_user_allowed_plan_ids', function ( $plan_ids, $user ) {
	// Let every member move to the annual price.
	$plan_ids[] = 'price_annual';

	return $plan_ids;
}, 10, 2 );
```

To change which prices count as upgrades, use the `wpum_stripe_user_is_upgrade_plan` filter. It receives whether the price counts, the price ID, and the member.

The `wpum_stripe_webhook_plan_not_allowed` action runs when Stripe reports a subscription on a price that doesn't count for the member. It receives the user ID and the price ID.
