DashCommerce vs Lemon Squeezy
Lemon Squeezy sells tax handling as a service. DashCommerce gives you the source code and makes tax your problem.
Lemon Squeezy is a Merchant of Record — they legally sell to your customer, then pay you. That means they collect and remit EU VAT, US sales tax, and GST in ~60 jurisdictions for you. DashCommerce does not do this and has no plan to. If you sell digital goods globally and tax compliance is the reason you're shopping for commerce software, Lemon Squeezy is probably the correct answer. DashCommerce is for teams who already have tax handled — or whose catalog is physical, hybrid, or marketplace-shaped — and want to own the stack.
The Merchant of Record value prop
Lemon Squeezy’s defining feature is not the checkout, not the admin, not the license keys. It’s that they are the legal seller of record to your end customer.
That sentence sounds dry. The implication is not. If you are the seller of record, every jurisdiction where your customer sits — and there are dozens that matter for digital goods — has a tax claim on the sale. EU VAT is the most famous: 27 member states, each with their own VAT rate and filing regime, and a digital-goods threshold of €0 (there is no “small seller” exemption for B2C digital sales into the EU from outside it). The UK has its own regime post-Brexit. Canada has federal GST plus provincial variants. Australia has GST above AUD $75K. The US has ~45 states with sales tax, most of which have economic nexus thresholds that trigger filing obligations after a few hundred transactions or a small-revenue line crossed.
Doing this yourself, for a global digital catalog, is a multi-thousand-dollar-per-year operational problem before you factor in the founder-time cost of understanding it.
Lemon Squeezy (and Paddle, and FastSpring, and a small handful of others) solve this by interposing themselves legally. They buy the product from you at a wholesale price; they resell it to the customer at retail; the retail sale is on their books, in their jurisdiction, under their VAT numbers. You get a single payout stream that’s already net of tax. You do not file VAT returns in Germany. You do not get nexus letters from California.
That is a real product. DashCommerce does not have it and has no plan to have it. Being a Merchant of Record is a regulatory posture — it requires entity formation in every tax regime you cover, legal filings, banking relationships, and audit defense capacity. It’s not a software feature you ship in a pull request.
What DashCommerce is optimized for
DashCommerce is optimized for a different target: teams that already own their stack and want commerce to slot into it, not wrap it.
Concretely, DashCommerce is a commerce plugin for EmDash CMS, installed via npm create @dashcommerce@latest into an Astro project. The plugin ships as @dashcommerce/core on npm, MIT-licensed, currently at v0.1.3. You run the Astro app on Cloudflare Workers, Vercel, Netlify, Fly, or any Node host; the database is yours (Postgres, SQLite); the admin is a 12-page React surface inside your app; Stripe is the processor, billed directly to you at Stripe’s rate.
The six product types (simple, variable, grouped, external, digital-download, subscription) cover the same surface area Shopify does in core. Subscriptions, Stripe Connect marketplace payouts, multi-currency, multi-zone shipping, coupons, inventory soft-locks, reviews with moderation, abandoned-cart recovery, and transactional email are all in core — not add-ons.
What DashCommerce assumes about your team: you’re comfortable running an Astro app, you have a deployment target, and tax is something you’ve either already solved or can solve with Stripe Tax (for calculation) plus your own filing cadence.
Where they overlap
For the digital-goods use case specifically, Lemon Squeezy and DashCommerce cover similar feature categories:
- Stripe-based checkout with Apple Pay, Google Pay, and saved cards
- Subscriptions with trials, proration, dunning
- Digital downloads with signed, time-limited, per-order tokens
- Multi-currency pricing and display
- Coupons, percentage and fixed
- Transactional email (receipt, renewal, refund)
- Webhooks for external integrations
A developer shopping for “modern checkout for my digital product” could get most of what they need from either. The feature checklist is not the interesting axis.
Where they diverge
Tax and MoR. Covered above. Lemon Squeezy: yes. DashCommerce: no.
Hosting model. Lemon Squeezy is hosted SaaS — checkout pages live on lemonsqueezy.com (or a white-label domain on higher tiers). DashCommerce runs inside your Astro app; checkout is a route you own.
Physical goods. Lemon Squeezy does not support them. DashCommerce does, with shipping zones, rates, inventory, and fulfillment state.
Marketplace. Lemon Squeezy has no multi-vendor or Connect-style payout model. DashCommerce ships Stripe Connect marketplace payouts with platform fees and transfer_data in core.
Customization surface. Lemon Squeezy gives you a checkout that you can brand and theme within their framework. DashCommerce gives you code — the checkout is an Astro page, the cart is a typed store, the admin is a React app — all editable, all yours.
Source code and acquisition risk. DashCommerce is MIT on GitHub. Lemon Squeezy is closed SaaS inside Stripe. Both are real choices; they carry different risks.
The pricing math
This is the section that decides it for most teams.
Lemon Squeezy charges 5% + 50¢ per transaction. No monthly fee. On a $50 digital sale: $3.00 goes to Lemon Squeezy.
DashCommerce on direct Stripe charges Stripe’s rate: 2.9% + 30¢ in the US. On a $50 sale: $1.75 to Stripe.
The per-transaction delta is ~$1.25, or ~2.5% of sale price.
For an indie SaaS doing $10K/month globally with B2C customers, the delta is ~$2,520/year. That is less than one international VAT filing with a small accounting firm. Lemon Squeezy is cheaper, operationally and financially, at this scale.
For a company doing $200K/month — especially if the customer base is concentrated in a few jurisdictions, or is mostly B2B (where reverse-charge VAT shifts the burden to the buyer), or is mostly US (where economic nexus kicks in state-by-state) — the delta becomes $50K/year, and an in-house tax function with Stripe Tax handling calculation on direct Stripe becomes cheaper than paying the MoR markup.
The inflection point varies by geography, customer mix, and how much you value your own time. The right question is not “is 5% a lot” in the abstract, but “what does it cost me to not have MoR.”
When to stay on Lemon Squeezy
If you’re doing $5K–$100K/month in digital goods to a global audience, and tax compliance feels like a second full-time job, stay on Lemon Squeezy. The 5% is a fair price for the problem they’re solving, and the problem is real. Do not migrate to DashCommerce because you read a comparison page. The migration cost — re-tokenizing subscriptions, taking on tax obligations, building the infra — will exceed the savings for a long time.
The version of you where staying on Lemon Squeezy is wrong looks like: you’ve grown past $200K/month, most of your customers are US-based or B2B-EU where you can issue reverse-charge invoices, and the 5% fee is now a six-figure annual line that exceeds your marginal cost of compliance.
When DashCommerce makes sense
DashCommerce is shaped for:
- Teams that already run an EmDash or Astro site and want commerce inside it, not a second surface on
lemonsqueezy.com. - Hybrid catalogs — content-heavy marketing, digital downloads, physical goods, subscriptions, marketplace — that no hosted product covers in one plugin.
- Companies that need marketplace payouts (Stripe Connect, multi-vendor splits) — which Lemon Squeezy cannot do at all.
- Teams that object to closed SaaS for commerce specifically — audit, fork, on-prem compliance environments.
- Teams that have already solved tax. This is the critical gate. If tax is not solved, DashCommerce is not a drop-in Lemon Squeezy replacement.
Migration reality
If you are leaving Lemon Squeezy for DashCommerce, the realistic scope:
- Product catalog: exports from Lemon Squeezy as CSV/JSON. Imports into DashCommerce via
dashcommerce-merge-seed. Clean. - Customer list: exports. Import cleanly.
- Order history: exports read-only. Import as reference data for support lookup.
- Active subscriptions: the hard part. Lemon Squeezy’s subscriptions are tokenized against Lemon Squeezy’s Stripe account, not yours. Moving them to your Stripe account requires customer consent on first renewal, and most teams see a retention dip at cutover. Plan email outreach and a re-authentication flow.
- Tax: you are now the seller of record. Set up Stripe Tax for calculation. Decide which jurisdictions you’ll register in (usually: home country + thresholds crossed elsewhere). Budget for accounting cost.
- License keys: if you use Lemon Squeezy’s license system, you’ll need to replicate activation logic or accept a feature downgrade.
This is a real project, not a weekend switch. For most teams doing <$100K/mo, it is not worth doing.
The honest recommendation
If your business is digital goods to a global audience and tax is the reason you’re shopping, Lemon Squeezy is the correct answer. DashCommerce is not pretending to replace MoR, and this page is not trying to convince you it does.
If your business is something else — a physical catalog, a marketplace, a hybrid content-and-commerce site, an EmDash project that wants commerce to slot in — DashCommerce is shaped for you and Lemon Squeezy never was. In that case the MoR question is a non-issue: you’d be the seller of record on any commerce platform that fits your catalog.
Pick the product whose optimization target matches yours. Both exist because both shapes of problem are real.
How they line up, line by line.
| Capability | DashCommerce | Lemon Squeezy |
|---|---|---|
| 01 Open source (MIT) | ||
| 02 Self-hostable | ||
| 03 Merchant of Record | ||
| 04 Global tax collected and remitted for you | ||
| 05 Platform fee per transaction | 0% | 5% + 50¢ |
| 06 Physical products | ||
| 07 Marketplace / multi-vendor payouts | ||
| 08 Subscriptions | ||
| 09 Digital downloads with signed tokens | ||
| 10 License keys | partial | |
| 11 Pay-what-you-want | partial | |
| 12 CMS integrated (not a separate surface) | ||
| 13 Typed end-to-end (TypeScript) | partial | |
| 14 Runs at the edge (Cloudflare Workers) | ||
| 15 Hosted checkout page included |
- You want self-hosted commerce with the source code in your repo (MIT, fork-able, audit-able).
- You run a content/commerce hybrid — a marketing site and a catalog in the same codebase.
- You need marketplace features (multi-vendor, Stripe Connect payouts) — Lemon Squeezy cannot do this.
- Your team has already solved tax (Stripe Tax, an accountant, or a small jurisdiction footprint) and MoR isn't worth 5%.
- You're an indie SaaS or info-product founder selling digital goods globally.
- Your customers are in EU, UK, Canada, Australia — tax registration in all of them would eat your weekends.
- You hate tax compliance more than you care about a 2.1% fee delta versus direct Stripe.
- You want the simplest possible hosted checkout: one link, zero infra.
Lemon Squeezy vs DashCommerce — FAQ
- What is a Merchant of Record and does DashCommerce offer it?
- A Merchant of Record (MoR) is the legal seller of record to your end customer. Lemon Squeezy buys the product from you wholesale, then resells it to the customer — which means they're the ones who owe sales tax, VAT, and GST in every jurisdiction the customer sits in. They handle registration, collection, remittance, and audit defense. DashCommerce does not offer MoR. You are the seller of record on every DashCommerce transaction. If you sell digital goods to 50 countries and can't face EU VAT registrations, Paddle or Lemon Squeezy are the correct answer, not DashCommerce. You can plug Stripe Tax into DashCommerce for automatic tax calculation, but calculation is not the same as remittance — Stripe Tax gives you the number to file; it doesn't file for you, and it doesn't make you not-the-seller.
- Did Stripe buy Lemon Squeezy? Does that matter?
- Stripe acquired Lemon Squeezy in mid-2024. In practice, Lemon Squeezy continues to operate as a distinct product with its MoR model intact — Stripe's core business is a processor (not MoR), so the acquisition gave them an MoR offering for the indie SaaS segment. For existing Lemon Squeezy merchants, not much has changed day-to-day. The long-term risk is the usual acquisition risk: product direction may shift to serve Stripe's strategic interests rather than indie devs specifically. DashCommerce's answer to this risk is to be MIT-licensed source code — acquisition risk is zero when the product is code in your repo.
- Can I sell physical goods with Lemon Squeezy?
- No. Lemon Squeezy is explicitly for digital products: software, downloads, SaaS subscriptions, license keys, lead magnets. They do not support physical shipping, inventory, or fulfillment. DashCommerce ships all six product types — simple, variable, grouped, external, digital-download, subscription — plus multi-zone shipping rates, inventory soft-locks, and fulfillment state. If your catalog has any physical component, Lemon Squeezy is not a candidate.
- Is 5% a lot compared to Stripe's 2.9%?
- Yes — on pure processing, 5% + 50¢ is significantly more expensive than Stripe's 2.9% + 30¢ direct. On a $50 sale, Lemon Squeezy costs $3.00 and Stripe costs $1.75 — a ~$1.25 delta, or 2.5% of the sale. The honest framing: that 2.1–2.5% markup is not pure margin; it's the price of MoR. Registering for VAT in all 27 EU member states, appointing fiscal representatives where required, filing quarterly, and defending audits is not cheap if you do it yourself. For an indie SaaS doing $10K/mo globally, the 2.1% delta is $2,520/year — less than the cost of one half-decent international tax filing. For a company doing $200K/mo, the math flips and an in-house tax function plus direct Stripe becomes cheaper.
- Can I migrate from Lemon Squeezy to DashCommerce?
- Partially. Product catalog, customer list, and order history export cleanly as CSV/JSON and import into DashCommerce's typed `products` and `orders` collections via `dashcommerce-merge-seed`. Active subscriptions are the hard part — they live on Lemon Squeezy's Stripe account (Lemon Squeezy is the MoR), not yours, so re-tokenizing payment methods on your own Stripe account requires customer consent on first renewal. Plan for a visible retention dip. You'll also be taking on tax obligations Lemon Squeezy was handling — if you sell internationally, that's a non-trivial operational project to schedule before cutover, not an afterthought.
- Does DashCommerce ship digital download signing like Lemon Squeezy?
- Yes. DashCommerce's digital-download product type ships signed, time-limited download tokens — no guessable URLs, no indefinite links. Tokens can be scoped per-order, per-email, and per-download-count. The feature is in `@dashcommerce/core` at v0.1.3 and runs at the edge with no cold start. For the digital-goods use case specifically, DashCommerce has feature parity with Lemon Squeezy on the download mechanism. What it doesn't have is the MoR wrapper around it.
- What about license keys?
- Lemon Squeezy ships first-class license key generation, activation limits, and a license API — it's one of their most-used features for SaaS and desktop app developers. DashCommerce has partial license-key support via metadata on digital-download products, but not a dedicated activation server with per-seat enforcement. If your product is a desktop app or library that needs 'up to 3 machines per license' activation logic, Lemon Squeezy is shaped for that and DashCommerce will need custom work.
- Can I use Stripe Tax with DashCommerce to get close to MoR?
- Stripe Tax calculates the correct tax amount at checkout based on customer location and product type — it solves calculation, not remittance. With Stripe Tax wired into DashCommerce, your checkout collects the right amount; you're still responsible for registering in jurisdictions where you cross thresholds, filing returns, and responding to audits. That's materially less work than doing the calculation yourself, but it is not MoR. MoR means someone else is the legal seller. Stripe Tax does not change who is the legal seller.
Ready to try DashCommerce?
One command scaffolds a full storefront. Stripe test keys in, ship in an afternoon.