Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
2a7c13b
clarify test store
ekurutepe Sep 30, 2025
8071f94
introduce Test Store in Projects overview
ekurutepe Sep 30, 2025
8a67ba0
add a Test Store section
ekurutepe Sep 30, 2025
effe529
Disable swcHtmlMinimizer in configuration (#1177)
codykerns Oct 1, 2025
70cf1aa
more Test Store details
ekurutepe Oct 1, 2025
fd1969a
add Test Store info
ekurutepe Oct 1, 2025
66bc898
Test Store considerations in SDK config
ekurutepe Oct 1, 2025
384eac3
update launch checklist with test store
ekurutepe Oct 1, 2025
424aea5
sandbox testign with Test Store
ekurutepe Oct 1, 2025
b516080
simplify
ekurutepe Oct 1, 2025
201b7ca
add test store sandbox rules
ekurutepe Oct 2, 2025
32a2020
add clarification to Apple offer table
mshmoustafa Oct 1, 2025
d8e14e0
add store_transaction_id to non subscriptions objects (#1167)
alfondotnet Oct 2, 2025
662ddd7
added 60 min limitation to redemption link (#1179)
GuilhermeMota93 Oct 2, 2025
57b8067
Fixed RN code block awaiting for configure (#1180)
Jethro87 Oct 2, 2025
c466788
logIn method alias behavior doc improvement (#1181)
cperriam-rc Oct 3, 2025
64efc4f
Bump the all group with 2 updates (#1185)
dependabot[bot] Oct 6, 2025
73a826d
Bump crate-ci/typos from 1.36.3 to 1.37.2 (#1183)
dependabot[bot] Oct 6, 2025
83bcf0a
Bump @docusaurus/* from 3.8.1 to 3.9.1 (#1170)
dependabot[bot] Oct 6, 2025
4180ea6
Update support for new_product_id in PRODUCT_CHANGE events (#1111)
MarkVillacampa Oct 6, 2025
637eb9c
Support PRICE_INCREASE in Google (#1187)
greenietea Oct 6, 2025
ead60ff
Web-3122 Web home - Documentation updates (#1163)
iga-gawronska Oct 7, 2025
91e9638
update product config with Test Store
ekurutepe Oct 7, 2025
156d83a
add an overview for configuring products
ekurutepe Oct 7, 2025
53a062a
fix broken links
ekurutepe Oct 7, 2025
89facd5
add that test store API key will crash your app
ekurutepe Oct 7, 2025
39c172d
Merge remote-tracking branch 'origin/main' into engin/15min-to-paywal…
ekurutepe Oct 9, 2025
8e87858
add Test Store required SDK versions
ekurutepe Oct 9, 2025
a9e8f98
Fix link in managing-subscriptions.mdx (#1190)
egor-n Oct 9, 2025
2b5f8a4
fix required store versions
ekurutepe Oct 10, 2025
4884744
fix the versions again
ekurutepe Oct 10, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 35 additions & 2 deletions docs/getting-started/configuring-sdk.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,12 @@ hidden: false

If this is your first time integrating RevenueCat into your app, we recommend following our [Quickstart](/getting-started/quickstart) guide.

:::success Test Store works out of the box
Once configured, the SDK automatically works with your Test Store products—no additional setup required. You can start testing purchases immediately without connecting to the App Store or Google Play.

**SDK Version Requirements:** Test Store requires minimum SDK versions (iOS 5.43.0, Android 9.9.0, Flutter 9.8.0, React Native 9.5.4, Capacitor 11.2.6, Cordova 7.2.0, Unity 8.3.0, KMP 2.2.2, Web 1.15.0). [See all versions](/test-and-launch/sandbox#testing-with-revenuecat-test-store).
:::

:::info Using an older SDK (v3.x)
View our migration guide to v4.x [here](/sdk-guides/ios-native-3x-to-4x-migration).
:::
Expand Down Expand Up @@ -73,6 +79,30 @@ As detailed in the sample code above, debug logs can be enabled or disabled by s

Debug logs will provide detailed log output in Xcode or LogCat for what is going on behind the scenes and should be the first thing you check if your app is behaving unexpectedly, and also to confirm there aren't any unhandled warnings or errors.

## Testing with Test Store

After configuring the SDK, you can immediately start testing with your Test Store products—no additional SDK configuration required. Simply use your Test Store API key when initializing the SDK, and test purchases will work automatically.

See [Sandbox Testing](/test-and-launch/sandbox) for details on testing with Test Store vs platform sandboxes.

### Switching between Test Store and Real Stores

Test Store uses a **separate API key** from your real store API keys. This allows you to control which store your app communicates with:

- **Test Store API Key**: Use during development and testing
- **Platform Store API Keys** (iOS, Android, etc.): Use for production builds

You can find both types of keys in **Project Settings > API keys** in the RevenueCat dashboard. Switch between them by changing which key you pass to the SDK configuration.

:::danger CRITICAL: Never submit apps with Test Store API key
**You must NEVER submit an app to the App Store or Google Play that is configured with a Test Store API key.** Always use the correct platform-specific API key (iOS, Android, etc.) for release builds.

We recommend using build configurations or environment variables to automatically use the correct API key for each build type:

- **Development/Debug builds**: Test Store API key
- **Production/Release builds**: Platform-specific API key (iOS, Android, etc.)
:::

## Additional Configuration

The SDK allows additional configuration on first setup:
Expand Down Expand Up @@ -155,6 +185,9 @@ Called whenever _Purchases_ receives an updated `CustomerInfo` object. This may

## Next steps

Once you've configured the SDK, it's time to add your products in the dashboard.
Once you've configured the SDK, you're ready to set up your products:

- **Start with Test Store** (recommended): Your project already has a Test Store provisioned. [Create test products](/offerings/products-overview) and start testing immediately.
- **Connect real stores**: When you're ready for production, [configure your products](/offerings/products-overview) in App Store Connect, Google Play Console, or other platforms.

<Button href="/docs/offerings/products-overview">Add your products →</Button>
<Button href="/offerings/products-overview">Set up your products →</Button>
83 changes: 30 additions & 53 deletions docs/getting-started/quickstart.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -15,49 +15,17 @@ Before continuing with this guide, follow our [Setting up RevenueCat](/welcome/o

## 2. Product Configuration

### Store Setup
Before using the SDK, you need to configure your products, entitlements, and offerings in the RevenueCat dashboard. Every new project comes with a **Test Store** automatically configured, so you can start immediately without connecting to Apple or Google.

Before you can start using RevenueCat to fetch products, you must configure your products in the respective stores. See the following guides for [App Store Connect](/getting-started/entitlements/ios-products), [Google Play Console](/getting-started/entitlements/android-products), [Amazon Appstore](/getting-started/entitlements/amazon-product-setup), [Stripe](/getting-started/entitlements/stripe-products), and [Paddle](/getting-started/entitlements/paddle-products) for help navigating through this process.
<Button href="/docs/projects/configuring-products">Configure Products →</Button>

If you are selling iOS products, be sure to sign your 'Paid Applications Agreement' and fill out your bank and tax information in **App Store Connect > Agreements, Tax, and Banking**. **This needs to be completed before you can test any purchases**.

:::info Want to skip the store setup while testing?
On iOS, you can delay configuring products in App Store Connect by testing with StoreKit Configuration files instead. These config files require minimal setup and are configurable via Xcode directly.

Read more about setting up StoreKit Configuration files in our [Sandbox Testing](/test-and-launch/sandbox/apple-app-store#ios-14-only-testing-on-the-simulator) guide.
:::info Already configured your products?
Continue to SDK installation below.
:::

### Configure Products and Entitlements in RevenueCat

<YouTubeEmbed
videoId="QxHeZiW4KCA"
title="RevenueCat Products, Offerings, and Entitlements Explained"
/>

Once your in-app products have been configured in [App Store Connect](/getting-started/entitlements/ios-products), [Google Play Console](/getting-started/entitlements/android-products), [Amazon Appstore](/getting-started/entitlements/amazon-product-setup), [Stripe](/getting-started/entitlements/stripe-products), or [Paddle](/getting-started/entitlements/paddle-products) you'll need to copy that configuration into the RevenueCat dashboard. RevenueCat uses an Entitlements system to control access to premium features, and Offerings to manage the set of products you offer to customers.

Entitlements are the level of access that a customer is "entitled" to after purchasing a specific product, and Offerings is a simple way for you to organize the in-app products you wish to "offer" on your paywall and configure them remotely. We **recommend** utilizing these features to simplify your code and enable you to change products without releasing an app update.

See [Configuring Products](/getting-started/entitlements) to set up your products and then organize them into Offerings or Entitlements.

![Offerings Diagram](/docs_images/offerings/offerings-visual.png)

### Build and Design Your Paywall

<YouTubeEmbed videoId="PNiVCdExtkw" title="How to use RevenueCat Paywalls" />

After configuring your offerings, you can jump right into designing a paywall (even before installing the SDK!) by choosing Paywalls in the sidebar of your project dashboard.

RevenueCat provides several pre-built, customizable paywall templates that you can use to rapidly create a paywall.

If you'd prefer to install the SDK before designing your paywall, you can always come back to this step later.

{<Button href="/docs/tools/paywalls/creating-paywalls">Create a Paywall →</Button>}

<br />
<br />

_Want to build your own custom paywall? See [Displaying Products](/getting-started/displaying-products), [Making Purchases](/getting-started/making-purchases), and [Restoring Purchases](/getting-started/restoring-purchases) for more information on manual implementation._
:::tip SDK Version Requirements
Test Store requires minimum SDK versions (iOS 5.43.0+, Android 9.9.0+, etc.). See [Sandbox Testing](/test-and-launch/sandbox#testing-with-revenuecat-test-store) for complete version requirements.
:::

## 3. Using RevenueCat's Purchases SDK

Expand Down Expand Up @@ -123,18 +91,17 @@ If you have a user authentication system in your app, you can provide a user ide

### Present a Paywall

At this point, you're ready to present a paywall to your users. If you skipped the paywall setup earlier, that's okay! The SDK will display a default, non-customized paywall. If you want to customize a paywall first, head back up to the [Build and Design Your Paywall](#build-and-design-your-paywall) section.
The SDK will automatically fetch your configured Offerings and retrieve product information from your Test Store or connected stores (Apple, Google, Amazon). You can present a paywall using RevenueCat's pre-built UI or build your own.

The SDK will automatically fetch the [configured Offerings](/getting-started/entitlements#offerings) and retrieve the product information from Apple, Google, or Amazon. Thus, available products will already be loaded when customers launch your paywall.
**Option A: Use RevenueCat Paywalls** (Recommended)

Presenting a paywall varies depending on your platform. See [Displaying Paywalls](/tools/paywalls/displaying-paywalls) to see in-depth examples for each platform.
RevenueCat provides customizable paywall templates that you can configure remotely. See [Creating Paywalls](/tools/paywalls/creating-paywalls) to design your paywall, then [Displaying Paywalls](/tools/paywalls/displaying-paywalls) for platform-specific implementation.

{<Button href="/docs/tools/paywalls/displaying-paywalls">Present a Paywall →</Button>}

<br />
<br />
**Option B: Build Your Own**

_Want to display your products manually? See [Displaying Products](/getting-started/displaying-products)._
If you prefer full control, manually display products and handle purchases. See [Displaying Products](/getting-started/displaying-products) and [Making Purchases](/getting-started/making-purchases).

#### SDK not fetching products or offerings?

Expand All @@ -144,13 +111,24 @@ If you're running into this error, please see our [community post](https://commu

### Make a Purchase

Once your paywall is presented, select one of your products to make a purchase. The SDK will handle the purchase flow automatically and send the purchase information to RevenueCat. The RevenueCat SDK will automatically handle sandbox vs. production environments.
Once your paywall is presented, select one of your products to make a purchase. The SDK will handle the purchase flow automatically and send the purchase information to RevenueCat.

**Testing with Test Store:**

- Test Store purchases work immediately without any additional setup
- They behave just like real subscriptions in your app
- No real money is charged
- Perfect for development and testing your integration

**Testing with real stores:**

Each platform requires slightly different configuration steps to test in sandbox. See [Sandbox Testing](/test-and-launch/sandbox) for more information.
- The RevenueCat SDK automatically handles sandbox vs. production environments
- Each platform requires slightly different configuration steps to test in sandbox
- See [Sandbox Testing](/test-and-launch/sandbox) for platform-specific instructions

When the purchase is complete, you can find the purchase associated to the customer in the [RevenueCat dashboard](/dashboard-and-metrics/customer-profile). You can [search for the customer](/dashboard-and-metrics/customer-lists#find-an-individual-customer) by their App User ID that you configured, or by the automatically assigned `$RCAnonymousID` that you'll find in your logs.

**Note:** RevenueCat **_always_** validates transactions with the respective store. The dashboard will only reflect purchases that have been successfully validated by the store.
**Note:** RevenueCat **_always_** validates transactions. Test Store purchases are validated by RevenueCat; real store purchases are validated by the respective platform (Apple, Google, etc.).

Additionally, the SDK will automatically update the customer's `CustomerInfo` object with the new purchase information. This object contains all the information about the customer's purchases and subscriptions.

Expand Down Expand Up @@ -280,8 +258,7 @@ To download more complete examples of integrating the SDK, head over to our samp

## Next Steps

- If you haven't already, make sure your products are configured correctly by checking out our [guide on entitlements ](/getting-started/entitlements).
- If you want to use your own user identifiers, read about [setting app user IDs ](/customers/user-ids).
- If you're moving to RevenueCat from another system, see our guide on [migrating your existing subscriptions ](/migrating-to-revenuecat/migrating-existing-subscriptions).
- Once you're ready to test your integration, you can follow our guides on [testing and debugging ](/test-and-launch/debugging).
- If you qualify for the App Store Small Business Program, check out our guide on [how to apply and inform RevenueCat ](/platform-resources/apple-platform-resources/app-store-small-business-program)
- If you want to use your own user identifiers, read about [setting app user IDs](/customers/user-ids).
- Once you're ready to test your integration, follow our guides on [testing and debugging](/test-and-launch/debugging).
- If you're moving to RevenueCat from another system, see our [migration guide](/migrating-to-revenuecat/migrating-existing-subscriptions).
- If you qualify for the App Store Small Business Program, check out our [guide on how to apply](/platform-resources/apple-platform-resources/app-store-small-business-program).
31 changes: 25 additions & 6 deletions docs/offerings/products-overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,32 @@ excerpt: Use Entitlements and Offerings to organize and display products
hidden: false
---

Products are the individual SKUs that users actually purchase from your app. The stores (Apple, Google, Stripe, etc.) process these SKUs and charge the user.
Products are the individual SKUs that users actually purchase from your app. You can create products in two ways:

- **Test Store products** - Create directly in RevenueCat for testing (no store setup required)
- **Real store products** - Products from Apple, Google, Stripe, etc. that process real payments

RevenueCat Offerings are a way to organize and display products to users. You can read more about Offerings [here](/offerings/overview).

## Store Configuration
## Test Store Products

Create Test Store products directly in RevenueCat for development and testing—no app store setup required.

To create a Test Store product:

1. Go to **Products** in the **Product catalog** section
2. Click **+ New product**
3. Select **Test Store** as the store
4. Enter a product identifier and configure pricing
5. Click **Save**

:::tip
Use Test Store during development. When ready for production, create real store products. See [Sandbox Testing](/test-and-launch/sandbox).
:::

## Real Store Products

No matter how you choose to use RevenueCat, you'll need to first have products set up in the stores. This is done outside of RevenueCat, and where you set things like price, duration, and free trials. If you've never set up products before or need a refresher (or tips and tricks) check out these guides:
For production, set up products in the real stores (Apple, Google, Stripe, etc.). This is where you configure price, duration, and free trials:

- **[iOS / App Store Connect ](/getting-started/entitlements/ios-products)**
- **[Android / Google Play Console ](/getting-started/entitlements/android-products)**
Expand All @@ -26,9 +45,9 @@ RevenueCat supports free trials, promotional offers, and other product configura

You can read more about these product configuration options [here](/subscription-guidance/subscription-offers).

## Add Products to RevenueCat
## Import Products to RevenueCat

After your products are set up in the stores, you'll need to set up a 1-to-1 mapping of the products in RevenueCat as well.
After setting up products in the real stores, import them into RevenueCat to create a 1-to-1 mapping.

:::info Automatic Tracking
If a user purchases a product that has not been set up in RevenueCat, the transaction will still be tracked in RevenueCat, and the product will be automatically created in RevenueCat.
Expand Down Expand Up @@ -67,6 +86,6 @@ Product display names must be unique within an app. It's a good practice to incl

## Next steps

If you've added your products in the dashboard, it's time to create an Entitlement.
After adding products (Test Store or real store), organize them with Entitlements and Offerings.

<Button href="/docs/getting-started/entitlements">Create an Entitlement →</Button>
Loading