Skip to main content

Polar vs Stripe vs Lemon Squeezy 2026

·APIScout Team
paymentspolarstripelemon squeezymerchant of recordsaas billingsubscription paymentsdeveloper tools

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

ProviderBase FeeMoR (Tax Handling)International CardsSubscriptions
Polar4% + 40¢Yes (included)+1.5%+0.5%
Stripe2.9% + 30¢No (handle yourself)+1.5%Included
Stripe + Tax2.9% + 30¢ + 0.5%Partial (still need registrations)+1.5%Included
Lemon Squeezy5% + 50¢Yes (included)IncludedIncluded
Paddle5% + 50¢Yes (included)IncludedIncluded

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 TypeRate
Base transaction4% + 40¢
International cards+1.5%
Subscription billing+0.5%
PayoutsStripe'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 TypeRate
Card processing2.9% + 30¢
International cards+1.5%
Stripe Tax+0.5%
Currency conversion+1%
Volume discountAvailable 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

ScenarioRecommended
Indie developer, global salesPolar
Open-source monetizationPolar
Lowest MoR feePolar (4% + 40¢)
$1M+ ARR, in-house accountingStripe
Highest billing feature depthStripe
Volume discountsStripe
Simplest setup, established MoRLemon Squeezy
Developer tools SaaS, early-stagePolar
EU VAT handling without hasslePolar or Lemon Squeezy
Subscription + usage-based billingStripe

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.

Comments