> ## Documentation Index
> Fetch the complete documentation index at: https://www.anything.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# RevenueCat

> Add subscriptions and in-app purchases to your iOS app

<Note>
  RevenueCat is for mobile apps. For web apps, use [Stripe](/payments/stripe).
</Note>

## Overview

Want to monetize your app? RevenueCat makes it simple to add subscriptions and in-app purchases to your iOS app without complex payment code.

Instead of wrestling with Apple's in-app purchase APIs or building your own payment infrastructure, RevenueCat handles subscription management, entitlements, and revenue tracking. You focus on building features; RevenueCat handles monetization.

Here's what you get:

* **Set up monetization quickly** - Configure subscriptions, one-time purchases, and premium features without writing payment code
* **Track revenue and growth** - Monitor revenue, analyze customer behavior, and understand what's driving your business
* **Test and optimize** - Build paywalls, A/B test pricing, and optimize your revenue strategy with real data

Apple processes all payments, but RevenueCat gives you the tools and insights to grow your app's revenue.

## Prerequisites

Before you begin, make sure you have:

* An [iOS mobile app project in Anything](/apps/mobile)
* **[An active Apple Developer Account](/apps/mobile/verify-apple-developer-account)** - Required to publish apps and use in-app purchases. Provides access to [App Store Connect](https://appstoreconnect.apple.com).
* A [RevenueCat](https://www.revenuecat.com) account
* **Business information completed in App Store Connect** - Before accepting payments, complete your banking information and tax forms under **App Store Connect > Business**. This is required for Apple to process payouts.

<Warning>
  How to verify your Apple Developer Account is Active? [Review this article](/apps/mobile/verify-apple-developer-account).
</Warning>

<div style={{position: 'relative', paddingBottom: '56.25%', height: 0}}>
  <iframe src="https://www.loom.com/embed/f8f63cd2455d415db77d9a22828e9c47" frameBorder="0" webkitAllowFullScreen mozAllowFullScreen allowFullScreen style={{position: 'absolute', top: 0, left: 0, width: '100%', height: '100%'}} />
</div>

## Setup

### Connect your accounts at the platform level

First, connect your accounts at the platform level to enable in-app purchases and subscriptions across all your projects.

<Steps>
  <Step title="Navigate to Settings">
    Go to **Dashboard > Settings > Accept Payments > Mobile**

    <Frame>
      <img src="https://mintcdn.com/create/NTtU9dOUKmHAGb0K/images/revcat.png?fit=max&auto=format&n=NTtU9dOUKmHAGb0K&q=85&s=ca372e1e5454748e303a0e2b257326b0" width="2034" height="929" data-path="images/revcat.png" />
    </Frame>
  </Step>

  <Step title="Connect App Store Connect">
    Connect your App Store Developer account to enable in-app purchases and subscriptions.
  </Step>

  <Step title="Connect RevenueCat">
    Connect your RevenueCat account to manage subscriptions and track revenue.

    <Note>
      During RevenueCat onboarding, you may see code snippets or packages. Ignore these for now. Anything handles the integration automatically.
    </Note>
  </Step>
</Steps>

### Add RevenueCat to your project

After connecting at the platform level, add RevenueCat to your project using the AI agent.

<div style={{position: 'relative', paddingBottom: '56.25%', height: 0}}>
  <iframe src="https://www.loom.com/embed/9c1ff16c66d0454f8c30ae38ae5e0050" frameBorder="0" webkitAllowFullScreen mozAllowFullScreen allowFullScreen style={{position: 'absolute', top: 0, left: 0, width: '100%', height: '100%'}} />
</div>

<Steps>
  <Step title="Open your project">
    Navigate to the mobile app project where you want to add RevenueCat.
  </Step>

  <Step title="Set up RevenueCat">
    In the chat, ask the agent to set up RevenueCat:

    ```
    "Add RevenueCat + App Store Connect to this project"
    ```

    The AI builder will automatically connect your project to matching projects in RevenueCat and App Store Connect, or create new ones if needed.
  </Step>

  <Step title="Configure products">
    The agent helps you set up subscription tiers and products. You can define:

    * Subscription plans (monthly, yearly, etc.)
    * One-time purchases
    * Entitlements that unlock features in your app
  </Step>
</Steps>

<Note>
  **Reviewing connections (optional)**: You can review the connections the AI builder made by going to **Project Settings > In app purchases**. This shows the connected projects in RevenueCat and App Store Connect, but you don't need to manually configure these—the AI handles it automatically.
</Note>

### Configure App Store Connect for Subscriptions

After the AI agent sets up your products, you need to complete the subscription configuration in App Store Connect to ensure your subscriptions are ready for submission.

<Steps>
  <Step title="Upload subscription screenshot">
    In App Store Connect, go to your subscription's **Review Information** section and upload a screenshot of your subscriptions page. The screenshot must match one of Apple's iPhone specifications. See [Apple's screenshot specifications](https://developer.apple.com/help/app-store-connect/reference/app-information/screenshot-specifications) for requirements.

    <Warning>
      Without a screenshot, your subscription will show `"missing metadata"` and cannot be submitted.
    </Warning>
  </Step>

  <Step title="Set subscription prices">
    Configure your subscription pricing in App Store Connect. Set the price for each subscription tier and region where you want to offer your subscriptions.
  </Step>

  <Step title="Configure price schedule and availability">
    Go to **Monetization > Pricing and Availability** in App Store Connect and ensure your app's price schedule and availability are properly configured.
  </Step>

  <Step title="Verify readiness">
    Check that your subscription shows **"Ready to submit"** status in both RevenueCat and App Store Connect. This confirms that all required metadata and configuration are complete.
  </Step>
</Steps>

## How it works

RevenueCat integrates automatically with your mobile app. Here's how the payment flow works:

1. **Configure products** using the AI agent in Anything. For example: `"Create a Pro Level Subscription that is 9.99 USD a month"`
2. **Users make purchases** through Apple's in-app purchase system (they see Apple's payment UI)
3. **Apple processes the payment** and takes their commission (typically 15-30%)
4. **RevenueCat receives the purchase event** from Apple and tracks subscription status
5. **RevenueCat unlocks features** in your app based on entitlements
6. **You receive payouts** from Apple (not RevenueCat) according to Apple's payout schedule

RevenueCat manages subscriptions and entitlements. Apple processes payments. No code is required. Everything is handled through prompts and configuration with the AI agent.

## Testing

### Testing in Expo Go

You can test your RevenueCat integration directly in [Expo Go](/apps/mobile/testing) on your device. This allows you to:

* Test purchases and subscriptions in Apple's sandbox environment
* Validate paywall functionality before going live
* Test subscription states and payment flows
* Preview your app natively on your device

To test RevenueCat in Expo Go:

1. **Install Expo Go** - Download [Expo Go](https://expo.dev/client) on your device
2. **Open your project** - Scan the QR code in the builder preview to open your app in Expo Go
3. **Test natively** - Preview and test your app directly on your device with full native functionality

For detailed instructions on testing mobile apps, see [Testing & Debugging Mobile Apps](/apps/mobile/testing). When you're ready to publish to the App Store, see [Publishing to iOS App Store](/launch/app-store) for instructions on submitting your app to App Store Connect.

### Testing on TestFlight

Submit your app to Apple via our system to test in TestFlight. Test purchases work in TestFlight's production-like environment. See [Publishing to iOS App Store](/launch/app-store) for submission instructions.

### Viewing Sandbox Purchases

When testing subscriptions, you can view sandbox purchases in your RevenueCat dashboard:

* Go to **RevenueCat > Customers > Sandbox** to see all test purchases and subscription activity
* Sandbox purchases appear only in RevenueCat—App Store Connect does not report sandbox purchase data
* This allows you to verify that purchases are being processed correctly during testing

### Production

Once your app is approved and released:

* Real payment processing through Apple's App Store
* Automatic App Store compliance
* Live analytics and customer management in your RevenueCat dashboard

## Preparing for Production

Before submitting your app to the App Store, ensure all requirements are met:

### Business Setup Checklist

* [ ] Banking information completed in **App Store Connect > Business**
* [ ] Tax forms completed in **App Store Connect > Business**
* [ ] Subscription screenshot uploaded (matches iPhone specifications)
* [ ] Subscription prices configured in App Store Connect
* [ ] Price schedule and availability set under **Monetization > Pricing and Availability**
* [ ] Subscription shows **"Ready to submit"** in both RevenueCat and App Store Connect

### Verification

The best way to verify everything is configured correctly is to check that your subscription products show **"Ready to submit"** status in both:

* Your RevenueCat dashboard
* App Store Connect

If you see this status in both places, your subscriptions are properly configured and ready for App Store submission.

## Troubleshooting

### Product Name Mismatch

**Issue**: Products not syncing between RevenueCat and App Store Connect.

**Solution**: Product names must be exactly the same in both RevenueCat and App Store Connect. For example, if your subscription is named `pro_plan` in RevenueCat, it must also be `pro_plan` in App Store Connect (case-sensitive). Mismatched names prevent the systems from matching products.

### "No Offerings" Error

**Issue**: Your app shows `"No offerings"` when trying to display subscriptions.

**Solution**: This error is usually caused by one of the following:

* Product name mismatch between RevenueCat and App Store Connect (see above)
* Missing subscription metadata in App Store Connect (screenshot not uploaded)
* Subscription prices not configured
* Service credentials not properly configured

Check that your subscription shows `"Ready to submit"` in both systems. If offerings fail to load on the first launch (especially on TestFlight), try closing and reopening the app. Anything retries automatically, but a cold start can sometimes take a moment. If issues persist, see [RevenueCat's troubleshooting guide](https://www.revenuecat.com/docs/offerings/troubleshooting-offerings) for more details.

### Missing Metadata

**Issue**: Subscription shows `"missing metadata"` in App Store Connect.

**Solution**:

* Upload a subscription screenshot in **Review Information > Screenshot** that matches Apple's iPhone specifications
* Ensure subscription prices are set
* Verify all required fields in App Store Connect are completed

### Service Credentials (Advanced)

<Note>
  The AI agent should automatically configure service credentials. Only follow these steps if you're experiencing connection issues.
</Note>

If products aren't syncing properly, you may need to manually verify that service credentials are configured:

* **In-app purchase key**: Should be configured in RevenueCat from App Store Connect. See [RevenueCat's IAP key configuration guide](https://www.revenuecat.com/docs/service-credentials/itunesconnect-app-specific-shared-secret/in-app-purchase-key-configuration).
* **App Store Connect API key**: Should be configured in RevenueCat. See [RevenueCat's ASC API key configuration guide](https://www.revenuecat.com/docs/service-credentials/itunesconnect-app-specific-shared-secret/app-store-connect-api-key-configuration).

***

## Related Articles

* [Mobile Development](/apps/mobile) - Build mobile applications
* [Publishing iOS](/launch/app-store) - Publish to App Store
* [Stripe Payments](/payments/stripe) - Web app payments
