Stripe, Merchant of Record, or In-App Purchases? Picking a Payments Stack Without Regretting It
TL;DR There are three real options: a payment processor (Stripe), a Merchant of Record (Paddle, Lemon Squeezy), or app store billing (Apple/Google, usually via RevenueCat). The decision is about who is legally the seller — that determines who owns tax, disputes, and refunds. Fees are secondary. Native mobile app selling digital features? IAP isn't a choice, it's a constraint. Plan a cheaper web…
When deciding on a payments stack for a business, there are three primary options to consider: a payment processor like Stripe, a Merchant of Record (MoR) such as Paddle or Lemon Squeezy, or app store billing through platforms like Apple or Google using RevenueCat. The primary factor in this decision is who is legally considered the seller, as this determines who is responsible for taxes, disputes, and refunds. Although fees play a role, they are not the main deciding factor.
For businesses selling digital features via native mobile apps, Apple's In-App Purchases (IAP) cannot be used as a separate option, as it is a restriction rather than a choice. A balanced approach involves combining a cheaper web checkout with the chosen payment solution.
Regardless of the chosen method, it is essential to create a unified entitlement layer that receives data from webhooks. This approach should be implemented before adding a second payment channel. The code for handling webhook events, entitlement management, and cross-platform access checks is provided below.
Stripe, being the seller, allows for complete control over checkout and pricing logic. Stripe Tax handles tax calculation, while the business is responsible for tax registration and filing. However, chargebacks and dispute evidence are the business's responsibility. Entitlement logic is managed primarily through handling webhooks, with the provided example showing a basic Stripe webhook handler.
Alternatively, using a Merchant of Record like Paddle or Lemon Squeezy means the provider is legally the seller. Their name appears on receipts, and they handle tax calculation, collection, and remittance, including chargeback management. While this option reduces the business's operational burden, it comes at a higher cost (around 5% plus a fixed fee) and slower payouts. The webhook handling process remains largely the same, with the primary difference being the event names.
Lastly, opting for app store billing via Apple or Google using RevenueCat removes the need for handling tax and disputes. However, this choice sacrifices control over pricing and checkout logic, with slower payouts typically occurring bi-weekly or monthly. Similar to the other options, a unified entitlement layer powered by webhooks is required.
In conclusion, the decision on the payments stack should weigh the trade-offs between control, cost, and operational complexity. Webhook-based entitlement management is a crucial component in all three options, regardless of who is legally considered the seller.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.