Skip to content

Compare

KahunaCart vs October CMS commerce: Mall and Shopaholic

OFFLINE.Mall includes a broad set of commerce features in a free package. Shopaholic combines a free core with separate add-ons. Compare their order tools, extensions and costs with KahunaCart. This assessment uses documentation checked in August 2026.

The short answer

Which fits your project?

Use these requirements to identify the better fit, then check the feature and pricing tables below.

Choose Mall or Shopaholic when

  • You already use October CMS and have the skills to maintain the store there.
  • You want Mall's catalog, tax, shipping, digital downloads, invoices and multiple currencies in a free package.
  • You need Shopaholic's scheduled supplier imports or its range of predefined promotions.
  • You prefer an open-source commerce core and can account for any add-ons the store needs.

Choose KahunaCart when

  • You need to create manual orders and process refunds through the payment provider.
  • You want numbered PDF credit notes and a version history for confirmed order changes.
  • You need a documented administration API for store automation.
  • You prefer Grav's file-based content and integrated store admin.

Headline differences

Order tools, extensions and integration

Manual orders and refunds

Mall does not include manual order creation. Its refunded status records a state rather than submitting a refund to the provider. KahunaCart creates manual orders using the normal pricing and stock workflow, processes provider refunds and generates numbered PDF credit notes. Confirmed order edits retain earlier versions. See the order guide.

Shopaholic extensions

Shopaholic's core is free, while filtering, search, tags, wishlists and reviews are separate add-ons. Include the specific packages your store needs in the budget and maintenance plan. KahunaCart includes these storefront features.

Maintenance

The comparison records differences in recent development activity and maintainer concentration. Check support for the particular versions and add-ons you depend on, especially for a store that will be maintained for several years.

Other October options

Meloncart provides another commerce option for October. It is described separately below and is not included in the scored matrix.

Administration API

Mall does not provide a comparable first-party admin API in this assessment; Shopaholic uses a community extension for external access. KahunaCart includes documented operations for products, orders and customers, with permissions for automation tools.

Bookings and rentals

KahunaCart has paid Bookings and Rentals add-ons for appointments, classes and nightly stays. They use the store's checkout and orders, and Rentals requires Bookings. When evaluating an October booking plugin, check how it connects to Mall or Shopaholic. Availability in the CMS marketplace alone does not establish a shared checkout or order workflow.

Side by side

Feature comparison

Selected categories from the full comparison. Identical rows without additional notes are omitted; the remaining rows show differences in support and availability. Booking and rental rows were checked on 21 September 2026. Bookings and Rentals are paid KahunaCart add-ons. The two point-of-sale rows were checked on 14 October 2026, and Point of Sale is a paid add-on too. Unverified cells indicate that support has not been established.

  • ✓ In the box
  • + Official add-on
  • 3rd Third-party
  • ~ Partial
  • ✗ Not available
  • ? Unverified
