Skip to content

Compare

KahunaCart vs Shopify

Shopify runs your store's hosting, checkout and updates for a monthly plan. KahunaCart puts the shop inside Grav, on a host you choose, for a one-time license. Compare included features, app costs and the work involved in switching. Checked against Shopify's Basic, Grow and Advanced plans in October 2026.

The short answer

Which fits your store?

Start with what your store needs.

Choose Shopify when

  • You want Shopify to handle hosting, security, checkout and updates.
  • You need Shop Pay, a point of sale that keeps taking cash when the internet drops, or sales channels and marketplaces.
  • You sell across countries and want Markets to manage currencies, languages and domains from one store.
  • You want an established choice of apps, themes and agencies.

Choose KahunaCart when

  • You want to own your site and data on a host you choose.
  • Your shop and content site need to share one admin and theme in Grav.
  • You want Stripe, PayPal or Polar without an extra transaction fee from KahunaCart.
  • You prefer a one-time license to a monthly plan.
  • You need reviews, wishlists, priced options, member-only products and deposits included.

Headline differences

Hosting, features and fees

Hosting and ownership

Every Shopify plan includes hosting and SSL. Shopify runs the servers, checkout, security and updates.

KahunaCart runs on a PHP host you choose. Your site and data stay under your control, and a first store uses SQLite with no database server to set up. You pay for hosting and keep your own backups, and one export holds the whole store, orders and customers included, ready to restore on another server.

Shop and content

Shopify has its own admin, themes, blog and pages. Metaobjects hold custom content, while products live in a separate catalog. KahunaCart runs inside Grav, so shop pages share the site's theme, navigation and editing workflow.

KahunaCart keeps products outside Grav's page tree so listings can use indexes built for the catalog.

Included features

Shopify includes discount codes, automatic discounts, gift cards, store credit, abandoned checkout emails and passwordless customer accounts.

Shopify also makes free apps for search filters and recommendations, workflow automation, digital downloads, invoices and translation. These need installing from the App Store.

Storefront reviews, wishlists, priced options, deposits, quantity rules by category and member-only products need apps from other developers on Shopify. Many bill monthly. KahunaCart includes these features in core, along with gift cards and abandoned-cart recovery.

Subscriptions, Bookings, Rentals, License Keys, Newsletters and Print on Demand are separate KahunaCart add-ons. Shopify uses apps from other developers for print on demand.

Payments and fees

Shopify Payments takes cards, Shop Pay and wallets at your plan's rate. When a payment provider other than Shopify Payments takes the payment, Shopify charges a transaction fee on top of the provider's own charges: 2% on Basic, 1% on Grow and 0.6% on Advanced. Manual methods such as bank transfer are exempt, and so is PayPal when Shopify Payments is your main provider. On stores created since 12 May 2025 the same fee applies to the part of an order paid with store credit or a gift card. Where Shopify Payments is available, Stripe cannot be activated separately, because Stripe powers Shopify Payments.

KahunaCart adds no transaction fee of its own. Each provider's charges still apply. Refunds through the provider and authorize-then-capture are in core.

Plan limits

On Shopify the plan decides some features. Basic cannot add staff accounts; Grow allows 5 and Advanced 15. Live carrier-calculated shipping rates are not on Basic, are an add-on or annual-billing benefit on Grow and are included on Advanced. Custom checkout fields, order value limits, rules for hiding payment methods and B2B deposits are built in only on Plus, which starts at $2,300 a month. On the other plans, some of them come from apps.

KahunaCart uses one license per store. Granular permissions are included, and add-ons are bought separately.

Subscriptions and bookings

Shopify Subscriptions is a free Shopify app. It works with Shopify Payments, PayPal Express, Authorize.net, Adyen or Stripe. It cannot be used with draft orders or Bundles. Appointment, class and nightly-stay bookings need apps from other developers, as do license keys.

KahunaCart sells Bookings, Rentals, Subscriptions and License Keys as add-ons you buy once for your site.

Side by side

Feature comparison

Selected categories from the full comparison. Identical rows are omitted unless they have a note. Shopify cells cover Basic, Grow and Advanced, checked on 10 October 2026. Included means available on Basic without an app. Features that need Plus are outside these plans. First-party means made by Shopify. KahunaCart booking and rental rows were checked on 21 September 2026; both add-ons are paid. Unverified means support has not been established.

  • ✓ In the box
  • + Official add-on
  • 3rd Third-party
  • ~ Partial
  • ✗ Not available
  • ? Unverified
