Using a merchant of record with ShipFast, supastarter or Makerkit: what you still wire (2026)

See which merchant of record providers work with ShipFast, supastarter, Makerkit and other SaaS kits, plus the webhooks, setup steps and fees you still own.

BY SANDRO ZWEIG

Summarize with AI

No headings found on page

Summarize with AI

No headings found on page

Most SaaS kits let you swap Stripe for a merchant of record such as Lemon Squeezy, Polar, Paddle, Creem or Dodo, which then handles VAT and sales tax. You still create products, map IDs, register a webhook and handle renewal events yourself. tiun removes the webhook as well, because sign-in, billing and access live in one system.

Merchant of record support by kit

Kit

Lemon Squeezy

Polar

Paddle

Creem

Dodo

ShipFast

Yes

Not shown in docs

Not shown in docs

Not shown in docs

Not shown in docs

supastarter

Yes

Yes

Not checked

Yes

Yes

Makerkit

Yes

Not checked

Yes

Not checked

Not checked

TurboStarter

Yes

Yes

Not checked

Not checked

Yes

OpenSaaS

Yes

Yes

Not checked

Not checked

Not checked

Not checked means the pairing fell outside our 12 October 2026 check, so confirm it in the kit's own docs before you buy. For the kits themselves, see our roundup of SaaS boilerplates.

Lemon Squeezy is the only provider every kit above supports. It is also moving its users to Stripe Managed Payments, which is covered further down.

Kits added merchant of record options because of tax

With Stripe as your processor, you are the seller. Stripe moves the money, and VAT, sales tax and the registrations behind them stay with you. A merchant of record becomes the seller instead, so it takes on VAT and sales tax for each sale. The difference is set out in payment processor vs merchant of record.

The trade is price. OpenSaaS says so plainly in its payments docs: Stripe has the cheaper fees, while Lemon Squeezy and Polar act as merchant of record and charge more for it. The fee table further down shows how much more.

Kits now present this choice as a dropdown or a config value. Choosing a provider settles who files the tax. Your app still has to learn when someone pays, renews, misses a payment or leaves, and that part is code that each kit covers to a different degree.

Steps every pairing makes you do

Whichever kit and provider you combine, setup follows the same pattern.

Step

What you do

Products

Create each product and price in the provider's dashboard

IDs

Copy the product or variant IDs into environment variables so the kit can map them to plans

API key

Generate a key in the provider's dashboard and add it to your environment

Webhook

Register your app's webhook URL with the provider and store its signing secret

Test and live

Create the products and IDs again for live mode, and keep the test set and the live set apart

None of this takes long on the first day. The cost shows up later, when a price changes, a plan is added or a live ID points at a product that only exists in test mode. Each of those changes touches the provider's dashboard, your environment variables and the kit's config, and they have to agree with each other. For everything else a kit leaves you beyond payments, see what you still build after buying a SaaS boilerplate.

Pairing by pairing

The table lists what each kit's own docs say its webhook handler covers, and the limits those docs state.

Kit and provider

Webhook events handled

Documented limits

Source

ShipFast + Lemon Squeezy

2: order created, subscription cancelled

Renewals, past due, plan changes, refunds and expiry left to you

ShipFast payments docs

supastarter + Lemon Squeezy

Select all events

One currency per store

supastarter docs

supastarter + Polar

5: order created, subscription created, updated, cancelled, revoked

A product per plan and per interval

supastarter docs

supastarter + Creem

11

None stated

supastarter docs

supastarter + Dodo

9

Live mode tied to production build

supastarter docs

Makerkit + Lemon Squeezy

4

One line item per plan; no mixing flat, metered and per-seat

Makerkit docs

Makerkit + Paddle

Not documented on page

No metered subscriptions

Makerkit docs

TurboStarter + Lemon Squeezy

4

Discounts duplicated in config

TurboStarter docs

TurboStarter + Polar

4

A product per pricing option

TurboStarter docs

TurboStarter + Dodo

12

Product model does not map to one product with several prices

TurboStarter docs

OpenSaaS + Lemon Squeezy

4

Delete unused provider code yourself

OpenSaaS docs

OpenSaaS + Polar

2: order paid, subscription updated

Separate sandbox and production organisations

OpenSaaS docs

The spread is wide. ShipFast's Lemon Squeezy sample handles two events, while TurboStarter's Dodo integration handles twelve, and supastarter asks you to select every Lemon Squeezy event when you register the webhook. A higher count means the kit has written more of the handling for you. It also means more provider-specific code inside your app, which matters if you later change provider.

