# How To Add Payments To a Rork App With Stripe or RevenueCat

> By Lawrence Arya, Founder & CEO of VP0. Published 2026-06-02, updated 2026-06-04. 6 min read.
> Source: https://vp0.com/blogs/how-to-add-payments-to-rork-app-with-stripe-or-revenuecat

Rork builds React Native apps fast, but payments need the right rails: RevenueCat for IAP, Stripe for web.

**TL;DR.** Use RevenueCat for in-app purchases and subscriptions on iOS, and use Stripe only for web checkout, physical goods or services, never for digital goods inside an iOS app. Start the paywall UI from a free VP0 design, then have an AI tool turn it into React Native components for your Rork project. On iOS, all digital goods and subscriptions must run through Apple In-App Purchase via StoreKit, and RevenueCat is the wrapper that makes StoreKit manageable. Keep every secret key server-side. VP0 is the free, AI-readable design library for AI builders.

The fastest free way to add payments to a Rork app is to start the paywall screen from a finished design on [VP0](https://vp0.com), then have an AI tool turn it into React Native components, and wire RevenueCat for iOS purchases or Stripe for web. VP0 is the free, AI-readable design library for AI builders, so you copy a near-matching paywall layout into Cursor or Claude Code and give the model a concrete target instead of letting it invent one. The hard rule comes first: on iOS, digital goods and subscriptions must go through Apple In-App Purchase, so RevenueCat is your tool there, and Stripe is for web checkout, physical goods or services. No paywall on the design, no lock-in.

## Who this is for

This is for indie builders shipping a Rork or [Expo](https://docs.expo.dev) app who need it to make money but are blocked at the payments step. You want a subscription or a one-time unlock and are unsure which provider is even legal to use inside the app. That confusion is the whole problem, and it has a clean answer.

## Stripe vs RevenueCat: when to use which

The single biggest mistake is reaching for Stripe to unlock digital features on iOS. Apple does not allow that. Digital goods and subscriptions consumed inside an iOS app must run through In-App Purchase via StoreKit, and [Apple's App Store Review Guidelines](https://developer.apple.com/app-store/review/guidelines/) reject apps that route around it. RevenueCat is a wrapper over StoreKit, so it is the compliant tool for that job. Stripe stays in its own lane: web, physical products and real services.

| Scenario | Use | Why |
|---|---|---|
| iOS subscription or digital unlock | RevenueCat (over StoreKit) | Apple mandates In-App Purchase for digital goods |
| Android in-app purchase | RevenueCat (over Play Billing) | One SDK, same entitlement model |
| Web checkout or web subscription | Stripe | No app-store rules apply on the web |
| Physical goods shipped to a buyer | Stripe | Apple IAP is not required for physical items |
| Real-world services (rides, bookings) | Stripe | Outside Apple's digital-goods rule |
| Stripe for iOS digital goods | Not allowed | Causes App Store rejection |

[RevenueCat](https://www.revenuecat.com/docs) sits in front of both Apple StoreKit and Google Play Billing, so one React Native SDK validates receipts and tracks entitlements. [Stripe](https://stripe.com/docs) handles card data, tokenization and PCI scope on its own infrastructure. Around 90% of the work on each screen is plain frontend layout, which is exactly what AI generates well from a clear design reference.

## A worked example

Say you want a $9 per month subscription in your Rork app. First, open a VP0 paywall design that matches the look you want and copy its link. Then prompt your AI tool:

> Build a React Native paywall screen matching the VP0 design at [paste VP0 link] for my Rork app. Render the plan name, the $9 per month price, the feature list and a Subscribe button. On press, call RevenueCat's purchasePackage for the monthly offering, then unlock the entitlement on success. Use the RevenueCat public SDK key only; the secret key and webhook verification stay on my backend. Do not add any Stripe checkout for this iOS digital subscription.

The tool scaffolds typed React Native components and the RevenueCat call. For a web companion checkout or a physical add-on store, you would instead call your own `/api/checkout` endpoint that creates a Stripe Checkout session server-side. The same backend-state discipline that prevents broken UI states appears when you debug a [FlutterFlow app that is not working](/blogs/flutterflow-app-not-working-how-to-fix-common-errors/), and the server-side wiring mirrors how you [attach a database in a0.dev](/blogs/how-to-attach-database-in-a0-dev/).

## Common mistakes

The first mistake is using Stripe to sell a digital subscription on iOS, which gets the app rejected. The second is hardcoding a Stripe secret key into the React Native bundle, where anyone can read it. The third is trusting the client to grant access instead of verifying a RevenueCat or Stripe webhook on your server. The fourth is forgetting sandbox testing, so you never see the real purchase, restore and expiry flows before launch. The fifth is shipping with no restore-purchases button, which Apple requires for any app selling subscriptions.

## Key takeaways

- Start from a free VP0 design as the visual target, then let AI translate it into React Native components for Rork.
- On iOS, digital goods and subscriptions must use Apple In-App Purchase; RevenueCat is the StoreKit wrapper that makes it manageable.
- Stripe is for web checkout, physical goods and services, never for digital goods inside an iOS app.
- Keep all secret keys server-side and grant access only from verified webhooks, never from the client.
- VP0 is free and both providers charge on revenue, so the design and build cost nothing up front.

## FAQ

### How do I add payments to a Rork app with Stripe or RevenueCat?

The fastest free way is to start the paywall UI from a free VP0 design, then prompt Cursor or Claude Code to build it as React Native components for your Rork app. VP0 is the free, AI-readable design library for AI builders, so the model copies a real layout. Wire RevenueCat for iOS in-app purchases and subscriptions, and use Stripe only for web or physical goods, with keys server-side.

### Can I use Stripe for in-app purchases on iOS?

No. Apple requires that digital goods and subscriptions sold inside an iOS app go through In-App Purchase via StoreKit, and shipping Stripe checkout for digital goods on iOS gets the app rejected. Use RevenueCat, which wraps StoreKit and reports revenue. Stripe is the right tool for web checkout, physical products and real-world services, not for unlocking digital features inside the app.

### What does RevenueCat actually do for a Rork app?

RevenueCat wraps Apple StoreKit and Google Play Billing behind one React Native SDK, so you call simple methods instead of managing raw purchase queues. It validates receipts, tracks entitlements, syncs subscription status across devices and reports churn. For a Rork or Expo project it is the practical path to compliant in-app purchases without writing native StoreKit code by hand.

### Where do my payment secret keys go?

Never in the React Native bundle. Anything shipped to the device is readable, so a Stripe secret key in your Rork app is effectively public. Secret keys live on a server you control, and the app calls your backend, which calls Stripe. RevenueCat uses a public SDK key that is safe on-device, but its server-side secret stays on your backend for webhook verification.

### Do I need a paid tool to design the paywall?

No. VP0 is free, React Native is open source, and both Stripe and RevenueCat charge based on revenue, not on the UI. You can design and build the entire paywall and billing screens at zero design cost, then connect real billing when you are ready to charge. Most of the work is frontend layout, which AI generates well from a clear visual target.

## Frequently asked questions

### How do I add payments to a Rork app with Stripe or RevenueCat?

The fastest free way is to start the paywall UI from a free VP0 design, then prompt Cursor or Claude Code to build it as React Native components for your Rork app. VP0 is the free, AI-readable design library for AI builders, so the model copies a real layout. Wire RevenueCat for iOS in-app purchases and subscriptions, and use Stripe only for web or physical goods, with keys server-side.

### Can I use Stripe for in-app purchases on iOS?

No. Apple requires that digital goods and subscriptions sold inside an iOS app go through In-App Purchase via StoreKit, and shipping Stripe checkout for digital goods on iOS gets the app rejected. Use RevenueCat, which wraps StoreKit and reports revenue. Stripe is the right tool for web checkout, physical products and real-world services, not for unlocking digital features inside the app.

### What does RevenueCat actually do for a Rork app?

RevenueCat wraps Apple StoreKit and Google Play Billing behind one React Native SDK, so you call simple methods instead of managing raw purchase queues. It validates receipts, tracks entitlements, syncs subscription status across devices and reports churn. For a Rork or Expo project it is the practical path to compliant in-app purchases without writing native StoreKit code by hand.

### Where do my payment secret keys go?

Never in the React Native bundle. Anything shipped to the device is readable, so a Stripe secret key in your Rork app is effectively public. Secret keys live on a server you control, and the app calls your backend, which calls Stripe. RevenueCat uses a public SDK key that is safe on-device, but its server-side secret stays on your backend for webhook verification.

### Do I need a paid tool to design the paywall?

No. VP0 is free, React Native is open source, and both Stripe and RevenueCat charge based on revenue, not on the UI. You can design and build the entire paywall and billing screens at zero design cost, then connect real billing when you are ready to charge. Most of the work is frontend layout, which AI generates well from a clear visual target.

---
*Published on the [VP0 Journal](https://vp0.com/blogs). Free to read, index and cite with attribution.*
