10 min read

How to Switch a WooCommerce Subscription to an Administrator

Shashank Dubey
Content & Marketing, Wbcom Designs · Published Jul 30, 2024 · Updated Aug 29, 2026
Switch a WooCommerce Subscription to an Administrator

“Switch a subscription to an administrator” usually means one of two things: you want to move an existing WooCommerce subscription onto a different user account (often your own admin account, for testing or after a staff change), or you want the subscriber to hold the Administrator role without WooCommerce Subscriptions quietly stripping it later. Both are doable from the WordPress dashboard with no code. The short version: change the Customer on the Edit Subscription screen to reassign it, and change the role from Users → All Users, knowing that Subscriptions never touches an administrator’s role.

This guide covers both jobs, explains how the plugin handles roles under the hood, and lists the things that go wrong when people do this in a hurry on a live store. It assumes the official WooCommerce Subscriptions extension (or a plugin built on the same subscriptions-core library, such as WooPayments’ built-in subscriptions).

Two different problems that share one name

Table of what switching a WooCommerce subscription to an administrator means: move account, change role, change defaults

Before you click anything, be clear about which of these you need.

GoalWhat actually changesWhere you do it
Move a subscription to a different account (for example your admin user)The customer_user on the subscription and its future renewal ordersWooCommerce → Subscriptions → Edit Subscription → Customer
Give the existing subscriber administrator accessThe user’s WordPress role; the subscription itself is untouchedUsers → All Users → Edit User → Role
Change which role all subscribers get automaticallyThe default role Subscriptions assigns on activation and on cancellationWooCommerce → Settings → Subscriptions → Roles

We see the first case most often with agencies that inherit a store: the previous developer’s account owns a test subscription and they want it under their own login. The second case comes up when a site owner is also a paying member of their own site and suddenly finds they have been downgraded to Subscriber. We’ll handle each in turn.

Reassigning a subscription to a different user

Four steps to reassign a WooCommerce subscription to another user: edit customer, fix payment, load addresses, add note

