Help us improve
Share bugs, ideas, or general feedback.
From RevenueCat
Diagnoses and resolves RevenueCat integration issues in iOS, Android, Web apps by auditing projects, products, entitlements, offerings, webhooks, and applying fixes.
npx claudepluginhub revenuecat/ai-toolkit --plugin RevenueCatHow this skill is triggered — by the user, by Claude, or both
Slash command
/RevenueCat:revenuecat-troubleshootThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Diagnose and resolve common RevenueCat integration issues.
Mines projects and conversations into a searchable memory palace and retrieves past work via semantic search.
Guides Payload CMS config (payload.config.ts), collections, fields, hooks, access control, APIs. Debugs validation errors, security, relationships, queries, transactions, hook behavior.
Implements vector databases with Pinecone, Weaviate, Qdrant, Milvus, pgvector for semantic search, RAG, recommendations, and similarity systems. Optimizes embeddings, indexing, and hybrid search.
Share bugs, ideas, or general feedback.
Diagnose and resolve common RevenueCat integration issues.
Important: The API key may have access to multiple projects. Always use the list-projects tool of the RevenueCat MCP first. If multiple projects are returned, ask the user which project to troubleshoot.
Ask targeted questions:
Work through this checklist:
`list-projects` → ask user to select project if multiple
`list-apps` (with selected project_id)
list-products
product_id:base_plan_id formatlist-entitlements
get-products-from-entitlement (for each entitlement)
list-offerings
list-packages
is_current: truelist-webhook-integrations
Diagnostic Report
=================
Project: {project_name}
Checks Passed: ✅
- Project exists and is accessible
- 2 apps configured (iOS, Android)
- 4 products found
Issues Found: ⚠️
1. CRITICAL: Product not attached to entitlement
Product: annual_premium (prod123)
Fix: Attach this product to an entitlement
2. WARNING: Offering has empty package
Offering: default / Package: $rc_annual has no products
Fix: Attach annual_premium to this package
3. INFO: No webhook configured
Optional but recommended for server-side access control
Recommended Actions:
1. Attach annual_premium to "premium" entitlement
2. Attach annual_premium to $rc_annual package
Would you like me to fix issues #1 and #2 now?
For each fixable issue, confirm with the user then execute:
mcp_RC_attach_products_to_entitlement
mcp_RC_attach_products_to_package
| Error Code | Likely Cause | Solution |
|---|---|---|
INVALID_APP_USER_ID | Reserved characters or empty string | Use alphanumeric IDs, underscores, hyphens only |
INVALID_CREDENTIALS | Wrong API key or bundle ID mismatch | Verify API key matches app |
NETWORK_ERROR | No connectivity or firewall | Check network, verify RevenueCat domains allowed |
STORE_PROBLEM | Store downtime, config issue, iOS 18.x bug | Check store status, verify config, see Known iOS Issues below |
SIGNATURE_VERIFICATION_FAILED | Tampered receipt or config error | Verify In-App Purchase Key (iOS) or service credentials |
| Error Code | Solution |
|---|---|
RECEIPT_ALREADY_IN_USE | Call restorePurchases() or sync customer |
PRODUCT_NOT_AVAILABLE_FOR_PURCHASE | Verify product status in App Store Connect/Play Console |
PURCHASE_NOT_ALLOWED | Check parental controls, payment method |
PRODUCT_ALREADY_PURCHASED | Call restorePurchases() to sync |
Ask the developer to enable debug logging:
Purchases.logLevel = .debugPurchases.logLevel = LogLevel.DEBUGLog emoji indicators: 🍎 Apple/StoreKit · 🤖 Google Play · 📦 Amazon · 😿 RevenueCat backend
iOS 18.0–18.3.2: StoreKit Daemon Connection Failure
STORE_PROBLEM (NSCocoaErrorDomain Code 4097) on ~25% of purchases on physical devicesiOS 18.4–18.5 Simulator: Products Don't Load
ProxyBillingActivity NullPointerException
NoCoreLibraryDesugaringException / NoClassDefFoundError
product_id:base_plan_id format"Issues fetching products" — Products must be submitted for review with the app on first submission. Create products in App Store Connect, then submit app and products together.
"Error during purchase" (Sandbox) — Apple sandbox downtime. Inform reviewer, provide RevenueCat sandbox dashboard screenshot showing test purchases work, ask to retry.
"Content not unlocked after purchase" — Verify product → entitlement connection in RevenueCat. Ensure app calls getCustomerInfo() after purchase.
User purchased but has no entitlement — Check product → entitlement attachment and verify store identifier matches exactly.
Offering returns empty — Verify a current offering exists, packages have products attached, and products exist in the app's store.
Webhook not receiving events — Verify URL is internet-accessible and returns 200 OK. Test with webhook.site.
Subscription status out of sync — SDK caches CustomerInfo for 5 min (foreground). Force refresh:
// iOS
Purchases.shared.getCustomerInfo(fetchPolicy: .fetchCurrent) { ... }
// Android
Purchases.sharedInstance.getCustomerInfoWith(CacheFetchPolicy.FETCH_CURRENT) { ... }
SDK crashes on launch (iOS/Xcode 26) — Initialize RevenueCat before other networking libraries.
SDK crashes on launch (Android) — Enable core library desugaring or raise minSdk to 24+.