Promotions & discounts 13 features
Promotions & discounts: KahunaCart compared with 2 other platforms
Feature KahunaCart Mall Shopaholic
Coupon codes
KahunaCart: In the box OFFLINE.Mall: In the box Shopaholic: Official add-on
Coupons can give a percentage off, a fixed amount off, or free shipping, and can be scheduled, limited in how often they are used, and restricted to specific products, categories or tags. Every use of a coupon is recorded against the order it applied to, so you can always see exactly what a coupon has cost you.
Automatic no-code sales / catalog promotions
KahunaCart: In the box OFFLINE.Mall: Partial Shopaholic: Official add-on
A sale works like a coupon that applies automatically, with no code needed. It shows the discounted price right in the catalog listing, not just as a surprise at checkout.
Usage limits, by total, per user and per email
KahunaCart: In the box OFFLINE.Mall: In the box Shopaholic: Official add-on
You can cap how many times a coupon is used overall and per customer, and the store makes sure two shoppers checking out at the same instant cannot both claim the very last use. Refunding an order in full frees up that coupon use again, while a partial refund does not.
Bulk coupon-code generation
KahunaCart: In the box OFFLINE.Mall: Not available Shopaholic: Official add-on
You can generate a large batch of unique coupon codes at once for a campaign, using a pattern with a prefix, with per-code limits and an overall budget for the batch, and export the list as a spreadsheet for a mail merge. The codes avoid letters that are easy to misread when handwritten. Deleting a campaign frees up its codes rather than deleting them outright, since they may already be sitting in customers' inboxes.
Buy-X-get-Y / BOGO
KahunaCart: In the box OFFLINE.Mall: Not available Shopaholic: Official add-on
Buy one get one and similar offers work across a whole group of qualifying products at once. For example, six qualifying items under a buy one get one offer discounts the three cheapest of them, and you can cap how many times one order can earn the offer. One limitation: the free or discounted item must come from the same group of products, so you cannot set up 'buy this product, get a different one free'.
Quantity-break / tiered discount
KahunaCart: In the box OFFLINE.Mall: Not available Shopaholic: Official add-on
A sale's discount can get bigger the more a shopper buys, using a ladder of quantity thresholds you define, each with its own percentage or fixed discount. This is different from setting a lower list price at higher quantities: it is a bigger discount applied on top instead. The ladder is shown on the product page, and the cart nudges shoppers toward the next threshold.
Free-shipping discount
KahunaCart: In the box OFFLINE.Mall: In the box Shopaholic: Official add-on
Any coupon can include free shipping as part of its discount, crediting back exactly what shipping was quoted at, before tax is calculated, so a store that taxes postage never taxes shipping the customer did not actually pay. A separate free shipping threshold, if you have one, is measured against the product subtotal only, so a coupon cannot be used to reach it.
Discount scoping to categories with exclusions
KahunaCart: In the box OFFLINE.Mall: Partial Shopaholic: Official add-on
Sales and coupons can be scoped to specific products, variants, whole categories, or tags, and each of those can be included or excluded, with exclusions always taking priority. Coupons can also be set to skip items already on sale, or to a limit on how many items they apply to, applied to the cheapest ones first.
Multiple coupons / discount stacking
KahunaCart: In the box OFFLINE.Mall: Unverified Shopaholic: Official add-on
A cart can hold several coupons at once, applied in the order they were added, with each one discounting what is left after the ones before it, so two fifty percent off coupons take half, then half of what remains, rather than the whole amount. A coupon marked as not combinable stays in place rather than being replaced, and free shipping is only charged once even with multiple free shipping coupons applied. Sales do not stack with each other, though a coupon can still apply on top of a sale.
Gift cards or store credit
KahunaCart: In the box OFFLINE.Mall: Not available Shopaholic: Not available
Store credit and gift cards are built in, with every change to a customer's balance recorded so you can always see what caused it. Credit can be spent at checkout as a payment method. One limitation: it must be used in full or not at all, so a balance smaller than the order total cannot be used as a partial payment.
The order records **why** each price is what it is
KahunaCart: In the box OFFLINE.Mall: Partial Shopaholic: In the box
Every discount applied to an order is recorded in detail: which product it touched, which sale or rule caused it, and exactly how the amount was worked out. This is what turns a customer asking 'why is my total wrong' into a quick, confident answer instead of a lengthy investigation.
Add-ons can register new discount types with their own admin fields
KahunaCart: In the box OFFLINE.Mall: Not available Shopaholic: In the box
Add-ons can define entirely new kinds of discount, with the admin screen automatically building a settings form for them. One honest gap: for some settings the admin only offers a plain text box rather than a proper picker, for example asking you to type a product's identifier rather than choosing it from a list. These custom discount types work with sales only, not with coupons.
Conditional / rule-based discounts with a condition builder
KahunaCart: Partial OFFLINE.Mall: Partial Shopaholic: Partial
You can build conditional discount rules using an 'all of', 'any of' or 'none of' logic builder, checking things like what is in the cart, who the customer is, or details of the order. This currently works for sales and for controlling which payment methods are offered, but not yet for coupons, shipping or tax, which each still use their own simpler set of conditions. A sale built this way is only priced at checkout, so it will not show a sale badge in the catalog.
Orders 14 features
Orders: KahunaCart compared with 2 other platforms
Feature KahunaCart Mall Shopaholic
Sequential order numbers from an atomic sequence
KahunaCart: In the box OFFLINE.Mall: In the box Shopaholic: In the box
Order numbers are assigned in sequence and never change once given out. Deleting an order leaves a gap in the sequence rather than renumbering the orders around it, so a number a customer already has on their receipt can never change. Every order also carries a short payment reference for bank transfers, printed on the receipt, the invoice and the pay page and available to drop into your payment instructions. It leaves out every character pair people confuse when copying by hand, so no zero and letter O, no one and letter I, and it does not tell anyone who pays you how many orders you have taken.
Invoice number from its own sequence
KahunaCart: In the box OFFLINE.Mall: Partial Shopaholic: Not available
Invoices get their own separate, gapless numbering sequence apart from the order number, which several EU countries require. You can set the starting number and format, and optionally have it reset each year.
Merchant-defined order statuses
KahunaCart: In the box OFFLINE.Mall: In the box Shopaholic: In the box
You can create your own order statuses, with your own names, colours and order, and switch any of them off. Each status can be marked as counting toward payment, affecting stock, or being a final state, and the store's logic works off those settings rather than the status name, so renaming a status never breaks anything relying on it. A status cannot be deleted while orders are still using it. Each status can also carry a customer-facing name, so Picking, Packed and At the framer can all read as "Preparing your order" to the customer while you keep three separate states, three counts and three filters in the admin. Leave it blank and the customer sees the status name itself, which is what every store gets until it chooses otherwise.
Order state machine with legal transitions
KahunaCart: Partial OFFLINE.Mall: In the box Shopaholic: Not available
There is no formal list of which order status can legally follow which. What does exist is a single, consistent path for changing status that always records the change in the order's history, plus rules tied to specific flags, such as allowing refunds only on statuses flagged complete, and requiring a final order to be explicitly unlocked before it can be edited again. It is closer to consistent guardrails than a fully declared state machine.
Order timeline / history
KahunaCart: In the box OFFLINE.Mall: Not available Shopaholic: Partial
Every order keeps a permanent history: status changes, shipments, cancellations, refunds, and emails sent are all recorded automatically. Add-ons can add their own entries to this history too, and customers see a simplified version of it on their receipt. Alongside it, orders carry notices, which are the things somebody has to be told rather than a log of what happened. A customer is told when a coupon lapsed or a line went away, on the receipt, at checkout and in the confirmation email, and never from the internal record: a notice is built from a fixed list of what a customer may be shown, so an internal status name, a private note or a stored snapshot cannot reach a buyer. You get the other half as a work queue of the orders that need a person, covering negative stock, a coupon redeemed past its limit, a failed webhook or an address that did not validate, and an item leaves the queue when somebody has dealt with it.
Order notes, private and customer-facing
KahunaCart: In the box OFFLINE.Mall: In the box Shopaholic: In the box
You can leave notes on an order, either private notes only staff see, or notes that get emailed to the customer. A private note can be deleted, but a note already sent to a customer cannot be, since it has already gone out.
Manual / phone order creation in the admin
KahunaCart: In the box OFFLINE.Mall: Not available Shopaholic: In the box
Staff can create an order manually in the admin, for a phone or in-person sale, and it goes through exactly the same process as a website order: numbering, stock deduction, and a confirmation email. The order takes the customer's billing and shipping address, filled in from their address book, so tax and shipping are worked out from it exactly as at checkout, and a customer in a group with its own price list gets those prices. Staff can also record a VAT ID and sell without VAT under the reverse charge. Prices always come from the catalog, there is no way to type in an arbitrary price, and there is no way to add a one-off line item like a custom fee or surcharge. For a shop counter, the Point of Sale add-on gives staff a till, described in the next row.
Point of sale at the counter, on the same stock and orders as the online store
KahunaCart: Official add-on OFFLINE.Mall: Not available Shopaholic: Not available
The Point of Sale add-on turns a tablet, a laptop or a phone into a till on your own site. Staff pick their name, type a PIN and scan or tap products, and the customer pays with cash, a card on a Stripe, Square or SumUp reader, store credit, a gift card or a pay link, or a mix of them. Every counter sale is an ordinary order, using the same products, prices, stock, coupons and customers as the website, and it is taxed at the address of the shop where it was sold. Customers can bring things back to the counter, and someone who owes the rest of a booking or an online order can pay it there. Reports count counter and online sales together and can split them by channel. The till needs a connection to your shop to sell, because there is no offline mode.
Till shifts with a starting float and a cash count at closing
KahunaCart: Official add-on OFFLINE.Mall: Not available Shopaholic: Not available
Each shift starts by counting the float into the drawer, and cash put in or taken out during the day is recorded with a reason and the name of whoever did it. At closing, staff count the drawer by notes and coins or as one total before the till shows what it should hold, so nobody counts towards a number. The till then says whether the drawer balances, is short or is over, and freezes a Z report with the sales, payments and refunds by type, discounts, tax by rate, totals for each member of staff and the cash drawer line by line. An X report shows the shift so far at any time, and a difference bigger than the limit you set sends you a message.
Editing an order after it is placed
KahunaCart: In the box OFFLINE.Mall: Partial Shopaholic: In the box
Orders can be edited after they are placed, such as adding or removing items, changing quantities or prices, and adjusting shipping, address or tax, with every version of the order kept and readable afterward. Lines are never deleted outright, only written off, and an order in a final status must be explicitly unlocked before it can be edited again, with that unlock recorded too. This is an optional setting you turn on, and turning it on is blocked if you have an installed add-on that has not been updated to support it.
Payment link for an unpaid order
KahunaCart: In the box OFFLINE.Mall: Partial Shopaholic: Not available
You can send a customer a payment link for an unpaid order, offering the same payment methods checkout would normally offer. The link expires after a while rather than staying valid indefinitely.
Customer-facing PDF invoice
KahunaCart: In the box OFFLINE.Mall: In the box Shopaholic: Not available
A printable, downloadable PDF invoice is generated automatically for every order, with no extra software to install. A confirmed refund automatically issues a credit note as well.
Ledger of every provider interaction
KahunaCart: In the box OFFLINE.Mall: Partial Shopaholic: Unverified
Every interaction with your payment provider, charges, refunds and everything in between, is logged, with refunds linked back to the original payment they refunded. Incoming notifications from the provider are logged too, with the message content kept only for ones verified as genuine, since that inbound address is public and anyone could attempt to post to it.
Order source attribution (referrer, campaign tags, device)
KahunaCart: In the box OFFLINE.Mall: Not available Shopaholic: Not available
Every order records where it came from: the site that referred the visit, the campaign tags on the link they followed, and whether they were on a phone, a tablet or a desktop. The first visit wins rather than the last. Nothing at all is stored about a visitor who does not order, no third-party service is contacted, and the browser's user agent is read once to work out the device and then dropped rather than kept. Reports break revenue down by any of it, so 'where did this order come from' is a question your store answers on its own rather than one you go and ask an analytics product.
Refunds & returns 7 features
Refunds & returns: KahunaCart compared with 2 other platforms
Feature KahunaCart Mall Shopaholic
Refunds issued through the provider API
KahunaCart: In the box OFFLINE.Mall: Not available Shopaholic: Partial
A refund is a real request sent to your payment provider, not just a status you set by hand, so the money actually moves and the order reflects that it did.
Credit note on refund
KahunaCart: In the box OFFLINE.Mall: Not available Shopaholic: Not available
A credit note, required by law in most of the EU, is issued automatically whenever a refund is confirmed. It gets its own numbering sequence, separate from the invoice, and states the tax being credited back, all as a PDF.
Partial refunds
KahunaCart: In the box OFFLINE.Mall: Not available Shopaholic: Unverified
Partial refunds are supported, and the refund button only appears when your payment provider actually supports them, so you are never offered an option that would fail. When a coupon discount was spread across several items, refunding just one of them correctly gives back that item's own share of the discount, worked out automatically.
Asynchronous / pending refunds modelled properly
KahunaCart: In the box OFFLINE.Mall: Not available Shopaholic: Not available
Refunds that a payment provider processes asynchronously are handled properly. A refund awaiting confirmation is shown as pending, is held out of the refundable balance so it cannot be double counted, and does not change the order's status until it is actually confirmed.
Restock on refund
KahunaCart: In the box OFFLINE.Mall: Not available Shopaholic: Not available
When issuing a refund, you can choose to restock the returned items. This is safe even if a refund confirmation is somehow processed twice: stock is only ever put back once. A digital product refunded in full also has its download access revoked, and restocking only happens once the refund is actually confirmed by the provider, so nothing is put back on the shelf for a refund that fails.
Returns / RMA workflow
KahunaCart: In the box OFFLINE.Mall: Not available Shopaholic: Not available
Built in since 1.5.6. The customer picks the items to send back and how many of each, from their receipt or account, inside the window your return policy sets, counted from delivery. Final-sale items and downloads are left out. You approve it with a return number, your instructions and an optional label (uploaded, linked, or bought through a shipping add-on), mark it received with how many arrived and how many are damaged, and the sound items go back into stock. The refund then opens already filled in for you to confirm.
Customer can ask for a refund, and you decide
KahunaCart: In the box OFFLINE.Mall: Not available Shopaholic: Not available
A customer asks for a refund from their receipt or their account, picks a reason and adds a note, and you get a notification, a card on the dashboard and a filter on the Orders list. Approve runs the ordinary refund, in full or in part; Decline sends the customer a note in your own words. The request is offered inside a window you set, and outside it the same spot points at your contact page. Money never moves without you.
Bookings & rentals 6 features
Bookings & rentals: KahunaCart compared with 2 other platforms
Feature KahunaCart Mall Shopaholic
Appointment booking with available time slots
KahunaCart: Official add-on OFFLINE.Mall: Unverified Shopaholic: Unverified
Book appointments through the Bookings add-on. Set service durations, opening hours, notice periods and buffers. Customers choose an available time and use the store checkout.
Shared staff and resource availability
KahunaCart: Official add-on OFFLINE.Mall: Unverified Shopaholic: Unverified
Bookings checks staff, rooms and equipment across services. A booking can require several resources at once, such as a therapist and a treatment room. Working hours, time off and capacity determine which slots are available.
Group sessions with limited places
KahunaCart: Official add-on OFFLINE.Mall: Unverified Shopaholic: Unverified
Bookings supports scheduled classes with a capacity for each session. Sell individual dates or a whole course, keep attendance registers and offer cancelled places to a waiting list.
Nightly accommodation with check-in and check-out dates
KahunaCart: Official add-on OFFLINE.Mall: Unverified Shopaholic: Unverified
The Rentals add-on requires Bookings. It adds a date-range picker, nightly stays, guest limits, minimum stays and arrival and departure rules. Sell a whole property or a pool of equivalent rooms through the existing checkout.
Seasonal rates for nightly stays
KahunaCart: Official add-on OFFLINE.Mall: Unverified Shopaholic: Unverified
Rentals supports date-based rate bands and weekend prices. Add extra-guest charges and a cleaning fee for each stay. The quoted price is held while the guest completes checkout.
Rental availability import and export through iCal
KahunaCart: Official add-on OFFLINE.Mall: Unverified Shopaholic: Unverified
Bookings and Rentals exchange availability with listing sites through iCal feeds. Channel exports omit guest details. Updates are periodic and can leave a double-booking window; this is not a real-time channel manager. See the sync limits.
Admin & reporting 11 features
Admin & reporting: KahunaCart compared with 2 other platforms
Feature KahunaCart Mall Shopaholic
Dashboard revenue widget
KahunaCart: In the box OFFLINE.Mall: Not available Shopaholic: Partial
A revenue summary appears right on the main Grav dashboard, using the same data as the full reports. It only appears for admins with permission to see reports, and it automatically matches the colours of whichever admin theme you are using.
Reports with date ranges
KahunaCart: In the box OFFLINE.Mall: Partial Shopaholic: Not available
Six report types cover sales summary, products, customers, taxes, refunds and low stock, and you can run any of them over any date range with no limit on how far back you go. A fully refunded order is left out of revenue entirely, while a partially refunded order still shows its full total with the refunded amount shown separately, so you can see exactly what happened rather than a net figure that hides it. Very long ranges are grouped by month automatically so they stay easy to read, and reports stay fast even on a large order history. Each customer record also shows what that customer is worth: orders, lifetime total, average order value, first and last order, and where the last thing they bought was sent. Every one of those figures is worked out over exactly the same set of orders the lifetime total counts, so two numbers on the same screen can never disagree. The dashboard carries a cart-recovery rate over the same date range as everything else on it: carts mailed, carts recovered, the percentage, and what the recovered ones were worth.
CSV export of orders
KahunaCart: In the box OFFLINE.Mall: In the box Shopaholic: In the box
Orders can be exported to CSV in two ways: one row per order, or one row per line item, so you get the level of detail you actually need. You choose and save which columns to include and in what order. There is a maximum number of rows per export, and if you go over it you are told clearly rather than getting a silently cut off file.
Bulk actions on products or orders
KahunaCart: In the box OFFLINE.Mall: Partial Shopaholic: In the box
You can select several products at once and change one field on all of them together, and before anything is saved you can see exactly what will change. Orders can also be bulk updated, for example changing status on many at once, with each order processed and recorded individually so one failure will not affect the rest. There is a maximum number of items per action, and a selection of orders can also be invoiced together as a batch.
Granular permissions
KahunaCart: In the box OFFLINE.Mall: In the box Shopaholic: Partial
Admin permissions are split into nine separate areas rather than one all or nothing role. Running sales promotions and holding payment settings are kept as separate permissions, for example, and processing a refund is separate from managing orders generally, since these are often different people's jobs.
Demo / read-only mode
KahunaCart: In the box OFFLINE.Mall: Not available Shopaholic: Not available
A read only mode blocks every change to the shop through the admin, including for the site's own super admins, which makes it safe to run a public demo store. It only affects the admin area. The storefront, checkout, and background processes carry on working normally.
Reset test data while keeping configuration
KahunaCart: In the box OFFLINE.Mall: In the box Shopaholic: Not available
One command wipes the test orders and customers while keeping the catalogue, tax, shipping, coupons and every setting, which is exactly what most shops want right after launch. It prints every table it is about to empty with a row count and asks first, and it refuses on a store running as a public demo.
Installation doctor / status command
KahunaCart: In the box OFFLINE.Mall: In the box Shopaholic: In the box
A single command reports on the health of your installation, including the database setup, pending updates, background job counts, and what every connected payment provider actually supports. It is a quick way to answer questions like why a refund button is missing, without digging through settings.
Template-override drift reporting
KahunaCart: In the box OFFLINE.Mall: Not available Shopaholic: Not available
Every shipped template carries a version stamp, and the admin's Health screen and a CLI command list which of your theme's customised templates have fallen behind the version KahunaCart ships, and by how much. Overriding a template can otherwise silently lose features such as add-on panels; now there is a warning when it happens.
Comparison-period reporting with published metric definitions
KahunaCart: In the box OFFLINE.Mall: Not available Shopaholic: Not available
Any report can be set against the period before it or against the same period a year earlier, worked out in your store's own timezone so a day is the day your shop had rather than the day UTC had. Every figure on the screen carries a written definition you can read and argue with, so revenue means one stated thing rather than whatever the code happened to add up. Filters match all of your conditions or any of them, results break down by whichever dimension you pick, and the whole state of a report lives in the address bar, so a view you have set up is a link you can send to somebody.
Cost of goods and gross margin
KahunaCart: In the box OFFLINE.Mall: Not available Shopaholic: Not available
A product can carry what it cost you, and the cost of each line is frozen onto the order the same way its price is, so last year's margin is still last year's margin after you renegotiate with a supplier. Cost of goods, gross margin and margin rate then read as ordinary report figures beside revenue. The written definition is honest about the catch: if only some of your catalogue carries a cost, the margin reads higher than it really is, and the definition on the screen tells you so rather than leaving you to find out later.
Import, export & migration 3 features
Import, export & migration: KahunaCart compared with 2 other platforms
Feature KahunaCart Mall Shopaholic
Product import
KahunaCart: In the box OFFLINE.Mall: Not available Shopaholic: In the box
An admin tool imports products, variants and categories from a CSV file. It recognises common export formats from other shop platforms, lets you save your column mapping for reuse, can run as a test without saving anything, can resume an import that was interrupted, and gives you a clear error file matching your own file's line numbers if something goes wrong.
Order or customer import
KahunaCart: In the box OFFLINE.Mall: Not available Shopaholic: Not available
The same import tool also handles customers and orders. Two things to know: an imported order is marked as completed unless the file says otherwise, and an imported order keeps the total given in the file as correct, even though taxes, shipping and discounts are not individually recreated from the file's line items.
Whole-store configuration export/import
KahunaCart: In the box OFFLINE.Mall: Not available Shopaholic: Not available
One command writes your whole store configuration out as a file and another reads it back, with a dry run first that tells you exactly what would change and writes nothing. Six sections are covered, so tax rules, shipping rules, payment methods and email settings all travel together with the rest. Secrets such as API keys leave as a named reference to an environment variable rather than as the value itself, so the file is safe to keep alongside your site in version control. Setting up a second copy of a configured shop is an export and an import rather than an afternoon of retyping.

