Time: 10 min | For: Subscriptions & In-App Purchases
- Sign up at app.revenuecat.com
- Create new project
- Add iOS app:
- Bundle ID: Your app's bundle ID
- Store: Test Store (for development)
- Go to Project Settings → API Keys
- Copy API key (starts with
test_)
📋 Save: Test API Key
Go to Products → + New:
| Product ID | Type | Duration | Price |
|---|---|---|---|
premium_monthly |
Subscription | P1M | $9.99 |
premium_yearly |
Subscription | P1Y | $79.99 |
premium_lifetime |
Non-consumable | - | $199.99 |
- Entitlements → + New
- Identifier:
premium - Attach Products → Select all 3 products
- Offerings → + New
- Identifier:
default - Mark as Current Offering
- Add packages:
- Package:
$rc_monthly→ Product:premium_monthly - Package:
$rc_annual→ Product:premium_yearly - Package:
$rc_lifetime→ Product:premium_lifetime
- Package:
Click Configure Paywall → Choose template → Customize → Save
For local testing in Xcode:
- Open
Src/iOSJumpstart/iOSJumpstart.storekit - Update product IDs to match Dashboard:
premium_monthlypremium_yearlypremium_lifetime
- Edit Scheme → Run → Options → StoreKit Configuration: Select
.storekitfile
- Run app (⌘R)
- Navigate to Settings → Tap subscription button
- Paywall should appear with 3 products
- Complete test purchase
- Verify premium badge appears
- RevenueCat account created
- API key saved
- 3 products created in Dashboard
- Entitlement
premiumcreated - Offering
defaultcreated and marked current - StoreKit file updated
- Test purchase works
Saved Values:
Test API Key: test_...
Entitlement ID: premium
When ready for App Store:
- Create App Store app in RevenueCat (not Test Store)
- Get production API key (starts with
appl_) - Update
AppConfiguration.swift:
enum RevenueCat {
#if DEBUG
static let apiKey = "test_ABC123..."
#else
static let apiKey = "appl_ABC123..."
#endif
static let entitlementID = "premium"
}Products not loading?
- Verify API key matches project
- Check products attached to entitlement
- Ensure offering marked as "Current"
- Verify StoreKit product IDs match exactly
Not granting access after purchase?
- Entitlement ID must be
premium - Products must be attached to entitlement
- Check subscription manager logs