Makerkit's Paddle page does not list the events it handles, so read the handler code before you rely on it. Some pairings also carry setup conditions: supastarter ties Dodo's live mode to the production build, and OpenSaaS needs separate sandbox and production organisations for Polar.

Work you still own after setup

The wider implementation work is covered in our guide to adding auth and billing to a SaaS.

Renewals, failed payments and refunds

ShipFast's sample handler covers order created and subscription cancelled. Its docs leave renewals, past due states, plan changes, refunds and expiry to you. With only the sample handler in place, nothing in your app reacts when a renewal payment fails or a customer is refunded. Each of those cases needs a handler that updates the user's access in your database, plus a test run against the provider's test mode.

Cancelled and revoked on Polar

supastarter's Polar integration handles subscription cancelled and subscription revoked as separate events. Your access logic has to decide what each one means for the user and when their access ends. Read Polar's own definitions of the two events before you write that logic, because the kit passes the decision to you.

Lemon Squeezy's currency and plan shape

supastarter's docs note one currency per Lemon Squeezy store. Makerkit's docs note one line item per plan, with no mixing of flat, metered and per-seat pricing inside a plan. If you want a base fee plus seats, design for that before you pick this pairing. TurboStarter's Lemon Squeezy integration also needs discounts set up twice, once with the provider and again in the kit's config.

Metered billing on Paddle

Makerkit's Paddle integration does not support metered subscriptions. If you charge by usage, that rules the pairing out on Makerkit.

A product per interval

supastarter with Polar needs a product for each plan and each billing interval, so a plan sold monthly and yearly becomes two products. TurboStarter with Polar needs a product for each pricing option. TurboStarter's Dodo docs note that Dodo's product model does not map to one product with several prices. Each extra product is one more ID in your environment variables and one more place for test and live settings to drift apart.

Test and live drift

Every pairing keeps separate test and live IDs, so every product exists twice and the live copy has to match the plan in your config. Before launch, check that each live ID resolves to the right product in live mode. OpenSaaS also asks you to delete the code for providers you do not use, which is worth doing early so dead handlers do not linger next to the live one.

Lemon Squeezy is moving to Stripe Managed Payments

Lemon Squeezy belongs to Stripe. Its own update says the goal is to give users an easy way to migrate to Stripe Managed Payments. The update states no deadline.

Stripe's docs set out what Stripe Managed Payments supports today.

Stripe Managed Payments

Per Stripe's docs

Fee

Stripe's fees plus 3.5%, and 0.7% for Billing on subscriptions

Not supported

Connect, Elements, and subscriptions created outside Checkout or Payment Links

At checkout

Customers see Link as the merchant

Who can sell

Sellers in the US, Canada, 30 European countries, Australia, Hong Kong, Japan and Singapore

ShipFast's docs show Lemon Squeezy as the only merchant of record option. If you built on that pairing and later move to Stripe Managed Payments, your subscriptions need to run through Checkout or Payment Links, a custom form built on Elements will not carry over, and your customers will see Link named as the merchant. You will also be wiring a different provider's events, so the Lemon Squeezy handler does not move across as it is. If you sell from a country outside Stripe's list, Stripe Managed Payments is not open to you. The full cost picture is in what Stripe Managed Payments costs.

If you are starting a kit project today and want Lemon Squeezy, read its migration update first and decide whether you would rather wire Stripe Managed Payments, or another provider, from the start.

Check before you pick Paddle

Paddle reviews your domain before you can sell. Its restricted categories include content generation. If your app produces text, images or other generated output, read Paddle's list and get through the review before you build billing around it. On Makerkit, usage-priced apps also meet the lack of metered subscriptions on Paddle, so an AI product charging per generation has more than one reason to check this pairing early.

Fees by provider

Provider

Rate

Extras

Source

Paddle

5% + 50c

All-inclusive; FX margin up to 1.5% at payout

Paddle pricing

Polar

Starter 5% + 50c; Pro $20 a month, 3.8% + 40c

+1.5% non-US cards

Polar pricing

Lemon Squeezy

5% + 50c

+0.5% subscriptions, +1.5% international, +1.5% PayPal

Lemon Squeezy fees

Creem

3.9% + 40c

