Android Subscription – Google Play Configuration
How to set up subscriptions in Google Play and integrate them via RevenueCat
Configuration Google Play
Setting up Android subscriptions using Google Play Console and RevenueCat.
ExpoLaunch comes with a preconfigured purchase flow with 1 subscription plan: pro
.
Google Play Developer Account
- Make sure you have an active Google Play Developer account ($25 one-time fee).
- Your app must be fully set up in the Google Play Console:
- Uploaded
.aab
file - App information completed
- Package name defined and consistent
- Uploaded
Create Subscriptions in Google Play
- Open Google Play Console
- Select your app
- In the sidebar, go to Monetize → Products → Subscriptions
- Create a subscription group and add individual subscriptions:
- Identifier (e.g.
pro_monthly
) - Duration, price, description, icon
- Make sure the subscription is activated and saved
🔶 The subscription must be fully configured and active, or RevenueCat will not detect it.
Create a Service Account in Google Cloud
To allow RevenueCat to validate and sync subscriptions:
- Open Google Cloud Console → IAM → Service Accounts
- Select the same project linked with your Play Console
- Click Create Service Account
- Set a name (e.g.
revenuecat-service
) - Assign roles:
Viewer
Play Developer
(from Google Play Android Developer API group)
- Complete and create the service account
Enable Required APIs in Google Cloud
In Google Cloud Console → APIs & Services → Library:
Enable the following APIs:
- Google Play Android Developer API
- Cloud Pub/Sub API
- (Optional) Cloud Logging API if you want additional debugging capabilities
Make sure these APIs are enabled in the same Google Cloud project linked to your Play Console.
Generate Service Account Key
- Open the service account you created
- Go to the Keys tab → Add Key → Create new key
- Choose
JSON
format - Download the file — you’ll upload this in RevenueCat
Invite and Link Service Account in Google Play Console
- Go to Google Play Console → Users and Permissions
- Click Invite new user
- Paste the service account email (from Google Cloud)
- Assign the following permissions:
View financial data
Manage orders and subscriptions
- Send the invitation and accept it if needed (some accounts auto-accept)
✅ After inviting, the service account will appear under API Access as well.
![]()
- Go to Google Play Console → API Access
- Link your Google Cloud project if not already linked
- Find your service account → click Grant Access
- Confirm the permissions listed above are applied
Add Your App to RevenueCat
- Go to RevenueCat Dashboard
- Create a new project (or open an existing one)
- Under Apps, click + Add Google Play App
- Fill in:
- App name
- Package name (must match your Play Console)
- Upload your JSON service account credentials
⏱ RevenueCat may take a few minutes to validate your credentials.
🧩 Tip: If validation is stuck, follow this trick from RevenueCat:
- Go back to the Google Play Console
- Edit your subscription’s description slightly
- Save the change — this triggers a refresh in RevenueCat
Create Products
- In RevenueCat → Products → Import from Google
- Select your subscriptions (
pro_monthly
, etc.)
Create Entitlements
- Create Entitlements like
pro
- Link subscriptions to their respective entitlements
Set Up Offerings
- Go to Offerings → create an offering (e.g.
default
) - Add packages inside the offering (monthly, annual, etc.)
- Use
useOfferings
in your custom UI to show available plans:
const offerings = useOfferings()
const subscribe = useSubscribeMutation()
function handlePurchase(plan: PurchasesPackage) {
subscribe.mutateAsync({ offer: plan })
}
Generating an API Key
RevenueCat uses a server key to sync with Google Play:
- In Google Play Console → API Access, scroll to API Keys
- Click Create New Key
- Name the key (e.g.
revenuecat-api-key
) and click Create - Copy the generated key and add it to your environment variables:
EXPO_PUBLIC_REVENUECAT_GOOGLE_API_KEY=your_key_here
Custom Paywall (Optional)
ExpoLaunch uses a custom implementation of the paywall screen. If you use your own design, skip RevenueCat's visual paywall editor.
Fetch product offerings using:
import { useOfferings } from 'react-native-purchases'
const { current, loading } = useOfferings()
✅ Troubleshooting
-
Subscriptions not showing up?
- Check that they are active and approved in Google Play Console
- Confirm your JSON credentials are correct
- Ensure the service account has API access and proper permissions
- Enable required APIs in Google Cloud
- Look at RevenueCat → Overview → Debug Logs for real-time info