Subscriptions FAQ

You are here:
In this article

WooCommerce Subscriptions is a premium extension, and this page has answers to commonly asked questions.

We recommend reading the Subscriptions Guide for Store Managers if you haven’t already. For technical questions about integrating software with Subscriptions, refer to the Subscriptions Developer Docs.


Subscriptions Features

What type of subscriptions can I sell with WooCommerce Subscriptions?

WooCommerce Subscriptions can be used to sell any product or service requiring recurring payments. You can sell physicalvirtual and downloadable products as a subscription. You can also offer services and memberships by setting a subscription to be virtual.

Can Subscriptions do [insert-feature]?

There are many great ideas for how to use a subscription to create a novel business model. It is great to see so much variety in the eCommerce world, but as Subscriptions is an off-the-shelf product, it can not possibly support every use case.

If you don’t see a feature discussed in this FAQ or listed in the store manager guide, then Subscriptions most likely does not include that feature.

Subscriptions is constantly being developed and you can find a list of the features that will be coming in future releases on the Feature Roadmap. If you want something not listed already, post the idea in the WooCommerce Extension Ideas forum. Once a feature gets enough votes, it will be added to Subscriptions. Features with higher votes are also be given priority.

If the feature you require doesn’t have broad appeal, the good news is, Subscriptions makes it possible for an expert WordPress or WooCommerce developer to add just about any feature. If you need an expert developer to add a feature to Subscriptions, please post a job on Codeable, or find a WooExpert.

Where can I find a list of the upcoming features?

You can find this in the Subscriptions Roadmap here.

How can I ship physical products on a different schedule to the payment schedule?

To help manage shipping on subscriptions to physical goods, WooCommerce Subscriptions generates a renewal order for each payment. That means if you want to ship a product monthly, you should set the payment schedule to bill monthly.

Charging and shipping on different schedules is possible with the AutomateWoo extension and its Subscriptions Add-on. AutomateWoo shows how to create workflows for pre-paid subscriptions.

Another option using only Subscriptions is to:

  • charge the entire subscription’s amount as a sign-up fee
  • set a $0 recurring amount
  • set the billing period to the shipping interval
  • set the length to be the total number of times the product will be shipped
One-Year Subscription Shipping Monthly

There are downsides to this approach, including:

  • The subscription price will be displayed as $0 / month
  • A renewal order will be generated each month, with a $0 total for the subscription. This order will be visible to the customer on their My Account page and optionally emailed to the them each month (however, both the My Account and Email templates could be changed to remove this). Alternatively, you can also use our mini plugin to disable renewal emails for ‘free’ ($0) renewals.
  • If customer suspension is enabled and the customer suspends or cancels a subscription that uses this pricing model, they may not receive items for which they have already paid.
  • You may need to hide the Cancel button on the My Subscriptions table because if the customer cancels the subscription before the end of the term, no renewal orders will be generated, despite the customer already having paid for those renewals.

Furthermore, there is no method for having a recurring billing schedule that differs to the recurring shipping schedule (for example, a subscription which charges $50 every 3 months but ships every month).

For now, when using WooCommerce Subscriptions, the best method for managing shipping is to use the same payment schedule as the intended shipping schedule.

That said, we are aware of this feature request and intend to offer it in a future version. If you need to ship on a different schedule, please vote on the existing feature request.

Does Subscriptions retry failed payments?

Yes! Subscriptions version 2.1 and newer have an automatic retry system for failed recurring payments.

Subscription Product Management

How can I offer a subscription with a variable billing period?

To offer customers a choice of billing period on a subscription, you can use either:

Using a Variable Product

To create a variable subscription with different billing periods:

  1. Go to: Products > Add New
  2. Set the product type to be Variable subscription
  3. Create a new variation attribute on the product and call it Billing Period (or anything you prefer)
  4. Add different periods to the new Billing Period attribute. e.g. week, month, year
  5. Create a variation for each billing period
  6. Set the subscription period for each variation to match the billing period attribute assigned to it.blank
A “Billing Period” Attribute with Week/Month/Year Values
Subscription Variation with a Period Matching the Billing Period Attribute

Using a Grouped Product

To use a Grouped product to offer different payment billing schedules:

  1. Create multiple Simple subscription products, each with different billing period
  2. Add each subscription to a grouped product

Here is a screenshot of a grouped product with subscriptions at three different intervals: monthly, every 6 months and yearly.

Variable Recurring Billing Periods on a Grouped Product


The All Products for WooCommerce Subscriptions plugin can be used to create a product that has both one time purchase options and subscription options within the same product


Can I use a subscription like a variable product?

Yes! Version 1.3 of Subscriptions added a new Variable Subscription product type. For each variation, you can set a different sign up fee, trial period, billing period, billing interval and subscription length.

What is the exact interval for a monthly subscription, i.e. is it 30 days?

With a daily subscription, payments are triggered every 24 hours. A day is always 24 hours, so this is no issue. But what about months where the number of days differs?

The amount of time between a monthly billing interval is one month. This means 30 days for some months (April, June etc.), 31 days for others, and then 28 or 29 days for February. If a monthly subscription is created on the 15th of February, the next payment will be charged on the 15th March. If the billing interval for a subscription is every 2 months and it is created on the 15th of February, the next payment will be charged on the 15th April.

What about subscriptions purchased on the last day of the month?

If a subscription is purchased on the last day of the month, recurring payments will continue to be charged on the last day of the month. For example, if a $10 / month subscription is purchased on the 31st December, its next 4 payments will be charged on:

  • 31st January
  • 28th February (or 29th February for a leap year)
  • 31st March
  • 30th April
What about recurring payments on the 28th, 29th or 30th day of the month?

This system will also be used if the day a payment is normally charged is not the last day of the month, but it is on the 28th, 29th or 30th day of the month, and the next payment is due in February, which has no 30th day (and no 29th day in non-leap years).

For example, if a $10/month subscription is purchased on the 29th December 2012, the next 4 payments will be charged on:

  • 29th January 2013- not the last day of the month
  • 28th February 2013 – notice it has switched to the last day of the month as there is no 29th day in February when it is not a leap year
  • 31st March 2013 (last day of the month)
  • 30th April 2013 (last day of the month)

This logic ensures that a payment is made every month, and therefore, that one year includes 12 payments.

