Polar vs Stripe vs Lemon Squeezy 2026
The Tax Problem Changed Everything
Selling software globally means collecting VAT in the EU, GST in Australia, consumption tax in Japan, and sales tax across 50 US states. Getting this wrong means fines, penalties, and retroactive tax bills. Getting this right yourself requires a tax compliance team and country-by-country registrations.
The Merchant of Record (MoR) model solves this: an MoR legally becomes the seller of your product in every country, handling all tax compliance. You receive net payouts. This is the fundamental split in the payment API market for developer tools and SaaS:
- Stripe: Pay 2.9% + 30¢, handle taxes yourself (requires Stripe Tax, an accountant, or a tax service)
- Polar: Pay 4% + 40¢, MoR handles all global taxes — lowest MoR fee in the market
- Lemon Squeezy: Pay 5% + 50¢, MoR handles all global taxes — Stripe acquired it in July 2024
The right choice depends entirely on whether you want to own tax compliance (and the developer tooling required) or pay someone else to handle it.
TL;DR
Stripe is the right choice for larger businesses with $1M+ ARR that have accounting infrastructure to handle tax compliance — the lowest processing fee and the deepest feature set. Polar is the developer-native Merchant of Record — open-source, the lowest MoR fees in the market (4% + 40¢), and specifically built for software product monetization. Lemon Squeezy remains a solid option but its future post-Stripe acquisition is uncertain, and some teams are migrating to alternatives.
Key Takeaways
- Polar charges 4% + 40¢ per transaction as a Merchant of Record — claiming to be the cheapest MoR in the market.
- Stripe charges 2.9% + 30¢ — the lowest processing fee, but you're responsible for global tax compliance unless you use Stripe Tax (+0.5%) and manage registrations yourself.
- Lemon Squeezy charges 5% + 50¢ as a Merchant of Record — includes all tax handling.
- Stripe acquired Lemon Squeezy in July 2024 — Lemon Squeezy still operates independently, but some developers are cautious about long-term support.
- Polar is open-source (GitHub: polarsource/polar) — you can inspect the codebase, and they're building toward self-hostability.
- Merchant of Record means Polar/Lemon Squeezy appear on customer receipts — not your company name. Some SaaS teams prefer Stripe for brand consistency.
- For indie developers, Polar and Lemon Squeezy eliminate the most painful operational burden in selling software globally.
Fee Comparison
| Provider | Base Fee | MoR (Tax Handling) | International Cards | Subscriptions |
|---|---|---|---|---|
| Polar | 4% + 40¢ | Yes (included) | +1.5% | +0.5% |
| Stripe | 2.9% + 30¢ | No (handle yourself) | +1.5% | Included |
| Stripe + Tax | 2.9% + 30¢ + 0.5% | Partial (still need registrations) | +1.5% | Included |
| Lemon Squeezy | 5% + 50¢ | Yes (included) | Included | Included |
| Paddle | 5% + 50¢ | Yes (included) | Included | Included |
At $1,000 MRR (US card, monthly subscription):
- Polar: $1,000 × (4% + 0.5%) = $45 + $4 per transaction = ~$49/month in fees
- Stripe: $1,000 × 2.9% = $29 + $3 per transaction (but you pay for tax compliance separately)
- Lemon Squeezy: $1,000 × 5% = $50 + $5 per transaction = ~$55/month in fees
At $10K MRR, the difference between Polar (4%) and Lemon Squeezy (5%) is $100/month — the Polar fee differential compounds significantly at scale.
Polar
Best for: Developer tools, open-source monetization, individual developers and small teams, lowest MoR fees
Polar is developer-native payment infrastructure built specifically for monetizing software — developer tools, open-source projects, SaaS, APIs, and digital products. The Polar team are developers who built the platform they wanted to use themselves. It's open-source (MIT-licensed), has a GitHub integration for open-source sponsorships, and provides first-class support for subscription tiers, one-time purchases, and usage-based billing.
Pricing
| Fee Type | Rate |
|---|---|
| Base transaction | 4% + 40¢ |
| International cards | +1.5% |
| Subscription billing | +0.5% |
| Payouts | Stripe's fees (no Polar markup) |
Polar is a Merchant of Record — they handle VAT, GST, sales tax collection and remittance in all countries. You receive net payouts without needing to register for tax in any jurisdiction.
API Integration
import { Polar } from "@polar-sh/sdk";
const polar = new Polar({
accessToken: process.env.POLAR_ACCESS_TOKEN!,
});
// Create a checkout session
const checkout = await polar.checkouts.custom.create({
productId: "prod_your_product_id",
customerEmail: "customer@example.com",
successUrl: "https://your-app.com/welcome",
metadata: { userId: "user_123", plan: "pro" },
});
console.log(`Checkout URL: ${checkout.url}`);
Next.js Integration
// app/api/checkout/route.ts
import { Polar } from "@polar-sh/sdk";
const polar = new Polar({ accessToken: process.env.POLAR_ACCESS_TOKEN! });
export async function POST(req: Request) {
const { productId, userId } = await req.json();
const checkout = await polar.checkouts.custom.create({
productId,
successUrl: `${process.env.NEXT_PUBLIC_URL}/dashboard`,
metadata: { userId },
});
return Response.json({ url: checkout.url });
}
Webhook Handling
// app/api/webhooks/polar/route.ts
import { validateEvent } from "@polar-sh/sdk/webhooks";
export async function POST(req: Request) {
const body = await req.text();
const signature = req.headers.get("polar-signature") ?? "";
let event;
try {
event = validateEvent(body, signature, process.env.POLAR_WEBHOOK_SECRET!);
} catch {
return new Response("Invalid signature", { status: 403 });
}
switch (event.type) {
case "subscription.created":
await handleSubscriptionCreated(event.data);
break;
case "subscription.revoked":
await handleSubscriptionCanceled(event.data);
break;
case "order.created":
await handleOneTimePurchase(event.data);
break;
}
return new Response("OK");
}
Open-Source GitHub Integration
Polar has unique GitHub integration for open-source projects — accept GitHub Sponsors and one-time donations directly through Polar, with the same MoR tax handling. Open-source maintainers can monetize via Issues (fund specific GitHub issues), Subscriptions, and Donations without managing a separate payment system.
When to Choose Polar
Individual developers and small teams selling software globally (MoR eliminates tax headaches), open-source developers monetizing their projects, developer tools wanting the lowest MoR fees in the market, or teams building on Next.js/TypeScript who want an SDK-first experience.
Stripe
Best for: Larger SaaS businesses, highest feature depth, best developer ecosystem, volume discounts
Stripe is the gold standard for payment infrastructure — the most comprehensive feature set, the best documentation, and the most extensive ecosystem of integrations. For businesses with $1M+ ARR that have the accounting infrastructure to handle tax compliance, Stripe's lower processing fees and depth of features outweigh the operational burden of tax compliance.
Pricing
| Fee Type | Rate |
|---|---|
| Card processing | 2.9% + 30¢ |
| International cards | +1.5% |
| Stripe Tax | +0.5% |
| Currency conversion | +1% |
| Volume discount | Available at $1M+ |
Important: Stripe is not a Merchant of Record by default. You are the seller of record, responsible for tax registration and compliance in every jurisdiction where you sell. Stripe Tax helps calculate and collect taxes, but you're still responsible for registrations.
Subscription API
import stripe
stripe.api_key = "sk_live_..."
# Create a customer
customer = stripe.Customer.create(
email="customer@example.com",
metadata={"userId": "user_123"},
)
# Create subscription
subscription = stripe.Subscription.create(
customer=customer.id,
items=[{"price": "price_pro_monthly_id"}],
payment_behavior="default_incomplete",
expand=["latest_invoice.payment_intent"],
)
# Return client secret for frontend payment confirmation
client_secret = subscription.latest_invoice.payment_intent.client_secret
Stripe Billing Portal
# Create a billing portal session for customer self-service
portal = stripe.billing_portal.Session.create(
customer=customer_id,
return_url="https://your-app.com/settings",
)
# Redirect customer to portal for subscription management, invoice downloads
redirect_to(portal.url)
When to Choose Stripe
SaaS businesses with $500K+ ARR where engineering resources can handle tax compliance, teams that need the deepest billing features (metered billing, upgrades/downgrades, trials, pause), applications integrating payment into broader Stripe ecosystem (Stripe Connect for marketplaces, Stripe Identity for verification), or global businesses with dedicated finance teams.
Lemon Squeezy
Best for: Simplicity, digital products, teams wanting Stripe MoR with simpler UX
Lemon Squeezy was the leading Merchant of Record for indie developers before Stripe's acquisition in July 2024. It remains fully operational and continues to add features, but the acquisition creates uncertainty about long-term product direction. Teams building new products are increasingly choosing Polar or Paddle as the safer MoR alternatives.
Pricing
- Base fee: 5% + 50¢ per transaction
- All taxes and compliance: Included
- No additional fees for subscriptions, dunning, or tax handling
Current Status Post-Acquisition
Stripe acquired Lemon Squeezy in July 2024. Lemon Squeezy still operates independently with the same team. However:
- Product roadmap decisions are now influenced by Stripe's broader strategy
- Some developers are cautious about building critical payment infrastructure on a platform post-acquisition
- No public deprecation plans announced, but uncertainty exists
API Integration
import LemonSqueezy from "@lemonsqueezy/lemonsqueezy.js";
const ls = new LemonSqueezy({ apiKey: process.env.LEMONSQUEEZY_API_KEY });
// Create a checkout URL
const checkout = await ls.createCheckout(storeId, variantId, {
checkoutData: {
email: "customer@example.com",
custom: { user_id: "user_123" },
},
checkoutOptions: { embed: false, media: true },
productOptions: {
redirectUrl: "https://your-app.com/welcome",
receiptButtonText: "Back to App",
},
});
When to Choose Lemon Squeezy
Teams already integrated with Lemon Squeezy that don't want to migrate, simple digital product stores where the established Lemon Squeezy ecosystem (affiliate programs, reviews) matters, or teams that prefer the Lemon Squeezy UI for managing products and customers.
Decision Framework
| Scenario | Recommended |
|---|---|
| Indie developer, global sales | Polar |
| Open-source monetization | Polar |
| Lowest MoR fee | Polar (4% + 40¢) |
| $1M+ ARR, in-house accounting | Stripe |
| Highest billing feature depth | Stripe |
| Volume discounts | Stripe |
| Simplest setup, established MoR | Lemon Squeezy |
| Developer tools SaaS, early-stage | Polar |
| EU VAT handling without hassle | Polar or Lemon Squeezy |
| Subscription + usage-based billing | Stripe |
Verdict
Polar is the recommendation for developer tools and early-stage SaaS in 2026. The lowest MoR fees in the market, open-source codebase, and developer-native SDK experience make it the modern choice for solo developers and small teams who want to sell globally without handling tax compliance.
Stripe is the right choice for businesses with the scale and resources to handle tax compliance themselves, or for teams that need billing capabilities Polar doesn't yet offer (complex proration, multi-currency reporting, advanced usage-based billing). The fee savings vs. MoR platforms compound significantly at $1M+ ARR.
Lemon Squeezy remains a valid choice for existing users and teams that prefer its product management UI — but the post-acquisition uncertainty makes it a less compelling starting point for new projects in 2026.
Compare payment API pricing, tax compliance features, and integration documentation at APIScout — find the right payment platform for your software business.