The third option

Another October option: Meloncart

A newer product outside this page's scored comparison.

Meloncart is a closed-source commerce plugin for October CMS, launched in 2026 by one of the CMS's co-founders. It requires a recent October version.

It is mentioned here as another option for October projects, but has not received the full feature assessment used for the matrix. Its release does not change the scores for Mall or Shopaholic.

The other direction

Where Mall and Shopaholic offer more

Mall supports multiple currencies and configurable payment-status transitions, including rejection of invalid changes with a message. KahunaCart has configurable status labels and behavior but no equivalent transition-rule system.

Mall can export wishlists as PDFs. Its commerce package is free and open source, while KahunaCart requires a site license.

Shopaholic offers scheduled supplier catalog imports, multiple shops in one installation and a broader library of predefined promotions. KahunaCart provides CSV import previews, saved mappings and resumable imports, but the supplier workflow still needs separate automation.

KahunaCart supports customer-group prices and quantity tiers, so group pricing is not a reason on its own to prefer the October options. Compare the remaining requirements against the complete extension cost.

What it costs

License and ongoing costs

Mall is free, while Shopaholic combines a free core with paid add-ons. Unconfirmed prices are marked in the table. KahunaCart Bookings and Rentals are optional paid add-ons; the base license totals exclude them.

KahunaCart OFFLINE.Mall Shopaholic
CMS licence $0 (Grav) October CMS, not priced in our sources October CMS, not priced in our sources
Commerce, year 1 $249 $0, MIT $0 core, GPL
A store with filtering, properties, coupons, reviews and a wishlist Included Included About $240 across 17 paid plugin installs
Product reviews Included, badge computed from paid orders Included $9.99 add-on
Year 2 $99, optional $0 $0, perpetual licences
Manual orders Included Not available Included
Real refunds Provider API, partial, asynchronous, with a credit note PDF Not available. Refunded is a status you set Partial, through Omnipay
Admin API REST plus 377 MCP tools None Community plugin only
Catalog index De-normalised index behind every listing and facet count Fast indexed catalog, published benchmarks None
Project model Commercial product with optional renewals Free plugin by OFFLINE Free core by LOVATA; paid add-ons