Why are subscription payments charged late (or early) with PayPal?

Unfortunately, the above only applies to subscriptions where WooCommerce Subscriptions controls the billing schedule. When creating a subscription with PayPal, PayPal takes control of the schedule for charging recurring payments payments.

How does Subscriptions manage stock?

WooCommerce Subscriptions creates an order to record each renewal payment. Each of these orders has the subscription product as an item on the order so when the order is processed, the stock for that item will be reduced. This allows for accurate inventory management for physical products that need to be shipped each billing period.

For example, if a store has 100 widgets in stock, and then a customer buys a weekly subscription to those widgets, the widget stock will be reduced by one for the initial purchase, leaving 99 widgets. After the first renewal a week later, the stock will be reduced by one again, leaving 98 widgets. A week later, the subscription will renew a second time and stock will be reduced again, leaving 97 widgets.

Subscription Inventory Management

If you do not want inventory to be reduced for all renewal orders, you can use the free WooCommerce Subscriptions – Do Not Reduce Stock on Renewal plugin.

If your product’s stock quantity reaches 0, Subscriptions will not prevent new renewal orders from being processed or mark renewal orders as failed. It will process renewal orders normally. The product’s stock count will go into the negative. If you wish to stop renewals for out-of-stock products, suspend the subscriptions that contain those products.

What happens if I change the price of a subscription product?

WooCommerce Subscriptions calculates the recurring amount that a subscriber should be charged at the time the subscriber places an order. This amount is then stored against their subscription. As a result, if you change the price of a subscription product, existing subscribers won’t be effected. All existing subscriptions will continue to be charged the old price by default.

To understand more about why this is the case, read over the Subscription Product vs Subscription Guide.

It is possible to manually change the amount charged for a subscription, as explained in the guide to modify recurring totals. If you need a way to bulk edit the recurring amounts charged for subscriptions, AutomateWoo can be used to bulk update subscription prices.

Can I change the product on a subscription?

Depending on the payment gateway you use on your site, it may be possible to manually delete then add a new subscription product to a subscription.

Your customers can also upgrade or downgrade a subscription, i.e. switch to a different subscription product or variation, from the My Account page.

How is the minimum price for a variable subscription calculated?

When displaying a variable subscription’s price on the store page, Subscriptions displays a “From: $x / period” price. This the lowest possible price at which a customer can access a subscription.

Subscriptions uses a general rule to determine the cheapest variation: the lowest initial price for the longest period.

For example, if a variable subscription has the following 3 variations:

  1. $5 per month
  2. $5 every 3 months
  3. $5 every 6 months

The 3rd option will be set as the lowest possible price because it is for the longest period.

For another example, if a variable subscription has the following 3 variations:

  1. $5 per month
  2. $10 per month with 1 week free trial
  3. $50 per year with 1 month free trial

Again, the 3rd option will be set as the lowest possible price because it has the cheapest initial price, free, for the longest period, 1 month.

For these examples, this method makes sense, but it might seem confusing when selling variations at different prices and different billing period. For example, with two variations, $5 / month and $20 / year. In this case, the $20 / year subscription is cheaper on a daily basis over a 12 month period. However, the lowest possible price the customer can access the subscription for is $5 / month. Furthermore, if a customer only remains subscribed for 3 months, then they will pay a lower total price than the annual amount. As a result, the minimum price would be displayed as $5 / month.

What about the subscription length for variations?

If multiple variations have exactly the same price and billing period, Subscriptions will think each variation’s price is identical, even if the variations have different lengths.

For example, consider a variable subscription with the following 2 variations:

  1. $5 / month for 1 month
  2. $5 / month for 3 month

Subscriptions will think these two prices are identical. As a result, it will determine the minimum price based on the last variation which it checked, which is the variation with the highest ID.

So for this example, if the second variation has the higher ID, Subscriptions will display the variable subscription’s price string as $5 / month. If the first variation has the higher ID, the variable subscription product’s price would be displayed as $5 for 1 month.

Can a Subscription have a Three-Tier Price?

A three-tier price is where the customer pays three different amounts for their subscription at different stages of the subscription’s lifecycle.

For example, consider a monthly subscription wherein:

  1. months 1-6, the customer pays $29.99
  2. months 7-12, the customer pays $19.99 and then
  3. months 13 and beyond, the customer pays only $9.99.

Subscriptions allows you to create a product with a two-tier price, by using a sign-up fee. The product price does not allow for a three-tier price to be input. However, it is still possible to have three-tier prices.

With Limited Payment Coupons, Subscriptions can have a three-tier price where the price increases over the life cycle, as explained in the guide to three-tier pricing with limited coupons.

To provide a price which decreases, or some other complex pricing tier system, the AutomateWoo extension can be used. This extension provides a way to add or remove a coupon from a subscription, and add  or remove products from a subscription. These can be used to change the amount charged for the subscription at any stage during its lifecycle.

To achieve three-tier pricing without AutomateWoo or Limited Coupons, it’s possible to:

  • update each subscription manually after the desired number of payments to change the recurring price (only really suitable when you have only a few subscribers)
  • hire developer from our WooExperts or Codeable to write a custom plugin to have the price changed automatically after the second payment.

If a customer is subscribed to a downloadable product, do they have access to that product forever?

If you create a subscription product with downloadable files associated with it, the customer will only have access to the files while their subscription is active or pending-cancel.

If the subscription has expired, is on-hold or has been cancelled, the customer will not be able to download the files associated with the subscription.

How can I create a subscription where customers pay the entire bill up-front?

To charge the entire subscription amount up-front, there are two options:

  1. Create a subscription for 1 billing period, e.g. $100 for 4 months or $120 for 6 months
  2. Make the subscription free for each recurring interval and charge the total amount in the sign up fee. e.g. $0 / month for 4 months with a $100 sign up fee or $0 / month for 6 months with a $120 sign up fee

The first option is most suitable when wanting to provide access to something (e.g. content) for a certain period of time.

The second option is most suitable when you want to ship the subscription product each month (so you want an order to be generated to manage shipping).

Combine one of these with a variable subscription and a billing period attribute, and you can allow the customer to choose whether they pay up-front or monthly.

A better method to handle this situation is also a popular feature request. If you would like to see this added, please vote for that feature.

