Appearance
Laravel ecommerce packages compared: Bagisto, Lunar, Aimeos, Vanilo, Shopper, Cashier and kitloom
A shop on Laravel is a solved problem several times over, and the solutions do not look alike. Some are whole applications you install and then work inside; some are a core of models you build a storefront on; one is only the billing. kitloom is none of those three: a CMS for Laravel whose shop is one of its modules, with the storefront, the admin and the agent that runs it. Here is what each one is, side by side, and when each is the better choice.
What each one is
Bagisto is a complete store from Webkul, under MIT: admin, storefront, multi-vendor marketplace, B2B, point of sale, a headless storefront on Next.js and a Flutter app, with a marketplace of over 200 extensions. It is an application, not a package: you install Bagisto and build inside its module structure.
Lunar is a headless core under MIT: Eloquent models and services for products, orders and customers, with an admin built on Filament. There is no storefront; you build it, and a Vue starter kit is announced.
Aimeos is a mature PHP ecommerce framework, LGPLv3 and MIT, with a Laravel package: templates, a JSON:API REST API and GraphQL, multi-tenancy in the core, B2B and marketplace extensions sold separately. It is made for large catalogs and has conventions of its own beside Laravel's.
Vanilo is a modular framework under MIT, version 6 since September 2026 on Laravel 12 and 13: products, cart, promotions, checkout and orders as modules you pick, behind interfaces you can swap your own models into. No storefront, a limited admin.
Shopper is an ecommerce core and admin under MIT on Laravel 11 and up, built on Filament; version 3 adds a Store API and a JavaScript SDK for storefronts you write yourself.
Laravel Cashier is Laravel's own billing package for Stripe and Paddle: subscriptions, trials, one-off charges, invoices and Stripe or Paddle checkout. It is not a store. Its docs say so: the cart and order models in its examples are yours to write, and the products live in the Stripe dashboard.
kitloom is a Laravel CMS, and its shop is a module. A new site gets the WordPress data model from a migration, with no WordPress installed; the shop keeps its products, carts and orders in WooCommerce's tables and formats, so a live WooCommerce shop opens here as it is. What comes with it:
- an AI agent runs the shop over MCP, with the rights you give it:
product_,save orders_,list order_,set_ status coupon_,save sales_;report - an admin in Filament 5 or Laravel Nova 5, the same screens in each;
- a storefront: shop themes in Vue and React, a Nuxt and a Next.js storefront on the same pages as JSON, or a Blade theme with the shop's shortcodes;
- payments through kitloom/payments: Stripe, PayPal, Mollie, Square, Paddle, Monobank, LiqPay, WayForPay, Hutko, and bank transfer and cash on delivery;
- the rest of a site around the shop, as modules of the same product: pages and posts, SEO, redirects, forms, languages, PDF invoices, ads with a product feed, texts and Telegram notifications for new orders, bookings and courses.
Side by side
| kitloom | Bagisto | Lunar | Aimeos | Vanilo | Shopper | Cashier | |
|---|---|---|---|---|---|---|---|
| What it is | A CMS whose shop is a module | A whole store application | A headless core and admin | A framework with a Laravel package | Modules you pick | A core and admin | Billing only |
| Storefront | Included: themes in Vue, React or Blade; Nuxt and Next.js storefronts | Included, and headless on Next.js | You build it | Templates included, and headless | You build it | You build it (Store API and SDK in v3) | None |
| Admin | Filament 5 or Nova 5 | Its own | Filament | Its own, Vue.js | Limited | Filament | None |
| Data model | WooCommerce's tables and formats | Its own tables | Its own Eloquent models | Its own | Its own, behind interfaces | Its own | Stripe's or Paddle's |
| Coming from WooCommerce | Nothing to import: the shop opens on its database, with its orders, customers and settings | An import | An import you write | An import | An import you write | An import you write | n/a |
| Payments | Stripe, PayPal, Mollie, Square, Paddle, Monobank, LiqPay, WayForPay, Hutko, offline methods | Connectors from the marketplace | Drivers you add | Extensions | Modules | Drivers you add | Stripe, Paddle |
| Subscriptions | Not yet | Extension | No | Extension | No | No | Yes, its purpose |
| Multi-vendor, B2B | No | Yes, core and add-ons | No | Extensions | No | Yes | No |
| Beyond the shop | The site itself: pages, SEO, forms, languages, bookings, courses, invoices, ads | Blog pages in the store | Your application | Your application | Your application | Your application | Your application |
| AI agents | Built in: an MCP server, the shop's tools with the key's user's rights, and tools for shoppers' own assistants | LLM integrations | No | No | No | No | No |
| License, price | Proprietary: $149 for one site or $299 for every site you build, a year of updates, 14-day refund | MIT; paid extensions | MIT | LGPLv3 and MIT; paid extensions | MIT | MIT | MIT |
When another package is the better choice
- You are building a marketplace or a B2B store. Bagisto has multi-vendor, B2B and POS in the box, Aimeos has them as extensions. kitloom's shop sells for one seller.
- Your products do not fit a product with a price. Lunar and Vanilo give you Eloquent models to shape, and you own the schema. kitloom's shop is WooCommerce's data model: products, variations, attributes, coupons, shipping zones, tax rates, as a shop of goods needs them.
- The storefront is the product, and the shop is small. Lunar or Shopper, with the storefront you want to write anyway, is less to carry than a CMS.
- You sell subscriptions to a SaaS. Cashier is the right tool and nothing else is needed: no cart, no shipping, no catalog outside Stripe. kitloom's shop takes one-off orders today.
- Very large catalogs. Aimeos is built and measured for them.
- No budget for software. Every package above is MIT or LGPL; kitloom is paid, with everything visible in a sandbox before you buy and a refund after.
When kitloom is
- An AI agent runs the shop, under your control. Connect Claude, Cursor or your own agent to the site's
/and ask: "mark every order paid by bank transfer this week as completed and tell the customers", "put the five products that sold least in October on sale at 20 %", "make a coupon for the newsletter, 10 % off, until the end of the month". It does the work through the same code as the admin, as the user it signed in as: an author's key cannot see the orders, nothing is deleted for good, every change is in the activity log. Shoppers' own assistants get the catalogue over MCP too, read-only, and hand the shopper a cart link. See Run your site with an AI agent and Shoppers' AI assistants.mcp - The shop is part of a site. Most shops have pages, a blog, forms, SEO, a second language, and later bookings or courses. With a store application those live elsewhere or in a corner of the store; with a core they are your application. In kitloom they are modules of the same product, tested together, with the same admin and the same agent.
- You are on WooCommerce now. The shop opens on its database: products with their variations and attributes, HPOS orders, customers who sign in with their passwords, coupons, shipping zones, tax rates and the settings, at the same URLs. Refund an order from the new admin; the row is written as WooCommerce writes it. See Migrate WooCommerce to Laravel.
- The storefront should exist on day one. Choose a shop theme and the site sells today; swap it for Vue, React, Nuxt or Next.js later, on the same JSON.
- Your team works in Filament or Nova. The shop's screens are ordinary Filament resources or Nova resources; nothing new to learn, and both admins are maintained for every module.
- Payments in several countries. Nine online gateways and the offline methods are in one settings page, and the invoices, the texts and the notifications read the same order.
Try it
Bagisto, Lunar, Aimeos, Vanilo and Shopper install with Composer from their sites; Cashier is in Laravel's docs.
For kitloom, open a sandbox in one click, no sign-up: Filament demo or Nova demo, with the shop filled and an agent to connect from the dashboard. Then point it at your own WooCommerce database, read-only first: Migrate from WordPress. The shop's guide is at Shop, the payments' at Payments. Prices and the refund are on Pricing.