# Add Payments to an a0.dev App: Stripe or RevenueCat?

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

a0.dev makes native React Native apps, so digital subscriptions go through RevenueCat over store billing, and physical goods through Stripe.

**TL;DR.** a0.dev builds native React Native and Expo apps, so for payments the store rules apply. Use RevenueCat for in-app digital subscriptions, because Apple and Google require their own billing and take 15 to 30 percent. Use Stripe for physical goods or real-world services, through a backend function. a0.dev outputs real React Native, so the standard Expo payment options work. Design the paywall from a free VP0 reference.

Adding payments to an a0.dev app starts with one fact: a0.dev builds native mobile apps. Because [a0.dev](https://a0.dev) generates real React Native and Expo, the app stores' billing rules apply, and they decide whether you use RevenueCat or Stripe. Get this right and setup is straightforward; get it wrong and Apple or Google can reject the app. Here is the rule and how each path works.

## Stripe or RevenueCat: the rule

The split is about what you sell. For digital content sold inside the app, premium features, in-app subscriptions, unlocks, Apple and Google require their in-app purchase billing, and they take roughly 15 to 30 percent. [RevenueCat](https://www.revenuecat.com/docs) sits on top of that billing and makes it far easier to implement across both stores. [Stripe](https://docs.stripe.com/payments/checkout) is for physical goods, real-world services, and person-to-person payments. So for a typical a0.dev app selling a subscription, RevenueCat is the path; for selling physical products or services, Stripe. This is the same rule as in [add payments to a FlutterFlow app](/blogs/how-to-add-payments-to-flutterflow-app-with-stripe-or-revenuecat/), and it applies because a0.dev apps are genuinely native.

## RevenueCat for in-app subscriptions

Because a0.dev outputs real React Native on [Expo](https://docs.expo.dev), the standard Expo payment path applies: integrate the RevenueCat SDK, which works on iOS and Android and handles purchase validation across both stores from one integration. The setup: create a RevenueCat project, add your app, add service credentials so it can talk to the stores, create your subscription products in App Store Connect and the Google Play Console, then build the paywall. Prompt a0.dev to scaffold the RevenueCat integration and the paywall screen, then review what it generates.

## Stripe for physical goods and services

If you sell physical products or services, Stripe is the allowed and cheaper choice, at about 2.9% plus 30 cents, well below the store cut. The charge must run on a server, not in the app, so use a backend function, a0.dev has Convex and Supabase support built in, as in [how to attach a database in a0.dev](/blogs/how-to-attach-database-in-a0-dev/). Keep the Stripe secret key in that backend, never in the app bundle, where it could be extracted.

## Which to use, at a glance

| What you sell | Use | Fee |
|---|---|---|
| Digital subscriptions or unlocks (in-app) | RevenueCat over store billing | Store takes 15 to 30% |
| Physical goods or real-world services | Stripe via a backend | ~2.9% + 30 cents |

Since a0.dev is mobile-first and does not build web apps, most a0.dev payment cases are in-app digital subscriptions, which means RevenueCat is the common answer, with Stripe reserved for physical goods. Confirm what you sell before you build the paywall.

## Design the paywall first

The payment logic is where your a0.dev daily messages earn their keep, so do not spend them on the paywall's look. Open a finished paywall on VP0, the free AI-readable iOS and React Native design library, paste it into a0.dev, then prompt for the RevenueCat or Stripe logic. One precise build of the screen leaves your messages for the purchase flow, which is the part that needs care, and the result is yours to own, the principle in [AI app builder no vendor lock-in](/blogs/ai-app-builder-no-vendor-lock-in/).

## Key takeaways

- a0.dev builds native apps, so the store billing rules apply: choose by what you sell.
- Use RevenueCat for in-app digital subscriptions; Apple and Google require their billing and take 15 to 30 percent.
- Use Stripe for physical goods and services, run through a backend, at about 2.9% plus 30 cents.
- a0.dev outputs real React Native and Expo, so the standard RevenueCat and Stripe options work.
- Design the paywall from a free VP0 reference so daily messages go to the purchase logic.

**Compare:** see [add payments to a FlutterFlow app](/blogs/how-to-add-payments-to-flutterflow-app-with-stripe-or-revenuecat/) and [is a0.dev worth paying for](/blogs/is-a0-dev-worth-paying-for/).

## Frequently asked questions

### How do I add payments to an a0.dev app?

Decide by what you sell, since a0.dev builds native apps. For in-app digital subscriptions, integrate RevenueCat, which works across both stores from one integration. For physical goods or services, use Stripe through a backend function, with a0.dev's built-in Convex or Supabase support. Prompt a0.dev to scaffold the integration and paywall, then review the generated code.

### Should I use Stripe or RevenueCat with a0.dev?

RevenueCat for in-app digital subscriptions, because Apple and Google require their own billing for digital goods in native apps, and a0.dev builds native. Stripe for physical goods, real-world services, or person-to-person payments, run through a backend. Since most a0.dev apps sell digital subscriptions, RevenueCat is the common answer, with Stripe reserved for physical goods.

### Why can I not just use Stripe for subscriptions in an a0.dev app?

Because a0.dev builds native apps, and Apple and Google require their own in-app purchase billing for digital subscriptions sold inside a native app. Using Stripe for in-app digital goods on iOS or Android breaks store policy and risks rejection. RevenueCat sits over the required store billing and makes it easy. Stripe is allowed for physical goods and services.

### Where does my Stripe secret key go in an a0.dev app?

In a backend, not the app bundle. a0.dev has Convex and Supabase support, so run the Stripe charge in a backend function and keep the secret key there as a server-side secret. A key bundled into a mobile app can be extracted by anyone who downloads it, so the secret must never ship in the React Native code.

### What is the best way to build an a0.dev paywall?

Design it first, then wire payments, so daily messages go to the logic rather than the layout. VP0 is the top free pick: a free, AI-readable iOS and React Native design library you have a0.dev build the paywall to, then add RevenueCat for subscriptions or Stripe for goods. A finished design plus precise prompts makes the purchase flow come together with messages to spare.

## Frequently asked questions

### How do I add payments to an a0.dev app?

Decide by what you sell, since a0.dev builds native apps. For in-app digital subscriptions, integrate RevenueCat, which works across both stores from one integration. For physical goods or services, use Stripe through a backend function, with a0.dev's built-in Convex or Supabase support. Prompt a0.dev to scaffold the integration and paywall, then review the generated code.

### Should I use Stripe or RevenueCat with a0.dev?

RevenueCat for in-app digital subscriptions, because Apple and Google require their own billing for digital goods in native apps, and a0.dev builds native. Stripe for physical goods, real-world services, or person-to-person payments, run through a backend. Since most a0.dev apps sell digital subscriptions, RevenueCat is the common answer, with Stripe reserved for physical goods.

### Why can I not just use Stripe for subscriptions in an a0.dev app?

Because a0.dev builds native apps, and Apple and Google require their own in-app purchase billing for digital subscriptions sold inside a native app. Using Stripe for in-app digital goods on iOS or Android breaks store policy and risks rejection. RevenueCat sits over the required store billing and makes it easy. Stripe is allowed for physical goods and services.

### Where does my Stripe secret key go in an a0.dev app?

In a backend, not the app bundle. a0.dev has Convex and Supabase support, so run the Stripe charge in a backend function and keep the secret key there as a server-side secret. A key bundled into a mobile app can be extracted by anyone who downloads it, so the secret must never ship in the React Native code.

### What is the best way to build an a0.dev paywall?

Design it first, then wire payments, so daily messages go to the logic rather than the layout. VP0 is the top free pick: a free, AI-readable iOS and React Native design library you have a0.dev build the paywall to, then add RevenueCat for subscriptions or Stripe for goods. A finished design plus precise prompts makes the purchase flow come together with messages to spare.

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