Skip to main content

Subscriptions and Memberships for J2Commerce — Turn One-Time Buyers Into a Paycheck That Shows Up Every Month

You built a store to sell things once. But the businesses that actually sleep well at night sell things again and again — automatically, without a single follow-up email, without anyone lifting a finger. Subscriptions and Memberships is what makes that possible inside J2Commerce.


Quick Scan: Features & Benefits

#FeatureWhat you actually get
1Two subscription product typesSimple Subscription for a single recurring plan, Variable Subscription for multiple plans (monthly, quarterly, annual) on one product page — customer picks the plan, you set the price per plan.
2Flexible billing frequencyBill every 1st through 6th period — day, week, month, or year. "Every 3 months" and "Every 2 weeks" are both one dropdown away.
3Fixed-length or never-expiring subscriptionsSet a subscription to run for a specific number of billing cycles, or enter 0 and it renews forever until the customer or you cancel it.
4Free trial periodsOffer a trial in days, weeks, months, or years before the first real charge hits.
5Sign-up feesCharge a one-time fee at the start of a subscription — separate from the recurring price. Choose whether it applies only on the first purchase or every time the customer buys again.
6Renewal discounts that stickApply a global renewal discount, and let a customer's original coupon discount automatically carry forward into every future renewal.
7Automatic Joomla user group managementAdd a subscriber to a user group the moment their subscription goes active, and remove them the moment it expires or cancels — built for gated content, member pricing, or private downloads.
8Disable Cancel per productLock a subscription so the customer can't cancel it themselves from their account — for contracts or commitments you manage manually.
9Restrict payment methods to subscription-capable gatewaysWhen a subscription is in the cart, only show payment methods that actually support recurring billing — no more failed charges from a one-time payment plugin.
10Smart renewal retries (dunning)A failed renewal doesn't cancel the subscription immediately — it retries on a schedule you control, with a configurable final action.
11Self-service card updatesLet subscribers update their saved card from their account — or send them a secure one-time link that works even if they're not logged in.
12My Subscriptions customer dashboardA dedicated tab on the customer's account page listing every subscription, its status, next renewal date, billing schedule, and one-click cancel, renew, and card-update actions.
13Early renewal ("Renew Now")Let a customer pull their next charge forward and renew early instead of waiting for the scheduled date.
1415 ready-to-go lifecycle emailsWelcome, trial ending, trial-to-paid, renewal reminder, renewal succeeded, renewal failed, renewal retry, card expiring, card updated, paused, cancelled, expired, expiring soon, and more — all pre-written.
15Two email design options, two editorsChoose Classic, Minimal, or Modern visual styling, and import templates into the standard Joomla editor or the drag-and-drop visual editor — your content is preserved either way.
16Full admin Subscriptions areaA dedicated admin screen listing every subscription with search, status filters, and CSV export — with or without related order data.
17Subscription detail & historyEvery subscription has its own detail page: billing schedule, related orders, additional fees, payment info, and a full audit history of every status change and email sent.
18Manual invoice renewalsLet renewals paid by bank transfer, cash, or money order activate the subscription as soon as you mark the order paid — no card required.
19Display controls for price, cart, and checkoutControl whether and where the billing duration and sign-up fee show next to the product price, and whether recurring totals, discounts, and next-renewal dates show in the cart.
20Built-in testing toolsA safe testing harness lets you simulate a synthetic subscription and trigger a renewal on demand — no live card, no waiting for cron.

Feature Inventory

MetricCount
Total features documented20
Subscription product types2 (Simple Subscription, Variable Subscription)
Plugin configuration fieldsets5 (Basic, Email Settings, Display Settings, Renewal Settings, Testing Tools)
Lifecycle email templates15
Email design/editor combinations6 (3 designs × 2 editor types)
Real-world use cases mapped3
Language packs21

1. The Problem (Establish the Pain)

You sell a great product. Someone buys it once, loves it, and then... you never hear from them again unless they happen to remember to come back.

Meanwhile, every subscription-based business you admire — the meal kit, the software tool, the coffee club — isn't chasing a new customer every single day. They set up the billing once and the revenue keeps arriving whether they're at their desk or asleep. You're doing the hard part (making something people want) without getting the easy part (getting paid for it automatically, over and over).