Platform, licensing & pricing 5 features
Platform, licensing & pricing: KahunaCart compared with 1 other platforms
Feature KahunaCart Shopify
Perpetual licence, so the shop keeps working when updates lapse
KahunaCart: In the box Shopify: Not available
Not a rental: a licence includes a year of updates, and renewing afterward is optional. If you let it lapse, the shop keeps running exactly as it is. You simply lose the ability to install new versions until you renew.
Host platform is free, with no separate licence on top of the commerce one
KahunaCart: In the box Shopify: Partial
Grav is free, so there is no CMS licence to buy alongside KahunaCart. Optional features such as Bookings and Rentals are separate paid add-ons; they do not require a paid edition of Grav.
Runs on ordinary shared PHP hosting
KahunaCart: In the box Shopify: Not available
KahunaCart needs nothing exotic: no queue server, no separate search server, and no extra runtime beyond ordinary PHP. It runs on the same shared hosting an ordinary Grav site runs on, with background tasks handled on a simple schedule rather than a constantly running process.
Zero-config datastore (SQLite or flat file) for a first store
KahunaCart: In the box Shopify: Not available
A first store needs no database setup at all, since it works out of the box with no server database required. Larger stores can move to a full database server later, and the underlying structure stays the same either way, so switching does not mean starting over.
Released in the last six months (as of August 2026)
KahunaCart: In the box Shopify: In the box
KahunaCart is a first release. That is the honest caveat on everything else here: the feature set is wide, but there is not yet a long production track record behind it.
Catalog & taxonomy 13 features
Catalog & taxonomy: KahunaCart compared with 1 other platforms
Feature KahunaCart Shopify
CMS-native product records and inherited content workflows
KahunaCart: Not available Shopify: Not available
KahunaCart deliberately keeps products out of Grav's page tree so a growing catalogue can use purpose-built indexes for filtering, sorting and search. Product pages still render through the same theme and KahunaCart supplies their routing, structured data, SEO metadata and sitemap entries. Platforms that store products as CMS content instead inherit editorial features such as revisions, preview and multi-site workflows, which can be the better trade for a small, content-led catalogue.
Commerce-owned category tree
KahunaCart: In the box Shopify: Partial
Categories form a real tree that KahunaCart manages directly, with no limit on how deep it can nest. Reordering categories is quick even in a long list, and you cannot accidentally move a category inside its own subcategory, which would otherwise detach a whole branch without warning. Deleting a category moves its children up a level rather than losing them.
Typed product attributes / specs (non-variant)
KahunaCart: In the box Shopify: In the box
Products can carry a wide range of attribute types, such as text, numbers, and yes or no. For each one you can choose whether it can be used to filter the catalog, whether it appears in the filter panel, and whether it shows on the product page. Filtering stays fast even with a large catalog.
Faceted filtering on the storefront
KahunaCart: In the box Shopify: Official add-on
Shoppers can filter the catalog by multiple attributes at once, including whether a product is on sale, and this stays fast even on a large catalog. Filter counts reflect how many matching products exist in total, not just how many appear on the current page.
Ranked full-text storefront search with typo tolerance
KahunaCart: In the box Shopify: In the box
On compatible hosting, bundled YetiSearch provides a BM25-ranked full-text index and retries an empty search with typo correction, so 'rucksak' can still find Rucksack. KahunaCart falls back first to the database's full-text search and then to a portable scan, so search keeps working on any supported host. Refined database searches can also use merchant-managed synonyms, such as treating 'jumper' as 'sweater'.
Manual product ordering and a featured flag
KahunaCart: In the box Shopify: Partial
Manual ordering and featuring are two separate tools. You can set your own order for the whole catalog, and separately mark specific products as featured so they always appear first in listings regardless of sort order. You can turn off featured placement on the storefront at any time without losing which products are marked featured.
Product reviews and ratings
KahunaCart: In the box Shopify: Third-party
Reviews and star ratings are built in and will stay in core. Shoppers rate from one to five stars with an optional title and written review, and you can moderate submissions before they go live. An average rating displays once at least one review is approved, and a verified purchase badge is calculated automatically from a customer's own paid orders rather than being something you can award by hand.
Related products / cross-sell / upsell
KahunaCart: In the box Shopify: Official add-on
Related, cross-sell and upsell products are chosen and ordered by you, not generated automatically from shared categories. This means what a shopper sees next is a deliberate recommendation rather than a guess.
Product bundles / kits
KahunaCart: In the box Shopify: Official add-on
A grouped product names a fixed set of products and adds them all with one button. Tick Sell as a set and the set has its own price, with one price per currency: whenever the cart holds a full set, however the parts got there, the set costs that price. Each part stays its own line in the cart and comes off its own stock.
De-normalised catalog index for scale
KahunaCart: In the box Shopify: Unverified
Behind the scenes, KahunaCart keeps a fast lookup structure for your whole catalog, so listings, filters, sorting and search keep performing well as the catalog grows. This has no effect on a small catalog and costs nothing until you actually need it.
Priced product add-on options
KahunaCart: In the box Shopify: Third-party
An add-on option, like gift wrap, engraving or an extended warranty, can carry its own extra cost, added and taxed with the product. Once a customer adds it to their cart, that price is locked in, so changing the option's price later does not change an order already placed.
Product-type registry that add-ons can extend
KahunaCart: In the box Shopify: Partial
KahunaCart ships with several product types built in, including grouped products, external products and kits, and add-ons can introduce further types of their own. Changing a product from one type to another is safe and reversible: the information from its old type is kept rather than deleted.
Product revisions, restore and scheduled publishing
KahunaCart: In the box Shopify: Partial
Every save of a product takes a full snapshot: variants, options, prices, media, categories, tags, attributes, kit contents and translations, all of it. You can read the list and put any earlier version back, and what comes back is the same rows under the same identifiers rather than fresh copies, so nothing else that pointed at them has to be repaired afterwards. Two things are never restored and the documentation says so out loud: stock, because rewinding it would un-sell whatever has sold since, and product files, because those point at bytes on disk. A restore writes a new version rather than rewinding, so the version you restored from is still there to go back to. A price change or a publication date you set for next Tuesday is the same mechanism with a date on it rather than a second one to learn.
Cart & checkout 14 features
Cart & checkout: KahunaCart compared with 1 other platforms
Feature KahunaCart Shopify
Cart and order are the same record in different states
KahunaCart: In the box Shopify: Not available
A cart and the order it becomes are the same record, just at an earlier stage, so nothing gets copied or can disagree between the two. This also means an abandoned cart, a retried payment, and a payment link a merchant sends by hand are all handled the same simple way rather than needing separate systems.
Guest order converts to an account afterwards
KahunaCart: In the box Shopify: In the box
A guest shopper is offered the chance to create an account on the receipt and in their order emails. That account is only created once the order actually completes, so a declined payment never leaves a half-created account behind.
Cart merge or adoption on login
KahunaCart: Partial Shopify: Unverified
KahunaCart deliberately does not merge carts. If a customer logs in with no items already in their session and exactly one unfinished cart on file, that cart is restored. It never combines two carts together and never touches a cart already in progress, since a silent merge could change a shopper's total without warning.
Multi-step checkout shipped and working
KahunaCart: In the box Shopify: In the box
A complete, working checkout is included. For physical products, it becomes a two step checkout once you have set up shipping zones, since a shipping cost cannot be calculated before an address is known, and the button always accurately describes what it will do next.
Declarative custom checkout fields with conditional logic
KahunaCart: In the box Shopify: Partial
The checkout form is a list of fields you edit rather than a template you fork. Every field the checkout draws can be reordered, relabelled, required, hidden or switched off from the admin, and you can add your own: a VAT number, a delivery date, a purchase-order reference. Whether a field is required, whether it is hidden, and what counts as a valid answer are each written with the same rule builder you already use for sales and coupons, so "required when the billing country is in the EU and the customer is a company" is two conditions rather than code. An add-on can add a field the same way, and your edits to that field survive the add-on being switched off and back on. A value posted for a field the checkout is not currently showing is refused rather than quietly stored, so hiding a field really does hide it. Company name and a billing phone number ship as fields you switch on.
Shipping/tax estimate on the cart page before checkout
KahunaCart: In the box Shopify: Partial
The shipping and tax estimate shown on the cart page is calculated the same way checkout will actually charge, so the number a shopper sees is not a rough guess. It only asks for a state or postcode when your shipping or tax setup actually needs that detail. One known limitation: if you use a payment provider that handles tax on your behalf, the cart page still shows your store's own local estimate rather than that provider's number.
Express pay (Apple Pay / Google Pay / one-click)
KahunaCart: In the box Shopify: In the box
The express-pay region is built into both the cart and the checkout page, and every button that goes in it is drawn to one published style contract, so two wallet buttons from two different providers can never sit at different heights or corner radii. The button itself comes from your payment provider. Stripe ships one, so a Stripe store gets Apple Pay and Google Pay in the region today; on the other gateways the region stays empty until that provider adds a button. Card details still never pass through KahunaCart, which is exactly why the button belongs to the provider rather than to the store.
Abandoned-cart capture
KahunaCart: In the box Shopify: In the box
A cart is recorded as abandoned once a shopper has reached checkout and provided an email address, rather than counting every visitor who merely added something to a cart and left.
Abandoned-cart recovery email
KahunaCart: In the box Shopify: In the box
One recovery email per abandoned cart, and optionally one reminder after a delay you choose. That is the whole feature: there is no third message, no campaign builder and no scheduling screen, because longer sequences belong in a marketing tool rather than in a shop. Both messages are switched off by default and stay off through an update, so upgrading KahunaCart never suddenly emails a backlog of old abandoned carts without you choosing to turn it on.
Recovery link that puts the abandoned cart back
KahunaCart: In the box Shopify: In the box
The recovery email carries a link that puts the whole cart back in one press, so a customer does not have to find nine items again. The link opens a page listing what would come back and what it costs today, and nothing is restored until the customer presses the button, because mail scanners and link previewers follow links in an inbox and would otherwise restore carts nobody asked for. Prices are today's prices: a cart abandoned in March and restored in June is priced as June prices it, and any line whose price has moved is called out by name. A line whose product has been deleted, unpublished or sold out is dropped with a note saying so and the rest of the cart still comes back. A cart counts as recovered once, however many times its link is opened, and you can revoke a single link without affecting any other link the store has sent. The same machinery gives you a share link for a cart you built with a customer over the phone: single-use, short-lived, and it can ask for the email address on the cart before it opens.
Deposits and part payment
KahunaCart: In the box Shopify: Third-party
A customer can pay part of an order now and the rest later. Each order gets one payment collection holding a row per attempt, marked as the deposit, the balance or a refund. The order is not treated as paid until the balance clears, and it carries a part-paid status of its own that reports and add-ons read rather than working it out from the amounts. The balance is collected through the same pay link the order already has, so there is nothing new for a customer to learn, and a Collect balance action chases it with a message that says what the order comes to, what has been paid and what is left, recorded on the order so anyone can see it was sent. Refunding just the deposit is an ordinary refund against that collection, and a payment notification that arrives twice cannot take the money twice.
Minimum, maximum and pack-size quantities per product
KahunaCart: In the box Shopify: Partial
A product can set the smallest quantity one order may hold, the largest, and a pack size the quantity has to be a multiple of, so beer sells by the six and tiles by the box of ten. A variant can override any of the three, and a blank box means inherit rather than no limit. One per order is a single tick that wins over all of it. The minimum rounds up to the next multiple and the maximum down, so every number the shop prints is a quantity the store will actually sell, and the maximum comes down to the stock on hand for a variant that will not sell below zero. The quantity box on the product page and in the cart carries the numbers with a sentence saying the rule in words, and the same rule is checked again at add-to-cart, at the quantity box and at checkout, so a basket built before the rule existed is refused before money moves rather than after.
Quantity rules set on a category and inherited
KahunaCart: In the box Shopify: Third-party
The same three numbers sit on a category, and everything filed in it and in every category under it inherits them, so a wholesale department sold in sixes is three numbers typed once rather than three numbers typed on six hundred products. A product's own value overrides the category field by field, so a product with its own minimum in a category with a minimum and a maximum keeps its minimum and takes the category's maximum. Where a product is in two categories that disagree the stricter rule wins each field: the highest minimum, the lowest maximum, the largest pack size. One tick on a product takes it out of its categories' rules altogether, for the single-bottle sampler filed under a department sold in sixes.
Store-wide minimum and maximum order
KahunaCart: In the box Shopify: Third-party
Four settings say what the whole basket has to be: the fewest and the most items across every line, and the smallest and largest the order may come to in money. All four are off until you set them. The two money rules read the merchandise subtotal after discounts and before shipping and tax, so nobody reaches a minimum by paying for postage and nobody misses one because tax is added at the last step. A basket outside the rules is told so at the top of the cart page with the checkout button left where it was, and a shopper who walks past the sentence is refused at checkout with the same words. One tick takes a product out of all four, so a store with a fifty-pound minimum can still sell a twenty-five-pound gift card on its own.
Tax 8 features
Tax: KahunaCart compared with 1 other platforms
Feature KahunaCart Shopify
Tax zones by country / region / postcode
KahunaCart: In the box Shopify: In the box
Tax zones can match by country, then by region or state, then by postcode, so you can charge one rate nationally and a different rate in a specific area without treating them as separate stores. A store that only sells in one country only needs to set up one zone.
Multiple rates stacking (state + county)
KahunaCart: In the box Shopify: In the box
Several tax rates can stack within one zone, for example a state rate plus a county rate, and a receipt shows each one separately rather than one combined figure. One limit: only a single zone can match an order at a time, so you cannot have two overlapping zones both apply to the same order.
Tax-inclusive pricing
KahunaCart: In the box Shopify: In the box
Whether a price includes tax is decided per line rather than once for the whole store. KahunaCart asks four questions in order: does this product say so on its own, is there a price preference for the customer's region, is there one for the currency they are paying in, and failing all three, what does the store-wide setting say. A shop selling to the UK and to the US can quote both correctly at the same time. If a customer turns out to be outside the zone whose tax was baked into the price, the store can take that tax back off, and it does that as a negative tax line rather than as a discount, so your discount figures stay right. A store can also print "incl. VAT" or "excl. VAT" under every price, worked out by the same four questions and named with the tax zone's own word for the tax, so the note never disagrees with the checkout.
Tax on shipping, apportioned correctly across rates
KahunaCart: In the box Shopify: In the box
When shipping is taxed under more than one rate, the tax on postage is split fairly between them based on the mix of goods in the order, with no rounding loss. Whether shipping is taxed is set per rate, not per zone, so within one zone you can tax postage under one rate and not another.
EU VAT rate preset shipped
KahunaCart: In the box Shopify: In the box
The standard VAT rate for every EU country can be added to your store in one step. This covers standard rates only, not reduced rates for specific product categories, and rates are not automatically kept up to date if a country changes its rate. Registration thresholds and other VAT obligations remain something you need to handle yourself.
VAT-number validation / reverse charge
KahunaCart: Partial Shopify: In the box
The reverse charge itself is there for orders you enter: staff can record the customer's VAT ID on a manual order and tick Don't charge tax, and the order is priced without VAT (a price that includes VAT is charged net) and the invoice, receipt and credit note print the VAT ID and a reverse-charge line in your own words. A checkout field can also collect a VAT number from customers. What is missing is the checking: KahunaCart does not look the number up on VIES or zero-rate a storefront order by itself, so a store selling business-to-business across EU borders still checks each number and enters those orders by hand. Automatic validation is planned as a tax add-on.
Third-party tax service connector (Avalara / TaxJar)
KahunaCart: Partial Shopify: Third-party
The connection point an external tax service plugs into is in core, and the services themselves are not. A tax engine is bound per tax zone rather than once for the whole store, so one shop can hand its US sales to an outside service and keep its own EU VAT rates for Europe. An engine that says it manages its own rates takes the zone, class and rate editors away with it, and the store stops offering to edit rates it no longer owns. What is not in the box is any actual connector: nothing talks to an external tax service until the planned tax add-on ships. A payment provider that handles tax on your behalf sidesteps the question already.
Merchant-of-record providers charged with no local tax
KahunaCart: In the box Shopify: Official add-on
When you use a payment provider that acts as merchant of record and handles tax on your behalf, KahunaCart recalculates the order with no local tax added on its own side, whichever tax setup you normally use. One known limitation: the cart page still shows your store's own local tax estimate before that provider is selected at checkout.
Customers & accounts 7 features
Customers & accounts: KahunaCart compared with 1 other platforms
Feature KahunaCart Shopify
Customer account area shipped (orders, downloads, addresses)
KahunaCart: In the box Shopify: In the box
Customers get a full account area covering past orders, digital downloads, saved addresses and wishlists. If your store uses two-factor login, a session still completing that second step sees nothing until it is fully verified. Access to this data is enforced centrally, so a theme cannot accidentally show one customer another's orders.
Customer groups
KahunaCart: In the box Shopify: In the box
Customers can be organised into groups, each with an optional automatic discount, and you can rename a group at any time without breaking any coupons or rules tied to it. One group can be set as the default, covering logged-out visitors too, so your shop window shows the same price a guest would actually be charged rather than a confusing mismatch. Group membership can be used to scope coupons, sales and price lists.
Wishlist
KahunaCart: In the box Shopify: Third-party
Customers can keep multiple named wishlists, for example a gift registry, a holiday list and a personal re-order list, rather than just one saved-for-later pile. Each list can be kept private or shared with a link, and a shared list is never publicly indexed, so only someone with the link can see it. A visitor without an account can still build a wishlist that merges into their account once they log in, and a customer can keep up to 20 lists of up to 500 items each.
B2B (companies, purchase orders, quotes, credit terms)
KahunaCart: Partial Shopify: Partial
Quotes are supported: you can send a customer a formal quote that they accept or decline through a link, with an expiry date, and a merchant can also record an answer for a quote that came back by phone. Orders taken by phone or email get the customer's trade prices and address, and can carry their VAT ID and the reverse charge. What is not yet supported is the rest of business-to-business selling: company accounts for buyers, purchase order numbers, and pay-later credit terms. Those are good candidates for a future add-on rather than more built into core.
Passwordless / magic-link customer login
KahunaCart: In the box Shopify: In the box
A customer can ask for a sign-in link by typing their email address, and a single-use link arrives that signs them in without a password. For a shop where most customers only return a couple of times a year, that is friendlier than asking them to remember a password or forcing account creation. The form answers the same sentence to every address, whether or not anyone shops here, so it cannot be used to find out who your customers are. The link opens a page with one button rather than signing anyone in as it is fetched, because corporate mail scanners follow links in an inbox and would otherwise use the link up before the customer clicked it. Using the link, asking for another, or setting a password each cancel any link still outstanding. Forgotten passwords, two-factor login and remember-me are still handled by Grav's own login system underneath KahunaCart, and KahunaCart never signs anyone in itself.
GDPR erasure and retention scheduling
KahunaCart: In the box Shopify: Partial
You can set up automatic data retention rules, such as removing abandoned carts after a set time or anonymising old completed orders, each with its own time window and all switched off by default, so nothing is deleted until you decide what to keep. A log is kept of what each rule removed and when, which is exactly what a data protection request needs to show, and completed orders are anonymised rather than deleted outright so your revenue and tax reports still add up correctly afterward. You can also reassign orders between customers, and erasing a customer checks first for any reason it should be blocked, such as an unresolved order, rather than deleting silently.
Member-only products restricted to customer groups
KahunaCart: In the box Shopify: Third-party
A product can name the customer groups allowed to buy it, and to everybody else it is not there: absent from the shop page, from category and tag pages and the counts beside them, from search, from related-product blocks and from the sitemap. A concert can sell a member ticket at one price beside a general admission ticket at another, each with its own limits, and the member one simply is not in the shop for anybody else. Its own link still opens, on purpose, because whoever follows it is usually a member who has not signed in yet, so the page shows a members-only notice and a sign-in link where the buy button was. Add-to-cart refuses, and checkout asks again over every line before it starts a payment, because a group can change in between. Groups already kept in Grav can decide a customer's group at sign-in, so a store with a members user group does not keep a second list by hand.
Payments & providers 8 features
Payments & providers: KahunaCart compared with 1 other platforms
Feature KahunaCart Shopify
Five or more first-party payment providers
KahunaCart: In the box Shopify: Partial
Every KahunaCart license comes with Stripe, PayPal, Polar, offline payments and a test provider for trying things out. Moneris, Mollie, Square, Paddle, Lemon Squeezy and SumUp are one-time add-ons, and four more (Checkout.com, Shopify, Invoice Ninja and Chargebee) are built and coming soon the same way.
Provider capability flags that drive the admin and storefront UI
KahunaCart: In the box Shopify: Unverified
KahunaCart knows what each payment provider can and cannot do, such as issuing refunds, handling subscriptions, or storing card details for later. The admin only shows actions a provider can actually carry out, so you never see a refund button that would simply fail.
Webhook handling that verifies first, then logs
KahunaCart: In the box Shopify: Unverified
Every message a payment provider sends back is checked for authenticity before it is used, so a forged message cannot be acted on. Repeated messages are recognised and not processed twice, and failures are logged for you to see. KahunaCart never switches a provider off automatically, so a temporary glitch cannot silently stop you taking payments.
Per-cart provider gating
KahunaCart: In the box Shopify: Third-party
Some payment providers only support digital goods. If a cart contains a physical item, those providers are removed from checkout automatically, and the order is blocked rather than accepted with no way to pay. If every enabled provider is digital only and the shop also sells physical products, the admin warns you and checkout explains the problem to the customer.
Saved cards / tokenisation in practice
KahunaCart: In the box Shopify: Partial
Customers get a Payment methods tab in their account listing the cards their payment provider has kept on file, with the brand, the last four digits and the expiry, a default they can change and a Remove button. Removing asks the provider to forget the card first and tells the customer if it refused, so a card that disappears from the page is a card the provider no longer holds. KahunaCart stores the provider's reference and those display details and never a card number. Your payment provider has to support saved cards for the tab to fill up. Stripe does today; the other providers do not yet.
Authorise-then-capture
KahunaCart: In the box Shopify: In the box
A payment provider can hold the money at checkout and let you take it later, so an order that falls through releases the hold instead of needing a refund. The order reads as authorised and does not count as paid until you press Capture, and Capture and Void appear on it only for providers that can actually honour them. A capture for more than was held, a second capture and a void of money already taken are all refused before the provider is even asked. Each provider declares for itself whether it holds or takes, and no store setting overrides that, because some payment methods cannot be held at all and would quietly vanish from your checkout if one did. Stripe, PayPal and Mollie hold then capture, and Checkout.com and Shopify will once they are released. The others take the money at once, because their platforms cannot hold a payment, and each says so in its own settings.
Two-way catalogue/order sync with a provider
KahunaCart: In the box Shopify: Not available
KahunaCart can push products to a connected payment or commerce service and pull them back, keeping your catalogue in sync in both directions. Polar supports full two way sync of products and orders. The Shopify add-on, coming soon, syncs one way. One limit to know: if a product has multiple variants, only the main variant stays in sync, though the extra variant data is kept rather than lost.
Merchandised payment methods over one gateway
KahunaCart: In the box Shopify: Partial
You can offer shoppers named payment choices, such as 'Visa', 'Klarna', 'Cash' or 'Bank transfer', built on top of your existing payment providers, each with its own label, logo, description, fee and rules about when it appears (for example, only above a certain order value or only for business customers). Any fee you add is worked out fairly and automatically taxed and refunded in proportion if the order is refunded. Your existing payment providers are unaffected.
Bookings & rentals 6 features
Bookings & rentals: KahunaCart compared with 1 other platforms
Feature KahunaCart Shopify
Appointment booking with available time slots
KahunaCart: Official add-on Shopify: Third-party
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 Shopify: Third-party
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 Shopify: Third-party
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 Shopify: Third-party
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 Shopify: 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 Shopify: Third-party
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.
Subscriptions & licensing 7 features
Subscriptions & licensing: KahunaCart compared with 1 other platforms
Feature KahunaCart Shopify
Recurring billing / subscriptions
KahunaCart: Official add-on Shopify: Official add-on
Subscriptions and recurring billing are available as a separate paid add-on rather than built into core. That way a shop that never sells subscriptions is not carrying billing and renewal logic it will never use. It is available now, not something planned for later.
Every billing period is a real order
KahunaCart: Official add-on Shopify: Official add-on
Each subscription renewal is created as a normal order, not a special separate record. That means receipts, invoices, tax, reporting, refunds and licence delivery all work the same way for a renewal as they do for a first purchase.
Free trials
KahunaCart: Official add-on Shopify: Unverified
Free trials are real: a trial creates a genuine order with a total of zero and a clear 'free trial' line showing what happened. The first paid billing period begins automatically once the trial ends.
Store-run billing calendar (no provider scheduler required)
KahunaCart: Official add-on Shopify: Official add-on
The subscriptions add-on can run its own billing and reminder schedule without depending on the payment provider to handle renewals. It sends reminders before a payment is due, allows a short grace period if a payment fails, and restores a subscription automatically if payment succeeds during that grace period. Paying early extends the subscription rather than replacing the time already paid for.
Software licence keys with seats and an updates window
KahunaCart: Official add-on Shopify: Third-party
Licence keys can have a limited number of seats or unlimited seats, and can carry a separate expiry date and a separate 'updates included until' date, so a licence can be permanent while updates are time limited. Renewals and add-ons extend or expand an existing key rather than creating a new one. Licence checks and downloads are protected against abuse with signed responses and rate limits, and older releases are hidden once a licence's update window has passed.
Subscription grants access to pages and files
KahunaCart: Official add-on Shopify: Third-party
A subscription plan can put its subscribers in a customer group for as long as the subscription is live, and any page that asks for that group opens for them, including a page of downloadable files. Live includes a trial and the grace period after a failed payment, so a declined card does not lock somebody out the same afternoon. A customer who cancels at the end of their period keeps access for the time they paid for, and a paused or ended subscription closes the page on the customer's next click, even in the middle of a session. Nothing is stored on the account: the group is worked out from the subscription on every request, so a late webhook or a status changed by hand cannot leave anybody in a group they have stopped paying for. The same group also drives price lists, coupon conditions and member-only products.
Article teaser paywall with a subscribe panel and free-article allowance
KahunaCart: Official add-on Shopify: Unverified
Mark a page as an article with a teaser and everyone can open it: they read the headline and the opening paragraphs, and anyone who is not a member sees a subscribe panel where the rest would be. The panel fills itself from your subscription plans, with a button and a price for each plan that grants the member group, and a plan that goes off sale leaves the panel. A visitor who cannot read the article never receives its body, not in the page, the feed or the search index, so there is nothing to find in the page source. You can also give everyone a few free articles a month, counted per customer or per browser, and a new subscriber is sent back to the article from their receipt. The teaser, the meter and the structured data for search engines are part of KahunaCart itself, and filling the panel from your plans needs the Subscriptions add-on.
i18n, currency & multi-store 6 features
i18n, currency & multi-store: KahunaCart compared with 1 other platforms
Feature KahunaCart Shopify
Translated product content
KahunaCart: In the box Shopify: Official add-on
Product content such as titles and descriptions can be translated per field, so a product can have a German title paired with an English summary and both display correctly. If a translation is missing, the original language is shown instead of a blank space. Shops that only use one language see no extra overhead at all.
Per-language product URLs
KahunaCart: Partial Shopify: In the box
Product URLs are the same in every language rather than translated per language. This is a known trade off for search visibility, and a fully translated URL structure is being considered as a future improvement.
Emails render in the order's language
KahunaCart: In the box Shopify: In the box
The language a customer used while shopping is saved with their order, and it is used consistently afterwards. Shipping and tax labels, cart line titles, and every email about that order stay in the language the customer originally shopped in, even if the shop's default language changes later.
Translated admin strings shipped for languages beyond English
KahunaCart: Partial Shopify: In the box
Admin screens are only available in English today, so this is a partial rather than a tick. Everything a translator needs is in place: the translation system itself, a Crowdin project that takes contributed language packs, a command that exports the source strings and reports how complete each pack is, and a written guide for contributors. A finished pack drops into the plugin with no code change and any key it is missing falls back to English on its own, so what is left is contributors rather than work on our side.
Multi-store from one install
KahunaCart: Not available Shopify: Partial
There is no multi-store, multi-vendor or marketplace support. Several separate shops can share the same database server, but they cannot share one catalogue across multiple storefronts. This is planned as core work, and the underlying database is already partly prepared for it.
Per-country address rules for layout, required fields, postcode and phone
KahunaCart: In the box Shopify: In the box
Each country carries its own address rules as a row you can edit: the order its address lines print in, the postcode pattern, the phone pattern, and which address fields it will not do without. A postcode rule that refuses valid post, or a required field nobody in that country has, is a save on a Tuesday afternoon rather than a wait for a release, and it changes that country and nothing else. Values ship for the thirty largest ecommerce markets plus every country your own tax and shipping zones already name; every other country gets an empty row, falls back to the generic layout and takes an order exactly as it did before. One formatter draws every address, so a German address prints its postcode before its city on the checkout review, the receipt, the invoice, the packing slip and the address book, or on none of them. The shipped phone rules are a format check rather than a national numbering plan, on purpose: refusing a valid number is worse than letting a typo through. A country's required fields only apply when the basket holds something that has to be delivered, so a cart of downloads still checks out with no address at all.

