~/CLIRank

Best Payment API in 2026

Stripe vs PayPal vs Square vs Paddle vs LemonSqueezy

Real transaction fees, real setup times, working code. Last verified April 2026.

TL;DR
  • Best DX: Stripe - 15 min setup, deepest API surface, best docs
  • Cheapest per transaction: Stripe - 2.9% + $0.30
  • Best for tax compliance: Paddle - merchant of record, handles VAT globally
  • Fastest to ship: LemonSqueezy - 10 min, hosted checkout, zero tax headaches
  • Best for omnichannel: Square - online + in-person POS in one platform

Pricing comparison

Cost columns assume $50 average transaction value.

APITransaction fee100 txns/mo
(at $50 avg)
1K txns/mo
(at $50 avg)
10K txns/mo
(at $50 avg)
Stripe2.9% + $0.30 per transaction$175Pick$1750$17500
PayPal3.49% + $0.49 for PayPal/Venmo$194$1940$19400
Square3.3% + $0.30 online$195$1950$16149Pick
Paddle5% + $0.50 per transaction$300$3000$30000
LemonSqueezy5% + $0.50 per transaction$300$3000$30000

Setup complexity

APITime to first paymentLines of codeCredit card?Business verification?
Stripe15 min25 linesYesNo
PayPal45 min35 linesYesYes
Square30 min30 linesYesNo
Paddle30 min20 linesYesYes
LemonSqueezy10 minPick15 linesPickYesNo

Features

APISubscriptionsHosted checkoutWebhooks
StripeYesYesYes
PayPalYesYesYes
SquareYesYesYes
PaddleYesYesYes
LemonSqueezyYesYesYes

Quickstart code

Working TypeScript examples. Copy, set your API key, accept payments.

Stripe

15 min setup | 25 lines

Accept payments, manage subscriptions, invoices, and payouts globally.

Best developer experience and docs in paymentsSaaS and subscription billingMarketplaces with Connect for multi-party paymentsDeepest API surface with TypeScript types
No merchant-of-record - you handle tax compliance yourselfLow-value micro-transactions where $0.30 fixed fee hurts margins
import Stripe from 'stripe';

const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!);

const session = await stripe.checkout.sessions.create({
  mode: 'payment',
  line_items: [
    {
      price_data: {
        currency: 'usd',
        product_data: { name: 'My Product' },
        unit_amount: 5000, // $50.00 in cents
      },
      quantity: 1,
    },
  ],
  success_url: 'https://example.com/success',
  cancel_url: 'https://example.com/cancel',
});

console.log(session.url);
$175/mo (100 txns) | $1750/mo (1K txns) | $17500/mo (10K txns)Full details

PayPal

45 min setup | 35 lines

Integrate PayPal checkout, subscriptions, and payouts.

Consumer checkout where buyers already have PayPal accountsAdding PayPal/Venmo as secondary payment methodInternational consumer payments where PayPal trust matters
Developer experience - clunky API, mediocre docsB2B SaaS - feels unprofessional for business softwareHighest fixed fee ($0.49) among all options
import { Client, Environment, OrdersController } from '@paypal/paypal-server-sdk';

const client = new Client({
  clientCredentialsAuthCredentials: {
    oAuthClientId: process.env.PAYPAL_CLIENT_ID!,
    oAuthClientSecret: process.env.PAYPAL_CLIENT_SECRET!,
  },
  environment: Environment.Sandbox,
});

const ordersController = new OrdersController(client);

const { body } = await ordersController.ordersCreate({
  body: {
    intent: 'CAPTURE',
    purchaseUnits: [
      {
        amount: {
          currencyCode: 'USD',
          value: '50.00',
        },
      },
    ],
  },
});
$194/mo (100 txns) | $1940/mo (1K txns) | $19400/mo (10K txns)Full details

Square

30 min setup | 30 lines

In-person and online payment processing, inventory, and invoicing.

Omnichannel businesses selling online and in-personAlready using Square POS and want online paymentsSimple e-commerce with invoicing in one platform
Pure SaaS - subscription tooling is basic vs StripeInternational sellers - limited to US/UK/AU/CA/JP/FR/ES onlyDeep API customisation - narrower surface than Stripe
import { Client, Environment } from 'square';

const client = new Client({
  accessToken: process.env.SQUARE_ACCESS_TOKEN!,
  environment: Environment.Sandbox,
});

const { result } = await client.checkoutApi.createPaymentLink({
  idempotencyKey: crypto.randomUUID(),
  quickPay: {
    name: 'My Product',
    priceMoney: {
      amount: BigInt(5000),
      currency: 'USD',
    },
    locationId: process.env.SQUARE_LOCATION_ID!,
  },
});

