Get help with anything related to RevenueCat.
Recently active
Summary: App Store in-app purchases not pulling correctly with promotional offer (free trial)Description:I am trying to offer users a free trial using RevenueCat and in-app purchases. The line of code throwing the error is:const selectedPackage = offering.availablePackages[0]; // This is the package objectconst product = selectedPackage.product; // Extract the product from the packagelet discount: any = null;if (product.discounts) {await Purchases.restorePurchases().then((res) => {console.log('Restore purchases:', res);});discount = await Purchases.getPromotionalOffer(product, product.discounts[0]).catch((error) => {Alert.alert('Error','An error occurred while fetching the subscription details. Please try again.');console.log('Error getting discount:', error);setLoading(false);return null;});}Specifically, the Purchases.getPromotionalOffer() is throwing the error:Possible Unhandled Promise Rejection (id: 0): Error: The receipt is not valid.The debug logs are showing the following
'">hacker
When adding an iOS In-App Purchase key to prepare for StoreKit 2 support, I see that in the docs it says You can use the same in-app purchase key for all of your offers. Can someone confirm that you can also use the same IAP Key for all of our RevenueCat Projects? We have multiple apps in the App Store, and each is configured with a different RevenueCat project. Can we use the same IAP key for all of these projects, or do we need to create one for each Project? The key is created in App Store Connect at the account level, not tied to any specific app, so it seems plausible that we are intended to use the same key for multiple projects / apps within RevenueCat.
We want to be able to offer a free trial to our new users when they onboard. If they don’t convert in a timeframe, we want to offer a discount to convert them. I thought targeting would help us to achieve this, but apparently not! What would you recommend?
Hi,we have internal test servers where we would also like to develop our webhook endpoints on so we can test receiving events from the RevenueCat API. Those servers are obviously only accessible from our internal network by default.To make the webhook URLs accessible for RevenueCat, I’d like to know what IP range the requests would be coming from, so I can configure our firewall accordingly.Thanks a lot,Markus
Hey,I am very new to everything involving in-app purchases, so sorry if this is a somewhat confused question. I am building an app (iOS/macOS only) that involves making calls to some AI tools through a custom backend that I am building as well. I would love to not force users to create accounts at all, since purchases are done and identified through the user’s Apple ID anyways, so there’s no immediate need to. I could just let them use the app as anonymous users. However, I need some way for the backend to know if an incoming request is made by a user with an active subscription. I searched online for quite a bit, but haven’t found this exact problem yet. From what I read in the documentation, there might be a way to do this, by sending the users App ID (generated by the RC SDK) to the backend on each request and have the backend call the RC API with that App ID to check the subscription status. I have not tested this because I am not at the stage of development yet. I just wanted t
Hi allLooking at potentially doing a campaign where group of users get X days free access to app. Many of these are previous subscribers or trials that no longer have an active subscription. I know on the customer level we can manually apply a single entitlement. Is there a way in the RevCat console to do this in bulk? e.g. all customers in a list (from RevCat customer list) get an entitlement applied? Thanks
Offerings are working when I submit to the App Store on test flight and real device. , but once they are approved by apple and ready for distribution, the offering do not show. Are they changing some code? This makes no sense to me why this is happening. This is the 1st time submitting an in-app purchases for me. I feel like I'm doing something wrong but how would Apple approve this if it was not working for them. It's like once it goes into production something changes. The lay out is the user has 3 Searches (credits) once the 3 searches (credits) are used on the 4th search the paywall with offerings pop up. This works perfect in testing but once apple approves it, it just shows Loading which is my default when the offering do not load. Paywall comes up but no offerings Any help is appreciated. Thank you.
Hello,The new Placements feature looks great although I’m missing having metadata defined per Placement that I could read in the app. Currently metadata are only available on offerings.Imagine that you have 3 Placements, with different offerings eachPlacement1 → Offering1Placement2 → Offering2Placement3 → Offering3For each placement I’d like to dynamically define some behaviour using metadata, e.g. whether to show a success screen or subsequent better offer paywall. I could add such logic to the app by checking Placement, but it requires a new app release each time I want to change such behaviour. I could also add metadata to offering, but keep in mind the offering may be assigned to various Placements while the behaviour should be defined per place.What do you think?
I want to use only custom app user id’s in my iOS SwiftUI app, but also delete users. Per the documentation, logging out will cause creation of anonymous app_user_id: To only use custom App User IDs, you must take care not to generate any anonymous App User IDs in the SDK. Anonymous App User IDs are generated when the SDK is configured without a provided custom App User ID, and are also created on logOut() as mentioned above.https://www.revenuecat.com/docs/customers/user-ids#how-to-only-use-custom-app-user-ids But in order to delete users in RevenueCat programmatically to comply with Apple’s User Deletion Policies, I must log out the user in addition to deleting them:There are two ways to delete a customer in RevenueCat – manually through the customer dashboard or programmatically via the REST API. With either approach, you should make sure that the customer is also logged out through the RevenueCat SDK in addition to being deleted or they’ll get recreated on the next app launch.https:
My app don’t have any login or registration. User can simply come and use my app. My app is a chat bot and user can use it for free 3 times and after that user have to buy the subscription to keep using the app. Now the issue is that google is asking for login credentials to access to premium features of the app. How can I allow them to bypass this to access to features for free to test my app.
I am new to RevenueCat and just learning the basics of how to integrate it in Android app. As of now, I am continuosly navigating back and forth between various revenue cat webpages and I am facing this weird UI anamoly: RevenueCat has a great looking RC fabicon attached to its docs, and community pages. But on the app.revenuecat.com page, there is no favicon. Why is that happening? Is it just an issue at my end or anyone else is facing that?
HiI watched the video, I read many post but I didn’t find a solution and I’m still blocked Could not validate subscriptions API permissions My RevenueCat App ID: apped8cbf6a6e if someone from Revenuecat can help me please 🙏
Hi @Michael Fogel @Jens @kristineT ,As mentioned in the in this thread and also in this doc (https://www.revenuecat.com/docs/event-flows) in the billing issue flow section that if a billing issue is encountered, then the following events happen:-1. If grace period is enabled, then billing issue and cancellation event is dispatched simultaneously and when the grace period ends, then expiration event is dispatched immediately.2. If grace period is not enabled, then billing issue, cancellation and expiration is dispatched immediately.I have been testing the events in the sandbox environment for two products I created in play console in which I enabled grace period in one of them and disabled in the other one and I bought the subscription successfully and then I chose the test card always decline option before renewal to test the billing issue events. I observe that billing issue and cancellation event is dispatched in both scenarios but the expiration event is dispatched exactly after 10
I have a two phase website that I am building… Say I launch my website and I start charging $3.99 a month - 6 months later I roll out the second phase of my website and want to start charging $6.99 only to those who want to access the Phase two section of my site. Could this work?
I want to implement offer codes in my app. This requires using In-App Purchase Key for ios app. I added that key during app setup some time ago and everything was fine, no warnings. 2 months ago I received email regarding that api key should be updated. I generated new key and added to ios app, but had Credentials need attention warning. I tried to do this one more time today and have the same issue. I followed the same steps as previously (during initial setup that was successful). I added P8 key file from App Store Connect, Key ID and Issuer ID and the only issue I have is that warning.
hi, i use flutter with the latest packages versions. I get the following message: but i have configured a paywall: what could be wrong? i already run flutter clean and reinstalled the app.
We get a fair number customer support messages that state something along the lines of “The app forgot that I have premium access and I had to click restore purchases.” We store subscription status to a persistent state in redux so it is confusing to us where they may be losing access to their subscriber benefits. Have other apps dealt with this? Are there common race conditions on startup that can lead to this. Anecdotally it seems to happen a lot with family sharing. Sometimes it’s user error (user signs in once, and then accidentally creates a new anonymous account). Looking for common patterns we may be handling incorrectly.Is it common for apps to get customer support requests like these?
Hi,I’m currently using PaywallActivityLauncher to display the paywall in my Android application. I need to manage both the purchase state and the restoration of previous purchases. While I’ve come across methods to handle the purchase state, I haven’t found any options for managing the restoration of state.Could you provide guidance on how to handle restoring the state of purchases with PaywallActivityLauncherwhen user click the restore button.override fun onActivityResult(result: PaywallResult) { when(result){ PaywallResult.Cancelled -> Log.d("revenuecat ","Cancelled") is PaywallResult.Error -> Log.d("revenuecat ","Error") is PaywallResult.Purchased -> Log.d("revenuecat ","Purchased") }} Thank you!
I would like to know that, is there any case I could not get the subscription details through api even if I have an active entitlement.It was working fine this morning. Since 2pm IST, I am not receiving their entitlements in the revenuecat subscribers response
Hi,I want to change the text based on Product. Atleast some part.To be more clearWeekly users have 100 credits.Monthly users have 400 credits.Yearly users have 10,000 credits Is that possible with built-in paywalls or Do I need to create my custom Paywall?
After the new 'default language' feature was introduced, I couldn't save any changes to the paywall because it requires me to add a default language. However, when I try to select a default language, it doesn't work, it just stays there and does nothing.
I originally went with glassfy 2 years ago because their docs and setup for capacitor were simpler to understand. Unfortunately, they’ve now gone defunct, so I need to migrate to RC. have two apps that I need to migrate. One app is very seasonal, so glassfy may not exist any more when the users finally open their app. The other, I had issues with android not sending the subscription into to glassfy anyway, and their support refused to respond. My main question:can I simply call syncPurchases once for all users the first time they run the updated app version that has RC integrated?If I can simply call syncPurchases once on update, and each user who does this will automatically be given their subscription access, that would be great. Can anyone confirm this would work? Or do I need to do something more complicated?
I deleted a package under one offering and added it under another offering, and it will not show on the Paywall. I used the same identified for both, because it was the same package, and the system allowed it. I guess I don’t really understand why we define packages per offering and not packages outside of offerings that can be added to offerings; because I wouldn’t have deleted this package in general, but I needed it removed from the other offering, and I need all my packages to have consistent names. This makes no sense to me - how do I get this package to show on the paywall? The offering shows no error, it shows 3 packages, yet only 2 show on the paywall. Can anyone help me?
I want to test Experiments, but I am not sure I want to upgrade until I know Experiments will work for me, since you can’t downgrade. I have two Paywalls, one my default Paywall, for the “Upgrade” app version, and one a “Tip Jar” for consumables. At this point, I want to run experiments on different Tip Jar offerings to see which ones will evoke greater success. But I’m not sure how to do this because, for the non-default offering, I need to set the name of the offering in the app programmatically. Can an experiment be done for my Tip Jar if this is my current setup? Also, wouldn’t it make sense for RevenueCat to have more than one default offering, like have the main default, but sub defaults for when we display multiple paywalls in an app, that we could change them without having to launch a new version of the app?
Already have an account? Login
No account yet? Create an account
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.