The other direction

Where Shopify offers more

Hosting and updates

Shopify is the better choice if you want hosting, security fixes and updates handled for you. Moving to KahunaCart means taking on updates and backups yourself.

Shop Pay and wallets

Shop Pay, Apple Pay, Google Pay, PayPal and Amazon Pay are Shopify checkout options and can also appear on product pages. KahunaCart has no Shop Pay. Stripe is its only provider with wallet buttons and saved cards.

Point of sale and sales channels

Every Shopify plan includes Shopify POS for selling in person, with Shopify's own card readers, and it keeps taking cash when the connection drops. KahunaCart's Point of Sale add-on is a till on your own site. It takes cash and cards on Stripe, Square and SumUp readers, with shifts and a cash count at closing, on the same stock and orders as your online shop. It needs a connection to your shop and has no offline mode. Shopify also supports sales channels, marketplaces and AI channels such as ChatGPT and Google AI Mode. These are outside the matrix's scoring.

International selling

Shopify's Markets sell to different regions from one store, each with its own domain or subfolder, language, currency and catalog. With Shopify Payments it shows local-currency prices and converts them at market exchange rates. PayPal Express and Adyen also support it; other gateways convert at checkout.

KahunaCart runs one store per installation. You can sell in several currencies, with prices you type or prices worked out from the base price at the day's exchange rate, but one catalog and one domain for all of them. Catalog fields can be translated. The admin is English only, and product URLs stay the same in every language.