And the products practically beg for it. Consumables that run out. Memberships that gate access to something valuable. Services billed monthly. Software, courses, communities. Any of these sold as a "one and done" purchase is money left on the table — and a customer relationship that ends the moment the transaction does.


2. The Problem Gets Worse (Twist the Knife)

Here's what one-time selling actually costs you: unpredictable revenue. You can't forecast next month because every sale starts from zero. You can't plan inventory, staffing, or marketing spend around a number that resets to nothing on the first of every month.

And if you try to bolt recurring billing on yourself — a spreadsheet, a manual reminder email, a "please come back and re-order" campaign — you've just created a part-time job that a computer should be doing for free. Every manual renewal is a chance for a customer to forget, get busy, or just quietly churn without you noticing until the revenue is already gone.

Worse: even if you find a subscription app that handles the billing, most of them stop there. A card gets declined and the subscription just... cancels. No retry, no second attempt, no chance to catch a customer whose bank simply asked them to re-verify a purchase. You lose a paying customer over a payment hiccup that a basic retry would have caught. That's not a subscription business — that's a subscription business with a leaky bucket.


3. The Solution (J2Commerce Delivers)

Subscriptions and Memberships turns any J2Commerce product into a recurring revenue line — with the retry logic, customer self-service, and lifecycle communication that separates "we technically support subscriptions" from "customers actually stay subscribed."

Two Product Types, One Familiar Product Editor

Set up a Simple Subscription for a single recurring plan — one price, one billing frequency, done. Or set up a Variable Subscription when you want to offer plan choices (Monthly, Quarterly, Annual) on a single product page, each with its own subscription price, billing length, and even its own sign-up fee. Both product types live right inside the same product editor you already use for every other J2Commerce product — no separate "subscription module" to learn.

Real talk: The store that offers "Monthly" and "Save 20% Annual" side by side on one product page converts more annual plans than the store that makes the customer hunt for the option.

Trials, Sign-Up Fees, and Renewal Discounts That Actually Stick

Offer a free trial measured in days, weeks, months, or years before the first real charge. Add a one-time sign-up fee, and decide whether it charges only on a customer's first purchase or every time they buy — useful for setup-fee businesses where a lapsed subscriber has to pay to rejoin. And when a renewal discount coupon applies at first purchase, turn on Keep renewal discount and that same discount automatically carries into every future renewal — no re-entering a code, no support ticket asking why the second charge was full price.

Real talk: A trial that converts to a full-price subscription with zero friction is worth more than a discount code that expires the moment the first invoice goes out.

Never Chase a Failed Card Again — Smart Retries and Dunning

When a renewal payment fails, the subscription doesn't just die. It enters a configurable retry schedule — you decide how many attempts, how far apart, and in what unit (hours, days, weeks, or months). If every retry is exhausted, you choose what happens next: mark the subscription Card Expired, automatically pause it, or cancel it outright. That's the difference between losing a customer to a temporary bank hiccup and giving them a real chance to fix their card before you give up on them.

Real talk: Most subscription churn isn't a customer who wants to leave. It's a card that expired last Tuesday and nobody noticed until the retry schedule caught it.

Card Updates Without a Support Ticket

Subscribers can update their saved payment method right from their account — no new order, no re-entering their whole subscription. And when a customer isn't logged in (or can't remember their password), you can generate a secure, time-limited one-time link and copy it or email it directly to them. The link expires automatically after its configured lifetime or after first use, so it's safe to send.

Real talk: "Click this link to update your card" is a five-second fix. "Please log in, find your account, click three menus deep" is how you lose a renewal to abandonment.

The My Subscriptions Dashboard — Self-Service That Reduces Your Support Load

