{"id":381702,"date":"2026-10-17T17:57:51","date_gmt":"2026-10-17T17:57:51","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/easysubscription-subscriptions-for-woocommerce\/"},"modified":"2026-10-17T17:57:35","modified_gmt":"2026-10-17T17:57:35","slug":"submex","status":"publish","type":"plugin","link":"https:\/\/kea.wordpress.org\/plugins\/submex\/","author":17368363,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.3","requires":"6.5","requires_php":"8.1","requires_plugins":null,"header_name":"Submex Subscription Billing for WooCommerce","header_author":"Omexer","header_description":"Turn any WooCommerce product into a subscription and let it bill itself.","assets_banners_color":"cccbd8","last_updated":"2026-10-17 17:57:35","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/omexer\/submex","header_author_uri":"https:\/\/omexer.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":35,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"omexer","date":"2026-10-17 17:57:35","revision":3752233}},"upgrade_notice":{"1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3752225,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3752225,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3752225,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3752225,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"The subscriptions list: who is subscribed, what they pay, and how far off the next payment is.","2":"One subscription in full \u2014 status, next payment, schedule, and the activity log grouped by day.","3":"The Subscription panel on a product: billing cycle, free trial, sign-up fee and shipping.","4":"The subscription terms as a customer sees them on the product page."}},"plugin_section":[],"plugin_tags":[15149,17049,32529,4079,286],"plugin_category":[41,45],"plugin_contributors":[287291,287290],"plugin_business_model":[],"class_list":["post-381702","plugin","type-plugin","status-publish","hentry","plugin_tags-billing","plugin_tags-memberships","plugin_tags-recurring-payments","plugin_tags-subscriptions","plugin_tags-woocommerce","plugin_category-communication","plugin_category-ecommerce","plugin_contributors-amhossain","plugin_contributors-omexer","plugin_committers-omexer"],"banners":{"banner":"https:\/\/ps.w.org\/submex\/assets\/banner-772x250.png?rev=3752225","banner_2x":"https:\/\/ps.w.org\/submex\/assets\/banner-1544x500.png?rev=3752225","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/submex\/assets\/icon-128x128.png?rev=3752225","icon_2x":"https:\/\/ps.w.org\/submex\/assets\/icon-256x256.png?rev=3752225","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Submex turns WooCommerce products into subscriptions and runs the renewal billing for you \u2014 scheduling each charge, taking it, retrying it and recording every attempt \u2014 with a place in My Account where customers can see and cancel what they pay for.<\/p>\n\n<h4>Selling subscriptions<\/h4>\n\n<ul>\n<li>A <strong>Subscription<\/strong> product type in the Product data panel, billed every day, week, month or year, or any multiple of them.<\/li>\n<li>Free trials in days, weeks, months or years, and sign-up fees.<\/li>\n<li>The price says how often it recurs wherever WooCommerce shows it, and the terms \u2014 the trial, the first payment, what follows, cancel anytime \u2014 are spelled out on the product page, in the cart and at checkout.<\/li>\n<li>Works with both the classic checkout and the block checkout.<\/li>\n<li>A guest can buy a subscription and have an account made at checkout, or you can require a login first.<\/li>\n<li>A checkout that costs nothing today \u2014 a free trial, or a coupon worth the whole first payment \u2014 still asks for a payment method whenever a later renewal will charge something, so the first renewal has a card to charge. Plans that renew for nothing are not asked.<\/li>\n<\/ul>\n\n<h4>Taking payment<\/h4>\n\n<ul>\n<li><strong>PayPal<\/strong> runs the schedule itself, and Submex keeps in step through PayPal's webhooks.<\/li>\n<li>With no gateway at all, renewals become invoices the customer pays by hand.<\/li>\n<li>Payments that are confirmed days later \u2014 Direct Debit and bank payments \u2014 wait as pending: the customer keeps access, the renewal order waits on hold so it cannot be paid twice, and Submex never retries or re-charges it. The gateway settles it once the money is confirmed or refused.<\/li>\n<li>A failed or waiting renewal can be paid from its payment link. Paying it restarts the subscription exactly once, keeps the card it was paid with for later renewals, and is never charged again.<\/li>\n<li>A safeguard in the database means a renewal can never be charged twice, even when two processes try at the same moment.<\/li>\n<li>A charge whose result never arrived is checked with the gateway, not simply tried again.<\/li>\n<li>The next renewal is queued as soon as one is charged. Renewals missed while the site's scheduler was not running are picked up by an hourly check, which by default charges once for the gap rather than once per missed period.<\/li>\n<li>In stores that enter prices including tax, renewals charge exactly what the checkout charged. VAT-exempt customers stay exempt on every renewal.<\/li>\n<li>A copy of the site on staging refuses to bill anyone.<\/li>\n<\/ul>\n\n<h4>For your customers<\/h4>\n\n<ul>\n<li>My Account lists their subscriptions, what they pay and when the next payment is.<\/li>\n<li>They can cancel at the end of the period they paid for, or straight away. You cannot switch cancelling off. A subscription cancelled at the end of the period ends when that period runs out: access stops and nothing more is charged.<\/li>\n<li>They can turn off automatic renewal and keep what they paid for until the period ends.<\/li>\n<li>They can pay a renewal that failed, or one waiting on them, from its payment link.<\/li>\n<li>If you allow it, they can pay the next period early without moving their renewal date.<\/li>\n<\/ul>\n\n<h4>Running your store<\/h4>\n\n<ul>\n<li><strong>Home<\/strong> walks you through setting up \u2014 connect a payment method, create a product, run a test renewal that charges nobody \u2014 then shows recurring revenue (net of tax), what needs your attention and your latest subscriptions.<\/li>\n<li><strong>All subscriptions<\/strong> lets you search, filter, sort and change subscriptions in bulk, and open any one to see its history, charge it now or move its dates.<\/li>\n<li><strong>Health<\/strong> checks, under Settings: whether the renewal queue is running, charges whose outcome is still unknown, renewals waiting more than 10 days for their payment provider to confirm them, whether the double-charge safeguard is in place, and subscriptions whose renewals add tax twice, listed with a Repair action so nothing is ever changed silently.<\/li>\n<li>Ten emails for the moments that matter \u2014 seven to the customer (including a reminder before each renewal) and three to you \u2014 each with a preview under Email Notifications on WooCommerce 9.6 and later.<\/li>\n<li>Customer roles and downloadable files that follow the subscription.<\/li>\n<li><strong>FluentCRM:<\/strong> choose tags and lists on each subscription product. The contact has them while the subscription is active or in a free trial and loses them when it stops, and only tags and lists Submex added are ever removed.<\/li>\n<li>Integrations and Help screens, with a system report that never contains your keys.<\/li>\n<li>A REST API for subscriptions, open to logged-in store managers.<\/li>\n<\/ul>\n\n<h4>Submex Pro<\/h4>\n\n<p>A separate, optional plugin extends Submex with additional payment gateways, advanced plans and pricing, customer retention tools, more integrations and reporting. Submex itself is complete and fully functional on its own.<\/p>\n\n<h4>Source code<\/h4>\n\n<p>The JavaScript for Submex's admin screens is bundled. Its unbundled source is in the plugin's <code>src\/<\/code> directory, alongside the build configuration (<code>package.json<\/code>, <code>webpack.config.js<\/code>, <code>tailwind.config.js<\/code>).<\/p>\n\n<p>To rebuild it, run these commands in the plugin folder:<\/p>\n\n<pre><code>npm install\n\nnpm run build\n<\/code><\/pre>\n\n<p>The build uses @wordpress\/scripts with Tailwind CSS and PostCSS, and needs Node.js.<\/p>\n\n<h3>External services<\/h3>\n\n<p>Submex talks to a payment provider only when you have switched that provider on and entered its credentials. Nothing is sent anywhere by default, and Submex sends nothing to its own author or to any analytics service.<\/p>\n\n<h4>PayPal<\/h4>\n\n<p>Used to create and run the billing plan, when PayPal is enabled under <strong>WooCommerce \u2192 Settings \u2192 Subscriptions \u2192 PayPal<\/strong>.<\/p>\n\n<p>Requests go to <code>https:\/\/api-m.paypal.com<\/code>, or to <code>https:\/\/api-m.sandbox.paypal.com<\/code> when the environment is set to Sandbox. They are made when a subscription product is bought, and whenever PayPal notifies the site of a payment so Submex can verify that the notification is genuine. What is sent: the product name, the price, currency and billing cycle of the plan including any free trial or sign-up fee, the order number, the customer's first name, last name and billing email, this site's name and the addresses PayPal returns the customer to, and \u2014 for verification \u2014 the notification PayPal sent back together with the signature headers that came with it.<\/p>\n\n<p>PayPal's terms: https:\/\/www.paypal.com\/legalhub\/useragreement-full \u2014 PayPal's privacy statement: https:\/\/www.paypal.com\/legalhub\/privacy-full<\/p>\n\n<h4>WordPress.org plugin directory<\/h4>\n\n<p>Used only when an administrator clicks <strong>Install<\/strong> on the Integrations screen to add the FluentCRM plugin (<code>fluent-crm<\/code>). Nothing is requested or installed automatically.<\/p>\n\n<p>When the button is clicked, the site asks the WordPress.org plugin API (<code>https:\/\/api.wordpress.org<\/code>) for that plugin's details and download, exactly as <strong>Plugins \u2192 Add New<\/strong> does. The only data sent is the plugin slug, plus the WordPress version and site address that WordPress includes with every plugin request.<\/p>\n\n<p>WordPress.org privacy policy: https:\/\/wordpress.org\/about\/privacy\/<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate WooCommerce 8.0 or newer.<\/li>\n<li>Upload the <code>submex<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or upload the ZIP from <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong>.<\/li>\n<li>Activate Submex.<\/li>\n<li>Open <strong>Submex \u2192 Home<\/strong> and follow the setup checklist: connect a payment method, create a subscription product, and run a test renewal.<\/li>\n<\/ol>\n\n<p>To turn a product into a subscription yourself, edit it and choose <strong>Subscription<\/strong> in the <strong>Product data<\/strong> dropdown.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"which%20payment%20methods%20can%20renew%20automatically%3F\"><h3>Which payment methods can renew automatically?<\/h3><\/dt>\n<dd><p>PayPal, included. Without a gateway, each renewal is an invoice the customer pays by hand. A separate Pro plugin adds further gateways.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20a%20direct%20debit%20renewal%20while%20it%20clears%3F\"><h3>What happens to a Direct Debit renewal while it clears?<\/h3><\/dt>\n<dd><p>The renewal is pending: the customer keeps access, the renewal order waits on hold, and nothing is charged again or retried. When the payment provider confirms the payment the renewal is marked paid and the next one is scheduled; if the payment fails, it follows the normal failed-payment path, once.<\/p><\/dd>\n<dt id=\"can%20a%20customer%20be%20charged%20twice%20for%20the%20same%20renewal%3F\"><h3>Can a customer be charged twice for the same renewal?<\/h3><\/dt>\n<dd><p>No. Each billing period can hold exactly one charge, enforced by a unique index in the database, so a second attempt is refused before it reaches the payment gateway \u2014 even if two processes try at the same moment.<\/p><\/dd>\n<dt id=\"can%20customers%20cancel%20on%20their%20own%3F\"><h3>Can customers cancel on their own?<\/h3><\/dt>\n<dd><p>Yes, from My Account, and that cannot be turned off. A customer who cannot cancel is a chargeback waiting to happen.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20high-performance%20order%20storage%3F\"><h3>Does it work with High-Performance Order Storage?<\/h3><\/dt>\n<dd><p>Yes. Subscriptions are a native WooCommerce order type, stored in the HPOS tables.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Sell subscriptions in WooCommerce: recurring billing, free trials, PayPal, and customers who manage their own plan.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/381702","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=381702"}],"author":[{"embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/omexer"}],"wp:attachment":[{"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=381702"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=381702"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=381702"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=381702"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=381702"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=381702"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}