Returns

Both let customers start a return themselves, and both track it with return numbers through to the refund. Shopify can also sell you the return label through Shopify Shipping and offers exchanges. KahunaCart takes a label you upload or link, or one a shipping add-on buys, and a customer who wants a different size returns the first one and places a new order.

VAT numbers and B2B

Shopify Tax validates company VAT numbers at checkout and applies reverse charge to eligible EU and UK orders. KahunaCart does not validate VAT numbers or apply reverse charge automatically.

Shopify includes company accounts, purchase order numbers, net payment terms and quantity price breaks on every plan. KahunaCart has customer-group price lists and quotes, but no company accounts, purchase orders or credit terms.

Ecosystem and history

The Shopify App Store, its themes and the agencies that build on it are far larger than anything around KahunaCart, which launched in 2026 and has a much shorter track record.

What it costs

Three-year costs

The table uses Shopify Basic billed yearly, with apps for reviews, a wishlist and priced product options. On list prices, and counting an example $180 a year of hosting for KahunaCart, the Basic plan on its own is cheaper in year one, about level in year two and the more expensive of the two from year three. Add the three apps, even on their cheapest plans, and KahunaCart is the cheaper of the two from year one. A payment provider other than Shopify Payments adds Shopify's transaction fee on top. KahunaCart's base totals exclude hosting and optional add-ons.

