This sells subscriptions through Stripe's hosted Checkout in the system browser, so there's no native payments SDK at all (@stripe/stripe-react-native is deliberately not used). src/lib/payments.ts implements the shim - entitlements come from GET /api/stripe/entitlements for whoever the request's session proves - and the server side lives in your tree: src/app/api/stripe/{checkout,entitlements,webhook,return}+api.ts with the shared logic in src/server/stripe.ts. You also get /paywall as a modal, tests for both halves, and /examples/paywall with --with-examples. @/lib/payments keeps the same API whichever option you pick - pick Stripe when you're selling to the web as well, or when the 30% store cut isn't something you have to pay.
At a glance
- Runs in Expo Go
- Yes
- Files added
- 13
- npm packages
- 1
- Keys to paste
EXPO_PUBLIC_API_URL,EXPO_PUBLIC_STRIPE_PUBLISHABLE_KEY- Included in
- Pro
Set it up
bun run setup --payments stripeSetup copies the module in, installs SDK-matched versions and removes the options you did not pick. Then bun run doctor lists every key still missing, with a link to where you get it. The step-by-step guide is in the Stripe Checkout docs.
Other payments options
- RevenueCat - in-app subscriptions + paywall · dev build required (no Expo Go)
- Adapty - in-app subscriptions + Paywall Builder · dev build required (no Expo Go)
Get it
Stripe Checkout ships in Pro: one payment, lifetime updates. See pricing or browse every module.