Subscriptions are stored much like orders, and the Edit Subscription screen borrows the same General panel. That is where the customer field lives.

  1. Go to WooCommerce → Subscriptions and click the subscription number (for example #1542). If you only have the renewal order open, scroll down to Related Orders and click the row whose Relationship column says “Subscription”.
  2. In the General box on the left, click the pencil icon next to the customer name. A Customer search field appears.
  3. Type the administrator’s name, username or email. The field searches as you type; pick the correct account from the results. Guests cannot hold a subscription, so the target must already be a registered user.
  4. Optionally click Load billing address and Load shipping address in the Billing and Shipping boxes so the subscription’s addresses match the new owner.
  5. Click Update.

From this point the subscription appears under My Account → Subscriptions for the new user, and every renewal order generated by the scheduler will be created for the new customer ID. Existing past orders keep their original customer. If you need the order history to follow the person too, you have to edit each related order’s Customer field the same way. In most cases we leave past orders alone; they are financial records and they should reflect who actually paid.

Payment tokens do not move with the subscription

This is the step people miss. For automatic renewals, the subscription stores a reference to a saved payment method (a Stripe customer and payment method ID, a PayPal billing agreement, a WooPayments token, and so on). That token belongs to the original WordPress user, not to the subscription. After you change the Customer field, one of three things happens depending on the gateway:

  • The renewal still charges the old card because the token metadata is still on the subscription. Legally awkward and a refund waiting to happen.
  • The gateway refuses the token because the customer ID no longer matches, the renewal fails, and the subscription goes On hold.
  • The gateway has no saved method for the new user, and the subscription falls back to manual renewal.

The clean fix is to open the Billing box on the subscription, click the pencil icon, and change Payment method. For an admin test account, setting it to “Manual Renewal” is usually what you want; you can then pay a renewal yourself through My Account → Subscriptions → Renew now to confirm the flow works. For a real customer, ask them to log in and use Change payment on their subscription so a token is created under their own account. WooCommerce documents which gateways support admin-side payment method changes in its Subscription Payment Methods & Gateways table.

Add a subscription note

Use the Subscription notes panel on the right to record who owned the subscription before, why it moved, and the date. Choose “Private note” so the customer does not receive it. Six months later, when someone asks why a renewal invoice went to a different person, the note answers the question.

Giving a subscriber the Administrator role

If the subscription is already on the right account and you only need that person to have admin access, do not touch the subscription at all.

  1. Go to Users → All Users, find the account and click Edit.
  2. Change the Role dropdown to Administrator.
  3. Click Update User.

The obvious worry is that WooCommerce Subscriptions will reset this the next time the subscription renews, is put on hold, or is cancelled. It will not, and the reason is in the plugin’s own code rather than in the settings. The role-handling function in subscriptions-core starts like this:

function wcs_update_users_role( $user_id, $role_new ) {
    $user = new WP_User( $user_id );

    // Never change an admin's role to avoid locking out admins testing the plugin
    if ( ! empty( $user->roles ) && in_array( 'administrator', $user->roles ) ) {
        return;
    }

    // Allow plugins to prevent Subscriptions from handling roles
    if ( ! apply_filters( 'woocommerce_subscriptions_update_users_role', true, $user, $role_new ) ) {
        return;
    }
    ...
}

So any user who already holds the administrator role is skipped entirely, whatever happens to their subscriptions. You can read the current version in the woocommerce-subscriptions-core repository. Shop managers are not protected by this check, which trips people up; a Shop Manager who buys a subscription on their own store will be moved to the Subscriber role when it activates unless you intervene (more on that below).

How Subscriptions manages roles, and the settings that control it

How the WooCommerce subscription plugin handles roles: admins skipped, shop managers unprotected, default role pairing

Understanding the automatic behaviour prevents most surprises. Under WooCommerce → Settings → Subscriptions there is a Roles section with two options:

  • Subscriber Default Role: assigned when a subscription becomes active. Defaults to WordPress’s built-in Subscriber role.
  • Inactive Subscriber Role: assigned when all of a user’s subscriptions are expired, cancelled or on hold. Defaults to WooCommerce’s Customer role.

WordPress users can technically have several roles, and the plugin works with that: on activation it removes the inactive role and adds the active one, on deactivation it does the reverse. It does not wipe unrelated roles. But because most themes, membership plugins and capability checks look at the first role in the array, it can still look like a downgrade in the admin user list.

The default pairing (Subscriber when active, Customer when inactive) is fine for a plain store. It is not fine when the subscription is what grants access to something else: a LearnDash course, a BuddyPress group, a private forum. In those cases we normally create a dedicated role such as “Member” with a role editor plugin, select it as the Subscriber Default Role, and keep “Customer” as the inactive role. Access rules then key off “Member”, and nobody needs to be an administrator to get through the paywall. If your community or LMS needs this kind of gate, the paid memberships for BuddyPress guide walks through the access side.

Stopping Subscriptions from touching roles at all

If a membership plugin or your own code already manages roles, you can switch the plugin’s role handling off with the filter shown in the code above. Put this in a small site-specific plugin (not the theme’s functions file, which disappears on a theme switch):

add_filter( 'woocommerce_subscriptions_update_users_role', '__return_false' );

With that in place, Shop Managers, Editors and custom roles keep whatever role you gave them, regardless of subscription status. You lose the automatic Subscriber/Customer switching, so only do this when something else is enforcing access.

A gentler option is to protect specific roles instead of disabling everything:

add_filter( 'woocommerce_subscriptions_update_users_role', function ( $allow, $user, $role_new ) {
    $protected = array( 'shop_manager', 'editor' );
    if ( array_intersect( $protected, (array) $user->roles ) ) {
        return false;
    }
    return $allow;
}, 10, 3 );

A worked scenario: moving a client’s test subscription to your admin account

A typical handover. The store has a live subscription product, the previous agency created a $0 test subscription under olddev@example.com, and you need to check that renewals still fire after a gateway update. Here is the order we’d do it in:

  1. Take a backup or, better, do all of this on a staging copy first. Renewal tests on production generate real orders and real emails.
  2. Open the subscription, note the current Next Payment date and payment method in a private subscription note.
  3. Change the Customer to your administrator account and update.
  4. Change Payment method to Manual Renewal (the old developer’s card token must not stay attached).
  5. Under Schedule, set Next Payment to a few minutes from now. Save, then wait for Action Scheduler to run (WooCommerce → Status → Scheduled Actions shows the pending woocommerce_scheduled_subscription_payment hook).
  6. Confirm a renewal order appears under your account in Pending payment status, pay it from My Account, and check the subscription returns to Active with a new Next Payment date.
  7. Put the Next Payment date back, or cancel the test subscription if it has served its purpose.

The whole exercise takes about fifteen minutes and proves the scheduler, the gateway and the emails are all working, without touching a paying customer.

Troubleshooting

The Customer field is greyed out or missing

Your account needs the edit_shop_subscription capability, which Administrators and Shop Managers have by default. If you use a role editor plugin and a custom “Support” role, add that capability. Also check that the subscription is not locked by another editor (WooCommerce shows a notice when someone else has the screen open).

The renewal charged the wrong card

You changed the customer but not the payment method. Refund the renewal order, change the payment method on the subscription to Manual Renewal, and have the correct person add their own card via Change payment.

The new user still cannot see the subscription in My Account

Usually caching. A persistent object cache or page cache can hold the old customer_user lookup. Purge the cache, or check WooCommerce → Status → Tools → Clear transients. If the subscription was created by an import with a mismatched _customer_user meta, re-save it from the admin.

My admin account was downgraded to Subscriber

That should not happen on current versions because of the administrator check above. If it did, you are either on a very old Subscriptions release, or another plugin (a membership or role-sync plugin) made the change. Check the user’s role history if you have an audit log, and update Subscriptions to the current release.

FAQ

Can a subscription be owned by two users?

No. A subscription has exactly one customer ID. If a household or team shares access, give the access through a group or membership layer rather than by sharing a login.

Will changing the customer send an email?

Not on its own. Changing the Customer field triggers no customer-facing email. Changing the status or processing a renewal does, so be aware of that if you adjust dates afterwards.

Does the role change apply on multisite?

Roles are per site, so a Super Admin without an explicit role on the subsite is treated as having no roles and can be assigned the Subscriber role. Add the Super Admin to the site as an Administrator first if you need them protected.

Is there a bulk way to reassign many subscriptions?

Not in the admin. For a migration we’d use WP-CLI with wcs_get_subscriptions() and $subscription->set_customer_id() followed by save(), run on staging first. If that sounds like more than you want to take on, our WooCommerce development team does this kind of migration regularly.

What we’d do

Reassign with the Customer field, fix the payment method immediately afterwards, and leave a private note. For admin access, change the role in Users and rely on the built-in administrator guard. And if your store’s subscription is really a membership, stop using the Administrator and Subscriber roles as access levels at all: create a proper member role, set it as the Subscriber Default Role, and let the plugin do the switching for everyone except the people who run the site.

Shashank Dubey
Content & Marketing, Wbcom Designs

Shashank Dubey, a contributor of Wbcom Designs is a blogger and a digital marketer. He writes articles associated with different niches such as WordPress, SEO, Marketing, CMS, Web Design, and Development, and many more.

Related reading