KahunaCart Shopify
CMS or platform Grav, free Hosted by Shopify
Plan or license, year 1 $249 one-time, including a year of updates and support Basic: $348 ($29 a month billed yearly) or $468 ($39 a month billed monthly)
Year 2 and after $99 a year, optional Plan renewal each year, plus apps
Higher plans No tiers: one license per site with every core feature Grow is $79 a month and Advanced $299 a month billed yearly. Staff accounts and live carrier shipping rates start at those tiers
Hosting Your own PHP host, not included Included, with SSL
Reviews, wishlist and priced options Included in the base license $371.76 a year at paid tiers: $15, $5.99 and $9.99 a month. Judge.me and Wishify also have free plans
Year 1, plan and apps $249 plus hosting $719.76 with the apps' paid tiers, or $467.88 with the free review and wishlist plans (the options app has no free plan). The plan alone is $348
Year 3, running total $447 with the $99 renewal in years 2 and 3, or $249 if you never renew, plus hosting $2,159.28 with the apps' paid tiers, or $1,403.64 with the free review and wishlist plans. The plan alone is $1,044
Example: hosting at $15 a month Year 1 $429 and year 3 $987 with both renewals. An example, not a quote Included in the figures above
Card and PayPal payments Stripe, PayPal and Polar included; Moneris, Mollie, Square, Paddle, Lemon Squeezy and SumUp are one-time add-ons Shopify Payments, Shop Pay and wallets; over 100 other providers connect
Processor fees Set by the provider you connect: Stripe, PayPal or Polar Shopify Payments charges 2.9% + 30 cents online on Basic, 2.7% on Grow and 2.5% on Advanced. Each processor sets its own rate, so treat this part as similar on both
Extra fee on other providers None from KahunaCart 2% on Basic, 1% on Grow, 0.6% on Advanced when a provider other than Shopify Payments takes the payment. Manual methods are exempt, and so is PayPal alongside Shopify Payments. On $30,000 of sales that is $600, $300 or $180 a year, as an example
Appointment and class booking $149 one-time, Bookings; core license also required Apps from other developers; prices vary
Nightly accommodation $249 one-time, Bookings + Rentals; core license also required Apps from other developers; prices vary
Subscriptions $129, one-time add-on Free Shopify Subscriptions app; only works with certain gateways
Abandoned cart recovery Included Included on every plan, for abandoned checkouts
Gift cards and store credit Included, one ledger Included
Product bundles Included: a set at its own price, stock off each part Free Shopify Bundles app; bundles have their own price
Minimum, maximum and pack-size quantities Included, on a product, a variant or a category, plus store-wide order minimums and maximums A store-wide cart limit is built in. Per-product rules are in B2B catalogs; category rules and order value limits need an app, or Plus
Member-only products Included: name the customer groups that may buy a product An app from another developer, from $12 a month for Locksmith
Wishlists Included, multiple named lists An app from another developer
PDF invoices Included, with a credit note on refund Order Printer, a free Shopify app, prints invoices. No credit notes
Multiple stores Not available: one store per install Markets sell to many regions from one store

