Get help with anything related to RevenueCat.
Recently active
Hi,My app is on the store a long time ago, the app-purchase product is approved, the problem is that offerings works well in testing mode when running the app from Xcode, but in production it shows that the device is not allowed to make purchase.I have installed the sandbox configs and license in the Xcode.
I published my flutter app in both iOS and Android, got the approval from Google Play in a day. Today I got the message from Apple saying I need to make some changes. I went tho the resolution centre and the message is “We found that while you have submitted in-app purchase products for your app, the in-app purchase functionality is not present in your binary.Next StepsIf you would like to include in-app purchases in your app, you will need to upload a new binary that incorporates the in-app purchase API to enable users to make a purchase.Once you revise and resubmit your binary, you will also need to resubmit your in-app purchases for review since they are in the Developer Action Required state. For each in-app purchase product submitted, please be sure to edit the detail information or cancel the request to change the detail information for the in-app purchases using App Store Connect.Alternatively, if you do not want to include in-app purchase products in your app, it would be appro
I was just about to hit submit on the question below, but I checked one more time and now it is working! It was giving the error within the last hour. Is this common? How can we debug what happened? An existing in-production iOS app could not retrieve SKProduct info for a period today.No changes made to App Store or RevenueCat configurations, and everything looks in place.Today we get the dreaded: Could not find SKProduct for ( prod123 )
We use Slack message server, but it sends too many messages everyday. When we click the customer id to see his purchase history, we notice that he has subscribed before we add RevenueCat SDK in our app. So how can we stop getting these old customers’ messages, only get new purchases’ messgaes?
My Mac app is a free download and offers a non-consumable IAP to purchase the full app (using RevenueCat of course). About a third of the time when submitting my app to App Review, the reviewer is unable to complete the purchase: they go through the correct purchase flow but ultimately the IAP never becomes unlocked in their testing sandbox, so the update is rejected.I’ve never experienced this myself in my testing and in production on the App Store, this has never been a problem. However dealing with these rejections are a bit of a nightmare because it’s not clear what the problem is with the reviewer’s sandbox environment, and what I can do on my end to assist.Has anyone else faced a similar issue?
Hello! I have uploaded a certificate.cer file for testing. My product costs $8.88 in this file, but in App Store, it costs ¥8 When I try to check customers’ histories, I found some of them show the testing price(app user id: $RCAnonymousID:42bf5828c06843308f74a5d360dd31ee) but others show the right price(app user id: $RCAnonymousID:ae7d6e45b3ff4686a86023d1c741a8bc) I have tried to delete the .cer file, but it doesn’t work.
The webhooks page on the dashboard seems to be broken. Specifically, it does not render the past webhook events like it used to. To get around this, I'm inspecting the network requests for the `/webhooks?limit=30` request, which does return the webhook event data in the `last_events` array. The page just doesn't render this on the screen at all (it always says "No events to show")
We would like to ask the reason why RevenueCat requires the credit card details for the starter plan.Will RevenueCat charge the credit card entered for anything?Best regards
I use the following code to upgrade/downgrade subscriptions. It works fine on Android but iOS is not playing ball. When I upgrade/downgrade a test subscription, nothing happens. What could I be doing wrong? if (Platform.isAndroid) await Purchases.purchasePackage(myPackage, upgradeInfo: old_SKU);if (Platform.isIOS) await Purchases.purchasePackage(myNewPackage); As documentation says there is no change to the code for new purchase and upgrade/downgrade scenario in iOS. So why is no change to the subscription happening please?
I am looking to give all of our company staff a free ‘upgrade’ to our paid plan.I see in the docs about ‘granting entitlements’, but only users who have paid show up, so can be granted entitlements. Is there a way to see all app users to grant entitlements to our staff?
I have RC working fine for both Android and iOS using test sandbox. I can purchase, restore and upgrade subscriptions.Now have sent code for production.Tested Android purchase in production - works fine. Apple has approved and am now trying to test in production, but first with Promo codes. App is in Manual release so not public yet.When I redeem code it downloads the app, and I get to the main page of the app which checks if user has an active entitlement or not, and it comes back false, so it displays the purchase options. If you select restore purchase..it does not recognize. I am checking for PeriodType.normal but not other types.So what I need to know is how RC handles Apple Promo codes (this is the 100 promo codes you can use for influencers)?is PeriodType normal, trial, unknown, or intro? I assume the isActive will be false is there any difference with Google Play promotion codes?I don't have debugging turned on as it is my production code, so I cannot see this.If I know what Pe
On iOS store, I have created 3 products in the same group at 3 different levels. One product at each level. Reading below, I followed the process. In my sandbox environment, I initiated purchase at Level 2, which went through fine. I then initiated another purchase at Level 1 which went through fine BUT... I was expecting Level 2 to be isActive = false! after the Level 1 in-app purchase goes through. I am actually seeing both Level 1 product and Level 2 Product as active and will renew = true for both. Can someone help me understand why this is please? and if it is a normal behaviour? I also read that at any one time, only one subscription can be active in any one group, but this is not what I am experiencing as stated above. Am I missing something?
I have a detail with the update of my application, initially I had uploaded a build with the subscriptions of Renew Cat and these were shown so that users could obtain them, but in this last update they are not being shown, in the documentation they indicate that the subscriptions Real or production are only visible when the build is released, but the binary is being rejected by the App Store because the payments are not visible.
I’m testing in Android emulator with Play Store access using a testing account so no actual money is being charged. I am able to purchase products and packages, but not able to test changing packages using the UpgradeInfo docs. What could the issue be with Play Store or is there some other configuration I need to make somewhere? When I select the package to change to I see the following, which all looks correct in my logs. The SKU is found and the Flutter purchases_flutter package is clearly showing everything good to go at this point. D/[Purchases] - DEBUG(25398): Vending Offerings from cacheD/[Purchases] - DEBUG(25398): Product change started: com.revenuecat.purchases.models.ProductDetails@1e0bf2c4 - offering: packages UpgradeInfo: UpgradeInfo(oldSku=package_3.99_monthly, prorationMode=1)D/[Purchases] - DEBUG(25398): Querying Purchase with package_3.99_monthly and type SUBSD/[Purchases] - DEBUG(25398): Checking if cache is stale AppInBackground falseD/[Purchases] - DEBUG(25398)
Regarding to the official doc ( https://docs.revenuecat.com/docs/webhooks ), I have 2 questions would like to clarify.1/ The description of presented_offering_id mentioned:“Not available for apps using legacy entitlements.”However I could not find the definition of “legacy entitlement”. 2/ The presented_offering_id is listed under “Subscription Lifecycle Events Fields”. But I can create offering for NON_RENEWING_PURCHASE , and I can receive this field from the webhook as well. Our application have a logic based on presented_offering_id, so is it ok to use it for NON_RENEWING_PURCHASE ? Thank you.
Hi there,I want to know how should I be able to limit the number of devices with the same user id , and block the subscription provided after that on another device.Like Netflix and Amazon does, they only allow streaming on maximum 2 to 3 devices simultaneously on there Standard plan.
I am quite confused with this. An insight into how I should plan this would be much appreciated…Here is what i am trying to do… Requirement:So, I have 3 types of Annual subscription products.Product 1 - Annual_10 (manage a team of 10 people) Product 2 - Annual_20 (manage a team of 20 people) Product 3 - Annual_50 (manage a team of 50 people)Q1 - How do I organise this in one or their own subscription group so that only one subscription is active at any one time! I want the person to be able to switch between subscriptions. So if someone buys Annual_20 and after 8 weeks decides to goto Annual_50, I want him to be able to do it by paying the associated cost and Annual_20 to be disabled at that point. Q2 - Can this switch be done through code or it will need to be done in settings on the iPhone? Many thanks
Hey team! I’m evaluating RevenueCat for our startup. Question for you: Say we used RevenueCat, but wanted to transition off to a custom solution down the road. What would the process for that be like? For example, will we need to give up our existing subscriptions to our users, or is it possible to transition everyone over?
We’ve been dealing with a support query from a customer who purchased the wrong annual subscription, then immediately bought the correct monthly subscription (for access to different products), but didn’t get access to the products the new subscription entitles them to.Our support log from 12 Nov 2021 at 15:53 shows that the original annual subscription is still active:Purchases.PurchaserInfo.activeSubscriptionsTPBDYhAnnually 4 Oct 2022 at 06:39TPBDInNoMonthly 4 Dec 2021 at 06:43iTunes shows the customer was given a refund from Apple for the first subscription:Other transactions greyed for confidentiality But the customer details screen doesn’t show a refund event: The customer has called Restore Subscriptions option several times now (which calls Purchases.shared.restoreTransactions), and we have also asked them to delete and reinstall the app to force generation of a new alias - none of this works.We’ve temporarily kept the customer happy by granting them a free annual that expires a
I ran an A/B test on free trials vs non-free trials and I’m trying to understand the results.The thing I’m most confused about is the difference between the revenue chart and the trial conversion chart. When a trial converts, is that when it shows as revenue?Here’s a chart comparing the same product for the last week. It is generating revenue, but no trials are convertinghttps://cln.sh/f9zbQK
Hello, I have had my android app in a closed test on the Google Play Store for the past two weeks. On Monday, i plan to promote the app to live. Is there an easy way to mimic the settings i have for my FollowTheMoney app - debug to a new FollowTheMoney app - release?
I have a server with a database for users and I can control accessing to my services by a login process.I want to grant premium access to users only for one device.If he/she wants to install my app on other devices how can I identify user and disable previous device?Is there any unique user id that refers to users?
Hello, I want to send a log to our logger system when a purchase success. I can get subscription started log from PurchaseProduct method’s callback. But I can’t find a way to send a log when subscription renewed. For example, Unity IAP system was sending a purchase log at the first opening after the player renewing their subscription. PurchaseProduct Method: private MakePurchaseFunc MakePurchaseCallback { get; set; } public void PurchaseProduct(string productIdentifier, MakePurchaseFunc callback, string type = "subs", string oldSku = null, ProrationMode prorationMode = ProrationMode.UnknownSubscriptionUpgradeDowngradePolicy) { MakePurchaseCallback = callback; _wrapper.PurchaseProduct(productIdentifier, type, oldSku, prorationMode); } I can see this logs from your Customer History Thank you!
Hello RevenueCat teamWe are using RevenueCat and we have some questions regarding webhooks.There is a new type EXPIRATION. The relevant subscription is terminated with this request. This means that all subscriptions that are no longer renewed will also be terminated by RevenueCat at the end of the subscription. As a result, we no longer have to worry about the termination on the backend side, regardless of the reported digital end date (“expiration_at_ms”). Is this assumption correct for iOS and Android? We have a relatively large number of requests PRODUCT_CHANGE that do not result in a subscription extension, not even in RevenueCat. Several such requests can come in succession without anything happening. What exactly is the purpose of the PRODUCT_CHANGE request? We are also facing the issue that PRODUCT_CHANGE and RENEWAL webhooks are not always sent in the same order to our backend system. Is this an issue on your side or is this possible to happen and we need to take care of it?Tha
Hi,I am using a web hook to track user subscription status on my server. The new EXPIRATION event seems like a good way to tell if the user should be downgraded or not. This raises a couple of questions though:If a grace period is defined in the App Store for billing issues, when does the EXPIRATION event get fired (assuming the billing issue is not resolved): before the grace period or after?Another question we have is: if a subscription is paused (possible only on Google Play), is this event (EXPIRATION) fired?Thanks!Yariv from the Bizillion team
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.