Ecommerce Engineering Explainer Intermediate

Open Source Ecommerce Is Not Free: A Practical Total-Cost Model

A six-category framework for pricing self-hosted ecommerce ownership costs: licence, hosting, extensions, maintenance, security and staffing.

AI-assisted draft

The first draft of this article was generated with AI, then fact-checked, edited and verified by a human editor before publication.

Tested with

Woocommerce
10.9.4 (WordPress.org, last updated 2026-07-07)
MagentoOpenSource
2.4.9
Prestashop
9.1.4 (released 2026-06-04 per third-party release tracking; confirm on prestashop.com/versions before publication)
Shopware
6.7.12.1 (July 2026 patch line per Shopware's own changelog; confirm exact current patch version before publication)
NopCommerce
4.90.6
License_woocommerce
GPLv3 (inherited from WordPress core)
License_magentoOpenSource
OSL 3.0
License_prestashop
OSL-3.0 (core), AFL-3.0 (modules)
License_shopware6
MIT (core platform; commercial Rise/Evolve/Beyond tiers layered separately)
License_nopCommerce
nopCommerce Public License 4.0 (AGPLv3-derived, mandatory attribution clause)
PricesCheckedAt
2026-07-28

Before you start

  • Working familiarity with at least one open source ecommerce platform (WooCommerce, Magento Open Source, PrestaShop, Shopware or nopCommerce) — no fresh install required
  • Basic understanding of PCI DSS scope (SAQ tiers) is helpful for the compliance section but not assumed
  • No coding background needed; this is a cost-planning framework, not an installation or configuration guide
On this page

Why a free licence does not mean a free store

WooCommerce, Magento Open Source, PrestaShop and Shopware ship under licences that grant free commercial use, modification and resale with no fee gate to remove. WooCommerce inherits GPLv3 from WordPress core (opens in a new tab); Magento Open Source uses the Open Software License 3.0 (opens in a new tab); PrestaShop’s core is OSL-3.0 with modules under AFL-3.0 (Academic Free License 3.0); Shopware 6’s core is MIT. None of them charge to unlock functionality.

nopCommerce is the exception, and it gets its own section below — its licence carries an attribution obligation the other four don’t have.

“Free” licence answers one line of a much longer budget. Running any of these five platforms in production means paying for hosting, extensions, maintenance and upgrade labour, PCI compliance, and the staff to keep all of that patched. This article treats those as six separate line items — licence/attribution, hosting, extensions, maintenance/upgrades, security/compliance, staffing — and prices each one independently.

flowchart LR
    A[Free / permissive licence] -->|covers| B[Software acquisition cost]
    A -.->|does not cover| C[Hosting]
    A -.->|does not cover| D[Extensions & modules]
    A -.->|does not cover| E[Maintenance & upgrades]
    A -.->|does not cover| F[PCI / security compliance]
    A -.->|does not cover| G[Staffing]

The common failure pattern is a project budget with a single “$0 — platform” line. Six months later, the actual spend across hosting, extensions and a contractor patching security releases runs to several thousand dollars a month, and nothing on the original budget predicted where it came from.

You should now see: why “free licence” and “free to operate” are different claims, and the six categories this article uses to price the difference.

Compare the licence terms across five open source platforms

Read the licence from the project’s own repository, not from marketing copy — the difference matters the first time a client asks whether a “Powered by” link is negotiable.

PlatformLicenceAttribution required
WooCommerceGPLv3 (opens in a new tab), inherited from WordPress coreNo
Magento Open SourceOSL 3.0 (opens in a new tab)No
PrestaShopOSL-3.0 (opens in a new tab) core, AFL-3.0 modulesNo
Shopware 6MIT (opens in a new tab) coreNo
nopCommercePublic License 4.0 (opens in a new tab), AGPLv3-derivedYes — link on every UI screen

Shopware’s shift matters if the evaluation is based on old information: Shopware 6’s core dropped the AGPLv3 dual-license model that Shopware 5 used, which required publishing source changes under the same copyleft terms. The current core ships MIT instead.

nopCommerce is the one platform here where the licence itself is a budget line. The “Powered by nopCommerce” link is mandatory on every UI screen unless the store buys a separately priced copyright-removal key. Treat that key as a real cost if the client won’t accept the attribution link, not as an afterthought.

The recurring pitfall is a finished store that ships with an unagreed attribution link, traced back to the licence being read from a marketing page instead of the LICENSE file in the actual repository. Read the file before quoting a build.

You should now see: the exact licence obligation for a given platform, and whether attribution removal is a real line item to budget.

Price hosting from unmanaged compute to managed WordPress

Hosting cost is a function of traffic and site complexity, not which of the five platforms was chosen. A Magento store and a WooCommerce store at the same traffic level land in the same hosting bracket; the platform name on the box doesn’t change the bill.

DigitalOcean’s Basic Droplet tier (opens in a new tab) runs from $4/month (512 MiB RAM, 10 GB SSD) up to $96/month (16 GiB RAM, 320 GB SSD). That price buys the virtual machine only — no backups, patch management, WAF (web application firewall) or on-call response at any tier.

WP Engine’s Essential-tier managed WordPress hosting (opens in a new tab) — the direct WooCommerce use case — runs from $30/month for one site at 25,000 monthly visits (Startup) up to $276/month for 30 sites at 400,000 monthly visits (Scale). WP Engine states these are first-year promotional prices for new customers on annual billing, not a flat ongoing rate.

The gap between the two numbers is the labour the merchant no longer does themselves. Unmanaged compute leaves patching, backups, a WAF and on-call to the reader, either as their own time or as a separate line in the maintenance and staffing sections below. Managed hosting folds a chunk of that labour into the sticker price, which is why comparable compute costs more per month there.

You should now see: where expected traffic and site count land on both an unmanaged and a managed price curve.

Add extension and module costs before they compound

WooCommerce’s own pricing page (opens in a new tab) lists individual extensions at $29 to $299 a year each. A store that needs several commonly bundled capabilities — subscriptions, memberships, bookings, advanced shipping — can end up spending more per year on extensions alone than on hosting.

That cost is recurring, not one-time. A $600-a-year extension stack in year one is $600 again in year two, and again in year three; a budget that prices extensions as a single upfront figure understates every year after the first.

The same open-marketplace dynamic — a free core plus a paid ecosystem of add-ons — applies to Magento, PrestaShop and Shopware, even though the anchor numbers above come specifically from WooCommerce’s published page.

List the extensions the store actually needs, multiply by the $29–299/year range, and carry the total into the worksheet in the last section, before treating “extensions” as a rounding error next to hosting.

You should now see: a realistic annual extension budget, built from the store’s actual feature list rather than a guess.

Separate PCI compliance cost from the platform decision

PCI DSS (Payment Card Industry Data Security Standard) compliance cost tracks business size and checkout architecture, not which open source platform runs the storefront. Stripe’s published guidance (opens in a new tab) puts it at roughly $1,000–$10,000/year for small businesses, $10,000–$50,000/year for midsize companies, and $50,000–$250,000/year for large enterprises.

That cost exists whether the storefront runs WooCommerce, Magento Open Source or nopCommerce. Swapping platforms doesn’t move this bill; swapping checkout architecture does.

flowchart TD
    A[Checkout design] --> B{Does cardholder data touch the merchant's own servers?}
    B -->|No - hosted or redirect checkout| C[Cheapest SAQ tier]
    B -->|Yes - custom checkout on own infra| D[Higher SAQ tier, wider scope, higher cost]

Routing cardholder data through the merchant’s own servers instead of a hosted or redirect checkout moves the store off the cheapest self-assessment questionnaire (SAQ) tier defined by the PCI Security Standards Council (opens in a new tab) and onto a materially more expensive one. That single design decision can be the difference between the bottom and the middle of Stripe’s published bands.

Keep cardholder data off the merchant’s own infrastructure — a hosted field or a redirect-based checkout — and the store stays on the cheapest self-assessment tier by design, not by luck.

You should now see: which compliance cost band the store’s size falls into, and which checkout architecture keeps it on the cheapest tier.

Budget the maintenance and upgrade labour line

Someone has to apply security patches and run version upgrades, and that person’s time has a market rate. The US Bureau of Labor Statistics (opens in a new tab) puts the median annual wage for web developers at $90,930 (May 2024), with the lowest 10 percent under $48,560 and the highest 10 percent over $162,870.

Treat that figure as a sizing reference for in-house or contractor patching capacity, not as a direct platform cost. The actual maintenance bill depends on how many hours a month the platform’s release and security-bulletin cadence demands, multiplied by an hourly rate somewhere in that wage band.

sequenceDiagram
    participant V as Vendor
    participant M as Maintainer
    participant S as Store
    V->>M: Security bulletin published
    Note over M: Maintainer has left, role never backfilled
    M--xS: Patch not applied
    Note over S: Vulnerability sits unpatched for weeks

The failure pattern is specific and recurring: the one person who knew how to run upgrades leaves, and a critical vulnerability sits unpatched for weeks because maintenance was never priced as a recurring role in the first place.

Convert the platform’s actual patch and upgrade cadence into a fractional-FTE (full-time equivalent) or contractor-hours-per-month estimate, and put it in the worksheet — not into an unstated assumption that “someone will handle it.”

You should now see: an estimated monthly staffing cost, derived from the platform’s patch cadence and the wage bands above.

Spot open-core pricing before it gates a launch requirement

Open-core vendors differ from plain open source in one structural way: specific production features are deliberately withheld from the free tier and sold as a paid plan. Shopware’s published pricing (opens in a new tab) starts Rise from EUR 600/month and Evolve from EUR 2,400/month, each gating features such as B2B components, advanced search and dynamic access.

Shopware’s top Beyond tier is quote-based with no published price, tied to gross merchandise value. Adobe Commerce (opens in a new tab), built on the same Magento codebase as the free Open Source edition, is also quote-based with no published price at all.

flowchart TD
    A[Proof of concept on free tier] --> B{Does the launch roadmap need a gated feature?}
    B -->|No| C[Free tier remains viable]
    B -->|Yes - B2B quoting, advanced search, multi-inventory| D[Paid tier or enterprise quote required]

The pitfall follows a predictable shape: a proof of concept runs cleanly on the free tier, then a launch requirement — B2B quoting, advanced search, multi-inventory — turns out to need the paid tier or an undisclosed enterprise quote. By then the store is already built on the free edition’s assumptions.

Check the vendor’s feature-gating list against the store’s actual roadmap before treating the free tier as a long-term plan — not after the proof of concept has already shaped the architecture.

You should now see: whether the store’s required feature list is covered by the free tier, or whether it lands on a gated feature that changes the budget.

Build a six-category worksheet and compare it against Shopify

The six categories above sum into one monthly figure: licence/attribution, hosting, extensions (annualised and divided by twelve), maintenance/upgrades, security/compliance (amortised monthly), and staffing. The worked example below is illustrative only — a hypothetical small store, not a prediction of any real store’s bill.

tco-worksheet.txt
Category                                    Monthly (illustrative)
----------------------------------------------------------------
Licence / attribution                                        $0
Hosting (managed, mid traffic)                              $110
Extensions (annualised, ~$600/yr stack)                      $50
Maintenance / upgrades (fractional contractor)               $300
Security / compliance (PCI, small-business band, amortised)  $150
Staffing (store operations, fractional)                      $600
----------------------------------------------------------------
Monthly self-hosted TCO                                    $1,210

The staffing line here is store operations — order processing, catalogue upkeep, customer support — kept separate from the developer maintenance line above it, since they’re usually different people at different rates.

Look up the SaaS side yourself rather than taking a number from an article, including this one. Shopify’s pricing page (opens in a new tab) serves prices in the visitor’s local currency based on IP address, and a ?country=us parameter switches the page locale without switching the currency. Read from India on 28 July 2026, it quotes Basic at ₹1,994/month on monthly billing (₹1,499 on annual), Grow at ₹7,447 (₹5,599), Advanced at ₹30,164 (₹22,680), and Plus from ₹175,000/month.

The widely cited US figures — Basic $39, Grow $105, Advanced $399 — could not be confirmed from this location, so treat them as secondhand. That is not a footnote about method: it is the same trap as the rest of this article. A comparison built on a plan price you did not read, in a currency the vendor did not quote you, is exactly the kind of assumption that makes the “$0 platform” line look convincing.

The structural point survives whichever currency you price it in. A $0 “platform” line set against any real SaaS plan is an omission, not a comparison, and the illustrative $1,210 monthly total lands between the mid and upper tiers of Shopify’s range rather than below all of them. A free licence is not automatically cheaper once every category is filled in.

Re-run the worksheet with the store’s own traffic, extension list and compliance tier rather than reusing the numbers above.

You should now see: a worksheet template with all six categories present, ready to be repopulated with real numbers to compare against a SaaS quote.

What this cost model does not cover

No number here is a measured operating cost. Every figure is a published price or a wage statistic read at one point in time, not an invoice from a store this article has run for a year. A real TCO comes from your own hosting bills, extension renewals and contractor hours; this model tells you which lines to look for, not what they will say.

Three specific gaps worth knowing before you lean on anything above:

  • Shopify’s USD tiers are secondhand. Covered above: the vendor prices by IP, so the dollar figures could not be read from where this was written.
  • Adobe Commerce has no published price at all. Its pricing page did not load during this research, and Adobe quotes rather than lists. Any Adobe Commerce range you find, including the six-figure ones commonly cited, is a consultancy estimate and not a vendor figure — check that distinction before it enters a budget.
  • WP Engine’s $30–$276 range is promotional. WP Engine’s own plans page marks it as first-year pricing for new customers on annual billing. Year two is the number that matters for a TCO model, and it is not the one on the page.

Verify each price against the vendor’s own page on the day you build your budget. Prices in an article age badly, and a cost model built on stale figures fails in the same way as one built on no figures.

This model doesn’t price migration cost, custom development, theme or design work, or multi-region tax compliance beyond PCI. Any one of those can exceed everything summed in the worksheet above, depending on scope.

Version-specific figures — Shopware’s current patch line, PrestaShop’s exact release date — move on a rolling basis. Reconfirm them on Shopware’s changelog (opens in a new tab) and PrestaShop’s version page (opens in a new tab) rather than trusting this snapshot.

The framework is a starting worksheet, not a substitute for a vendor quote or a signed hosting contract. Use it to ask the right questions before either, not to skip them.

You should now see: exactly which numbers in this framework need re-verification before they go into a real budget decision.

Sources

  1. License - WordPress.org WordPress.org Primary source
  2. woocommerce/plugins/woocommerce/license.txt (GPLv3) Automattic / WooCommerce Primary source
  3. WooCommerce - WordPress plugin directory listing WordPress.org Primary source
  4. WooCommerce Pricing Automattic / WooCommerce Primary source
  5. magento/magento2 LICENSE.txt (OSL 3.0) Adobe / Magento Primary source
  6. Adobe Commerce Pricing Adobe Primary source
  7. PrestaShop/PrestaShop LICENSE.md PrestaShop Primary source
  8. PrestaShop Versions PrestaShop Primary source
  9. shopware/shopware LICENSE (MIT) shopware AG Primary source
  10. Shopware Pricing shopware AG Primary source
  11. Shopware Changelog shopware AG Primary source
  12. nopSolutions/nopCommerce LICENSE.md (nopCommerce Public License 4.0) nopSolutions Primary source
  13. Droplet Pricing - DigitalOcean DigitalOcean Primary source
  14. WP Engine Plans WP Engine Primary source
  15. How Much Does PCI Compliance Cost for Businesses? Stripe
  16. Official PCI Security Standards Council Site PCI Security Standards Council Primary source
  17. Shopify Pricing Shopify Primary source
  18. Web Developers and Digital Designers - Occupational Outlook Handbook U.S. Bureau of Labor Statistics Primary source
9 min read