Discussion and help from anything related to RevenueCat.
Recently active
In App Store Connect, I’ve set up one subscription group that contains the following four auto-renewable subscriptions: PREMIUM – Monthly PREMIUM – Weekly SIGNATURE – Monthly SIGNATURE – Weekly im currently testing my application in Sandbox and Testflight but when user upgrade from one plan to another as long as its not the same plan the auto renew turns off automatically im confused is it just a sandbox and testflight thing? coz the autorenew keep working 5 6 times if its the same subscription but when user upgrade or downgrade to another plan it turns off
Hi everyone,I'm facing two critical subscription issues that are happening only on Android, and I'm hoping to find a solution. Our iOS implementation is working perfectly with the same RevenueCat setup.The Setup: I'm using RevenueCat's built-in Paywalls. My app has two tiers: "Plus" (lower) and "Pro" (higher). Both the Plus and Pro packages are correctly configured within the same Offering in the RevenueCat dashboard. Both products are set up in the Google Play Console with a 7-day free trial. Problem 1: Concurrent Subscriptions on Upgrade (Android Only)If a user with an active "Plus" subscription tries to upgrade to "Pro", they end up with both subscriptions active at the same time. The old "Plus" subscription is not replaced.On iOS, the same action correctly performs an upgrade, so I know my RevenueCat Offering is set up to handle this.Problem 2: Misleading Trial Offer After First Trial (Android Only)This is causing significant user confusion on Android. Here's the flow: A new
Hi team 👋I’m using RevenueCat for both subscriptions and consumable credits.My backend receives webhook events, and the frontend/flutter has a listener which when gets triggered calls getUserProfile() (which hits the be endpoint which calls RevenueCat API) whenever the user opens the app.I want to make sure my backend always has the latest purchase info instantly, even if a webhook is delayed or missed Should I: Use both webhooks and the RevenueCat API (as a fallback) to sync the latest transactions? Always update the stored store_transaction_identifier based on the latest transaction from the purchases associated with customer API? Just want to confirm the best practice to ensure no missed updates across subscriptions and one-time purchases.Thanks!
Hi!I’m currently building an iOS app using React Native and RevenueCat for handling subscriptions.In App Store Connect, I’ve set up one subscription group that contains the following four auto-renewable subscriptions: PREMIUM – Monthly PREMIUM – Weekly SIGNATURE – Monthly SIGNATURE – Weekly I have a few questions regarding how upgrades and downgrades work within this setup, especially when using the Purchases.purchasePackage(pkg) method in RevenueCat. Question 1 – Upgrading Between Monthly PlansIf a user is currently subscribed to SIGNATURE Monthly and decides to upgrade to PREMIUM Monthly (both within the same subscription group and both having the same time duration - 1 month): Will the upgrade take effect immediately, or only after the current billing period ends? Does iOS handle this automatically, or do I need to write any additional code to manage upgrades (similar to Android)? In other words, does RevenueCat automatically trigger the upgrade and reflect the entitlement
Hello,Loving the product and learning new things about it daily! Recently I tried to implement the Paywall feature, and the design and SDK implementation went super smoothly. One thing though, and I’m testing this on TESTFLIGHT so maybe it could have an impact, but the images are not loading.Here is my Paywall as previewed on the designer and in the preview app:Paywall on the DesignerAnd here is how it looks in the app itself in Testflight:Paywall on Testflight. I know this has been posted before but I can’t find a resolution.Could you help me out? Thank you!
Hey guys,I have a bit of a weird situation: I have one offering configured in RC, containing two products:monthly Sub lifetime itemWhen testing, everything seems to work properly. Especially the lifetime item works as expected.Funnily, when I hit the purchase button in my app for the Sub on Android and DO NOT purchase the item, I throw the correct error at the user, but the user still gets access to the premium features somehow.This does not happen on a lifetime item.When I checked my app behaviour, I found, that the difference in my app is, that on a monthly sub I already send the apps userID to RC before doing the purchase (which I do not on the lifetime item).As I use FlutterFlow for my app (with the RC integration), I added some custom code before the purchase action.This is the code I call: await Purchases.configure(PurchasesConfiguration(publicApiKey)); await Purchases.logIn(userId);Could that be the culprit?Am I doing something wrong here? Should I call this AFTER the purchase
Hi everybody,I’m implementing a setup where a custom subscription offering should be shown to users when they enter a specific key (referral code).Here’s my setup: • The custom offering (referral_offering) includes a package with two products — one for iOS and one for Android. • I’m using Flutter and calling Purchases.getOfferings() after setting a customer attribute (referrerCode) with Purchases.setAttributes(). • On iOS, getOfferings() works perfectly — 2 offerings are returned, and I can use the correct one from the map. • On Android, however, getOfferings() only returns the default offering. The referral_offering never appears in the JSON response.Things I’ve already tried: • Verified that the Android product in the custom offering is active, imported correctly, and linked to the right entitlement. • Confirmed that both the default and referral offerings are active and visible in the dashboard. • Tested with clean installs, cache deletion,
I’m trying to design a paywall that has a base offering (e.g. 1 or 2 consumables and 1 subscription) and a subpage (“More options” link) for the consumables where I intend to display more purchase options. E.g.1st page: 10 credits 100 credits Annual subscription2nd page (for advanced users):150, 200, 300 credits monthly subscriptionThis kind of paywalls are “easy” to design in swiftui as using a NavigationLink but I cound’t find a way to do it with the paywalls v2.Is it possible somehow?
Dear RevenueCat Community,I am using the RevenueCat SDK in my Flutter application and have implemented App Tracking Transparency (ATT) on iOS, requesting the user’s permission before a purchase. When the user grants permission, I call Purchases.collectDeviceIdentifiers() to obtain device identifiers such as the IDFA.In my Flutter app, users can purchase subscriptions via Stripe. For this, a web view is opened for the user to complete the payment. Once the purchase is completed and the user returns to the app, the app submits the subscription information to https://api.revenuecat.com/v1/receipts to upload the purchase to RevenueCat. This is how the user gains access to the app features after the purchase.To receive purchase events centrally in my backend, I have added a webhook in RevenueCat that reports Initial Purchase and Renewal events to my endpoint.I have observed the following behavior: For in-app purchases (IAP), in the RevenueCat dashboard > Recent Transactions > Customer
When de-selecting sandbox data, the overview still shows the sandbox data for the "new customers" and "active customers" metrics. Is this expected?
Hey, I have 2 different Paywall Screens (coded myself).One: You Subscribtion is paused, click here to Resume (deeplink to playstore)Other One: Resubscribe, choose between those plans.But at the moment I dont know how i should decide which screen i should show. Any Ideas? Webhook and RestAPI are not a option for me. I just want it from the Client SDK.Thanks in advance!
on creating a new paywall when i clicking on Select one of our prebuilt paywalls and customize it to meet your needs it is not working suppose i have two project (A, B )can i get paywall from A in B?
Hello, I’ve successfully setup webhooks, and it works if i send test webhook from the dashboard (i receive webhook event payload on my backend). However, from my app (expo react native), I am using a test store (ios for now), and when I make a purchase (purchase is successful and appears on the dashboard transaction list) webhook never triggers? What could be the issue here?
Hello,I can’t make my iaps listed for the first release because my iaps are not approved yet. However, iaps can only be approved by apple with the first release of app. So iaps are waiting for app’s first release while app’s first release waits for iaps approval.I can only see my iaps with mock storekit file. I want to fetch my products from revenuecat and test it locally. same problem asked here but my question is, how to see iaps at local phone before approval? WARN [RevenueCat] ⚠️ RevenueCat SDK is configured correctly, but contains some issues you might want to addressWarnings: • Your products are configured in RevenueCat but aren't approved in App Store Connect yet. This prevents users from making purchases in production. Please ensure all products are approved and available for sale in App Store Connect. • The offerings 'default' have configuration issues that may prevent users from seeing product options or making purchases.Product Issues: ⚠️ com.mamazingo.app.100stars (100
We are having issues where customers are attempting to cancel their subscription after their payment failed. But since the payment was attempted and failed, it continues to retry for up to 30 days, resulting in a very confusing customer experience: They get an email that their payment failed and subscription entered a grace period, then they get an email that they are expired since their payment continued to fail, and then much later the payment succeeds, even if they’ve tried to cancel. How can we prevent that? Is there a way to stop payment retries when the customer takes an action to cancel?
Hello RevenueCat Team,I am facing an issue where users in the United States (iOS/Android) and potentially other non-TRY regions are being shown the incorrect currency and pricing. Although the user is entering from the US, the app displays prices in Turkish Lira (₺).The Problem:Expected Behavior: US users should see prices in $ USD (e.g., $4.99/month).Current Behavior: US users are seeing ₺ TRY prices (e.g., ₺38.99/mo) which are likely pulled from the default Offering or used as a fallback price in my Dart/Flutter code.Technical Details and Observations:RevenueCat Offering Targeting Setup:Default Offering (default): Set up as the default for Turkey and other regions (likely containing TRY prices).Custom Rule: I have defined a specific targeting rule for the US and UK: IF Country = US, UK -> Show Offering for US, UK.Suspected Issue (Fallback): I suspect that the user in the US is failing to receive the specific "Offering for US, UK" and is instead falling back to the "defau
I’m using .presentPaywall() and I tried to use RevenueCatUI.Paywall component, but it’s always on this “Sheet View”, with that weird margin. How can I fix it? Also, the RevenueCatUI.Paywall component is crashing my app on Android.
I have an appointment scheduling app for Android and iOS.I’m thinking about implementing a virtual currency to allow my customers to purchase SMS credits that they can use to send automated SMS reminders to their clients who are scheduling appointments. And I’ve asked the ChatGPT if I’m breaking some kind of rules regarding that implementation. I’ve received an answer:From App Store Review Guidelines §3.1.3(b) – Goods and Services Outside of the App:"If your app enables people to purchase physical goods or services that will be consumed outside of the app, you must use methods other than in-app purchase to collect those payments."Does that mean I cannot use in-app purchase to sell these SMS credits? What’s the best workaround?Also, AI gave me this answer, is it true?No, you cannot sell SMS credits through RevenueCat (or Apple/Google in-app purchases), because SMS credits represent a real-world service, not a digital in-app feature.However, you can use RevenueCat’s new virtual currency
Is anyone getting random RevenueCat errors during App Store review? My app has spent the last week or so going back and forth with the App Store review team and getting rejected for various reasons. I can see that during this process, they have successfully been able to subscribe to my app.Now, at the final hurdle, they suddenly get an “Error 23: There is an issue with your configuration” error when loading the paywall. This worked perfectly fine all week, and I can’t recreate this error. Anyone having similar bouts of random errors?
Is there any way to achieve this?in documentation it states that default proration mode is WITHOUT_PRORATION, is it stays the same in case of using paywall builder? even in case of downgrading to less expensive tier?
i am not using purchases_ui_flutter anymore i had it and then i deleted it but in the google console i am getting this crash report on the version that doesn’t include purchases_ui_flutter is this crash has any connection with the purchases_ui_flutter package or there is another reason for this crash.Exception java.util.ConcurrentModificationException: at java.util.LinkedHashMap$LinkedHashIterator.nextNode (LinkedHashMap.java:1061) at java.util.LinkedHashMap$LinkedKeyIterator.next (LinkedHashMap.java:1084) at com.revenuecat.purchases.paywalls.FontLoader.addFileToCache (FontLoader.kt:119) at com.revenuecat.purchases.paywalls.FontLoader.access$getFontInfosForHash$p (FontLoader.kt:27) at com.revenuecat.purchases.paywalls.FontLoader.access$addFileToCache (FontLoader.kt:27) at com.revenuecat.purchases.paywalls.FontLoader$startFontDownload$1.invokeSuspend (FontLoader.kt:90) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith (ContinuationImpl.kt:33) at kotlinx.coroutines.Dispat
Getting a NetworkError sometimes on `Purchases.sharedInstance.restorePurchases` (KMP SDK).Minor bug report: `underlyingErrorMessage` seems to be a result of parsing HTML as JSON.# java.lang.Throwable: PurchasesError(code=NetworkError, underlyingErrorMessage=Value <!DOCTYPE of type java.lang.String cannot be converted to JSONObject, message='Error performing request.')## Issue SummaryPurchase History Network Error: Failed Device ID Linking**What's wrong:** Failed to link device ID with purchases. **NetworkError** during purchase history retrieval. Internal error code 12.**In the trace:** App entered foreground and resumed normally. **Network available** and capable.**Possible cause:** A **transient server-side issue** with the purchase history API may have caused the network error.
Is there a way to strictly see my MRR / ARR of exclusively those subscriptions that are active and uncancelled? I don’d understand why inactive subscriptions would be included in a recurring number, if they were effectively a one time payment.
I am using Bubble.io with Natively wrapper, following the guides and youtube videos to setup everything, however it is not working, nothing happens after clicking the purchase button, the in app purchase pop up didn’t even show, nothing happened. I wonder if the SDK installation do anything with this? do i have to install the sdk first, but bubble is a no-code platform, or natively did that for me already? any natively users can help me out?
Hi everyone! I’m new here and still learning, so please be patient if I say something silly 😅I’m using Expo Go (React Native) in my app, and I’m implementing RevenueCat.I’m currently using the Test Store to simulate subscriptions.In my case, users can upgrade or downgrade between plans.The only difference between the plans is the cloud storage limit, which is controlled by the active product_id.In my app, users can only have one active subscription at a time. Current setup in RevenueCatOfferings Created one offering called default Packages Inside this offering, I created “Custom” packages since all of my plans are monthly (the package only allows one monthly product per offering, so I used “Custom”) Products I have subscriptions imported from Google Play And test subscriptions configured in the Test Store with similar product_ids Entitlements I have only one entitlement called storage_access In my Expo appI list all the packages from the current offering and let the user pick one to
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.