console.log(result.paymentLink?.url);
$195/mo (100 txns) | $1950/mo (1K txns) | $16149/mo (10K txns)Full details

Paddle

30 min setup | 20 lines

Payments, tax, and subscriptions as merchant of record.

B2B SaaS selling globally with full tax complianceMerchant of record without building tax infrastructureSubscription businesses needing dunning and retention tools
Price-sensitive at volume - 5% + $0.50 is steepHeavy checkout customisation - Paddle controls the flowPhysical goods or non-software products
import { Environment, Paddle } from '@paddle/paddle-node-sdk';

const paddle = new Paddle(process.env.PADDLE_API_KEY!, {
  environment: Environment.sandbox,
});

const transaction = await paddle.transactions.create({
  items: [
    {
      price_id: 'pri_abc123',
      quantity: 1,
    },
  ],
  checkout: {
    url: 'https://example.com/checkout',
  },
});

console.log(transaction.checkout?.url);
$300/mo (100 txns) | $3000/mo (1K txns) | $30000/mo (10K txns)Full details

LemonSqueezy

10 min setup | 15 lines

Digital product sales with global tax handling.

Indie hackers and solo devs shipping fastDigital products, SaaS, and license keysSimplest merchant-of-record setup - fastest time to first payment
Enterprise or high-volume - same 5% + $0.50 as Paddle with fewer featuresComplex billing - lacks usage-based or metered billingNow owned by Stripe - future uncertain, may merge into Stripe Tax
import { lemonSqueezySetup, createCheckout } from '@lemonsqueezy/lemonsqueezy.js';

lemonSqueezySetup({ apiKey: process.env.LEMONSQUEEZY_API_KEY! });

const { data } = await createCheckout(process.env.LEMON_STORE_ID!, process.env.LEMON_VARIANT_ID!, {
  checkoutData: {
    custom: { user_id: 'usr_123' },
  },
});

console.log(data?.data?.attributes?.url);
$300/mo (100 txns) | $3000/mo (1K txns) | $30000/mo (10K txns)Full details

Which should you pick?

You want the best developer experience

Stripe. 15 minutes to first payment, best-in-class docs, TypeScript SDK with full type coverage. The default choice for any developer who wants control.

You want zero tax headaches

Paddle. Merchant of record - they handle VAT, sales tax, and GST collection and remittance in 200+ countries. You never think about tax compliance again.

You're an indie dev selling digital products

LemonSqueezy. Simple, merchant of record, license keys built in. 10 minutes to first payment. The fastest way to start selling software.

You need online + in-store payments

Square. POS hardware + online payments in one platform. The only option here that handles both physical retail and e-commerce natively.

Get a personalised recommendation

CLIRank's decision engine picks the best API for your specific volume, budget, and priorities. Works via API or MCP server - your agent can call it directly.

curl "https://clirank.dev/api/recommend?task=accept+payments&volume=1000&priority=cost"

Or install the MCP server: npx clirank-mcp-server@latest

Frequently asked questions

What is the cheapest payment API in 2026?

Stripe at 2.9% + $0.30 per transaction. On a $50 sale, that's $1.75 in fees. PayPal's Advanced Checkout is close at 2.89% + $0.29 for cards, but their standard PayPal/Venmo rate is 3.49% + $0.49. Paddle and LemonSqueezy charge 5% + $0.50 but include tax compliance.

Which payment API is easiest to integrate?

LemonSqueezy - 10 minutes to first payment with 15 lines of TypeScript. Stripe is a close second at 15 minutes with 25 lines, but offers a much deeper API surface for when you need it.

What's the difference between Stripe and Paddle?

With Stripe, you're the merchant of record. You collect payments, but you handle tax registration, collection, and remittance yourself (or add Stripe Tax). With Paddle, they're the merchant of record - they sell your product on your behalf and handle all tax compliance globally. Paddle costs more but eliminates tax operations entirely.

Which payment API handles sales tax automatically?

Paddle and LemonSqueezy. Both operate as merchant of record, handling VAT, sales tax, and GST collection and remittance in 200+ countries. Stripe offers Stripe Tax as an add-on, but you're still the merchant of record and responsible for filing.

Can I switch payment providers later?

Yes, but migration is harder than switching email APIs. Active subscriptions need to be migrated or re-created. Card tokens aren't portable between providers, so customers may need to re-enter payment details. Webhook endpoints and integration code all need updating. Budget 2-4 weeks for a clean migration.

Related