How can I provide subscribers with access to new downloadable files?

After a customer has purchased a downloadable subscription product, they will be able to download any files associated with that product from their My Account page for as long as the subscription is active. However, you may also wish provide existing subscribers with access to new files.

WooCommerce Subscriptions provides two options to handle this situation. You can either provide access to new files:

  1. immediately, by adding files to the subscription product; or
  2. after the customer’s next renewal is processed (known as dripping).

The first of these options is the default behavior in Subscriptions, while the second can be enabled with the setting to drip downloadable content.

Provide Immediate Access to Downloadable Files

To provide active subscriptions with access to new downloadable files immediately:

  1. Go to: WooCommerce > Settings > Subscriptions and make sure the Drip downloadable content setting is disabled
  2. Go to: Products > Edit Product
  3. Go to the General tab of the Product Data metabox
  4. Click Add File
  5. Click Update to save the product
Add New Downloadable File to Subscription

Existing subscriber’s with an active subscription will automatically receive access to those files on their My Account page.

Drip Feeding Downloadable Files with each Renewal

To link access to the new downloadable files with each renewal payment, you can enable Subscriptions’ Drip downloadable content feature.

How can I charge a payment at a custom interval?

Out of the box, Subscriptions allows you to charge a recurring payment on a billing interval of 1-6 i.e. every day, every 2nd day, every 3rd day etc.

Default Subscription Billing Intervals