Every customer gets a My Subscriptions tab on their account page listing every active, trial, paused, or expired subscription — status badge, next renewal date, billing schedule, and line items, all in one collapsible card. From there they can cancel (unless you've locked it with Disable Cancel), renew an expired subscription if you've turned that option on, pull an active subscription's next charge forward early with Renew Now, and update their payment method — all without emailing you.

Real talk: Every subscription management action a customer can do themselves is a support ticket you never have to answer.

15 Lifecycle Emails, Ready on Day One

New subscription, trial ending, trial converting to paid, upcoming renewal, successful renewal, failed renewal, renewal retry, card expiring, card updated, paused, cancelled, expired, expiring soon — the entire subscription lifecycle is already written. Choose Classic, Minimal, or Modern visual styling, and import the templates into the standard Joomla HTML editor or the drag-and-drop visual editor with one click. Your content carries over either way, so switching editors later never means starting from scratch.

Real talk: A customer who gets a "your trial ends in 3 days" email converts to paid at a completely different rate than a customer who gets silently charged and wonders what happened.

The Admin Subscriptions Command Center

A dedicated Subscriptions area gives you search, status filtering, and CSV export (with or without full order data) across every subscription on your store. Click into any subscription and you get its full billing schedule, related orders, additional fees, payment information, and a complete history log of every status change, email sent, and manual note added — so when a customer calls asking "what happened to my renewal," the answer is already on the screen.

Real talk: You should never have to dig through raw order records to answer "did this customer's card get charged."


Real-World Use Cases

Use Case 1: Coffee & Consumables Subscription Box

A specialty coffee roaster sells a "Monthly Bag" Variable Subscription with three plan options — Monthly, Every 6 Weeks, and Quarterly — so customers can match delivery frequency to how fast they actually drink coffee. New subscribers get a 2-week free trial bag at a reduced price before the full recurring charge begins. When a card declines on renewal day, the retry schedule tries three more times over the following week before marking the subscription Card Expired — giving distracted customers a real second chance instead of losing them on the first bounce.

Use Case 2: Gated Membership Community

A creator sells a monthly membership that unlocks a private members-only section of the site. The Add To User Groups setting automatically drops new subscribers into the "Members" Joomla user group the instant their subscription goes active — no manual account work. If a subscription lapses or gets cancelled, Remove From User Groups pulls access back out automatically. The Disable Cancel option isn't used here — members can cancel any time from their My Subscriptions dashboard, which keeps support tickets low and trust high.

Use Case 3: B2B Recurring Service Contracts

A service company bills clients quarterly for an ongoing maintenance contract, invoiced and paid by bank transfer rather than a stored card. With Enable Manual Invoice Renewals turned on, the renewal order is created automatically on schedule and the subscription activates itself as soon as the office marks that renewal order as paid with the confirmed status for their bank-transfer payment method — no card retries needed, because there's no card. The admin Subscriptions area gives the accounts team a single screen to see which quarterly contracts are due, paid, or overdue.


Why J2Commerce? (The Value Proposition)

The SaaS Trap

Most recurring-billing platforms charge you a percentage of every subscription payment just for the privilege of collecting it — a subscription tax on top of your subscription revenue. J2Commerce charges nothing per transaction. Your billing engine runs on your own server, on your own J2Commerce license, and every dollar a subscriber pays goes where it's supposed to go: to you.

The Plugin Graveyard

Plenty of Joomla ecommerce extensions claim "subscription support" and mean a single recurring charge with no retry logic, no dunning, no customer self-service, and no lifecycle emails beyond a receipt. When the card fails once, the subscription just dies — silently, with nobody notified. Subscriptions and Memberships is built for the current J2Commerce 6 architecture with active development behind it, not a feature that was bolted on once and abandoned.

The J2Commerce Difference

Native Joomla 6 architecture running on your own infrastructure. A retry-and-dunning engine that gives failed payments a real second chance instead of an instant cancellation. Self-service tools — card updates, cancellations, early renewals — that keep customers out of your inbox. Fifteen lifecycle emails already written so you're never explaining a surprise charge after the fact.


Installation

Subscriptions and Memberships for J2Commerce is a separate add-on available from the J2Commerce Extensions Store. It is not included with the core J2Commerce 6 component.

Step 1: Go to www.j2commerce.com -> Apps.

Step 2: Locate Subscriptions and Memberships, click View Details, then Add to Cart -> Checkout.

Step 3: After purchase, go to My Downloads under your profile menu and find the app. Click Available Versions -> View Files -> Download Now.

Step 4: In the Joomla admin, go to System -> Install -> Extensions and upload the app_subscriptionproduct.zip package file.

Enable the App

Once installed, confirm the app is enabled.

Option A: Click the J2Commerce icon in the top-right corner -> Apps.

Option B: Go to Components in the left sidebar -> J2Commerce -> Apps.

Look for Subscription Products in the list. If the toggle shows a red X, click it to turn it into a green checkmark. Click the app's name to open its configuration.


Configuration Settings

Open J2Commerce -> Apps -> Subscription Products to reach these settings.

Basic

FieldDescriptionDefault
Enable Cron LogWrites a log file every time the subscription cron runs.Yes
Cron URLA ready-made URL — index.php?option=com_j2commerce&task=cron.execute&command=appsubscriptionproduct&cron_secret=... — for external schedulers to hit on a timer. Click Change key to rotate the secret from J2Commerce's Configuration screen.
Queue Scan Interval (Minutes)How often the subscription sweep runs when driven by J2Commerce's Process Queue scheduled task instead of the Cron URL. Requires a Process Queue task in System -> Scheduled Tasks with Queue Type set to subscription_renewal.60
Accepted Payment MethodsWhich payment methods can be used for subscription products. Only gateways that declare recurring-billing support appear in this list. Leave empty to allow all subscription-capable methods.Empty (all allowed)
Restrict Payment Methods for SubscriptionsWhen a subscription is in the cart, show only subscription-compatible payment methods at checkout and hide the rest.Yes
Allow Card UpdateAlways show the card-update option for supported payment gateways, including the guest one-time link.No
Update Card Link ExpirationHow long a guest card-update link stays valid before it expires.48 hours
Debug LoggingWrites verbose debug logs to administrator/logs/app_subscriptionproduct.php. Disable in production.No

Email Settings

FieldDescriptionDefault
Send New Subscription EmailSends a welcome email when a new subscription is created.Yes
Notify Before ExpirationDays before expiry to email the customer. Comma-separated, e.g. 3,2 sends emails 3 and 2 days before.
BCC ToBlind-copy address(es) for all subscription emails. Comma-separated for multiple.
Trial Ending NotificationDays before a trial ends to send a trial-ending-soon email. Set to 0 to disable.3
Send Completed Renewal EmailSends the standard order-completed email for each successful renewal, same as any regular order. Turn off to suppress it for renewals only — the subscription's own renewal-succeeded email is unaffected either way.Yes
Email Renewal NotificationsSends a reminder before the auto-renewal date.No
Email Before RenewalDays before renewal to send the reminder (comma-separated). Only shown when the setting above is on.
Email Notification Before First Renewal (From Trial)Sends a reminder before a trial's first paid renewal.No
Before First Renewal From TrialDays before that first renewal to send it (comma-separated). Only shown when the setting above is on.
Add Email TemplatesTwo buttons: Import Joomla Editor Version and Import Visual Editor Version. Adds any missing subscription email templates using the Classic, Minimal, or Modern design and the chosen editor type. Existing content is preserved when re-importing.

Display Settings

FieldDescriptionDefault
TemplateFrontend rendering template — Bootstrap 5, UIkit, or Auto to inherit from the active menu item.Auto
Show My Subscriptions TabShows a Subscriptions tab on the My Profile page so customers can manage their subscriptions.Yes
Show DurationShows the billing duration text next to the product price.Yes
Duration PositionWhere the duration text appears relative to the price — Below, Before, or After.Below price
Duration TextPhrasing style — "Every 2 weeks", "/2 weeks", or "Per 2 weeks".Every
Show Single ValueWhen the billing cycle is exactly one period, shows the digit ("Every 1 week") instead of dropping it ("Every week").No
Show Sign-Up FeeShows the sign-up fee next to the product price.Yes
Sign-Up Fee PositionBelow, Before, or After the price.Below price
Show Recurring TotalShows the recurring total row in the cart and checkout.Yes
Show Non-Recurring TotalShows the non-recurring total row in the cart.Yes
Show Recurring AmountShows the recurring amount in the cart.Yes
Show Recurring DiscountShows the recurring discount in the cart.Yes
Show Next Renewal DateShows the next renewal date in the cart.Yes
Renewal Date FormatPHP date format for the renewal date shown in the cart. Leave empty to inherit the global Date Format from J2Commerce Configuration.Y-m-d
Show Renew ButtonShows a Renew button on the front-end subscription listing for expired/cancelled subscriptions.No
Show Early Renew ButtonShows a Renew Now button on active subscriptions so the customer can pull the next charge forward.No

Renewal Settings

FieldDescriptionDefault
Renewal Discount (%)Global renewal discount percentage applied to all subscription products.
Max Renewal RetriesMaximum retry attempts before the subscription is marked according to the Action When Retries Are Exhausted setting.3
Renewal Retry IntervalNumber of units between retry attempts.1
Renewal Retry PeriodTime unit for the retry interval — Hours, Days, Weeks, or Months.Day(s)
Action When Retries Are ExhaustedWhat happens once retries run out: Mark Card Expired (default), Pause Subscription, or Cancel Subscription.Mark Card Expired
Enable Manual Invoice RenewalsLets renewals paid by an offline method (bank transfer, cash, money order) activate as soon as you mark the renewal order with that payment method's confirmed status, instead of following the retry-and-exhaust schedule.No

Testing Tools (optional)

An additional Testing Tools fieldset lets you turn on a safe testing harness — pick a payment plugin to test against, select or create a synthetic subscription, and trigger an immediate renewal without waiting for cron and without a live card. It writes its own debug log so you can see exactly what happened at each step. Leave this off on a live production store.


Setting Up a Subscription Product

A Simple Subscription

  1. Go to J2Commerce -> Catalog -> Products and create or edit a product.
  2. Set the Product Type to Simple Subscription.
  3. On the subscription tab, fill in:
    • Subscription Price — the recurring charge.
    • Sign-Up Fee — optional one-time charge, plus whether it applies on every purchase or only the first.
    • Billing Frequency and Billing Period — e.g. "Every" + "Month" for monthly billing.
    • Subscription Length — number of billing periods, or 0 for a subscription that never expires.
    • Trial Length and Trial Period — optional free trial before the first real charge.
    • Add To User Groups / Remove From User Groups — Joomla groups to add on activation or remove on expiry/cancellation.
    • Keep renewal discount — carries a first-purchase coupon discount into every renewal.
    • Disable Cancel — prevents the customer from cancelling this subscription themselves.
  4. Click Save & Close.

A Variable Subscription

  1. Set the Product Type to Variable Subscription instead.
  2. Add a variant for each plan you want to offer (Monthly, Quarterly, Annual, and so on).
  3. Each variant gets its own Subscription Price, Subscription Length, Sign-Up Fee, user-group settings, and renewal-discount carryover — set independently per plan.
  4. Customers choose their plan on the product page before adding it to the cart.

How Customers Manage Their Subscriptions

Once Show My Subscriptions Tab is on, every logged-in customer sees a My Subscriptions section on their account page.

From there, a customer can:

  • View details — next renewal date, status, billing schedule, and order history for that subscription.
  • Cancel — available on active or in-trial subscriptions, unless the product has Disable Cancel turned on.
  • Renew — available on expired or cancelled subscriptions when Show Renew Button is enabled.
  • Renew Now — pulls an active subscription's next charge forward, when Show Early Renew Button is enabled.
  • Update Payment Information — pick a different saved card for gateways that support it, or follow the card-update flow for gateways that require a fresh checkout.

Guests or customers who can't log in can also use a one-time card-update link that you generate and copy or email to them from the admin subscription detail screen.


How Renewals, Retries, and Dunning Work

Subscriptions are processed by a background sweep, driven by either the Cron URL hit from an external scheduler or a Process Queue scheduled task (Queue Type: subscription_renewal) running inside Joomla's own task scheduler. Set up at least one of these so subscriptions actually renew and expire on time — without it, nothing happens automatically.

On each run, the sweep:

  1. Moves Future subscriptions to Active on their start date, refreshing user-group membership.
  2. Moves Active subscriptions to Expired once their billing periods are used up.
  3. Moves Cancelled subscriptions to Expired once their paid-through date passes.
  4. Sends any due notification emails — expiry warnings, renewal reminders, trial-ending, first-renewal-from-trial.
  5. Charges due renewals against the saved payment method.

If a renewal charge fails, the subscription does not cancel immediately. It retries according to Max Renewal Retries and Renewal Retry Interval/Renewal Retry Period. Once retries are exhausted, the subscription is marked Card Expired, paused, or cancelled, based on Action When Retries Are Exhausted.

Renewals paid through an offline payment method (bank transfer, cash, money order) skip the card-retry logic entirely when Enable Manual Invoice Renewals is on — the subscription activates as soon as you mark that renewal order with the method's confirmed status.


Subscription Emails

Fifteen lifecycle emails cover the full subscription journey: welcome, trial ending, trial converting to paid, renewal reminder, renewal succeeded, renewal failed, renewal retry, card expiring, card updated, paused, cancelled, expired, and expiring soon.

Click Add Email Templates in the Email Settings tab, then choose:

  • Import Joomla Editor Version — loads the templates using the standard Joomla HTML editor.
  • Import Visual Editor Version — loads the templates using the drag-and-drop visual editor.

Pick one — importing both sends customers two copies of every subscription email. Each template is available in Classic, Minimal, and Modern designs, and can be edited afterward from J2Commerce's Email Templates screen like any other store email.


Managing Subscriptions in the Admin Area

Go to J2Commerce -> Subscriptions to reach the admin Subscriptions area.

From the list you can:

  • Search by customer email, name, or product name.
  • Filter by status — New, Active, Future, In Trial, Payment Failed, Card Expired, On Hold, Cancelled, Expired.
  • Export Subscriptions or Export Subscriptions with Orders to CSV.

Click into any subscription to see its full detail page: billing schedule, related and renewal orders, additional fees, payment information, and a complete history log of every status change, email sent, and note added. From here you can also change status manually, edit the billing schedule or renewal amount, add fees, and generate or email a card-update link.


Tips

  • Set up the cron or scheduled task before going live. Without one of them running, subscriptions never move from Future to Active, never expire, and renewal emails never send.
  • Turn on Restrict Payment Methods for Subscriptions if your store also sells one-time products through non-recurring gateways — it keeps customers from picking a payment method that can't actually be charged again later.
  • Import Visual Editor templates unless you have a reason not to. It's the friendlier editing experience, and content carries over cleanly if you switch later.
  • Give retries room to work. A one-attempt retry schedule barely differs from no retry at all — three attempts spread a few days apart catches far more temporary card issues.

Troubleshooting

Subscriptions never renew or expire on their own

Cause: Neither the Cron URL nor a Process Queue scheduled task is running.

Solution:

  1. Go to J2Commerce -> Apps -> Subscription Products -> Basic and copy the Cron URL.
  2. Either configure your server's scheduler (cron, Task Scheduler, or your host's cron-job tool) to hit that URL at least once a day, or
  3. Go to System -> Scheduled Tasks, add a Process Queue task, and set its Queue Type to subscription_renewal.
  4. Confirm Enable Cron Log is on, then check the log after the next scheduled run.

"No subscription payment plugin available" at checkout

Cause: No enabled payment method has declared support for recurring billing, or Accepted Payment Methods has been restricted to methods that aren't enabled.

Solution: Go to J2Commerce -> Payments -> Payment Methods and confirm at least one subscription-capable gateway is enabled. Then check Accepted Payment Methods in the Subscription Products settings — leave it empty to allow every subscription-capable method automatically.

Cause: Guest card-update links expire after the configured Update Card Link Expiration window, or after first use.

Solution: Generate a new link from the subscription's admin detail page and send it again. If the customer needs a permanent solution, ask them to log in and use Update Payment Information from their My Subscriptions tab instead.

Emails aren't being sent for subscription events

Cause: The subscription email templates were never imported, or the specific notification toggle is turned off.

Solution: Go to Email Settings and click Add Email Templates to import any missing templates. Then confirm the specific toggle for that email (for example, Email Renewal Notifications or Trial Ending Notification) is switched on.