Discussion and help from anything related to RevenueCat.
Recently active
Hi All,Trying to publish an app and got the following:Unsafe EncryptionYour app contains unsafe cryptographic encryption patterns. Please see this Google Help Center article for details. p0.e0.c Unfortunately got nothing else, no email, so just have to guess what code its refering to. Best guess is the key used to configure revenuecat for in-app purchase.configuration = PurchaseConfiguration('goog_********************************');They suggest using Jetpack (https://support.google.com/faqs/answer/9450925)I am however struggling to implement this in flutter. Does anyone have any example code/articles etc that could help?I suspect this will impact all apps that use a key within the app like revenuecat.Thanks
Hey all, I have a question for the wider community, as well as RevenueCat mods & contributors. I, like most people, who lean heavily on RC .. absolutely love the service. Not to mention it’s support, its amazing SDK and the hours/days/weeks it has saved me. As soon as I realised how important RC was for the development of my indie-app developer journey, I opted for the Starter plan.If I’m completely honest, I didn’t really know the difference between the Free and Starter .. it just felt like the obvious choice, and I was also sooooo far away from $1,000 MTR 😃 ** STOP PRESS **I’ve never reached the MTR threshold to require a RC payment .. but in the next month or two, I hope to do exactly that 🎉 back to my questionWhat are Starter plan customers doing, that I’m not ?Everything in Free plus charts, customer lists, webhooks, Slack integration, and up to 5 seats for your team I look at the Charts every now and again .. but most of the time the line looks the same as any other charts
Hey guys! I would like to share a problem to get some help.I have an app with Expo and I'm trying to integrate RevenueCat with the react-native-purchases lib. I'm not experiencing any problems with iOS, but when trying to get the products that have already been imported into the RevenueCat console and are active on the Google Play Console, I'm getting the error message: "The device or user is not allowed to make the purchase. "PS: I'm getting this error in production and I'm trying to get the products with "getProducts" as in the documentation.Thanks in advance for any help!
Hello, I have a customer who was charged once their trial ended, even though they had cancelled their subscription before the trial came to an end. Can you please help explain this?The RevenueCat messages are:Converted from a trial (8:41PM, 2023-05-10) Opted-out of renew (5:12PM, 2023-05-10) Started a trial (8:41PM, 2023-05-03)Thank you!Kris
Question on the use of originalApplicationVersion to determine if I should grandfather certain users into a free subscription.The docs say:The first date this entitlement was purchased. May be the same as the latest purchase date.Now, what if the app was previously purchased on the Apple App Store (iOS), not using RevenueCat and entitlements? I’ve only added RevenueCat in the most recent version, which has not yet gone live on the App Store. Will originalApplicationVersion still be populated with the correct build number when the user first purchased the app even if it was originally purchased without RevenueCat? (Also, that build number is in fact the build number, and not the version number, as in version 3.0 build 1234, correct?)
We've noticed that when a user subscribes with a free trial and cancels it (after the trial period), then subscribes again, our code doesn't log the successful purchase, even though RevenueCat does. This seems to only occur for subscriptions without a trial period, as our code only looks for an entitlement set up as a subscription with a trial period.We believe the issue lies with our code not accounting for subscriptions without a trial period: const purchaseMade = await Purchases.purchasePackage(the_package);if (typeof purchaseMade.productIdentifier !== "undefined") ... For some reason, this returns true when they subscribe with the free trial and false when they subscribe without it.Additionally, we're facing another issue with testing subscriptions after a trial ends effectively. We don't know how to do this without waiting for 3 days(introduction trial period). Do you know of a quicker way to test this?
I’m getting an issue opening any docs page, such as https://www.revenuecat.com/docs, https://www.revenuecat.com/docs/getting-started, or https://www.revenuecat.com/reference/revenuecat-rest-api.The page flashes with content for a second before turning white.Things I’ve tried:Multiple browsers Disabling browser cache The browser on my phone on data instead of WiFi Ensuring browser plugins like ad-block are disabled
Hey, We’re using RevenueCat in conjunction with a few other analytics/reporting tools. I’m trying to link iOS subscribers between RC and some of those other tools.What I’m trying to do is link an RC subscriber to their Apple SubscriberId (which we get when we download the subscriber report from AppStoreConnect).All I see in the RC webhook is a “transaction_id” but I’m not able to link that. Has anyone had success doing this type of link in the past?
I follow the documents https://www.revenuecat.com/docs/reactnative#option-1-react-native-packageto install the package react-native-purchases.When I run the project on Xcode I got the errors: Has anyone experienced that problem?
We want to integrate RC with OneSignal and are facing some questions we do not find clear answers in the documentation.(https://docs.revenuecat.com/docs/onesignal)The main issue is that OneSignal does not have a combined “User”. They only have “PlayerIds” targeting specific devices and channels.Our Users use the app on multiple devices and platforms. (iPhone, iPad, Mac)We use anonymous user ids for RC and when a user restores their purchases, RC is creating aliases to link the data together.When we set the $onesignalId with the SDK, it is a PlayerId, meant to target push notifications to one specific device. So RC Subscription Events are only set to this PlayerId with the API Integration.If a user is using multiple devices, he has multiple PlayerIds. But RC is only adding tags to the one set as $onesignalId.To use OneSignal Journeys, we need to set the externalUserId.We can use the originalAppId from RevenueCat here.Sadly there is no detailed documentation on how to use Journeys and Pu
My Flutter app crashed when get offerings. I use purchases_flutter: ^4.11.1Error:My Code;
I’m currently setup with “Transfer to new App User ID”for my“Transferring purchases seen on multiple App User IDs” option.Where should I be calling SyncProducts() that makes most sense?Should it be if I call getCustomerInfo after signing in and it comes back empty?If I do this, can I safely assume that I’ll never have to show the paywall screen and I can just display a waiting dialog until the new entitlements arrive in my listener?At the moment, I’m just calling SyncProducts after sign in but I would like to hold off from displaying the paywall if I’m certain that the purchases are going to get transferred.I could obviously just test this but as we all know, just because something SEEMS to be working, it doesn’t necessarily follow that it will consistently if the application runs contrary to convention.
I see with the new Developer API that we now have the ability to create products, entitlements, offerings, and packages. This is great, but I would really like to be able to also create a new app via the API. Also as part of this, I would need to then be able to get the public key for the newly created app in order to automate on my side. Are there any plans for adding the ability to create an app through the API in the near future?
Hi! Deep link clicks to apply custom promo codes isn’t working (cf screenshots) in Android. If my code is “BETA”, I’m using the link https://play.google.com/redeem?code=BETA as specified in your doc and in the google play doc. Inputing the same code, “BETA” here, manually in the payment prompt in my app works. I’ll add that deeplinks for single-use promo codes work (using the same link construction rule as for custom promo codes, so if my code is 123456789 the link https://play.google.com/redeem?code=123456789). Any idea how to make deeplinks for custom promo codes work? Best,Jane
Hi.I’m using iOS SDK.How often does CustomerInfo update from network (vs cache)? Can I influence the update frequency? Can I force a network update?Many thanks,
I’m upgrading an existing paid app to a yearly subscription model, and have followed this guide: https://www.revenuecat.com/blog/converting-a-paid-ios-app-to-subscriptionsand got everything set up within my app, tested it using a sandbox, and made sure that the entitlements are working ok when I subscribe.One thing I’m unsure about is that I want existing users (those with v1 of the app) to get a year’s free subscription, and then after that, have them go onto a reoccuring subscription.In RevenueCat, I’ve set up a package that has full access with a 14 day free trial (called “full”). I’m calling this code:func syncReceipts (completion: ((Purchases.PurchaserInfo?) -> Void)? = nil) { CompatibilityAccessManager.shared.syncReceiptIfNeededAndRegister( entitlements: [.init(entitlement: RevenueCat.Entitlements.full.rawValue, compatibleVersions:["1.0","1.0.1","1.0.2","1.1"])], completion: completion ) }func checkAccess(result: @escaping ((_ isActive: B
I have similar question like this one herehttps://github.com/RevenueCat/purchases-android/issues/82When using slow test card on Android in-app purchases all I get is purchase error with message='The payment is pending.'. Is there a way to get notified when transaction has been completed? If not, what options do we have, we can iterate through purchaserInfo.nonSubscriptionTransactions to get all in-app purchase?
Hello - thanks for reading! I have a slightly unique use case and am looking for guidance. Product: A service that allows users to upload a video and we create clips from that video that the user can then watch in the app. Goal: I want users to experience this service for free so they can understand and fully appreciate the value of it. Then on subsequent video uploads I want to charge them. Issue: I’m not aware of any way to discount/coupon the first In-app purchase and then charge the user for subsequent purchases. This is on iOS, and the product is a consumable product. Appreciate any help!Max
Hello, i came across a weird behavior using the offer code with url redirecting to app storeEnvironment: TestflightI was charged for the offer, and when it clicked to open my app, nothing happened and revenue cat did not track the purchaseI already call sync purchases when the user returns back to the appI was wondering if there is a time where the offer code redemption is not active yet and i call sync purchases in that time, or that maybe testflight does not track purchases, but i got charged, which is weird
Hey all! I’m researching different ways to do our next feature and I have some doubts about if RevenueCat can handle the following use case: We want to build a cashback feature with certain rules based on the app usage of the user in a given period of time. To be able to do that we need to know all the payments received in a given period of time to be able to calculate the amount of money to cashback and to whom.Is there a way to easily do that with RevenueCat? An example flow that might be enough: Every first of the month, we can download a .csv file with a list of events occurred in a given period (past month) including: userId - amount ($) - event (renewal/initial_purchase) - timestamp - duration (monthly, annual) - productId
I have a mobile app ready to go using RevenueCat, I want to hook up a web equivalent of checkout. I can see a guide on how to connect stripe, but purchasing isn’t the only thing RevenueCat is concerned with, what about getting user entitlements? I can do something like: const res = await fetch( `https://api.revenuecat.com/v1/subscribers/${user.id}`, { headers: { 'Authorization': `Bearer ${'appl_x'}`, 'Content-Type': `application/json`, 'X-Platform': 'ios', 'accept': 'application/json', }, },) .then((res) => res.json()) .then((res) => { const entitlements: Record<string, PurchasesEntitlementInfo> = {} if (res?.subscriber?.entitlements) { Object.keys(res.subscriber.entitlements).map((v: string) => { const value = res.subscriber.entitlements[v] const activeSubscription = res.subscriber.subscriptions?.[value.product_identifier] entitlements[v] = { expirationDate: value.expires_date,
We recently set up Apple search ad’s attribution through revenuecat and started testing new campaigns. For all of our campaigns except one the tracking has been great and super helpful. However for one of our campaigns that has been spending ~$75/day for the last two weeks there is zero data on it.. Very odd. Has anyone encountered something similar/have any solution ideas?
I’m trying to download the IAP Key file, but it opens in a new browser tab. If I copy the key to a file and upload, it’s rejected for having the wrong file name. I need to know (1) What should the name of the file be, or (2) How to download the file instead of opening in the browser.
If I call ‘restorePurchasesWith’ and there are no purchases to restore, I see an error out of the google billing wrapper: “Error acknowledging purchase. Will retry next queryPurchases. DebugMessage: Item is not owned by the user.. ErrorCode: ITEM_NOT_OWNED.” But this error does not bubble out of the wrapper up to the error handler provided to the ‘restorePurchasesWith’ call. How can I tell if restore fails in this manner.
Hi, we’ve been able to get IAP working on Google and Apple, but are stuck on Amazon:We have Amazon App Tester set up with the .JSON file for our IAP products coming up as per the Amazon documentation. Making a purchase however, does nothing. I’m monitoring the trackers and RevenueCat is called as with the other two platforms. There’s is just no purchase pop-up.Debug Logcat gives me this:AbstractCommandTask: On Exception!!!!: com.amazon.a.a.o.b.a.a: DATA_AUTH_KEY_LOAD_FAILURE: CERT_NOT_FOUND: nullSimpleTaskPipeline: KIWI_COMMAND: Task finished executing: com.amazon.a.a.f.b@808d4c4Unable to start service Intent { cmp=com.amazon.mShop.android.shopping/com.amazon.mls.config.internal.sushi.uploader.BackupUploaderService } U=10: not foundError executing JobStatus{24cb9cd #u10a478/426136249 com.amazon.mShop.android.shopping/com.amazon.mls.config.internal.sushi.uploader.BackupUploaderService u=10 s=1010478 TIME=-18h7m43s58ms:-16h59m54s716ms NET PERIODIC READY}From what (very little) I could fi
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.