Shopify prices recorded in October 2026 from the Shopify pricing page. App prices were recorded the same month from the App Store listings for Judge.me, Wishify, CR Infinite Product Options and Locksmith. Developers set app prices and can change them. Shopify's offer of $1 a month for the first three months is not counted. The fee for providers other than Shopify Payments is described on Shopify's pricing plans and billing overview. KahunaCart booking prices checked 21 September 2026; its other prices recorded in August 2026. KahunaCart add-on updates use the site's single optional renewal. KahunaCart figures exclude hosting, and development is extra for both. See the KahunaCart store for current offers.

Migrating

Moving from Shopify

KahunaCart's CSV importer recognizes Shopify column headings. It maps Variant Price to price, Vendor to brand and Variant Barcode to GTIN. It also recognizes Handle, Body (HTML), Variant Inventory Qty and Financial status. Matching is exact. Map custom columns by hand and check the preview.

Import steps

  1. In Shopify, export your products, customers and orders as CSV files from the admin.
  2. In KahunaCart, import in this order: categories, products, variants, customers, then orders. Each step depends on the one before it.
  3. Check each file's suggested mapping, save it for reuse and run a dry run that writes nothing. Fix any row-level errors before importing. Interrupted imports resume where they stopped.

Products and variants

Both products support up to three option types per product. Each row in a variants file needs a SKU and a parent product. Review products that use extra options through a Shopify app or theme code, and any data stored in metafields. Rebuild Shopify bundles by hand as grouped products sold as a set at the bundle's price.

