Description
The Subscriptions extension creates recurring payment products in WooCommerce, with weekly, monthly, or annual billing, free trials, and sign-up fees to attract new subscribers. Stores that sell monthly subscription clubs, subscription services, or software licenses billed periodically get self-service upgrades, downgrades, and cancellations for customers, along with automatic renewal notifications and payment synchronization through gateways that support recurring billing.
Key Features of Subscriptions
- Subscriptions with flexible billing intervals
Allows you to configure weekly, monthly, or annual billing for variable products, each with its own cycle. - Free trials and sign-up fees
Attracts new subscribers with a free trial period and a configurable initial charge. - Billing date synchronization
Aligns billing for all subscribers to a fixed day of the month, simplifying reconciliation. - Automatic billing cycle notifications
Sends automatic renewal, cancellation, and expiration emails without manual intervention. - Recurring revenue reports
Tracks recurring revenue and the number of active subscribers in detailed dashboard reports.
Benefits of Subscriptions
- Predictable revenue
Turns one-time sales into recurring revenue you can track month by month. - Fewer cancellations due to forgetfulness
Automatic renewal notices reduce subscriber losses caused by a lack of communication. - Subscriber autonomy
Customers can modify, pause, or switch plans without opening a support ticket. - Billing without manual rework
Gateways process recurring charges automatically each cycle, without requiring manual order creation.
Who Is Subscriptions For?
- Anyone selling monthly subscription clubs with regular shipments of physical products.
- Those who charge for ongoing services, such as consulting or recurring maintenance.
- Anyone distributing software or licenses with annual or monthly billing.
How to Download Subscriptions
Subscriptions is available for download here on Ultrapack. After downloading the .zip file, install it under Plugins > Add New > Upload Plugin, select the file, and activate it; WooCommerce must be installed and active for the add-on to work. After activation, the subscription options appear in the WooCommerce product editor.
For those already using WooCommerce, the Subscriptions extension replaces manual processes for repeated billing with an automated workflow for recurring orders, subscriber-specific coupons, and shipping charges applied only to the first order. It is the component that turns a catalog of one-time purchase products into a steady revenue stream, with full control over plans, upgrades, and cancellations directly from the store dashboard.
Frequently asked questions
Is WooCommerce Subscriptions GPL-licensed?
Yes. WooCommerce Subscriptions is distributed under the GPL (GNU General Public License). You may legally use, modify and redistribute it on as many sites as you want.
Can I use WooCommerce Subscriptions on multiple sites?
Yes. You can use WooCommerce Subscriptions on multiple sites. The number of sites connected to Ultrapack Auto Updater is limited by your plan.
How much does WooCommerce Subscriptions cost at Ultrapack?
WooCommerce Subscriptions costs US$4.99 as a single purchase, and it is also included in the subscription plans starting at US$12/mo (VIP I).
Does WooCommerce Subscriptions include updates?
Yes. The current version of WooCommerce Subscriptions is 9.2.0, published at Ultrapack on Sep 9, 2026. Subscribers update straight from the WordPress dashboard with UAU (Ultrapack Auto Updater).
Is WooCommerce Subscriptions scanned before publication?
Yes. Every version of WooCommerce Subscriptions goes through a malware scan (ClamAV and YARA rules, at UltraHub) before it is published.
What are the requirements for the plugin WooCommerce Subscriptions?
Requires WordPress 7.0 or higher and PHP 7.4 or higher. Tested up to WordPress 7.1.
What changed in this version
Version 9.2.0 2026-09-08
- Update: We've redesigned the WooCommerce Subscriptions settings page — a single-column layout with clearer labels and inline help
- Early renewal payments are now on by default on stores that never saved the "Allow early renewal payments" setting. Turn it off under WooCommerce > Settings > Subscriptions.
- "Turn off automatic payments" now requires "Accept Manual Renewals" to be enabled.
- "Suspensions per Billing Period" is now a number field instead of a dropdown.
- "Switch Button Text" now defaults to "Switch" for new stores.
- Gifting is now set per product instead of storewide. A background migration carries the storewide default onto existing products, so they keep their current behavior; new products are off by default.
- A new bulk edit action on the Products screen enables or disables gifting across multiple products at once.
- Update: When a subscription's scheduled event - a renewal payment, payment retry, trial end, expiration, end of prepaid term or customer notification - is cleared and not replaced, the failed-scheduled-actions log now records which subscription and event were affected and when the event should have run. Previously nothing in the WooCommerce logs identified the subscription, so a subscription left with a date and no scheduled action could only be found by hand.
- Fix: A product name containing HTML is now shown as plain text on the Subscriptions by Product report, instead of being rendered into the page.
- Fix: A finished Subscriptions health check scan now reports how many subscriptions it went through, matching the subscriptions list, instead of the smaller number of subscriptions the checks shortlisted.
- Fix: Visiting a change payment method link without its 'key' query argument no longer emits an "Undefined array key" PHP warning.
- Fix: An order-pay URL carrying an empty order key no longer triggers a fatal error when the order it names does not exist.
- Fix: On stores that display prices including tax, recurring totals in the block cart and checkout now note the tax included in the total, matching the "Total due today" row.
- Fix: The recipient of a gifted subscription is no longer shown the remove item control on My Account > Subscriptions. The control was never usable by them — removing a line item has always required the subscription's owner.
- Fix: A single product that fails to migrate no longer stops the All Products for Subscriptions product data migration for the whole catalog. Products it cannot migrate are logged and may be left at the default "Sell one-time only" mode; the completion notice reports how many failed with a link to the log so they can be checked and set up by hand.
- Fix: On stores using high-performance order storage, the Orders screen now warns before trashing a parent order that will also trash its linked subscriptions.
- Fix: Restored automatic completion of zero-total subscription switch orders placed through the block checkout on WooCommerce 10.9 and newer.
- Fix: Scheduled downloadable products linked to a subscription product now grant download permissions to existing subscribers when published at their scheduled time, instead of only when published manually from the admin.
- Fix: Saving a subscription product with no linked downloadable products no longer logs a PHP warning.
- Fix: Scheduled renewal payments no longer fail with a fatal error when another plugin checks an order's status while the renewal order is created in the background, which left subscriptions on hold and customers uncharged.
- Fix: The subscription plans script now loads only on pages that can show subscription options, instead of on every page of the store.
- Fix: Selecting a subscription plan inside a theme's quick view modal updates the price and the add-to-cart button again, as it did before 9.0.0.
- Fix: Paying for a pending or failed switch order from My Account or an emailed invoice link now completes the switch, instead of creating a second subscription alongside the one being switched.
- Fix: On stores with prices entered inclusive of tax, paying for a renewal through checkout now charges the correct total for subscriptions with a manual discount, instead of applying the discount inflated by the tax rate and under-charging the renewal.
- Fix: Subscriptions created from the admin screen now record whether the store enters prices inclusive of tax, so their orders are charged and discounted at the right total instead of treating tax-inclusive prices as tax-exclusive.
- Fix: Line items bought under a plan set to "Do not stop until cancelled" before All Products for Subscriptions was merged into Subscriptions in 9.0.0 are matched to that plan again. They had stopped being recognized as subscriptions, so recurring and sign-up fee coupons were rejected as not applicable to the product, plan pricing was not applied, and a customer could switch to the plan they were already on instead of being told they cannot switch to the same subscription. On affected stores, switch quotes for these subscriptions now use the purchased plan's billing schedule and free trial. A switch taken during a free trial is treated as leaving the trial: the new plan is charged and the trial ends, where previously nothing was due and the trial continued.
- Fix: PayPal payment notifications and API payloads are now reduced to the fields needed to diagnose a payment before being written to the diagnostic logs, so those entries no longer record the keys that authorize changing a subscription's payment method. The store's PayPal debug setting is also no longer overridden for ordinary orders.
- Fix: PayPal Standard subscription sign ups and payments are now checked as having been made to the store's PayPal account and in the subscription's currency, and payments also for the amount PayPal was asked to bill. A payment that does not match is not recorded and the reason is noted on the subscription. An active subscription is put on hold, its PayPal profile is suspended, and the customer is sent a renewal invoice whose payment moves the subscription to a new PayPal profile for the right amount.
- Fix: On stores that leave the optional PayPal "Receiver email" setting blank, a PayPal Reference Transactions payment notification for an order not yet marked paid is no longer put on hold as coming from a different email address.
- Fix: On stores using high-performance order storage, resubscribe orders no longer retain the PayPal payment details (payer name and address, subscriber and transaction IDs) recorded on the original subscription by older versions of the plugin.
- Fix: On stores using high-performance order storage without compatibility mode, a PayPal Standard payment notification resent by PayPal is again recognized as already processed. Re-processing a resend could leave a just-renewed subscription on hold with its next payment date in the past. The same fix restores cancelling the previous PayPal profile after a payment method change, and recording renewal payments on stores with a PayPal identity token set.
- Tweak: Add to Subscription now shows the same "cannot be edited" notice whether a subscription does not exist or belongs to another customer, instead of naming permission as the reason.
- Dev: Developer-facing changes
- Deprecated 'woocommerce_subscriptions_max_customer_suspension_range'. The redesigned suspension controls have no option list; the new settings support any number of suspensions.
- Deprecated WCSG_Admin::get_gifting_option_text and WCSG_Admin::get_gifting_global_override_text. Both described the removed storewide gifting default and nothing in the plugin renders their output anymore.
- Deprecated WC_Subscriptions_Admin::add_subscription_settings_tab. The Subscriptions tab is now registered as a WC_Settings_Page on 'woocommerce_get_settings_pages' rather than through 'woocommerce_settings_tabs_array'. The method now logs a deprecation notice when called, but still adds the tab, so third-party code that hooks it to 'woocommerce_settings_tabs_array' keeps working.
- Deprecated WC_REST_Subscriptions_Settings. It and all Subscriptions settings in the /wc/v3/settings REST API are now registered by the new Settings_Page class.
- In the /wc/v3/settings/subscriptions REST group, woocommerce_subscriptions_max_customer_suspensions is now registered as a 'number' field without an options list, instead of a 'select' field listing 0-12 and 'unlimited'. The values the field reads and accepts are unchanged: a non-negative integer, or 'unlimited'.
- WCS_ATT_Product::get_instance_id no longer re-runs APFS module initialization or the 'wcsatt_modules' and 'wcsatt_management_modules' filters.
- wcs_can_items_be_removed now requires the 'edit_shop_subscription_line_items' capability, which only a subscription's owner holds, and returns false when there is no current user. It takes an optional $user_id, defaulting to the current user. The 'wcs_can_items_be_removed' filter still runs, and now receives that user as a third argument, but it is applied before the capability check and so can no longer be used on its own to show the remove item control.
Version 9.1.0 2026-08-05
- Fix: Removed the onboarding notice and walkthrough shown after activating Subscriptions, which pointed merchants at the "Simple subscription" and "Variable subscription" product types — both off by default since 9.0.0.
- Fix: Invalid subscription switch payment links no longer attach an unrelated order to checkout.
- Fix: Order fields containing serialized text now retain their original value when copied to subscriptions on HPOS stores.
- Fix: On stores using legacy (posts) order storage, restoring a subscription's parent order from the trash now makes the subscription reappear on the customer's My Account > Subscriptions page.
- Fix: A subscription plan's sign-up fee shown on the product page (the "Sign-up fee:" line, plan option rows and pre-selected plan details) now passes through the 'woocommerce_subscriptions_product_sign_up_fee' filter, so currency and multi-currency plugins can convert it to match the cart, checkout and charged amount.
- Fix: Coupons are now correctly applied when paying for a renewal via the Checkout block (previously the discount showed in the total, but was not deducted from the amount charged).
- Fix: Renewal carts now calculate the correct total when the subscription used a recurring percentage coupon. On tax-inclusive stores, sub-cent rounding could make the coupon's discount look manually applied and produce a wrong total.
- Tweak: Checkout no longer saves the order an extra time when the cart contains no subscription switch — previously a redundant database write on every checkout.
- Fix: Setting a yearly "Align Renewal" date on a subscription plan no longer silently discards the alignment when only a month is chosen, or fails with an invalid-date error after the month is switched to one with fewer days.
- Tweak: Improved the dedicated Action Scheduler queue debug log so routine skipped runs no longer read as failures.
- Fix: On stores using legacy (posts) order storage, restoring a trashed subscription now returns it to its recorded status (e.g. cancelled) instead of pending, matching the behavior on High-Performance Order Storage.
- Fix: Enabling web cron support for the first time now generates the web cron URL on the first save, instead of repeatedly asking to save changes without ever producing the URL.
- Fix: The "New web cron URL generated" confirmation after generating a web cron URL now shows only once, instead of re-appearing on every subsequent save of the Subscriptions settings screen.
- Fix: Storewide subscription plans now appear on the WooCommerce > Settings > Subscriptions screen when the admin language translates "WooCommerce" into non-Latin characters (e.g. Hebrew) — the screen previously showed an empty, unstyled table even though the plans were still saved.
- Fix: Upgrading a subscription that was purchased through a resubscribe now credits the amount already paid for the current period, instead of quoting the full prorated price of the new plan.
- Fix: On stores that prorate sign-up fees, switching a subscription purchased through a resubscribe now charges the new plan's sign-up fee in full, instead of wiping it with a credit for a sign-up fee that was never paid.
- Tweak: Clearer error message on the Subscriptions settings page when "Prorate until the next billing date" is saved without choosing a product type to prorate.
- Fix: A stale edit page no longer overwrites the billing schedule after a subscription changes status. Saving an affected Active subscription now clears its stale cancelled date, allowing the remaining schedule to be repaired from the edit screen.
- Fix: The My Account > View Subscription page no longer triggers a PHP deprecation notice for subscriptions purchased with PayPal Standard.
- Tweak: Hardened permission and ownership checks across subscription bulk actions, the REST API, and several AJAX and My Account request handlers.
- Fix: Classic cart and checkout no longer overstate the "due today" item subtotal for a prorated subscription switch or a synced product billed on a later date.
- Dev: Deprecated WC_Subscriptions_Cart::get_formatted_product_subtotal and get_due_today_subtotal - the "due today" item subtotal now renders on the 'woocommerce_cart_item_subtotal' filter, and Subscriptions no longer filters 'woocommerce_cart_product_subtotal', so code calling WC->cart->get_product_subtotal directly gets standard WooCommerce output.
Release notes published by the developer.
How to install
Automatic updates: this item is updated by the Ultrapack Auto Updater. With it installed, the new version shows up in your dashboard like any other WordPress update (how to set it up).
- Download the file
woocommerce-subscriptions.zip. - In the WordPress dashboard, go to Plugins > Add New > Upload Plugin.
- Select the file
woocommerce-subscriptions.zipand click Install Now. - Click Activate.
Requirements: Requires WordPress 7.0 or higher and PHP 7.4 or higher. Tested up to WordPress 7.1.
Stuck on a step? Open a ticket telling us which one you stopped at.

UAU Ready