No international card fee stated; tax in 50+ countries (Creem's claim)

Creem pricing

Dodo Payments

4% + 40c US

+0.5% subscriptions, +1.5% international

Dodo pricing

Stripe Managed Payments

Stripe fees + 3.5%

+0.7% Billing for subscriptions

Stripe docs

tiun

2.9% + $0.30

+0.5% subscriptions, 1.5% payout fee

tiun pricing

Read the extras column against your own customers. Paddle's rate is all-inclusive, with an FX margin of up to 1.5% at payout. Lemon Squeezy and Dodo each add 0.5% on subscriptions and 1.5% on international payments, so an international subscription costs two percentage points above the headline rate, and Lemon Squeezy adds a further 1.5% for PayPal. Polar adds 1.5% for non-US cards. Its plans changed on 27 May 2026, so comparisons written before then may quote old rates.

Creem states no international card fee and says it handles tax in more than 50 countries. Both are Creem's own claims. Stripe Managed Payments sits on top of Stripe's standard fees rather than replacing them. tiun charges 2.9% + $0.30, adds 0.5% on subscriptions and takes 1.5% when it pays you out. For a ranking by fit rather than by price, see the best merchant of record for EU SaaS.

Or skip the wiring

Every pairing above leaves you two systems to keep in step: the kit's auth and database on one side, the provider's products and events on the other, joined by a webhook. tiun is a merchant of record that also handles sign-in and access, so there is no renewal webhook to write and no product IDs to sync with a separate auth system. When a payment renews or fails, access changes in the system that took the payment.

That is the case for tiun over buying a kit: you reach a paid product faster because the billing, entitlement, webhook and tax work a kit leaves you is already done. tiun is not a database. Keep Supabase, Firebase or whatever your app already uses for its data, and use tiun for the part between a visitor and a paying, signed-in customer. If you are still deciding whether a kit is worth buying at all, start with our starter kit vs backend comparison.

tiun has limits you should weigh before choosing it. Sign-in is by email and a one-time code, with no passwords, no social login and no SSO. New users also add a phone number, and the code arrives by SMS with email as the fallback. Some people will not want to give a phone number to try a product, and if your audience expects Google sign-in or SSO, tiun does not offer either. Users can be signed in during checkout, which removes a separate sign-up step. There are no organisations, so if you sell to teams who share one account, tiun does not fit yet. The 1.5% payout fee sits on top of the transaction fee, and it belongs in any cost comparison.

Price tiun against Polar and Paddle before you decide, using your own mix of subscriptions, countries and payout currency.

Frequently asked questions

Can I use Lemon Squeezy with ShipFast?

Yes. ShipFast's payments docs show Lemon Squeezy as its merchant of record option. The sample webhook handles order created and subscription cancelled, and leaves renewals, past due states, plan changes, refunds and expiry to you. Lemon Squeezy is moving its users to Stripe Managed Payments, so read its update before you start.

Which SaaS boilerplates support Polar?

Of the kits we checked, supastarter, TurboStarter and OpenSaaS document Polar. supastarter handles five Polar events and needs a product per plan and per interval. TurboStarter handles four and needs a product per pricing option. OpenSaaS handles two and needs separate sandbox and production organisations. ShipFast's docs show only Lemon Squeezy.

What happens to Lemon Squeezy users now that Stripe owns it?

Lemon Squeezy says its goal is to give users an easy way to migrate to Stripe Managed Payments, and it states no deadline. Stripe Managed Payments adds 3.5% to Stripe's fees, does not support Connect or Elements or subscriptions created outside Checkout or Payment Links, and shows customers Link as the merchant.

Do I still need webhooks with a merchant of record?

With every kit pairing in our check, yes. The merchant of record handles tax, but your app learns about payments, renewals and cancellations through a webhook you register and handle. Polar and Paddle both work this way. tiun is the exception, because sign-in, billing and access sit in one system, so there is no renewal webhook to write.

Which merchant of record is cheapest for a SaaS?

It depends on where your customers are and whether you sell subscriptions. On headline rates, Polar Pro is 3.8% + 40c plus $20 a month, Creem 3.9% + 40c, Dodo 4% + 40c in the US, and Paddle, Polar Starter and Lemon Squeezy 5% + 50c. Lemon Squeezy and Dodo add 0.5% for subscriptions and 1.5% for international payments, while Paddle is all-inclusive. tiun is 2.9% + $0.30, plus 0.5% on subscriptions and a 1.5% payout fee.

Summarize with AI