Customers and orders

Shopify order exports repeat the order number for each line item. KahunaCart groups rows with the same number into one order, marked as completed unless the file says otherwise.

Importing orders sends no emails, reduces no stock and fires no order events. Tax, shipping and discount lines are not recreated. The file's total is stored as the amount charged.

Importing customers creates no logins and sends no email.

What needs separate work

Discount codes, gift card balances, store credit, subscription contracts, app reviews and wishlists, and your theme need separate work. The importer handles categories, products, variants, customers and orders.

Payments and stores

Payment-provider settings do not transfer. Reconnect each provider in KahunaCart and test a payment before switching.

If you sell through several Shopify Markets, plan for KahunaCart's one-store limit, and decide for each currency whether to bring over your fixed prices or let KahunaCart work them out from the base price.

Questions

Common questions

Can I move my products, customers and order history from Shopify?

Yes, using Shopify's CSV exports. Preview the column mapping and run a dry run before importing. Orders keep the exported total, but tax, shipping and discount lines are not recreated. The migration section explains the steps and what needs separate work.

Will my customers need new logins?

Importing customers creates no logins and sends no email. You can invite them from Customers after the import.

Does KahunaCart take a percentage of each sale?

KahunaCart adds no transaction fee of its own; Stripe, PayPal and Polar still charge their own rates. On Shopify, a provider other than Shopify Payments carries an extra fee of 2% on Basic, 1% on Grow or 0.6% on Advanced, on top of the provider's rates. Manual methods are exempt, and so is PayPal alongside Shopify Payments.

Can I keep my payment options?

There is no Shop Pay. Stripe, PayPal and Polar come with every license, plus offline payments and a test provider. Moneris, Mollie, Square, Paddle, Lemon Squeezy and SumUp are one-time add-ons, and four more are built and coming soon. Stripe is currently the only provider with wallet buttons and saved cards.

Is KahunaCart cheaper than Shopify?

It depends on apps, hosting and how you take payments. On the Basic plan with no paid apps, the two are close over three years. Add paid apps, or a provider other than Shopify Payments, and KahunaCart comes out cheaper sooner. The pricing table shows the arithmetic.

Will my store keep working if I skip a renewal?

With KahunaCart, yes. You stop receiving new versions, but the installed version keeps working. Hosting is paid separately. On Shopify, a missed or repeatedly failed bill freezes the store, the admin closes and customers cannot see it.

Check KahunaCart before you switch

Read the docs and pricing against your store's requirements.

Buy in the store