Already Purchased
$14.00

Stop Customers from Buying Things They Already Own

One badge on the product page. Purchase count, last purchase date, link to their order. The thing your store already knows — finally shown where it matters.

Everything Your Customer Needs to Know — Right on the Product Page

Your order history already has all the answers. Already Purchased Badge just puts them where people can see them.

Already-Purchased Badge

Logged-in customers see "You've purchased this before" the moment they land on a product they own. Calm, clear, right there on the page.

Purchase Count

"Purchased 3 times" means three separate orders — not three line items on one cart. The count a human would give. Configurable by order status.

Last Purchased Date

"Last purchased March 5, 2026" — shown in your store's configured date format. No guessing, no hunting through order history.

One-Click View Order Link

A direct link to their most recent order for this product. One click and they're reviewing their invoice. No login required — they're already in.

5 Display Positions

Before the product detail, before or after the title, before or after the Add to Cart button. It fits your layout. Not the other way around.

Re-Purchase Guard

For products that should only sell once — downloads, software, courses — replace the cart button with an ownership notice. "You already own this item." Done.

Active Subscription Detection

Subscription products automatically surface the customer's subscription status. Active? "No need to purchase again." Expired? "Your subscription ended [date]. You can renew below."

Qualifying Status Filter

Choose which order statuses count as a "purchase." Only Confirmed and Shipped? Fine. Include Pending? Your call. Cancelled orders never count by default.

Bootstrap 5 + UIkit 3 Templates

Works with both major J2Commerce frontend themes, automatically detecting the right one for the current page. Styled. Responsive. No extra config.

Real-World Use Cases

A photographer sells Lightroom preset packs as downloadable products. Customers return periodically to browse the catalog. More than a few have accidentally re-purchased a pack they already own — they half-remembered buying it but weren't sure. With the re-purchase guard enabled on downloadable product types, returning customers see "You already own this item — find it in your orders" above the cart area instead of an Add to Cart button. The owner's refund request count drops. The customer's trust in the store goes up. Nobody's day is ruined.

An ecommerce training platform sells courses as subscription products. A member's subscription lapses. They return to the course page three months later, unsure whether they're still active. Without this plugin, they see an Add to Cart button with no context — they might not buy because they're confused, or they might buy and then dispute a charge they didn't realize was for a renewal. With the subscription-aware notice enabled, they see "Your subscription ended on February 14, 2026. You can purchase it again below." They renew confidently. A clear date. A clear action. A recovered subscriber instead of a billing dispute.

A developer sells Joomla extensions as simple products — one license per customer. The re-purchase guard is configured to cover simple products in addition to downloadables. Any customer who already owns a license sees an ownership notice when they browse to that product. No duplicate orders. No "I already bought this, why am I being charged again?" tickets. Repeat visitors also see their full purchase history — "Purchased 4 times" on an annual-renewal product confirms they're a loyal customer. The store looks organized, professional, and trustworthy.

Your Store Already Has the Answer. Time to Show It.

Every double-purchase refund, every "did I already buy this?" support email, every confused subscriber — preventable. One plugin. Five minutes. Done.

Translated In The Following Languages

Arabic Unitag (ar-AA), Chinese, Traditional (zh-TW), Danish (da-DK), Dutch (nl-NL), English (en-GB), English, USA (en-US), Finnish (fi-FI), French (fr-FR), German (de-DE), Greek (el-GR), Hebrew (he-IL), Italian (it-IT), Japanese (ja-JP), Norwegian Bokmål (nb-NO), Persian Farsi (fa-IR), Polish (pl-PL), Portuguese, Brazil (pt-BR), Portuguese, Portugal (pt-PT), Russian (ru-RU), Spanish (es-ES), Swedish (sv-SE), Turkish (tr-TR)


  • Developer J2Commerce
  • Extension Type Apps
  • J2Commerce Version 6.x
  • Joomla Version 6.x
Language Translations
Arabic UnitagArabic Unitag
Chinese, TraditionalChinese, Traditional
DanishDanish
DutchDutch
EnglishEnglish
English, USAEnglish, USA
FinnishFinnish
FrenchFrench
GermanGerman
GreekGreek
HebrewHebrew
ItalianItalian
JapaneseJapanese
Norwegian BokmålNorwegian Bokmål
Persian FarsiPersian Farsi
PolishPolish
Portuguese, BrazilPortuguese, Brazil
Portuguese, PortugalPortuguese, Portugal
RussianRussian
SpanishSpanish
SwedishSwedish
TurkishTurkish

Fix Casing fixed for type attribute of fields

New Feature Amazon-style "already purchased" badge on product detail for repeat buyers

New Feature Show purchase count, last-purchased date, and View Order link

New Feature Optional re-purchase restriction by product type with shopper notice

New Feature Subscription-aware notice for active or expired subscription products

New Feature Configurable badge position (before/after title, before/after cart, detail)

New Feature Full localization in 20 languages

New Feature Bootstrap 5 and UIkit subtemplate variants

New Feature Order-status filter to define which orders count as a purchase

Improvement Native Joomla 6 MVC plugin with namespaced extension class and DI services

Update Requires Joomla 6.x + J2Commerce 6.x

The Re-Purchase Guard — Because "Add to Cart" Isn't Always the Right Button

For downloadable products, software licenses, digital courses, and certificates — anything where a second sale creates a refund request instead of revenue — one switch in the admin changes everything. Returning buyers who already own the product see an ownership notice instead of a cart button.

  • Applies to the product types you choose — downloadables by default
  • Works with custom product types added by other J2Commerce extensions
  • Friendly message: "You already own this item — find it in your orders"
  • No impact on new customers or guest browsers — only shown to verified owners
The Re-Purchase Guard — Because

Subscription-Aware Out of the Box

Subscription products are handled automatically — no extra configuration needed. The plugin detects whether the logged-in customer's subscription is currently active or has lapsed, and shows the right message for each state.

  • Active subscriber: "You have an active subscription — no need to purchase again"
  • Lapsed subscriber: exact end date shown + cart button remains for renewal
  • No accidental double-subscriptions for active members
  • Expired members see a clear, nudging re-engagement prompt — not a confusing wall

You may also be interested in these products

Stay Updated

Subscribe for free and be the first to know about the latest features, updates, and new additions.