Discussion and help from anything related to RevenueCat.
Recently active
Hello,Despite deleting everything and trying it twice from scratch following this doc, we keep getting this error:Your Google service account credentials do not have permission to create a Google Cloud Pub/Sub topic. We have done everything by the books, I have no idea, why this doesn’t work. Any ideas, please?Thanks,
Hey team,I'm trying to build an admin view similar to the "Entitlements" card shown in the RevenueCat dashboard (see attached screenshot), but I'm struggling to figure out how to get this same level of detail through the API.Screenshot Here's what I’ve tried so far: API v1 (Get Customer): This gives me a list of all entitlements a user has ever had, but: There’s no connection to their subscriptions. (I cannot find out the different grant periods as in screenshot). It doesn’t tell me if a subscription will renew. (On the dashboard, I see “Will renew in X” — but there’s no equivalent field here.) API v2 (Subscriptions endpoint): I can list the subscriptions and join it with product data to infer durations, renewal status, etc. But promotional entitlements break this: Subscriptions created by granting entitlements don’t have product IDs. The entitlements field in the subscription only includes active entitlements. So if a promotional entitlement expi
Eight days ago, I could still see the subscription details without any issues. Please help me understand why this is happening. Has there been an update or change that could have caused this?"Let me know if you'd like to add more details or adjust the tone!
I have integrated RevenueCat webhooks with my backend. However, when I receive a webhook event, the response does not include the subscription ID. This makes it difficult to fetch subscription details using the API.Even in RevenueCat’s documentation, the sample webhook response does not contain a subscription ID. How can I reliably obtain the subscription ID from the webhook response to make an API call for subscription details?Any guidance or best practices would be appreciated!
When I was originally developing using the PurchasesAreCompletedBy.REVENUECAT mode, everything worked fine.However, since I needed to change the GoogleReplacementMode to DEFERRED, I had to switch to the PurchasesAreCompletedBy.MY_APP mode.To support this, I passed a custom purchaseLogic to PaywallOptions via PaywallOptions.Builder.But after switching to this approach, my subscription purchases started showing a “Confirm Plan” prompt, and the subscription would end up being automatically canceled.Even after I manually called Purchases.sharedInstance.syncPurchases(), the issue still persisted.Is there something wrong with my setup? // Implementation of PurchaseLogicoverride suspend fun performPurchase( activity: Activity, rcPackage: Package,): PurchaseLogicResult { onPurchaseStarted(rcPackage) val purchaseParams = PurchaseParams.Builder(activity, rcPackage) .googleReplacementMode(GoogleReplacementMode.WITHOUT_PRORATION) .build() return try { val resul
Hey guys, in my web billing app, the icon I upload doesn’t get saved although I get a “File uploaded successfully”. When I refresh the page it disappears as if it wasn’t uploaded. No matter the image or image size.Would love some help! 🙏Best regards,Alex
Hi everyone,I'm encountering a crash in my React Native app that appears to be coming from the react-native-purchases package. The error is showing up in Crashlytics and looks like this:```BillingWrapper.buildSubscriptionPurchaseParamsjava.lang.NoClassDefFoundError - com.android.billingclient.api.zzcecom.revenuecat.purchases.googleBillingWrapper.kt:885```My react-native-purchase version is 8.9.1Doing some search I can see this is related to `com.android.billingclient:billing` but the module should manage this dependence I should not add it Thanks for the help :)
Hi guys, pardon my ignorance but I was wondering why I get this error when doing a production build for ios via eas? There may have been a chance I skipped over a step but I am unsure what it could be. It works fine in eas dev builds and local.
I just added an entitlement to a user, but it doesn't appear in the object returned from RevenueCat.In the RevenueCat UI, it shows that the entitlement has been granted. I understand that RevenueCat caches data for around 5 minutes, but even after 30 minutes, I'm still getting null for the subscription.Here’s how I’m checking for active subscriptions in the app:```await Purchases.invalidateCustomerInfoCache();const customerInfo = await Purchases.getCustomerInfo();return Object.keys(customerInfo.entitlements.active).length > 0;```Am I missing something? I have both monthly and yearly subscriptions set up, but in this case, I granted the user a 3-month entitlement.
If I paste string with newline in paywall editor and display paywall in UIKit app it will behave like this:Notice the “\” symbol, that is added.If I try to add newline via enter key, and use UIKit to display paywall: If I paste string with newline and use SwiftUI app to display paywall: If I enter newline via enter key and use SwiftUI app, it will show it like this: Seems like there is inconsistency in paywalls behaviour, what should I do? Now I use UIKit mainly, and I just want to add newline without extra symbols.
Hello,To briefly describe, similar to Instagram, where users can subscribe to multiple content creators, our application follows the same approach.We conducted an experiment by creating 2 Subscription Groups on App Store Connect:subs_offer_1 includes two Renewable Subscription plans: A and B subs_offer_2 includes two Renewable Subscription plans: C and DOn the same device (meaning the same Apple ID), I performed the following steps:Created a new account X1 in our system with user_id = X1_id, then called the function: Purchases.logIn(X1_id). Successfully purchased plan A in subs_offer_1. Logged out and called the function: Purchases.logOut() Created another new account X2 in our system with user_id = X2_id, then called: Purchases.logIn(X2_id). Tried to purchase plan D in subs_offer_2 but encountered the following error:PlatformException(7, There is already another active subscriber using the same receipt., {readableErrorCode: RECEIPT_ALREADY_IN_USE, code: 7, message: There is already an
I am getting this error when I try to test subscription thru paywall. PayWall is never displayed.It works fine on iOS.
Hi there, I’m currently calling https://api.revenuecat.com/v2/projects/{project_id}/customers/{customer_id}/purchases for extracting all purchases and then check for a specific one using store_purchase_identifier.Is there a way to avoid extracting all purchases from the server every time I need to find a specific store_purchase_identifier? Thank you,Yury
I have different projects for different environments (dev, production) - cause I need a different bundle id (recommended here: https://www.revenuecat.com/docs/guides/environment-strategies). Can I somehow duplicate the paywall from one project to another? Rebuilding it takes a lot of time...
PLEASE PLEASE PLEASE RevenueCat. It would be so amazing if you guys could have your own in house affiliate program. You already track all my subscriptions and sales through the paywall, so adding in affiliate codes and payouts accordingly to affiliates would be so so awesome. I haven’t figured out a good way to do this myself. I would love advice on it.
I tried purchasing a trial from the google playstore for my sandbox app.The trial purchase reflected in app history on revenuecat. It did not reflect in any of the dashboards on revenuecat.Then, I cancelled the trial, and it did not reflect in the customer history section for the same customer on revenuecat.
We updated to the new version of Revenue Cat and suddenly we get a lot of instant Trial cancellations. Meaning the user comes into the App, creates an Account, starts a trial and then instantly (meaning same minute) the Trial is cancelled.You can cancel the trials in the app and are then forced to fill out a questionnaire. But there’s no questionnaire filled out.Meaning people would needed to start the trial and immediately close the app and then cancel via iOS Settings.I find this highly unlikely (but could be true) - anybody else with this problem?
The V2 Paywalls look awesome, and I’d love to use them in my Vue / Capacitor app.Is Capacitor compatibility planned? If so, would you be willing to give a rough ETA? Thanks!
Hey!I’ve noticed there’s a skeleton loader screen that appears before the actual paywall shows up, and I’m trying to figure out how to disable or override it.It doesn’t really fit into my app’s design for a couple of reasons. I’m using the default activity indicators elsewhere, so I’d prefer to stick with that instead of a skeleton loader. More importantly, the skeleton screen always shows in dark colors, even when the app is in light mode, which kind of breaks the visual consistency of the UI.I searched through the documentation but couldn’t find anything on how to disable or customize that loading screen. Has anyone figured out a workaround for this, or is there maybe an option I’m missing?I’m developing on React Native.Any help would be much appreciated!Thanks.
I see on the installation page the list of supported platforms, but I don’t see any info about plans to support others like Capacitor. I couldn’t find any info about this anywhere else. Would love to see this in the Capacitor SDK as well!
HiFor the one of the app, I am implemented RevenueCat, all the steps are completed so far.What I have done.AppStore > Business > Agreements are filled out and no pending action on this point. Purchasing working fine in Sandbox and collected screenshots for Apple Team. Tested paywall and subscription done in test user. Correct build sent to the App team to review.Questions:Do I need to use for StoreKit for product listing , currently listing my entities and offering using RevenueCat already. Do I need to put Configuration.storekit file and configure, actually I dont think if it is related.So The result is getting rejected, after first submission.Here is the Apple Review team report:Guideline 2.1 - Performance - App CompletenessIssue DescriptionIn-app purchase products associated with the app version submitted for review, such as Pro Plan Monthly, could not be found in the submitted binary (consumable). Next StepsIf you do not want to make these in-app purchase products available
I’m using RevenueCat to add subscriptions to an existing app on the App Store.The recommended path is to generate an App Store Connect API key and share it with RC. When you first enable this API, Apple requires you to agree never to share the secret keys outside your team. Uploading them to RevenueCat seems like a violation.I’m assuming that in practice Apple doesn’t care. But is there any official word on this?
When clicking on the Continue button in Paywall V2 nothing happens. I think it worked once but after canceled the subscription and removed the customer from revenuecat dashboard I can’t get a new subscription.I have made sure my sandbox user (ios) does not have any active subscription as well.What have I missed?
testtest123123
Hello,I am using RevenueCat for many years and I am very satisfied with your service. However, I have a new app with a licensing model that does not work with the currently available restore behaviors.Example use case:For a cross-platform email app the licensing should not be tied to a device or app store account. It should be tied to the email address. Therefore, the AppUserId is set to the email address. Furthermore, an app store account should be able to buy the license (one time or subscription) for multiple email addresses.Current state:RevenueCat does not support multiple AppUserIds for one app store account. It also does not support the prevention of transfers of purchases. The option “Keep with original App User ID” does not work because the new purchase should be added to the current App User ID. Even when never using the restorePurchases() method of the RevenueCat, purchases are transferred when making a purchase. Example workflow:1. User logins to app with email address and
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.