Discussion and help from anything related to RevenueCat.
Recently active
Its Possible usage an Sandbox in Flutter? Having to send it to closed testing every time takes a long time to develop
I have set up various products on play store and am able to fetch them successful via the Purchases.sharedInstance.getOfferingsWith function. Some of my products have introductory pricing and/or free trials. I have tried testing this functionality and it seems to work. The problem I am running into now is if I have a user that has made use of the free trial or intro pricing for the subscription, cancels the subscription, and then wants to resubscribe I don’t appear to have a way to tell that the user is not longer eligible for intro pricing or free trials. The only way to tell is only after the user has started to go through the play store billing flow, but I need to display the correct information about the product in my app’s UI.
I am implementing a subscription-based app with monthly and yearly plans. I've set up free trials for both plans under Introductory Offers in Apple Store Connect. However, I'm unsure how to integrate these free trials into my iOS app using RevenueCat.Here are the specific points I need help with:How do I configure RevenueCat to recognize and handle the free trials I've set up in Apple Store Connect? Are there specific methods or API calls in RevenueCat I should use to verify the free trial period for a user? Do I need to make any additional configurations in RevenueCat or my app's code to ensure the free trial works correctly for both subscription plans?Any examples, documentation references, or guidance would be greatly appreciated.
Hi there, seems like the Payments that are made from the RevenueCat that are shown in the Dashboard are in the UTC timezone, which makes the whole process seemingly annoying as I’ve to check it each time. Is there any way in the account settings where I could change the timezone atleast during development purposes?
I use Paywall(Beta) . I want to translate into 20 languages, but I'm stuck with the character limit. How can we fix this?localized_strings: must be less than 4000 characters
I see that RC’s StoreKit 2 beta is hopefully (!) coming soon. Will this support the appAccountToken on the StoreKit transaction?
I’m trying to design my first paywall and I may have made life a bit too complicated by also having Offer Codes for about a 50% discount on launch.What I can’t see how to do is customise paywall content if the user has an offer code.I’ve setup offers$7.99 for first year (vs $14.99 normal), or $0.99 per month for first 6 months (vs $1.99 normal) Am I obliged in some way to put those reduced figures on the paywall?Or am I overthinking this and I can just ignore the offer code discounts in my paywall pricing? I’m using the Siamese Content paywall template which generates (sample) content such as “Try 7 days for free, then $1.99 for your first month, and just $3.33/mo thereafter.” which I think is rendered from the Play store suggested Try ( sub_offer_duration )) for free, then ( sub_offer_price_2 }) for your first ( sub_offer_duration_2]), and just {{ price_per_period }} thereafter.
Hi, I’m using RevenueCat with a subscription-based iOS app. In TestFlight, I’m encountering a problem: a single Apple ID is used on two different devices, but the subscription restore isn’t working on the second device. Both devices are logged into the same Apple ID and the same RevenueCat user setup. Has anyone experienced this issue, or know what might be causing the restore to fail?
Hey everbody i got some issue. The problem is “Purchases.configure is not a function (it is undefined)] [Component Stack]”. I am using like this but this func returned how can i fix that ? I’am using expo@52
I get this error when deleting my products. “There are transactions in the system using this product.”Currently the products are not in any entitlemnts or offerings. I saw in the community that I need to delete sandbox customers, but when I press the delete sandbox customers button, no sandbox customers are deleted.
Hi team,We would like to ask for clarification on finishing transactions for consumables on iOS.RevenueCat currently finishes transactions automatically. It is left to integrators to ensure the purchase is honoured, for example through CustomerInfo.This is in direct contradiction to Apple’s guidelines, which state that the transaction should only be finished if all content has been delivered to the user first.As of this writing, and iOS SDK 5.14.4, it is our understanding that any app using RC for non-subscriptions is likely in violation of Apple guidelines.I wonder if something like a flag passed by integrators that influences the shouldFinish logic might solve this by ensuring we have provided users with the corresponding content?As a follow-up topic, with more and more apps offering a mix of renewing subscriptions, consumables, non-consumable, and non-renewing subscriptions, I second some of RC’s staff comments on the PR thread that more granular access may be provided in the futur
Hello RevenueCat Team,I hope this message finds you well. I wanted to confirm if RevenueCat's receipt validation currently supports the SHA-256 algorithm, as Apple is transitioning away from the SHA-1 intermediate certificate for App Store receipts starting January 24, 2025. https://developer.apple.com/news/upcoming-requirements/?id=01242025aCould you please let me know if RevenueCat's system is already compatible with this change, or if there are any updates required on our end to ensure a seamless transition?Thank you for your assistance.Best regards,
I set up the paywall and successfully bought a subscription. In revenue cat dashboard I can see it being active but i can’t see it in the manage subscription settings on my device.I’m not using a sandbox account as I’m using my own personal device to test and I haven’t logged out from it. But the purchase says that it’s a test one, i guess that’s because i’m installing the app via xcode? Any ideas as to why i can’t see it in the subscriptions list?And also in this post it says that the subscriptions durations are greatly reduced but i see the subscription that i’ve made will be renewed after a year, like normal. Is that because i haven’t made the purchase through a sandbox account? Thank you
This issue happens when i do the following:Create an anonymous account with firebase Login with revenuecat with the newly created firebase account id Purchase a subscription Then upgrade the account from anonymous to email & afterwards logout ( I am logging out revenue cat with Pruchaseses.logOut() as well as fibrease sign out Now when trying to purchase a new anonymous account gets created and the new id is also firstly being set with Puchases.logIn(). When trying to purchase a package google play shows me an error dialog with error “PG-GEMF-01”. From the logs I can see the following: 🤖‼️ BillingWrapper purchases failed to update: DebugMessage: Account identifiers don't match the previous subscription.. ErrorCode: DEVELOPER_ERROR.null🤖‼️ PurchasesError(code=PurchaseInvalidError, underlyingErrorMessage=Error updating purchases. DebugMessage: Account identifiers don't match the previous subscription.. ErrorCode: DEVELOPER_ERROR., message='One or more of the arguments provided are
Hi All, I’m encountering this error, while attempting to test an in-app purchase in sandbox environment: 😿‼️ The receipt is not valid.API request failed: POST /v1/receipts: The receipt is not valid.I’m aware others have encountered this issue before and that the problem was on Apple’s side. Anybody else encountering the same issue now? It seems not working since last evening. Could it be a problem from my side?I’m wondering what should I do? Should I just wait? Salvo
I can’t seem to find my flaw that just happened documented (looked here). What I think I have happened in production is this flow, but data tells a slight different story.The revenue cat dashboard for the customer has this order of events:But the events that came via the webhook are in this order:These 2 don’t seem to match exactly. How do I tell what happened and if the customer should or not have entitlements at the moment?Also this means that after an EXPIRATION event, it is possible to receive a RENEWAL event for Play Store as well? The documentation seems to say that this is only for iOS and that Google will always send INITIAL_PURCHASE after an EXPIRATION happened (documented here).Should I always grant back entitlements to a user when I received a RENEWAL regardless of anything else?
How can ı. get order id in flutter for android
We have an Android and IOS app with a “Pro” subscription product with a monthly and a yearly billing cycle.For now, I’ll talk through the IOS setup: We have a Subscription Group called Pro and within it, we have the Subscription Products Monthly and Yearly We have currently configured an introductory offer for Monthly: 1 week free trial Say we also want to configure a 50% discount for Monthly, so: New user gets a 1 week free trial Then 50% discount for 6 months Then regular price According to Apple docs, it sounds like this this isn’t possible:Although you can create an introductory offer for each subscription product in App Store Connect, each person is only eligible to redeem one introductory offer per subscription group.andApp Store Connect allows you to set an introductory offer for each subscription product in App Store Connect. You can have multiple offers in each subscription group. New and returning customers are only eligible to use one introductory offer per subscrip
Hello ! 🙂We recently implemented the ‘Data Export Version 5’ to replicate key graphs in our Metabase data visualization tool. While we've successfully recreated Revenue and LTV graphs cohorted by the date of first purchase—using data consistent with RevenueCat—there’s an issue when attempting to cohort by the installation date (using the first_seen_time data).Could you confirm whether RevenueCat's graphs for installation date cohorts are indeed based on the first_seen_time field? It’s puzzling why our data doesn’t align, and I’d appreciate any insights you might have.Thank you so much for your help!Best regards,Louis
Recently I uploaded a new android app under different package name, from com.name.app to com.name. I have uploaded the new bundle to Play Store and changing it on RevenueCat dashboard, however when fetching the offerings using RevenueCat SDK, the old package can still get the offerings whereas the new package doesn’t. Am I missing a step here?
Hey guys,I have only one offering and one paywall, when launching the paywall on ios, it is working well and the ui matched the paywall, but on Anroid the packages and prices are fetched well but, the paywall ui is really than on only paywall I’m using this for android:implementation 'com.revenuecat.purchases:purchases:7.1.0'implementation 'com.revenuecat.purchases:purchases-ui:7.1.0' private lateinit var paywallLauncher: PaywallActivityLauncherpaywallLauncher = PaywallActivityLauncher(this, object : PaywallResultHandler {override fun onActivityResult(result: PaywallResult) { fun showPaywall() {paywallLauncher.launch()} Any help?Thanks!
useEffect(() => { const init = async () => { try { if (Platform.OS === "android") { await Purchases.configure({ apiKey: APIKeys.android }); } else { await Purchases.configure({ apiKey: APIKeys.ios }); } Purchases.setLogLevel(LOG_LEVEL.DEBUG); Purchases.addCustomerInfoUpdateListener((customerInfo) => { console.log( "CustomerInfo update received:", JSON.stringify(customerInfo, null, 2) ); updateCustomerInfo(customerInfo); }); await loadOfferings(); } catch (error) { console.error("Error initializing Purchases:", error); } finally { setLoading(false); } }; init(); // Cleanup function return () => { // Remove the listener when component unmounts Purchases.removeCustomerInfoUpdateListener(); }; }, []); // load offerings a user can purchase const loadOfferings = async () => { try { cons
Presenting paywall manually so can hide the close button. PaywallView(displayCloseButton: false)i just can’t find any documentation regarding this in the SDK. specifically its modifiers such as .onRestoreCompletedcurrently in the code block after restore I dismiss the paywall. Unfortunately the restore is successful if user made a legacy purchase. App has moved to subscription so legacy purchases need to be ignored and prevent from dismissing paywall. Only the subscription purchases should dismiss. please help me locate the documentation for .onRestoreCompleted View modifier
`[Error: There is an issue with your configuration. Check the underlying error for more details. 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 information: https://rev.cat/why-are-offerings-empty]`Hello Fam,I am building my first app with Expo and RevenueCat I am hitting a wall here. I have read the docs related to this issue and other posts. I have doubled check that productIds match. I am lost here. I have called Apple to see if there is something I am missing but that didn’t help. The RevenueCat team is out on an extended holiday so no help there. Thus, I am looking to you :)Is there a solution to this problem?
I list all the products I have added. After listing, I select the package I want to subscribe to. Then I need to sign in to my iCloud account. I enter my information, but I receive the following error User canceled the purchaseIt doesn't open any pop-ups. I am using Expo SDK52react-native-purchase 8.0.0I tried to on simulator. Also I didn’t see any sandbox account in my settings app store section. { "name": "routine-craft", "version": "1.0.0", "main": "expo/AppEntry.js", "scripts": { "start": "expo start", "android": "expo start --android", "ios": "expo start --ios", "web": "expo start --web" }, "dependencies": { "@amplitude/analytics-react-native": "^1.4.11", "@eva-design/eva": "^2.2.0", "@gorhom/bottom-sheet": "4.4.7", "@react-native-async-storage/async-storage": "1.23.1", "@react-native-community/datetimepicker": "8.2.0", "@react-navigation/bottom-tabs": "^6.5.11", "@react-navigation/elements": "^1.3.21", "@react-navigation/native": "^6.1.9
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.