If you want to charge payments on a different billing period, it is also possible to add your own with a little bit of code. For example, the plugin’s code shown below will add a every 10th billing interval. You can change the 10 to any number you require and install it as a plugin on your site.

  * Plugin Name: Extend WooCommerce Subscription Intervals
  * Description: Add a “every 10 weeks” billing interval to WooCommerce Subscriptions
  * Author: Brent Shepherd
  * Author URI:
  * Version: 1.0
  * License: GPL v2
  function eg_extend_subscription_period_intervals( $intervals ) {
  $intervals[10] = sprintf( __( ‘every %s’, ‘my-text-domain’ ), WC_Subscriptions::append_numeral_suffix( 10 ) );
  return $intervals;
  add_filter( ‘woocommerce_subscription_period_interval_strings’, ‘eg_extend_subscription_period_intervals’ );


view raw
hosted with ❤ by GitHub


How can I customize subscription price strings?

There is currently a free mini-plugin that will allow you to customize the price string from the admin area.

The price displayed for a subscription product and order totals for a subscription order can be customized by plugins.

If you are a WordPress developer, you can use the 'woocommerce_subscription_price_string' and 'woocommerce_subscriptions_product_price_string' filters along with the parameters passed to those filters, to customize the string.

If you need to hire WordPress developer, you can find one at Codeable or WooExperts.

How can I offer a longer subscription length?

Out-of-the-box WooCommerce Subscriptions allows store managers to sell subscriptions that last only as long as the longest length supported by PayPal Standard. Detailed information for developers on these limitations can be found in the PayPal developer documentation.

Custom 36-Month Subscription Length

If you want to offer subscriptions for a different length, and you are not offering PayPal for payments, it may be possible to offer a custom length.

For example, the plugin below includes code that will offer a subscription that lasts for 36 months. You can change the 36 to any number you require and install it as a plugin on your site. However, please be aware, different payment gateways offer different possibilities for length. You will need to test this custom code thoroughly and although it is included here to help make the customization, Woo cannot provide support customizations. This code also requires WooCommerce Subscriptions 1.4.4 or newer.

  * Plugin Name: WooCommerce Subscription Length Extender
  * Description: Add a custom 36 month subscription length to WooCommerce Subscriptions (requires WC Subscriptions 1.4.4 or newer) to give the option of having a subscription expire after 36 months.
  * Author: Brent Shepherd
  * Version: 1.0
  * License: GPL v2
  function eg_extend_subscription_expiration_options( $subscription_lengths ) {
  $subscription_lengths[‘month’][36] = wcs_get_subscription_period_strings( 36, ‘month’ );
  return $subscription_lengths;
  add_filter( ‘woocommerce_subscription_lengths’, ‘eg_extend_subscription_expiration_options’ );


view raw
hosted with ❤ by GitHub


Why can a subscription product not be deleted?

Subscription products can be trashed, but any subscription product that is associated with an order (i.e. has been purchased by a customer) can not be permanently deleted. This is to prevent causing errors with WooCommerce and other WooCommerce extensions that expect a product to exist when performing some of the operations related to a subscription, like processing renewal payments.

If you need to permanently delete a subscription product or subscription variation, you must first permanently delete all orders which include that product as an item.

This applies to simple subscriptions, variable subscriptions and subscription variations.

Subscription Management

When a customer signs up for a subscription, when will they be charged?

By default, the billing schedule for a subscription is based on the day the customer buys the subscription. If a customer buys a monthly subscription on the 15th December, they will pay on the 15th December, then be billed for renewal on the 15th January (then 15th February etc.).

If you want to align subscription payments, for example, to be charged on the first or last day of the month, regardless of when a customer signed up for a subscription, you can use the renewal synchronisation feature.

How do I restrict the number of available subscriptions?

You can use the built-in WooCommerce inventory feature for your subscription product.

Will a scheduled subscription charge go through even if the order status is “on-hold”?

Yes, a scheduled subscription charge will still go through even when the original order used to purchase the subscription has a status of on-hold. A store manager needs to put the subscription on-hold to freeze payments on that subscription. More information about the differences between an order and a subscription can be found in this guide about the differences between subscriptions and orders.

What happens when a subscription is suspended?

When a store manager or customer suspends a subscription, all payments will stop for the period the subscription is suspended. The user’s role on your site will also be set to the default inactive subscriber role.

When a subscription is reactivated, the payment schedule will continue as it did before the subscription was suspended. The payment schedule is not changed based on the amount of time the subscription has been suspended.

For example, if a customer buys a monthly subscription product on the 1st of January, then suspends their subscription on February 12th, they will not pay anything until they reactivate it. If the customer reactivates the subscription on May 22nd, the next payment will be charged on 1st of June, because that is the original billing date the subscription was started.

WooCommerce Subscriptions allows you as the store manager to set a limit on the number of times a subscriber can suspend or reactivate their subscription, or to prevent suspension completely on the settings page.

How can I manually trigger a renewal payment (or a renewal order email)?

To trigger an off-schedule renewal and therefore trigger each step in the renewal process, like sending renewal order email, follow the steps outlined in the guide for testing renewal payments using the WCS_DEBUG flag.

Why are dates displayed incorrectly?

You may find when viewing the Manage Subscriptions page that some dates are displayed a few hours or more off the actual date. This usually means a plugin or custom code is changing your site’s timezone.

WordPress sets your site’s base timezone to UTC/GMT and Subscriptions expects that to be the site’s base timezone for calculating dates. However, on rare occasions, some plugins will change the base timezone.

To find the offending code, search your site’s files for the string: date_default_timezone_set and disable the plugin using that function.

How can I notify a subscriber before their next renewal payment?

There are a variety of solutions that can be used to notify subscribers prior to their next renewal payment:

  1. the AutomateWoo extension: with actions to email or SMS a customer, AutomateWoo’s Subscriptions’ Integration can be used to notify customers on a variety of subscription related events, including a period of time before renewals. Learn more in the AutomateWoo documentation on subscription triggers.
  2. Jilt: as part of their suite of marketing emails, Jilt makes it possible to send many subscription related emails, including pre-renewal emails. For more information, refer to the documentation on subscription emails.
  3. Metorik: as part of Engage, Metorik makes it possible to send many subscription related emails, including pre-renewal emails. For more information, refer to the documentation on Engage.

How can I stop renewals temporarily?

If you want to temporarily disable renewals, including recurring payments, from being processed for a certain period of time, for example, while testing upgrades or running other maintenance tasks, use the DISABLE_WP_CRON constant.

This will not work with PayPal or payment gateways which manage the billing schedule. It will work with Stripe, CIM, Braintree and almost all other payment gateways.


How can I repair the billing schedules for a subscription?

If you have a plugin installed to view the scheduled tasks in WP-Cron, like WP-Crontrol, and notice that an active subscription’s next payment date is not scheduled, you can repair it with the following instructions:

  1. Go to: WooCommerce > Subscriptions (the Subscription Management screen)
  2. Hover over the subscription missing a payment date
  3. Click Suspend
  4. After the page reloads, hover over the subscription again and click Reactivate

This process will repair the next payment date scheduled for a subscription using the manual renewal process or automatic payments and a payment gateway other than PayPal. If the subscription is using PayPal, you do not need to repair the billing schedule, it will be repaired when PayPal processes the next scheduled payment (in Subscription versions 1.4.4 or newer).

What is the end_of_prepaid_term hook?

When a subscription is cancelled, either by the store manager or subscriber, its status will be changed immediately and no payments will be charged in the future. However, the customer has already paid for the subscription’s current term. For sites selling virtual subscriptions, like memberships, it’s important to provide access to the virtual good for the entire prepaid term.

The 'scheduled_subscription_end_of_prepaid_term' hook accounts for that prepaid term. It is used by Subscriptions to assign the customer with the default cancelled role at the end of the prepaid term (if the customer does not have any other subscriptions). It is also used by other plugins like Groups to allow access to memberships and other virtual products until the end of the term for which the customer has already paid.

For example, a customer purchases a monthly subscription on the 15th March. On the 25th of March, they then cancel the subscription. The subscription is cancelled immediately, but they have prepaid for one month of access, until the 15th April. Therefore, the 'scheduled_subscription_end_of_prepaid_term' hook will be scheduled to run on the 15th of April. When that day arrives, the customer’s role will be changed to the the default cancelled role and any other plugins can change the customer’s status as required.

Orders Related to Subscriptions

Why are orders set to Processing not Completed?

Once an order has been paid, WooCommerce only sets the status of the order to completed if all the products purchased in the order are both digital and downloadable. If all the products in an order are not digital and downloadable, the order will be marked as processing. This is to help you manage shipping of physical items.

Subscriptions conforms to the WooCommerce behavior when setting order status. As a result, when an order contains a subscription product that is not both digital and downloadable, the order status will be set to processing. If you want the order status to automatically transition to completed after payment for a subscription, you need to set the subscription product as both digital and downloadable.

Alternatively, you can use this free WooCommerce plugin to automatically mark all of your WooCommerce orders complete regardless of product type.

Why are subscriptions automatically cancelled after a parent order is cancelled?

WooCommerce 2.0 introduced a new Hold stock setting. This setting allows you to set a time limit, after which an unpaid, pending order will be cancelled. When an order used to purchase subscription products is cancelled, the subscription or subscriptions associated with that order are also cancelled. This means the Hold stock setting can lead to unexpected cancellation of subscriptions.

By default, WooCommerce will set the Hold stock setting value to 60 minutes. This doesn’t provide much time to pay for a renewal, however, so when installing or upgrading Subscriptions version 1.4 or newer, the default value is changed one week (10080 minutes). If you customer does not pay for the parent order within one week, the renewal order will be cancelled.

If you would like to provide your subscribers with a more or less generous payment period, just increase or decrease the time limit as needed. Or leave the value blank to disable this feature completely.

Hold Stock Setting
Subscriptions are only cancelled when a parent order is cancelled. A subscription will not be cancelled automatically if a renewal order is cancelled.

Shipping & Coupons

How is shipping calculated for physical product subscriptions?

If you’re selling a subscription to items that need shipping, shipping costs are added to the recurring payment. For example, a $5/month subscription with a $2 shipping fee would be $7/month.

If your subscription includes a free trial, shipping is free for that first period if no other products are purchased in the same transaction. To charge an up-front shipping fee for a subscription with a free trial, you can include a signup fee for the cost of shipping.

This system applies to all the shipping methods included with WooCommerce, including Local DeliveryLocal PickupInternational Shipping and Flat Rate shipping. It also works for any additional shipping methods created by a WooCommerce extension, as long as the extension uses the appropriate WooCommerce features.

Subscription Shipping Methods

How are discount coupons applied to subscriptions?

To learn how discount coupons are applied to subscription product purchases, refer to the Subscription Coupons section of the Store Manager Guide.

How can I offer a Free Shipping coupon for Subscriptions?

To offer customers free shipping for a non-subscription product, you can create a Cart or Product coupon with free shipping enabled.

Similarly, to offer a free shipping coupon that will work with a subscription product, you can create a Recurring Discount coupon and enable free shipping on it.

The reason a recurring coupon should be used is because a free shipping coupon only reveals the Free Shipping method as a shipping option, it doesn’t actually discount the shipping price. Because of this, there is no way to offer free shipping only for the initial order. To do that would require the customer to select the Free Shipping method for the initial order and then a different shipping method for renewal orders, but there is no way for a customer to select two different shipping methods for the one order.

Cart & Checkout

How can I sell a product with a subscription?

  1. Go to: WooCommerce > Settings > Subscriptions.
  2. Scroll down to the Miscellaneous Settings section.
  3. Enable the Mixed Checkout setting.

Mixed checkout is enabled by default on new installations. You will only need to manually enable it if you upgraded to Subscriptions version 1.5, that is, your site was running Subscriptions prior to version 1.5. This feature was disabled by default on existing sites to ensure existing behavior did not change unless store managers wanted it too.

Why does a customer need to enter payment details when no initial payment is due?

With Subscriptions 2.5 and newer, it is possible for a customer to sign up with no payment details when no initial payment is due.

For Subscriptions versions older than 2.5, when automatic payments are enabled, a customer must enter their payment details when signing up for the subscription, even if no initial payment is required. That means, even if the subscription has a free trial or the customer has applied a coupon for 100% of the first payment, they will need to enter their payment details. This is so that future payments can be processed automatically.

If you do not want to make customers enter their payment details when no initial payment is required, switch off automatic payments.

Payment Fields with 100% Discount on Initial Payment

How can I display a notice when products are removed from the cart?

When Mixed Checkout is disabled, if a customer adds a subscription product to the cart and the cart already contains a non-subscription product or products, the subscription products will be removed.

As the customer is redirected immediately to the cart, no notice will be displayed.

The following code will add a message on checkout to indicate to the customer that a product or products have been removed. To use the code, you can install and activate it as a plugin on your site.

  * Plugin Name: WooCommerce Subscriptions Product Removed Message
  * Description: Display a notice on checkout when a product was removed from the cart after a subscription was added.
  * Author: Gerhard Potgieter & Brent Shepherd
  * Author URI:
  * Version: 1.1
  * License: GPL v2
  * Set a flag to indicate that the error message needs to be displayed. We can add the message to the $woocommerce global
  * yet because it will be removed by Subscriptions later on the ‘add_to_cart_redirect’ hook.
  function eg_set_product_removed_message( $valid, $product_id, $quantity ) {
  global $woocommerce, $eg_set_product_removed_message;
  if ( $woocommerce->cart->get_cart_contents_count() > 0 && WC_Subscriptions_Product::is_subscription( $product_id ) ) {
  $eg_set_product_removed_message = $woocommerce->cart->get_cart_contents_count();
  return $valid;
  add_filter( ‘woocommerce_add_to_cart_validation’, ‘eg_set_product_removed_message’, 9, 3 );
  * If the product removed flag is set, now we can add the message.
  function eg_show_product_removed_message( $url ) {
  global $woocommerce, $eg_set_product_removed_message;
  if ( isset( $eg_set_product_removed_message ) && is_numeric( $eg_set_product_removed_message ) ) {
  wc_add_notice( sprintf( _n( ‘%s product has been removed from your cart. Products and subscriptions can not be purchased at the same time.’, ‘%s products have been removed from your cart. Products and subscriptions can not be purchased at the same time.’, $eg_set_product_removed_message, ‘wcsprm’ ), $eg_set_product_removed_message ), ‘error’ );
  return $url;
  add_filter( ‘add_to_cart_redirect’, ‘eg_show_product_removed_message’, 11, 1 );


view raw
hosted with ❤ by GitHub


Using the Storefront theme, the notice will be displayed on checkout as shown in the screenshot below.

Product Removed Notice

How can I redirect customers to the cart instead of checkout page?

When a customer adds a subscription product to the cart and Mixed Checkout is disabled on your site, the customer will be redirected to the checkout page immediately. This is because when Mixed Checkout is disabled, no other products can be purchased in the same transaction.

If you would prefer for the customer to be redirected to the cart page, the following code can be installed and activated as a plugin on your site.

  * Plugin Name: WooCommerce Subscriptions Redirect to Cart
  * Description: Redirect customers to the cart page when adding a subscription to their cart (rather than the checkout page, which is the default).
  * Author: Gerhard Potgieter & Brent Shepherd
  * Author URI:
  * Version: 1.0
  * License: GPL v2
  function eg_redirect_to_cart_page( $url ) {
  // If product is of the subscription type
  if ( is_numeric( $_REQUEST[‘add-to-cart’] ) && WC_Subscriptions_Product::is_subscription( (int) $_REQUEST[‘add-to-cart’] ) ) {
  // Redirect to cart instead
  $url = WC()->cart->get_cart_url();
  return $url;
  add_filter( ‘woocommerce_add_to_cart_redirect’, ‘eg_redirect_to_cart_page’, 20 );


view raw
hosted with ❤ by GitHub


Payment Gateways

Does Subscriptions support [insert payment gateway name]?

To see a complete overview of the official WooCommerce payment gateways which support Subscriptions, please read over the Subscription Payment Gateways guide.

If you do not see the payment gateway listed there, it does not support automatic recurring payments. It will be possible to use it for manual recurring payments. If you want automatic recurring payment, please follow the advice in the at the end of the payment gateways document.

Why only one subscription per transaction?

WooCommerce Subscriptions version 2.0 introduced a multiple subscriptions feature which allows your customers to purchase more than one subscription product in the same transaction.

However, not all payment methods support this feature. In order to offer this feature to your customers, you must either enable manual renewals or use a payment method which supports multiple subscriptions. You can find a list of all payment methods which support this feature in the Subscription Payment Gateways guide.

How can I improve the accuracy and reliability of scheduled payments with Stripe or

WooCommerce Subscriptions uses WordPress’s built-in WP-Cron scheduling system for scheduling payment related tasks. For popular sites, the accuracy of WP-Cron’s scheduling service is not a problem. However, sites with less traffic may find scheduled payments are charged at an unacceptable length of time after it was due.

To ensure a schedule payment is run within 5 seconds of the time and date it is due, there are three options:

  1. Use the Jetpack plugin and enable downtime monitoring.
  2. Create a free Pingdom or UptimeRobot account and point it to your store’s front page. This will ensure WP-Cron fires regularly (from every 30 seconds using PingMate to every 5 minutes using UptimeRobot). That way, a payment is charged no more than that interval after it is due. This is the simplest solution.
  3. Create a manual cron job by following the instructions on this WP Tuts+ tutorial. Set it to trigger every 10 seconds. This is a more reliable and flexible solution, but also more difficult to implement.

This extra step is not required for PayPal or any other gateway extension which uses the payment gateway’s own recurring billing system. It is only required for those extensions, like Stripe and CIM, which rely on Subscription’s scheduling for recurring billing.

Is it possible to offer multiple payment options or can I only choose one payment processor?

You can offer more than one payment processor.

If you have manual renewals enabled, every payment payment gateway that has an extension activated on your site and is enabled under the Payment Gateways tab of the WooCommerce settings page will be offered as payment option.

If manual renewals is not enabled, all WooCommerce payment gateway extensions which support automatic payments will be offered to the customer.

How can I have all new subscribers use a new payment gateway while allowing existing subscriptions to continue?

To force all new customer subscriptions to be created with a new payment gateway, while still having existing subscriber’s recurring payments charged correctly in an old payment gateway, you can simply disable the old payment gateway under the WooCommerce Payment Gateway Settings page.

Disabling the old payment gateway will prevent it from being offered as an option on checkout for new customers, but as long as the payment gateway extension is still active as a WordPress plugin, it will be able to handle recurring payments.

For example, to switch from using Stripe to payment gateways, the Stripe gateway would need to be disabled.

Disabling the Stripe Gateway
Switching existing customers to the new method is more complicated and if you wish to do this, it is recommended you have customers follow the process provided to Change Payment Methods.


What happens if a customer cancels a subscription purchased with PayPal?

WooCommerce Subscriptions can sync the subscription status between PayPal and your store. To enable this feature, you must configure PayPal as explained here.

If you or your customer suspends or cancels a subscription in your WooCommerce store, it will also notify PayPal that the subscription should be suspended or cancelled. This means both you and your customers can manage subscriptions without ever having to log into PayPal.

If a customer suspends or cancels a subscription with PayPal directly, you site will also sync the status change as long as it receives a notification via the PayPal IPN. If subscription statuses are not syncing and you have not configured IPN for your store’s website, please follow PayPal’s instructions for setting up IPN. You will need to set the notification URL given to the WooCommerce URL provided here.

Why does PayPal Standard split the subscription when I add a sign up fee?

PayPal Standard does not provide a way to charge a sign up fee. As a result, Subscriptions needs to split the initial payment if it includes a sign up fee. It can then apply the initial amount to a separate billing period, which PayPal does support but unfortunately refers to as a Trial Period.

This may be confusing to your customers if they look at the subscription details in their PayPal account and see a Trial Period charged on a subscription with no free trial. Unfortunately, PayPal Standard does not provide any other method for charging the sign up fee.

This is just one of PayPal Standard’s limitations. If you can, it is recommend you use a more modern payment gateway, like Stripe.

Why are subscription payments charged late (or early) with PayPal?

PayPal batch processes payments, meaning that they do not process payments exactly when they are due. Instead, PayPal will process a payment within 24 hours of when the payment is due.

For example, if a recurring payment is due at 2pm on 1st July, PayPal may charge that payment anytime between 12:00am and 11:59pm on the 1st of July pacific time. This may become more confusing for a subscription created on the last day of the month, as PayPal may actually end up processing the payment on the 1st day of the following month based on your store’s timezone.

Why does PayPal immediately send a Subscription Expired/Completed email?

Unfortunately, PayPal handles subscriptions for 1 billing period (e.g. 1 year) as if they start and finish immediately. Because the payments are not on-going, PayPal thinks it can end the subscription as soon as it begins. This means PayPal will also send you as the store manager and the customer an email to say the subscription has been cancelled as soon as it was created.

Fortunately, WooCommerce Subscriptions handles the subscription properly – it will expire in your store only after the year has passed. But PayPal will still send you as a store manager and your customers a “Profile Cancelled” email as soon as the subscription has been created.

The only thing a store manager can do to prevent these emails from PayPal is to set the subscription length to be “all time”. This means PayPal won’t cancel the subscription immediately, it will be up to store manager or customer to cancel the subscription. Fixing PayPal’s behavior is outside of the control of the developers behind WooCommerce Subscriptions and changing the length is the only workaround available.

Can a customer use a credit card to pay for subscriptions when using the bundled PayPal Standard gateway?

Out-of-the-box, PayPal Standard requires customers to already have a PayPal account or to create one when signing up for a subscription.

If you want customers to be able to pay for subscriptions with just a credit card, you can add Enhanced Recurring Payments for PayPal Standard. This feature costs $19.99 / month and allows your customers to sign up for a subscription even if they don’t have a PayPal account.

If you sign up for Enhanced Recurring Payments, you won’t need to make any changes to your store. Customers will automatically be presented with the option during checkout.

Note: PayPal only offers Enhanced Recurring Payments to US based companies. This feature is also only available for PayPal Standard, it is not available for PayPal Reference Transactions – PayPal provide no way to offer guest checkout with subscriptions that use PayPal Reference Transactions.

Can I sell a subscription with a sign-up fee and $0 recurring payment through PayPal?

PayPal does not support subscriptions with a $0 recurring total i.e. subscriptions where the total cost is charged up-front, but an item is still shipped on a regular basis. This is because PayPal Standard requires a subscription price (the a3 parameter) to be set and to be greater than 0.

WooCommerce Subscriptions will allow you to do this however as it will pass the initial purchase to PayPal as a one-off purchase and then process the renewals on its own. This means however that subscriptions with a $0 total won’t show up in your PayPal account like other subscriptions.

Do PayPal eChecks work with Subscriptions?

WooCommerce Subscriptions is able to process automatic subscriptions payments with PayPal using the eCheck payment method.

There are slight differences to how the subscription will be handled with an Instant Payment method, like Credit Card or bank transfer. The way it will work is:

  1. After the customer completes the checkout with PayPal, the subscription & original order will remain on-hold until the payment clears after 2-3 days (you will need to make sure the Hold Stock setting is disabled or set to a length of time long enough to allow for this delayed processing) once the eCheck payment is completed, the subscription will be activated and order marked as processing or completed.
  2. When the subscription renewal payment is due, the subscription will remain active until the eCheck payment clears, then and only then will the renewal order be created (so 2-3 days after the payment was due) for that subscription. If the eCheck payment failed, the failed payment will only be registered and subscription put on-hold 2-3 days after payment was due.

Subscriber Account

Why does a customer need to create an account at checkout?

WooCommerce includes options to allow guest checkout, meaning customers do not need an account to make a purchase; however, Subscriptions ignores the value of this setting and requires all customers to create an account with your site whenever purchasing a subscription.

Subscriptions persist beyond a transaction and therefore must be associated with a user account in order to keep track of renewals and other features.

Can a subscriber cancel their own subscription?

Yes, a subscriber and cancel and perform other actions on their subscriptions via the My Account page.

What emails do Subscriptions send to customers?

A list of the emails WooCommerce Subscriptions sends, and information on how to customize those emails, is included in the Store Manager Guide.

How can I customize the My Subscriptions section of the My Account page?

To help your customers view and manage their subscriptions, WooCommerce Subscriptions adds a My Subscriptions section to your store’s My Account page.

If you want to customize the information displayed in this section, the template can be changed the same way core WooCommerce templates can be overridden.

The template is called my-subscriptions.php and is located under the /myaccount/ folder. To override it in your theme, copy the /templates/myaccount/my-subscriptions.php file found in the WooCommerce Subscriptions plugin folder to your theme using the location: /woocommerce/myaccount/my-subscriptions.php.

How can I add a confirmation message on the My Account page?

By default when a customer clicks the suspend, cancel or renew button on their My Account page, the action is performed immediately.

Adding a confirmation to the cancel button is now available in a free mini-plugin.

If you wish to require the customer to confirm they want to perform the selected action, you can use a JavaScript confirmation dialogue by following these instructions:

  1. Copy the /myaccount/subscription-details.php template from the plugin folder into your theme’s folder at the location /woocommerce/myaccount/subscription-details.php. (Learn more about overriding WooCommerce templates).
  2. Find the line used to display the link button for each action. Its HTML is shown below and it is contained within a table with the class subscription_details.
  3. Replace the link text with the new link text included below.

The original link will look like this:

<a href="<?php echo esc_url( $action['url'] ); ?>" class="button <?php echo sanitize_html_class( $key ) ?>"><?php echo esc_html( $action['name'] ); ?></a>

To display a confirmation dialogue, change the link markup to this:

<a href="<?php echo esc_url( $action['url'] ); ?>" class="button <?php echo sanitize_html_class( $key ) ?>" onclick="return confirm('<?php printf( __( 'Are you sure you want to %s this subscription?', 'woocommerce-subscriptions' ), esc_html( $action['name'] ) ); ?>');"><?php echo esc_html( $action['name'] ); ?></a>
Cancel Subscription Confirmation Dialogue

Store Manager or Administrator

How can I disable core subscription features, like changing payment methods?

This FAQ item requires a basic understanding of PHP and WordPress development.

WooCommerce Subscriptions uses a centralised function to check if a given action can be performed on a subscription. For example, can the subscription’s payment method be changed or can its status be changed, e.g. cancelled. This allows WooCommerce developers to disable any action that can be performed on a subscription.

The following plugin could be used to switch off any of Subscription’s core features. Uncomment the line with the hook relating to the action you wish to disallow. For example, to no longer allow payment method changes in your store, you should uncomment the line adding a filter to the 'woocommerce_can_subscription_be_updated_to_new-payment-method' hook.

  * Plugin Name: WooCommerce Subscriptions Disallow Subscription Actions
  * Plugin URI:
  * Description: Prevent core actions from being carried out on a subscription with the WooCommerce Subscriptions plugin.
  * Author: Brent Shepherd
  * Author URI:
  * Version: 2.0
  * Do not allow any subscriptions to be changed to a new payment method.
  add_filter( ‘woocommerce_can_subscription_be_updated_to_new-payment-method’, ‘__return_false’, 100 );
  * Do not allow a customer to resubscribe to an expired or cancelled subscription.
  //add_filter( ‘wcs_can_user_resubscribe_to_subscription’, ‘__return_false’, 100 );
  * Do not allow any subscriptions to switched to a different subscription, regardless of settings (more:
  //add_filter( ‘woocommerce_subscriptions_can_item_be_switched_by_user’, ‘__return_false’, 100 );
  // OR
  //add_filter( ‘woocommerce_subscriptions_can_item_be_switched’, ‘__return_false’, 100 );
  * Subscriptions Status Changes
  * Do not allow any subscriptions to be activated or reactivated (not a good idea).
  //add_filter( ‘woocommerce_can_subscription_be_updated_to_active’, ‘__return_false’, 100 );
  * Do not allow any subscription to be cancelled, either by the store manager or customer (not a good idea).
  //add_filter( ‘woocommerce_can_subscription_be_updated_to_cancelled’, ‘__return_false’, 100 );
  * Do not allow any subscription to be suspended, either by the store manager or customer (not a good idea).
  //add_filter( ‘woocommerce_can_subscription_be_updated_to_on-hold’, ‘__return_false’, 100 );


view raw
hosted with ❤ by GitHub


How can I remove an action button from the View Subscriptions page?

If you want to prevent a customer initiating a given action on a subscription, you can remove the button from the My Account > View Subscriptions page.

The following plugin demonstrates how to remove a button using the 'wcs_view_subscription_actions' hook. By default, only the Change Payment Method button is removed, but you can uncomment additional actions to remove other buttons.

  * Plugin Name: Remove Subscription Action Buttons from My Account
  * Plugin URI:
  * Description: Remove any given button from the <a href=”″>My Subscriptions</a> table on the My Account page. By default, only the “Change Payment Method” button is removed, but you can uncomment additional actions to remove those buttons also.
  * Author: Brent Shepherd
  * Author URI:
  * Version: 2.0
  * Remove the “Change Payment Method” button from the My Subscriptions table.
  * This isn’t actually necessary because @see eg_subscription_payment_method_cannot_be_changed()
  * will prevent the button being displayed, however, it is included here as an example of how to
  * remove just the button but allow the change payment method process.
  function eg_remove_my_subscriptions_button( $actions, $subscription ) {
  foreach ( $actions as $action_key => $action ) {
  switch ( $action_key ) {
  case ‘change_payment_method’: // Hide “Change Payment Method” button?
  // case ‘change_address’: // Hide “Change Address” button?
  // case ‘switch’: // Hide “Switch Subscription” button?
  // case ‘resubscribe’: // Hide “Resubscribe” button from an expired or cancelled subscription?
  // case ‘pay’: // Hide “Pay” button on subscriptions that are “on-hold” as they require payment?
  // case ‘reactivate’: // Hide “Reactive” button on subscriptions that are “on-hold”?
  // case ‘cancel’: // Hide “Cancel” button on subscriptions that are “active” or “on-hold”?
  unset( $actions[ $action_key ] );
  error_log( ‘– $action = ‘ . print_r( $action, true ) );
  return $actions;
  add_filter( ‘wcs_view_subscription_actions’, ‘eg_remove_my_subscriptions_button’, 100, 2 );


view raw
hosted with ❤ by GitHub


If you want to remove a feature entirely from WooCommerce Subscriptions, you should follow the guide on disabling core subscription features as removing the button does not disable the feature completely.

Be aware that removing cancellation buttons can have legal implications. For example, California has an Automatic Renewal Law which requires stores to provide an easy-to-use mechanism for cancelling. Before removing cancellation button, we recommend you discuss potential implications with a legal professional.

How can I stop Subscriptions changing a user’s role?

By default, WooCommerce Subscriptions will change a user’s role when the status of their subscription or subscriptions change, as explained in the Role Settings document.

However, it is also possible to stop this default behaviour with a small amount of custom code. Below is a simple plugin to show how this can be done.

  * Plugin Name: Stop WooCommerce Subscriptions Changing a User’s Role
  * Plugin URI:
  * Description:
  * Author: Brent Shepherd
  * Author URI:
  * Version: 1.0
  add_filter( ‘woocommerce_subscriptions_update_users_role’, ‘__return_false’, 100 );


view raw
hosted with ❤ by GitHub




Can I sell Memberships for content with access control?

Yes! You can use Subscriptions in combination with WooCommerce Memberships to help manage content to be accessed only when a customer’s subscription is active, plus other great features to link member access to subscription products. Learn more at WooCommerce Memberships.

The Sell with WP blog also has an article on how to create a membership site with WooCommerce, Memberships and Subscriptions. It covers the relevant features of the plugins and provides advice about when this combination of plugins is suitable.

Does WooCommerce Subscriptions work with WordPress Multisite?

Yes, you can use WooCommerce Subscriptions on a WordPress multisite installation. Each subscription will be associated only with the site on which it is purchased.

Each user account will also only be created for the site where the customer purchased the subscription and created their account. If you want to share a user account with other sites in your network, try the handy and free Multisite User Management plugin.

Why does translation not work?

If you are using your own translation (i.e. a custom .mo file), you can include the translation files in either:

  • a languages folder within the WooCommerce Subscriptions plugin’s folder, e.g. /wp-content/plugins/woocommerce-subscriptions/languages/
  • within the default WordPress languages folder e.g. /wp-content/languages/plugins/ Note: the default folder can be changed with the WP_LANG_DIR constant.

The second of these options helps make your translation upgrade safe by preventing your language files from being deleted each time you upgrade the plugin.

If you are not using your own languages files, WPML can be used to manage translations instead.

A large amount of time has been spent to make sure Subscriptions will work with WPML, and it is recommended you use WPML for translating Subscriptions. There are occasionally issues, as seen from forum threads like this one, this one and this one, but all text in WooCommerce Subscriptions is passed through appropriate translation functions. You may just need to rescan the plugin files until all strings are available in WPML. Subscriptions has also been verified as compatible by the WPML team.

Why are translations not reflecting on the live site?

First, make sure that you’ve pressed Sync to sync the translations if you are using Loco Translate. You may also need to clear your browser cache and the Subscriptions cache in WooCommerce > Status > Tools.

Why can’t I find the string that I want to translate?

Some strings use placeholder strings such as %1$s every %2$s. If you are searching for a phrase or sentence that can change depending on the way you set up your subscription product, that’s a good clue that there will be placeholder strings. If you can’t find the exact phrase that you want to translate, search for keywords/phrases instead of the exact phrase.

For Loco Translate, you may also need to press Sync to update the strings from the template after updating WooCommerce Subscriptions.

How can I charge recurring payments for donations?

There are two great extensions which work with Subscriptions to allow your customers to name their own price. These are:

  1. Name Your Price
  2. Gravity Forms Add Ons

Both of these extensions can be used to add a text field on a subscription which allows the customer to enter their preferred donation amount.

Why are renewals not being processed when W3 Total Cache is installed?

WooCommerce Subscriptions uses WordPress’s built-in WP-Cron scheduling system for scheduling recurring payments and other renewal related tasks.

Unfortunately, the W3 Total Cache plugin on occasion breaks WP-Cron (forum reports herehere and here). If you have the W3 Total Cache plugin active and are not seeing subscription renewals processed, please deactivate it. It is an excellent caching solution, but until the WP-Cron issues are properly diagnosed and fixed, it is not always compatible with Subscriptions.

If you you need to use a caching plugin, try a well supported plugin like WP Rocket. You may also wish to consider switching to a host that handles caching for you, like Pagely or Kinsta.

Site Management

How does Subscriptions handle staging sites?

To learn how WooCommerce Subscriptions handles staging sites, please read the Guide to Subscription staging sites.

Why do I get a 403 error on Internet Explorer when adding a subscription to the cart?

Under a rare configuration of mod_security in Apache, your web server will throw a 403 forbidden error when a customer adds a subscription to a cart. If you encounter this issue, you will need to change the MULTIPART_STRICT_ERROR setting in your mod_security.conf to either use warnings instead of MULTIPART_STRICT_ERROR or only to make sure that DB %{MULTIPART_DATA_BEFORE} errors do not result in a 403 error.

Please contact your web host to have this setting changed.

Was this article helpful?
Dislike 0
Views: 16