Shopify, BigCommerce, and Squarespace Commerce sell a monthly plan and handle everything under the hood — hosting, PCI compliance, uptime, a mature app ecosystem. That's a genuinely good deal for a lot of businesses. It's also a specific cost model, and it's worth understanding what the alternative actually looks like before assuming the platform fee is just the cost of doing business.
Two different cost curves, not one number
The honest version of "custom vs. Shopify" isn't a single price comparison — it's two different-shaped cost curves. A custom build front-loads cost: you pay for the engineering upfront, then spend very little to keep it running. A hosted platform inverts that: almost nothing upfront, then a recurring bill for as long as the store exists. Which one is actually cheaper depends entirely on how long "as long as the store exists" turns out to be.
The model below, in plain terms: Custom — $5,000 upfront for a build in Acme Widgets' range (catalog, cart, checkout, accounts, search), plus ~$30/month in serverless infrastructure. Shopify — roughly $500 upfront (theme + setup) plus ~$180/month (a Shopify plan plus a couple of commonly-needed apps: search and reviews or subscriptions). Payment processing fees are left out of both sides since they're roughly comparable when each platform uses its own native processor. Your real numbers will differ — treat this as a framework for building your own estimate, not a quote.
That $5,000 figure describes a narrowly-scoped, small-business build on top of architecture we already maintain — it is not a universal price for "a custom commerce platform." A from-scratch build, a larger catalog, multiple suppliers, or a heavier support commitment costs more, sometimes a lot more. The three scenarios below show roughly where that number actually moves.
Shopify's plans run roughly $39–$105/month for Basic through the standard Shopify tier (Advanced and Plus climb much higher) — before transaction fees, and before an extra ~2% on top of that if you don't use Shopify Payments as your processor. On top of the plan, most stores end up paying for apps: better search, subscriptions, reviews, upsells, abandoned-cart flows. Each one is typically another $10–$50+/month — even a modest, realistic setup with just the plan and two apps already lands around $150–200/month, before you've added anything beyond the basics.
A custom build like Acme Widgets has no platform fee and no per-feature app subscriptions, because the features are code you already own, not rented monthly. What's left is usage-based infrastructure cost — Lambda billed per request, Turso's free tier covering a catalog this size. The bill scales with actual traffic instead of sitting at a fixed monthly floor regardless of whether anyone visited — the same shape of trade-off as hosting a WordPress site on Lambda for $0.03/month.
Three scenarios, three different price points
"Custom storefront" covers a wide range of actual projects. Roughly:
- Lean storefront (~$5,000–$8,000 upfront, ~$25–40/month) — a single supplier, a modest catalog, standard checkout, on reusable architecture like Acme Widgets'. This is the scenario modeled in this post.
- Established retailer (~$15,000–$30,000 upfront, ~$75–150/month) — a larger catalog, inventory sync with a supplier or POS system, multiple payment methods, email/marketing integration, and a real QA pass rather than a lean MVP.
- Complex multi-supplier platform (~$40,000–$80,000+ upfront, ~$200–500+/month) — multiple suppliers with different data formats, custom admin tooling, higher availability and compliance requirements, and an ongoing support or maintenance retainer rather than a one-time handoff.
The cost curves and breakeven math later in this post use the lean-storefront numbers, since that's the real scenario we have real numbers for. The shape of the trade-off — front-load engineering cost, spend little to keep it running, versus almost nothing upfront and a recurring bill forever — holds at every scenario above; only the specific crossover point moves.
What that looks like stretched out over years
Sticker price says Shopify is cheaper. Total cost of ownership tells a different story once you let both curves run. Plotting cumulative spend under the assumptions above, month by month, for eight years:
Cumulative spend under the assumptions above. Shopify starts cheaper for the first couple of years — then the fixed monthly bill overtakes the one-time build cost around year 2.5, and every year after that widens the gap. By year 8, Shopify has cost more than double the custom build.
View the year-by-year numbers
| Year | Custom (cumulative) | Shopify (cumulative) |
|---|---|---|
| 0 | $5,000 | $500 |
| 1 | $5,360 | $2,660 |
| 2 | $5,720 | $4,820 |
| 2.5 (breakeven) | ~$5,900 | ~$5,900 |
| 3 | $6,080 | $6,980 |
| 4 | $6,440 | $9,140 |
| 5 | $6,800 | $11,300 |
| 6 | $7,160 | $13,460 |
| 7 | $7,520 | $15,620 |
| 8 | $7,880 | $17,780 |
Where customization stops being "an app" and starts being the codebase
On a hosted platform, going past what the theme and app store offer usually means either paying for another app, or building against the platform's own constraints (Shopify's Liquid templating and App Bridge, for instance). On a custom build, the same requests are just application code:
- Search — Acme Widgets uses SQLite FTS5 for real product search instead of a paid search app; more on exactly how that's built in the companion post on that.
- Checkout flow — guest checkout, account creation, and the whole Stripe Payment Element flow are built exactly to spec, not configured within a theme's checkout constraints.
- Data ownership — the product catalog, orders, and customer data live in a database you control directly, not behind a platform's export limits and API rate limits.
- Supplier & drop-shipping integration — on a hosted platform this is usually a jerry-rigged stack of CSV exports, a supplier portal nobody logs into consistently, and a paid integration app that only covers the suppliers it happens to support. On a custom build it's just code written against your actual suppliers — see how custom software connects drop shippers to a storefront without the manual copy-paste in between.
Where Shopify and hosted platforms genuinely win
This isn't "custom is always better." A hosted platform is the right call when you need to launch in a day, don't have (or want) an engineer maintaining infrastructure, need PCI compliance and fraud tooling handled for you out of the box, or want to lean on a mature app ecosystem for things that aren't worth building from scratch — POS integration, multi-channel marketplace sync, marketing automation. For a lot of small storefronts, that trade is worth every dollar of the platform fee.
When the math flips toward custom
In the model above, breakeven lands around year 2.5 — well within the life span of any store that isn't shutting down in its first year. That's not a universal number; it moves with your own inputs. A heavier Shopify app stack or a pricier plan tier pulls breakeven earlier, toward year one or two. A larger custom scope pushes it out somewhat — but at a $5,000 starting point, the payback period stays short even if your own numbers are a bit less favorable than this model's.
Where Shopify still wins outright is the first few months of an unproven idea — if you're not yet sure the business works, its lower upfront cost is still the right call regardless of long-run math. But the moment you're confident the store is sticking around for a couple of years, not just a couple of months, the custom build is very likely the cheaper option overall — not just the more capable one. If that sounds like where you are, look at the architecture behind Acme Widgets or try the live demo, then tell us your current plan, apps, and how long you expect to run the store and we'll build you the same chart with your actual numbers.