Get help with anything related to RevenueCat.
Recently active
My Xcode app has RevenueCat Purchases.configure(withAPIKey: "myApiKey") which runs fine in a device from Xcode. The same app crashes in TestFlight after 2 minutes even if left alone. I commented out Purchases.configure and it stopped crashing in TestFlight. I need help.
Hey guys. Apparently there has been an update to the Google Play Developer Program Policy where customers “must be able to easily cancel their subscription from within the app.”I was wondering what the best approach for this was. I’m under the impression that cancelling a subscription in-app isn't possible yet? If I’m wrong could someone point me in the right direction?I did come across this thread that says how redirect the user manage their subscription? Does any one know if this method would suffice?
Hello:We have subscriptions setup in our app, but we want to add a consumable product to give the user the same entitlement that he will get when subscription for 1 month, but this time it will be for 1 day only.is there a way to do this in Revenuecat, and is there a place in the documentation that we can follow to setup this kind of process?Our app uses Firebase as backend, and Revenuecat Firbase extension is added to the projectThank you
Our iOS app stopped receiving responses from RevenueCat sometime in the past week. No code was changed on our end and our live app is no longer displaying any subscription options.This call is simply not returning successfully, nor is the failure block called. It doesn't matter what "offering" is - I’ve tried several of our offerings that are registered with RC and that have worked before. Any ideas what could have broken? This has completely broken in-app purchases for us. subscriptions?.fetchPackages(for: offering, onSuccess: { [weak self] (packages) in let sortedPackages = packages.sorted(by: { $0.product.price.compare($1.product.price) == .orderedDescending }) ... //this block is not called }, onFailure: { (error) in //this block is not called })The only thing I see logged in the console is “DEBUG: Vending Offerings from cache”I’ve verified that all of our In-App Purchases are still in the “Approv
Services like Stripe require a secret key and a server to make a purchase. If it was possible to do entirely client-side, wouldn’t Stripe do it be default?
My ionic cordova project can no longer run on IoS since last Thursday and I have no idea why this is happening.When testing the Xcode, the code no longer processes the PurchasesCoreSwift-Info.plist, with results that the entire Purchase folder remains empty and it fails as it can not import from the Purchases.h file. We have a podfile that installs the PurchasesHybridCommon as usual (it might have something to do with that, as we were upgrading the Cocoapods when the error occured, unfortunatelly setting it back to previous versions hasn’t solved the issue.) Is there anyone else who experiences this problem? Or can offer advice where to look?
ContextI’m building a referrals feature that gives users 30 days free access to our subscription. If they’re currently on a trial, it’ll extend it by 30 days. For example, if you have a 7 day trial, it’ll extend to 37 days. ProblemWhen I extend someone’s trial, I don’t see a Revenue cat event for that subscription update. Stripe sends a customer.subscription.updated event, so everything’s fine there.My hunch is Revenuecat doesn’t support this edge case, which would be very unfortunate :/ Any recommended solutions or workarounds? Seems like a core use case to update users when anything on the subscription changes.
We have a monthly subscription in Apple and Google which has 1 introductory offer (i.e. 1 week free trial). Is it possible to create a second introductory offer (e.g. 2 week free trial) on the same product? Ive noticed its possible the create the offer on app store connect but how does the app know which introductory offer to display to the user? We do not want to offer the 2 week free trial to everyone.
My android app is already published in production track and I still cant manage to retrieve offerings. The ids on RevenueCat are identical to the ids in Play Store, they acre active and i’ve waited more than 36 hours. Here is the log:D/[Purchases] - DEBUG(14514): ℹ️ Vending Offerings from cacheD/[Purchases] - DEBUG(14514): ℹ️ Checking if cache is stale AppInBackground falseD/[Purchases] - DEBUG(14514): ℹ️ Offerings cache is stale, updating from network in foregroundD/[Purchases] - DEBUG(14514): 😻 Offerings updated from network.D/[Purchases] - DEBUG(14514): ℹ️ API request started: GET /subscribers/%24RCAnonymousID%3A2ac7bf44a8bd48f192ec7584b895dcab/offeringsD/[Purchases] - DEBUG(14514): ℹ️ API request completed with status: GET /subscribers/%24RCAnonymousID%3A2ac7bf44a8bd48f192ec7584b895dcab/offerings 200D/[Purchases] - DEBUG(14514): ℹ️ Requesting products from the store with identifiers: prazosprocessuais-planobasico-teste1, teste_10_coinsD/[Purchases] - DEBUG(14514): ℹ️ Products requ
How to solve this "Your first subscription must be submitted with a new app version", Submit for review always disable , and already submitted and published my app, the subscription plans is not fatch for the users because it's rejected it. now I cannot submit it with the app. When i search they asked to add the subscription on an In App Purchases section which it's not there any more, It was only at the first time, now not.
I am testing out the sample app “Purchase_tester” and getting an error in the following part of the code highlight in orange. class _PurchaseButton extends StatelessWidget {final Package package;const _PurchaseButton({Key? key, required this.package}) : super(key: key); @overrideWidget build(BuildContext context) => ElevatedButton(onPressed: () async {try {final purchaserInfo = await Purchases.purchasePackage(package);} on PlatformException catch (e) {final errorCode = PurchasesErrorHelper.getErrorCode(e);if (errorCode == PurchasesErrorCode.purchaseCancelledError) {print('User cancelled');} else if (errorCode ==PurchasesErrorCode.purchaseNotAllowedError) {print('User not allow to purchase');} else if (errorCode == PurchasesErrorCode.paymentPendingError) {print('Payment is pending');}}return const InitialScreen();},child: Text('Buy - (${package.product.priceString})'),);} The error says; The return type 'InitialScreen' isn't a 'Future<void>', as required by the closure's conte
In the past 3 days we have updated for apple review but they keep rejecting them. purchasePackage throw "There was a problem with the App Store", i tried to ingore this message. purchasePackage return Succeed but entitlement is empty The subscription was successful without going through the payment process. but my app don't get any exception
When does a payment (subscription) made on google play appear on the Revenuecat screen?
I was recently troubleshooting a customer-reported issue related to a SUBSCRIBER_ALIAS event and I ran across this post stating that the SUBSCRIBER_ALIAS event had been deprecated and has not been sent “for awhile now.”However, that reply was dated 25 February 2022, and the SUBSCRIBER_ALIAS event I was troubleshooting was received much more recently, on 2 June 2022. So apparently SUBSCRIBER_ALIAS events *are* still being sent?I’m currently trying to update our handling of SUBSCRIBER_ALIAS events to account for a change to “original_app_user_id” in the same event -- something we had not accounted for (and the root cause of this customer reported issue.)But the aforementioned post, and the Webhooks documentation which now lists SUBSCRIBER_ALIAS as deprecated has me wondering if I should be handling an entirely different event?Is there any documentation that explains how the account-sharing functionality that was enabled by the SUBSCRIBER_ALIAS event is being replaced, now that the event
I mean the case when the one user (team owner) is paying money for a few other (members), in other words, in other words, all team members shared one common (group) subscription, and only the owner pays for it. I'm new with the RevenueCat and didn't find this feature in the Doc, so decided to ask for being totally sure.
Context: i have an app live on google play. everything works fine i add a suffix to package name to create another flavor of the app i publish this new app to closed testing and add a list of testers i create new app on Revenue cat (same package name as my new flavor) i add the same Service Account credentials JSON for new app as the one for existing live app where everything works fine i added 2 products in revenueCat for this new app. the Identifier for each product is matching the Product ID on google play for that new app subscriptions. Each product has the same entitlement as existing app products. all are sharing the same entitlement. I am checking the Debug info for this new app: when i am checking the logs, i can see [ Products request finished for : {my products} Retrieved skuDetailsList: SkuDetails: {"productId":… ] - here i have all the products, but then i can see the next row of logs : Requesting products from the store with identifiers: {my products}, Products re
Hello Revenue Cat Community. I have an internal test track of a Google Play app, with a RevenueCat managed subscription (anonymous, no app login). I was under the impression that if a user bought a subscription on Device A , and then downloaded the app on Device B (and logs into his Google Play account on that device) - then the subscription should only work on one of the devices. Currently I am testing with 2 physical devices - and it doesn’t seem to matter which device I bought the subscription on, and which device I use to access the app: the subscription works on both of them.Is my assumption wrong then? Subscriptions will work on any device - so long as the user is logged into the correct Google Play account? (and does this logic hold for Apple?) Thanks.
I am testing a scenario where the user bought a subscription with an iPhone and tries to manage his subscription using an Android device. RevenueCat’s SDK gives me this link to manage the subscriptions: purchaseInfo.managementURL = https://apps.apple.com/account/subscriptions.When my app lauches this URL, the user is sent to Apple’s Music website, which instructs the user to install Apple Music app.I installed Apple Music app as per Apple’s instructions, and tried to manage the Apple subscriptions from an Android device again. This time my app launches https://apps.apple.com/account/subscriptions and Apple’s Music Android app is opened, but it stays in a never ending loading animation, so I can’t access my subscriptions from this https://apps.apple.com/account/subscriptions URL.I also tried opening this same URL from a browser on a Windows PC, but the page also never ends loading, with the following message:
I have introduced monthly and yearly subscriptions using RevenueCat SDK in my app. My app including these products has been approved, but the subscription products are still “In Review” status for nearly a week.Is this a regular delay according to your experience? Do you think I should keep waiting?I am concerned because my app offers these non-available products to the customers. Not a good user experience.It seems I cannot revoke these subscription products from review in the AppStore Connect interface. I wonder if it is possible to revoke them and submit them again, if it helps?I wrote to the AppStore support, they replied that they will let the reviewers know. But nothing changed. The waiting silently continues. I keep checking and seeing “In Review” status with no feedback or update.Thank you.
Hello!BackgroundWe’ve noticed that we now typically receive a BILLING_ISSUE webhook followed by a CANCELLATION webhook with a reason of BILLING_ERROR when a customer encounters billing problems in the App Store/Play Store.The webhook documentation does not really tell me what the practical difference is between these two:BILLING_ISSUE:There has been a problem trying to charge the subscriber. This does not mean the subscription has expired.CANCELLATION w/ BILLING_ERROR:Apple, Amazon, or Google could not charge the subscriber using their payment method.The CANCELLATION event with cancellation reason BILLING_ERROR is fired as soon as the billing issue has been detected. The EXPIRATION event with expiration reason BILLING_ERROR is fired if the grace period (if set up) has ended without recovering the payment, and the customer should lose access to the subscription.From the descriptions here, it kind of seems like they are interchangeable. Neither signify that the subscription has expired,
I have a web application as main and a mobile application, Apple also forced us to give the option to charge for apple within the app, we are implementing.But I'm in doubt about his signature at apple after his signature expires due to payment failure, Apple says that it goes into a Billing Retry mode and that it stays 60 days trying to charge…Does this mode only enter when the grace period has been enabled or does it activate the same? My question is, there was no payment, a billing_issue event came, then an expiration event, and a cancellation event comes right after expiration, or does it only come cancellation after 60 days?I'm confused as to how the apple subscription is after it expires due to lack of payment, if it is active, then I enable my client to contract outside (web) with our means of payment and Apple is still trying 60 days, there could be two methods charging together, ours and Apple's... Can I only enable customers to contract outside Apple after these 60 days? Don't
I’m trying to delete two unused products (the ones without entitlements in my account). However, when I try to do this, I get a message saying that they can’t be deleted because there are transactions using that product.However, no matter where I check (lists, charts, sandbox purchases, etc.) I can’t see any record of subscriptions using those products. How can I determine what transactions are being referenced so I can successfully delete the products?Separately, I ordinarily wouldn’t care about having unused products, but I’ve been experiencing an issue where I see [Purchases] - WARN: 🍎‼️ Invalid Product Identifiers messages for those two products appear while testing my iOS app on a physical device.I receive 50+ of these messages within ~1 second, memory usage for the app spikes from 30MB to >2GB, and the entire app crashes. What is going on here and how can I resolve this issue? I’m very concerned that my users could be experiencing this as well.
After subscription expires due to non-payment on IOS can I create a different grace period (example of 3 days) and control it on my own or if it is expired at Apple, the customer really must not have access to my Application and Apple prohibits it if they have access for a few more days even though the grace period has not been enabled from native Apple?
How many days before renewal (expiration date)can a BILLING_ISSUE event come from Apple?In Apple's documentation they say that they try to see if there is a problem with a payment with the customer 10 days before and 24 hours beforetry to renew the customer's subscription several times.I was in doubt if I can receive a BILLING_ISSUE 10 days before that period or if it would only be within 24 hours before.
Hi, We already have a Stripe webhook endpoint that does preprocessing and database updates for the webhooks listed here among others on our Express server. Is there a way to `forward` that webhook that Stripe sent our server to RevenueCat once our updates are done rather than having Stripe send RevenueCat the webhook directly? Inside those webhooks from Stripe am I simply able to call the following endpoint and the subscription status would automatically updated in RevenueCat, thereby triggering a RevenuCat webhook?await axios.post('https://api.revenuecat.com/v1/receipts',{ app_user_id: userId, fetch_token: subscription.id },{ headers: { 'X-Platform': 'stripe', Authorization: `Bearer ${config.revenueCat.stripe}` } })
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.