Get help with anything related to RevenueCat.
Recently active
I've developed a Flutter app tailored for both Android and iOS platforms. Within the app, we've implemented a subscription mechanism utilizing RevenueCat to manage our in-app subscriptions. One of our primary goals is to provide our users with a seamless experience, such that their subscription status remains consistent across multiple devices or platforms. To put it simply, if a user subscribes on an Android device and later logs into their account on an iOS device, their subscription status should be synchronized, reflecting their active subscription.With this intent in mind, we've configured RevenueCat to utilize a custom user identifier, specifically using the user's Firebase authentication ID. We believed that this would facilitate the synchronization of subscription status across platforms.Our next endeavor is to introduce promo or offer codes into our application. These codes, when redeemed, should be tied directly to a user's account, ensuring they benefit from the promotion re
My application got rejected due to:Guideline 1.1.6 - Safety - Objectionable Content We noticed that your app’s in-app purchase products are mislabeled as Apple Pay, which could confuse and mislead users.To clarify this further, when they tapped to purchase the item, my app initiated Apple Pay [payment sheet] instead of In-App purchasing!!!I have updated my app to Revenue Cat, I am not doing anything about this the sheet is showing automatically by the app store, not from my side. I have tested via Test Flight and it shows the right sheet: any idea why this happened?
I have just published on stores my Flutter app with the new subscriptions, but it is still on sandbox, and when i try to make a purchase, the bottom modal has the Testflight text.How to switch to release env?thanks
I want to further clarity on my understanding. I hope to get a response.My question is regarding the 1% commission when sales are above 2500 USD. Does this revenue sum only apply to the products i link to revenue cat? I have only linked my subscriptions and not my one time payments where I handle them myself.any help and clarification on this will really be appreciated. Thank you!
I'm trying to refund a user's subscription, but I can't seem to find such an option. What could be the reason for this?Of course, it’s from Play Store
Using RevenueCatUI.presentPaywall() how do I present a specific paywall for a particular offering identifier? Can’t find this anywhere int he docs. For RN. Thank. you.
When trying to fetch the offering from revenue cat [Error: There was an unknown backend error.]. I am getting this error suddenly. I even purchased some products. Suddenly I got this error. Any idea what to do?
Good day, This is my first time using RevenueCat. I wanted to use it to allow anonymous users to buy 1 all access package for a fixed price. Currently my app supports android only and I am assigning a device bound unique Id in my configuration (see snippet). This is a hexadecimal string unique to each combination of app-signing key, user, and devicePurchases.configure({ apiKey: APIKeys.google, appUserID: Application.getAndroidId(),})My question on the matter is that I was wondering what prompts the Restore Purchases functionality. Is it the google play account that completes the purchase initially? If so what happens if a user is logged into multiple accounts. I’ve tested it for myself by buying the package on an emulator using my GmailA account. Then on my real device press the restore purchase button with GmailA logged in. This worked. even though the appUserId Is not the same (since it’s a different device). Hence the question if it is managed by RevenueCat’s backend using t
I have successfully setup paywall in my app. Pricing etc. everything is in place.I can see the localized versions of the paywall as a preview in paywall setup screen of revenuecat website. However in my own smartphone I can only experience english version.
Hi!We’ve recently starting using RevenueCat and everything seems to be working fine!We have a backend-focused approach, where we query the REST API to get subscription information server-side. Something we have noticed is that the API returns old data when immediately querying it after receiving a webhook event or purchase. This happens with both server webhooks or webhooks to the SDK. We have noticed that this can take longer than 2 seconds before querying the API delivers the new data.The question then is, when can we expect querying the API to return the same state of the data as in the webhook event? Kind regards,Bob
Right now I have 1 entitlement-id named powersEntitlementID, and I’m using it in iOS which works fine:Purchases.shared.getOfferings { [weak self](offerings, error) in guard let package = offerings?.all.first?.value.availablePackages.first else { return } self?.showPurchaseActionSheet(for: package)} func showPurchaseActionSheet(for package: Package) { Purchases.shared.purchase(package: package) { (transaction, customerInfo, error, userCancelled) in }} Using that in my PurchasePowersController, it shows me the correct action sheet. But I intend on adding a new productID/EntitlementID and I will use them in different ViewControllers. How can I get the EntitlementID/name from a Package object? For example if I had 2 entitlements named powersEntitlementID and energyEntitlementID. I can use the following code in PurchasePowersController and PurchaseEnergyController class PurchasePowersController: UIViewController { override func viewWDidAppear(_ animated: Bool) { super.v
Hi, We would like to send an email and push notifications to users which are on our yearly plan and have an upcoming renewal in 7 days. We would like to avoid users who have opted-out for renewal and/or are on a monthly plan. I was thinking of the approach below, but I’m wondering if it’s the best way to do it:Use webhooks from RevenueCat When we receive RENEWAL or INITIATE_PURCHASE (with period=NORMAL to avoid free trial users), we schedule the sending of email/notification based on the parameter expiration_at_ms If we receive CANCELLATION with reason = UNSUBSCRIBE, we cancel the schedule for this user => not sure if we will receive this when the user opt-out for renewal or at the end of the subscription periodWhat do you think of this? Is there a better approach? Thanks!
Even though the user purchases successfully one of the products from an Entitlement, the purchaserInfo.entitlements.all["entitlement"]?.isActive is always false.I have everything configured correctly in Xcode, AppStore Connect and in RevenueCat and I am testing on a real device. This issue is new, the version of my app which is on AppStore did not have this problem even in sandbox. What shall I do?
Is it possible to automatically grant promotional entitlements to users based on certain criteria? I see from this article that it can be done through the REST API but I’m unclear if that can be criteria based. Example use cases:We would like to automatically grant a promotional entitlement for users that:Apply a specific Apple Offer Code New subscribers within a certain timeframe Other RevenueCat customer attributes (that we could pass in)Thank you!
I have RevenueCat fully set up in my React Native application, and the purchasePackage() function seems to be fully functional when testing on an iPhone. In Sandbox, the popup that prompts the user to sign in with their Apple ID to pay works and has no issues aside from slight delay in between the prompt popup and the “success” alert. However, when I test the exact same build on my iPad, purchasePackage() doesn’t do anything. No errors are thrown, and the only indication that I see the purchasePackage() doing anything at all is the addCustomerInfoUpdateListener() being fired. Other than that, no popups show up, no errors show up, nothing. I would like to note I am testing these on real devices. Any help would be greatly appreciated!
I am thinking about configuring two separate entitlements in my app. One for “Premium” (access to GPT-3.5 among other features) users and another tier for “Plus” users who will have access to GPT-4 on top of premium features. Premium users should be the only users that can upgrade to Plus. GPT-4 API costs are expensive which is the reason to separate things out.I’m struggling a bit to implement the syntax in SwiftUI. I have two separate entitlements so naturally I would like to implement two separate paywall footers on two paywall screens, but the only way to configure them separately is to give them an “Offering”. I’m not sure how to initialize this offering without introducing an optional into the equation..paywallFooter(offering: *initializedOffering*, condensed: true)Writing things this way seems like hardcoding which would not allow me to change things remotely after each paywall has an offering fed to it. I would appreciate some insight into how I should proceed here.My code in p
Why do I need to log in/out to do a subscription? In real life you just choose a subscription, double click and pay with Apple Pay, it never asks for your email. I followed this video which requires the user to log in to make a purchase, which I tested and asks for an email & password. Am I going to be able to just double tap and pay for the subscription in production with the same code?
The functionality I am looking for is the user does not have to log in, they can just choose a subscription plan, double click and pay with Apple Pay. Why are we logging in manually with our email and password in this tutorial?Here’s how the user logs in:logIn(BuildContext context, String newAppUserID) async { try { await Purchases.logIn(newAppUserID); // user types in newAppUserId manually String appUserID = await Purchases.appUserID; // And we get an id of the user ... } on PlatformException catch (e) { ... }}
Hi. Thanks in advance.I have simple question regarding apple sandbox behavior via revenuecat.I have monthly subscription and when I makePurchase monthly subscription, I can see it will auto-renew for 11 month then opted-outs (probably cancelled from apple)then expires.After expiration, when I re-purchase monthly again, then it opted-outs by 1 month.Is this as expected? Is there any this opted-out rules? thank you
function_name: "ext-firestore-revenuecat-purchases-handler"severity: "DEBUG""Function execution took 6730 ms, finished with status code: 200" Logs are taken from Google Cloud Console, Revenue Cat extension 0.1.12.I have only 1 “Sandbox” customer, why RC function execution takes such an extremely long time?!! AppStore TestFlight / Sandbox auto-extends subscription each 5 minutes, and I have similar logs in Firestore (with RC Extension); in average, time varies from 800ms to 1200ms, and sometimes almost 7 seconds?Could you help please, is there any bugs / bottlenecks with this implementation? And how to disable “Debug”? Right now I am just testing, but I expect about 10,000 concurrent users and it can become really bad… thanks
Hello,I saw that google play requires you to have the option in the app and also through a separate webpage for users to delete their account. I was wondering what is the go to approach in terms of managing the subscription? Do we have to cancel the user subscription before deleting the account and then also delete the customer from the revenuecat side, or de we just delete the customer and that’s it? What would be the order in which we execute this operations?Thank you,Radu.
Hi, sorry if the title is confusing, hard to explain in one line. I am using the React Native SDK and testing on an iOS device in sandbox.The problem I’m having is that Purchases.getCustomerInfo() seems to be returning an expired entitlement in the active list on the first app run after it’s expired. On all subsequent runs, it disappears as expected because it’s expired. But it means the app thinks the user still has an active entitlement for that first run when they should not.To try and explain the steps to reproduce:User purchases a subscription, which activates the entitlement. User uses the app during the subscription and all works as expected. User closes the app. Subscription expires (dashboard reports it is expired and entitlement is expired). User opens the app, which fetches customerInfo. The entitlement still comes back in customerInfo.entitlements.active at this time. User reloads the app or closes and reopens, which refetches customerInfo. The entitlement is no longer in c
Hi all,I hope I am not asking a question that has already been answered, if so I couldn’t find the answer. My app has multiple one off in-app purchases. I would like to display these for purchase. If I add them all to an offering is there some way to exclude products (packages) that have already been purchased from the paywall when displaying the offering? Thanks L
How to enable double tap to pay feature for users? We have integrated RevenueCat into our flutter app and configured the products successfully. We are still pre-launch so our testing is currently in Sandbox mode. Currently when testing the pay flow the user sees the paywall successfully, but there is no option to allow the user to double tap to pay. Instead there is a password field that the user must enter to authenticate their purchase. Is the double tap feature just not visible due to the Sandbox mode or is there something we’re missing? I’d rather use RevenueCat for managing user subscriptions than have another provider in front of RevenueCat that handles taking payments for users. Thanks in advance!
I have default paywall selected but I can see wrong paywall design on ios and android app. Alot of text is missing and not according to selected paywall as default.What can be the reason? please help, thanks
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.