Discussion and help from anything related to RevenueCat.
Recently active
I am using React Native CLI to develop my app for the Android Play Store, and everything is working fine. I am making the connection to the public API, but when I try to display the paywall screen, I get the error shown in the image. The error code is 23. There is no issue, and I have done the necessary steps, but why am I getting this error? Android Play Store React Native CLIcom.revenuecat.purchases.PurchasesException:There is an issue with your configuration. check the underlying error for more details.com.revenuecat.purchases.PurchasesException:There is an issue with your configuration. check the underlying error for more details.
Hello everybody,After the incident of a few days ago where RevenueCat was not accessible in China, we have deployed the recommended fix as quickly as possible, however it doesn’t seem to be working.We keep receiving messages from users that they cannot access paid features nor see the paywall because of a “network error”. Our error reporting tool logs error related to the SSL verification:Error Domain=RevenueCat.ErrorCode Code=10 "A network error has occurred. 请求超时。" UserInfo={source_function=init(_:dnsChecker:), NSLocalizedDescription=A network error has occurred. 请求超时。, NSUnderlyingError=0x300e8b120 {Error Domain=NSURLErrorDomain Code=-1001 "请求超时。" UserInfo={_kCFStreamErrorCodeKey=-2103, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <8F169AC4-0EF6-4C8D-85B4-001912B77290>.<1>, _NSURLErrorRelatedURLSessionTaskErrorKey=( "LocalDataTask <8F169AC4-0EF6-4C8D-85B4-001912B77290>.<1>"), NSLocalizedDescription=请求超时。, NSErrorFailingURLStringKey=https://api.re
What is the difference between using a delegate (used in the Magic Weather sample app), vs calling Purchases.shared.getCustomerInfo or Purchases.shared.customerInfo() as shown here? Should you use both at the same time, or only one per project?
Due to a mistaken configuration, we currently have 9 subscriptions for each store. Except for duration, products are similar in terms of benefits offered, while in some cases price can change in a 5% of the overall regions. We would like to disable all the useless subscriptions we are offering and maintain only one annual plan and one monthly plan. I know that current iOS subscribers of the disabled plans won’t have the possibility to renew anymore, while for Android users it depends from a renewal setting. Is there any suggested (and legal) process to follow in order to migrate these customers to one of the existing plans we want to maintain? I am thinking of a communication that their plan will convert in legacy and that they can subscribe to one of the available options. I read about price changes that can work for the 5% mentioned above, but in many cases the price will be maintained so this is not our case. I am interested in both App Store and Play Console approaches, thanks!
Permissions to call subscriptions API is checked as validated, but not the other two.I have gone over the configuration for the service account several times, following your documentation instructions, but never the less I’m stuck. I have also waited several days before refreshing the status again, but it’s the same. I simply don’t know what else to do know except reaching out to you.I’m creating an app for Android with package name biz.codepower.echonotes and RevenueCat App ID app4742cd71c6.
Hi team,Is there a way for us to get access to the underlying `appAccountToken` of a transaction?It looks like the SDK always adds it when a StoreKit2 product is purchased, but so far it seems the id is only available in the Purchase method callback, specifically as part of the StoreKit2 transaction itself.it would save us a significant amount of work if `appAccountToken` was available in `CustomerInfo` (in our specific case, for `NonSubscriptionTransactions` if it makes any difference).Thanks in advance!
On test subscription phase, Does RevenueCat send events on first subscription expire and then for renewal? I'm worried because is there any time window between expiration and renewal when user will loose premium access temporarily?I have a subscription plan on Google Play console with auto-renewal on. However, infrequently I see the paywall is prompted on my app (which I’m triggering when isActive is false) and when I try to re-subscribe, it says subscription is already active. I'm suspecting this is due to the expiry (which starts my Paywall fragment) and later renewal event, which restores the subscription.What could be possibly done to avoid this? I also have grace period enabled, though I’m not handling it anywhere in the code to check subscription status. Is this could be a test subscription quirk?
Hi,I would like to test different pricing for various locations on both Android and iOS. What is the best way to approach this, especially on Android?Thank you in advance for your guidance!Best regards,Wojtek
with expo sdk52, "react-native-purchases": "^8.5.0", pod install --repo-updateI had this error message[!] CDN: trunk URL couldn't be downloaded: https://cdn.cocoapods.org/Specs/9/a/d/PurchasesHybridCommon/13.15.0/PurchasesHybridCommon.podspec.json Response: Error in the HTTP2 framing layerfixed it by updating cocoapods :CocoaPods 1.16.1 is available.`sudo gem install cocoapods`Et voilà ;)
I am getting the following error when trying to test my app integration with Amazon. I have already implemented purchases with RevenueCat on this same app for Google Play and Apple, and it works fine on those stores. Now I am getting this error when I try to start selling subscriptions on this app on the Amazon Appstore. D/[Purchases] - DEBUG(15726): ℹ️ Offerings cache is stale, updating from network in foregroundD/[Purchases] - DEBUG(15726): 😻 Start Offerings update from network.D/[Purchases] - DEBUG(15726): Request already scheduled with jitter delay, adding existing callbacks to unjittered request with key: BackgroundAwareCallbackCacheKey(cacheKey=[/subscribers/xxx/offerings], appInBackground=false)D/[Purchases] - DEBUG(15726): ℹ️ Updating pending purchase queueD/[Purchases] - DEBUG(15726): ℹ️ No subscriber attributes to synchronize.D/[Purchases] - DEBUG(15726): Getting storefront from cache was null.D/[Purchases] - DEBUG(15726): ℹ️ Listener setD/[Purchases] - DEBUG(15726): API req
I have a question about initializing the Purchases SDK, based on the following points from the docs:If no App User ID is provided, RevenueCat will generate a random App User ID and cache it on the device. The SDK should generally be configured early in the app lifecycle.Many apps allow users to purchase subscriptions before creating an account. This reduces friction between opening the app and making a payment.But, this means that I'll need to instantiate the Purchases SDK before receiving a User ID from my authentication system. This results in the creation of an anonymous RevenueCat ID for everyone who opens the app, even if they don’t create an account or make a purchase. Assuming a typical conversion rate (e.g., 5%), this would mean that 95% of the users in my RevenueCat dashboard are likely people who opened the app once and then deleted it, which seems highly inefficient. Is there a more efficient way to handle this situation without generating so many unused anonymous users?Than
Hi Everyone,HAppy New Year!II had a customer register recently and his son attempted to register too, but his dad had used his iTunes account, therefore the son couldn’t start another subscription for his account.How can we get around that problem? Technically speaking each user should have their own subscription associated to their email address. In this case I had to let the son submit his request using his Dads subscription.Hope that makes sense. Not a real technical issue, but one I hope the community can help with. Thanks in advanceNick CockinosRedhot Internet Solutions Pty Ltd
Hi, I have 2 packages to offer: Starter, Premium.I have multiple offering that I’d like to display, based on the user sub.Free User will get Offering A, which has Starter Plan or Premium Plan.Starter Users will get Offering B, which has Starter->Premium special offer. I have a few placements in my app, where I want to display the right offering based on the user’s current subscription, but I don’t see any attribute in the Targeting which I can relay on as user entitlement/subscription. What’s the best way to do it, if possible at all?
I am trying to get my brain around how custom offer codes are supposed to work and I just had a friend test one in my production app and everything worked (I think) but Revenuecat shows the offer used as a 1 week trial when the offer code was a 1 year trial. Here’s the scenario: I’m using paywalls and I have a $29.99 annual subscription with a 1 week free trial Everything about the paywall has been tested in prod and works great I created a custom offer code in App Store Connect for my early users to get a free year of the app. I am only using this code via the App Store link. User gets a link and goes through the App Store redemption process. A friend of mine tested this process and it seemed to work for him. His subscription in settings shows that he has the 1 year free trial.The problem is, when he signed up, Revenuecat shows his subscription as the standard 1 week trial not a 1 year trial. I maybe be misunderstanding how this should work on the Revenuecat side but is this expected?
In the revenue cat system, we first calculate monthly revenue and then annual revenue. However, on the dashboard, the monthly revenue appears as $0, while only the annual revenue is displayed correctly. In reality, both monthly and annual revenues were calculated without any refunds for the monthly revenue. Why does the dashboard show $0 for the monthly revenue?
Hi, I am using revenuecat in my Apple and android apps for in app purchases. These are often very small IAP starting from €0,29. Now I want to add this feature to my website as well so I have to integrate Stripe. Now I see that they have a standard fee of 1.5% + €0,25 per payment. And a minimum purchase of €0,50. Is this also the case with the revenuecat + stripe intergration?grts
I have a problem with creating paywalls. I've already tried it in the following browsers: Chrome, Firefox, Opera and Edge. The problem always in the selected language, no matter which:English (United States) has an error.and the Create Paywall button doesn't work. See the image
I have a paywall with weekly/monthly/annual and lifetime. Lifetime has been translated to “Durée de vie” which is obviously Google Translate / ChatGPT at work because it means “duration of life / life expectancy”, aka “life time” in a literal way. How to change the wording to “À vie” or “Achat permanent”?
I have a question regarding a RENEWAL event. Specifically, for Android, when the webhook receives a type=RENEWAL, when should we process it and consider it a real resume of subscription to where entitlements should be granted? Currently according to the documentation this RENEWAL event should only happen after a SUBSCRIPTION_PAUSED event for Android. Is this correct or can the previous event be of another type? if so, what other types should be supported.Specific example app user ID: JNhjegTrnBTZIbsYLzZkHPmroOl1Firstly, Customer History does not even show an event that happened today for RENEWAL:But as you can see from my database of logs for each webhook event I got this: Second, is this order expected? After Expiration we would get a renewal or an initial?Should we proceed with granting entitlements?
How best to handle this? I have 2 paywall offerings both unlock the same entitlement. However one is at a reduced cost. Prior to moving to a subscription model the App offered a one time purchase. If user had purchased the one time they are now shown the 33% discounted paywall. If they are new customer or had no previous purchases they see the full price paywall. The issue is a user who qualifies for the discounted option takes it but them successfully applies to Apple for a refund of the original in-app purchase. A full 11 months later. Now that I don’t mind because it’s Apples way. What I do mind is the user getting the discounted rate and then refunding their transaction of 11 months previous and now should not be entitled to the discounted rate. Finally my questionsCan I force user to, at renewal of the subscription onto the standard price?detect either in code or via the revenuecat dashboard customers who have taken the discounted option and subsequently cancelled (claimed refund
I’m building a subscription-based app where users can choose between two base plans (Basic and Premium), and I want to offer several recurring add-ons (e.g., Read Receipt, Priority Message, etc.), each priced at for eg : AUD 2.00/month. The goal is to allow users to dynamically add or remove these features, with their subscription price updating accordingly or maybe even multiple subscription . Is this possible through in-app purchases and revenuecat ? If so could you please provide me the best approach . Thanks in advance
Initially, I created two apps in one project (Project A).However, I didn't feel comfortable splitting the data exactly how I wanted it in the dashboard, so I created a new project (Project B) to split it up, try await Purchases.shared.syncPurchases()to migrate them.Initially, this seemed to work well, but Project A still had the customer's information. How can we fix this?
I'm using RevenueCat's fetchOfferings to retrieve subscription details for my app. While it successfully fetches the description of the subscription products I created in the Google Play Console, it does not retrieve the benefits that I added when setting them up.Here is an example of the output returned by fetchOfferings:{ "monthly_plans": [ { "offeringIdentifier": "test", "product": { "presentedOfferingIdentifier": "test", "subscriptionOptions": [ { "presentedOfferingContext": { "placementIdentifier": null, "targetingContext": null, "offeringIdentifier": "test" }, "introPhase": null, "freePhase": null, "isPrepaid": false, "presentedOfferingIdentifier": "test", "fullPricePhase": { "offerPaymentMode": null, "billingCycleCount": 0, "price": { "currencyCode": "INR", "amountMicros": 300000000, "formatted": "₹300.00" }, "recurrenceMode": 1, "billingPeriod": {
Should I be able to fetch products that are in the “Waiting for Review” state in Apple App Store Connect?I’m getting this error when testing locally on a physical device which is also logged in in a sandbox account:(RevenueCat.OfferingsManager.Error-Fehler 1.) There's a problem with your configuration. None of the products registered in the RevenueCat dashboard could be fetched from App Store Connect (or the StoreKit Configuration file if one is being used). More informhttps://rev.cat/why-are-offerings-empty I verified everything with the article, but I’m not sure if I’m able to fetch products in the waiting state. Would make sense tho because it’s one step further than the “Ready To Submit”
I have this scenario that I am trying to avoid as it is very confusing how to even manage such a subscription:User1 logs into the app (app_user_id is configured) User1 purchases the 1 month subscription User1 logs out User2 logs in (new app_user_id is configured) User2 tries to purchase the 1 month subscription and gets “already purchased” error BUT if User2 tries to purchase the 3 months subscription, iOS allows it (and treats it as product change?)Will this mean same iOS account has actually made 2 purchases for 2 different users or now the lines are crossed and the first user has been upgraded?FWIW, I have revenue cat configured to now allow transfers since the entire app is behind a login and each user should have their own subscription per one account.
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.