Prices recorded in August 2026. Hosting and development exclusions are noted in the table. October CMS licensing was not confirmed in this assessment. The comparison uses KahunaCart's list price. References: octobercms.com/plugin/offline-mall, marketplace listing, KahunaCart store.

Migrating

Planning a move from October CMS

From Mall

Map products, variants, categories and properties to KahunaCart. Resolve inherited variant values explicitly and check properties that do not fit its attribute types. Repeated category names may require renaming.

Choose the base currency before importing prices. Prices in other currencies can be imported in price_EUR-style columns once the store lists those currencies, but data from another platform needs mapping first. Export orders to CSV and map them for the importer, retaining source records for history that does not transfer.

From Shopaholic

Map catalog entries and sellable items to products and variants. Review the separate price fields and tax settings to determine the price to import.

Map supported properties to attributes and business prices to customer groups and price lists. As with Mall, multiple currencies require a decision about which currencies the KahunaCart store sells in.

Questions

Common questions

Is OFFLINE.Mall maintained?

The assessment records active maintenance and responsive issue handling, with much of the work concentrated in one lead developer. Consider both the release history and support arrangements for your store.

What should I check about Shopaholic maintenance?

Check the release and support status of the core and each add-on your store needs. The comparison records limited recent core development, while the marketplace has published releases. A modular store depends on the complete set of packages.

Is a Shopaholic store free?

The core is free. Filtering, search, tags, wishlists and other features can require paid add-ons. Use the complete package list to estimate cost.

What is Meloncart?

A closed-source October commerce plugin launched in 2026 by one of the CMS's co-founders. It is mentioned on this page but is not part of the scored comparison.

Can I define KahunaCart order statuses?

Yes. Add, rename, reorder and disable statuses, and configure their payment, stock and final-state behavior. Built-in or in-use statuses cannot be deleted. Mall also provides payment-transition rules that KahunaCart does not yet match.

Can I migrate from Mall?

Export the catalog and orders to CSV and create a saved mapping in the importer. Review inherited variant fields, category names and currency selection. Multi-currency records need mapping, and the importer reads `price_EUR`-style columns for each currency the store sells in.

Explore KahunaCart before you decide.

Review the pricing and documentation against your store's requirements.

Buy in the store