Skip to main content
Remix Remix Guide

Best Payment Processing for Remix (2026)

Compare the best payment solutions for Remix. We review Stripe, LemonSqueezy, Paddle, and more with action integration, webhook handling, and subscription support.

Remix's action-based form handling makes payment flows feel natural—checkout forms submit to actions, webhooks hit resource routes. The challenge is handling the complexity of subscriptions, taxes, and webhook verification. Your choice depends on whether you want to handle compliance yourself or let a Merchant of Record do it.

Why This Matters

Payments are where your business makes money. A broken checkout or missed webhook means lost revenue. Tax compliance is increasingly complex with global sales. Some providers (Merchant of Record) handle all this for you, while others (Stripe) give you control but responsibility.

Key Considerations

01

Merchant of Record

MoR providers (Paddle, LemonSqueezy) are the legal seller, handling taxes and compliance. You get money minus fees. Non-MoR (Stripe) means you're the seller and handle taxes yourself.

02

Action Integration

Checkout sessions, customer portal links, and subscription management all work well in Remix actions. The SDK should be callable from server-side code.

03

Webhook Handling

Remix resource routes are perfect for webhooks. You need to verify signatures, handle events idempotently, and update your database. All providers support this pattern.

04

Subscription Management

If you're building SaaS, you need upgrades, downgrades, cancellations, trials, and dunning. Some providers handle this better than others.

05

Checkout Experience

Hosted checkout (redirect to payment page) vs embedded checkout (inline form). Hosted is simpler; embedded looks more polished. Stripe supports both.

Our Recommendations

Stripe
#1

Stripe

Best Overall Excellent Support Official SDK

Stripe is the developer's choice for payments. Best API, comprehensive docs, lowest fees (2.9% + 30¢). You handle tax compliance, but Stripe Tax can help. Works perfectly with Remix actions and resource routes for webhooks.

npm install stripe @stripe/stripe-js
LemonSqueezy
#2

LemonSqueezy

Best for Indie Hackers Good Support Official SDK

LemonSqueezy is the Merchant of Record built for indie hackers. They handle all taxes and compliance. Higher fees (5% + 50¢) but zero tax headaches. Perfect for digital products and SaaS. Modern API works well with Remix.

npm install @lemonsqueezy/lemonsqueezy.js
Paddle
#3

Paddle

Best MoR for SaaS Good Support Official SDK

Paddle is a mature MoR focused on B2B SaaS. Handles global taxes, invoicing, and compliance. Higher fees than Stripe but professional-grade invoicing. Paddle Billing has improved APIs that work well with Remix.

npm install @paddle/paddle-js
S
#4

stripe-billing

Best for Subscriptions Excellent Support Official SDK

Stripe Billing adds subscription management to Stripe. Customer portal, usage-based billing, prorations, dunning. More work than MoR but maximum flexibility and lower fees. Use with Stripe Tax for compliance.

npm install stripe

Quick Comparison

Service TypeScript Edge Free Tier Setup Time
Stripe
full No monthly fee 30 min
LemonSqueezy
full No monthly fee 15 min
Paddle
full No monthly fee 20 min

Quick Start

Create Stripe Checkout in Remix Action app/routes/api.checkout.ts
import { redirect, ActionFunctionArgs } from '@remix-run/node';
import Stripe from 'stripe';

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

export async function action({ request }: ActionFunctionArgs) {
  const formData = await request.formData();
  const priceId = formData.get('priceId') as string;

  const session = await stripe.checkout.sessions.create({
    mode: 'subscription',
    payment_method_types: ['card'],
    line_items: [{ price: priceId, quantity: 1 }],
    success_url: `${process.env.APP_URL}/success?session_id={CHECKOUT_SESSION_ID}`,
    cancel_url: `${process.env.APP_URL}/pricing`,
  });

  return redirect(session.url!);
}

Common Integration Patterns

Stripe + Clerk + Prisma

Stripe for payments, Clerk for auth, Prisma for data. Store Stripe customer ID on user record. Standard SaaS stack for Remix.

stripe clerk prisma

LemonSqueezy + Supabase

LemonSqueezy handles payments and taxes, Supabase for auth and database. Webhook syncs subscription status. Zero-hassle stack for indie hackers.

lemonsqueezy supabase

Paddle + WorkOS

Enterprise SaaS stack. Paddle for B2B payments with proper invoicing, WorkOS for enterprise SSO. Ideal for selling to companies.

paddle workos

Frequently Asked Questions

Should I use Stripe or a Merchant of Record for my Remix SaaS?
Use Stripe if you want lower fees and control. Use Paddle/LemonSqueezy if you don't want to deal with sales tax, VAT, and invoicing. For indie hackers, MoR simplifies everything at the cost of higher fees.
How do I handle Stripe webhooks in Remix?
Create a resource route (app/routes/webhooks.stripe.ts) with an action function. Verify the webhook signature with stripe.webhooks.constructEvent(), then handle events. Store processed event IDs to ensure idempotency.
What payment processor has the lowest fees?
Stripe has the lowest fees at 2.9% + 30¢ (US cards). MoR providers like Paddle (5%+) and LemonSqueezy (5% + 50¢) charge more because they handle taxes. The tax savings often outweigh the higher fees for global sales.
Can I use Stripe with Remix on Cloudflare Workers?
The Stripe SDK has Node.js dependencies that don't work on Workers. You can use Stripe's REST API directly or deploy your payment routes to a Node.js runtime while using Workers for other routes.

Related Guides

Last updated: January 11, 2026