Discussion and help from anything related to RevenueCat.
Recently active
Hi, I’m new to RC and this forum. I’ve searched but couldn’t find anything definitive on this topic but if there is, please let me know…Is there a way in StoreKit 2 (and in extension, in the RevenueCat SDK) to get an unique identifier for the current iCloud ID or user? I'm a bit worried about this part in the SDK docs:If you don't provide an App User ID when instantiating the Purchases SDK, RevenueCat will generate a new random App User ID for you and cache it on the device. In the event that the user deletes and reinstalls the app, a new random App User ID will be generated.I guess my question is: do I have to force the current user to sign in with their Apple ID if I want to prevent the quoted behavior?Edit: Or did I overthink everything again — maybe I should ignore the iCloud ID for my iOS/macOS-only app, and just rely on the RC-provided anonymous App User ID and the restoring purchases mechanism…?
Hi,We are developing language app where user selects their native language. Can you add a parameter to specify language code when displaying the paywall e.g. ```RevenueCatUI.presentPaywallIfNeeded( _defaultEntitlement, displayCloseButton: true, userLanguage: ‘en-GB’ );```that will try display the paywall in the specified language rather than using device settings(it will still be the fallback mechanism if userLanguage fails).Thanks!
I'm being told there should be a way to make a one-time payment to stat the membership. Then every five years there can be a required maintenance fee to continue the membership, is that doable? And would the play store and app store accept this in an app published there?
Hi,I'm currently dealing with an issue involving a user who purchased an annual subscription via Google Play in January and requested a refund shortly after. According to the Google Play app, the refund was processed successfully. However, RevenueCat shows no record of this refund, only indicating that the subscription expired in April and the account reverted to the basic version. Key details:Google Play app indicates refund processed. RevenueCat only shows subscription expired. The user can no longer access paid features. No refund record found on Google’s support page. I've advised the user to check with their bank and Google Support, but I need help understanding the discrepancy between Google Play and RevenueCat. Could this be a sync issue, or is there another cause? Any guidance would be appreciated! Thanks!
[RCPurchases.sharedPurchases getPromotionalOfferForProductDiscount:package.storeProduct.discounts[0] withProduct:package.storeProduct withCompletion:^(RCPromotionalOffer * _Nullable discount, NSError * _Nullable error) { if (discount) { } }];By calling the above method, I’m getting error message “ERROR: 🍎‼️ The User is ineligible for that action.”Please any suggestions?
Hello everyone, I have an app on flutterflow that is set to check on a customer subscription status every time it starts, so is updated in the app. This is causing my customer to keep his status until he opens the app again, even when he has cancelled the subscription before. Right now I thought that integrating my Firebase DB to Revenuecat could figured this out by updating instantly my db, but I noticed there's no “boolean” attribute on firebase when a customer is made. I was expecting something like “subscribed=true false” but there's only dates (on string) and useless data for me. Any idea how can I check a customer subscription status with firebase information instead of checking as an API in app?thx
Hello,I have a Flutter application using GetX for state management and a Laravel backend. My app includes a subscription feature, but it was rejected by iOS because I need to integrate in-app purchases. Can anyone help me integrate in-app purchases specifically for iOS? I successfully connected the application from the iOS side with Revenuecat, but I'm stuck and unsure how to proceed to complete the integration.
On the paywall when the user select the plan then below are the set of issue i see.Main Issue: The subscription bottom sheet for the password to complete the purchase appears and then it’s all set appears but then the user is not navigated to further screen on the app and remains on the same paywall screen, again selecting the same plan it gives “You are the same plan with the purchase time stamp” but checking the same on the revenuecat it’s neither on the customer history nor on the firebase subscription table that has been created by revenuecat official extension. For the few instance I see the data is capture on the revenue cat and table but still the user stays on the paywall There is delay when the revenuecat share the data on the firebase subscription table mostly 4-5 mins delay from the event occurred On the Test flight after plan successful purchase user has to wait for 20 seconds to navigate further app page example welcome pageAll the above issue are specifically on the Tes
I’m curious how the API to override a user’s current offering, and the new targeting rules interact.My understanding is the targeting rules override which offering is designated the current offering for a user. If the current offering was manually set via:https://api.revenuecat.com/v1/subscribers/{app_user_id}/offerings/{offering_uuid}/override ...does that still take precedence over targeting rules?
Hey,When I call the v1/subscribers/{app_user_id} endpoint, in the response there is an array under the “subscriber.non_subscriptions.product_name” key containing the purchases of that product. My question is if there is a limit on the number of purchases that can be returned there and if so what happens if that limit is reached? I see that the oldest purchases are returned first, so I’m worried if there is a limit, then I won’t receive the latest purchases. The documentation says nothing about pagination for this endpoint. https://www.revenuecat.com/docs/api-v1#tag/customers
Hi, Looking at the documentation for custom attributes, I cannot find any information about syncing attributes and offerings using the React Native SDK. Does this mean that it is not required to sync attributes and offerings after setting an attribute or that it is not possible to sync attributes and offerings manually? We are trying to create a targeting rule based on custom attributes set during the onboarding. Curious to learn what the best practice is here. Thanks in advanceAlexander
According to Revenue Cat, I made $151 with 24 transactions in June 2024. However, Apple only sent me a payment of $92.46 today stating 19 units sold. The previous month, Revenue Cat reported $44 in revenue and Apple paid me $37.29, so I know up until this month, Apple was paying me in full minus the 15% fee for small businesses. How can I figure out why Apple paid me less than usual. I have started receiving international payments, so my hypothesis is that Apple is not paying me for countries outside the US and Canada. If so, how do I start receiving those payments as well?
I can’t pass the App Store Reviews because of this error. I can't produce this case. But review team is keep sending me this. And I can’t pass the reviews for 3 days. On my side, everything works very well.
I’m using Ionic with Capacitor.The RevenueCat documentation recommends using a cordova plugin, but Ionic has been in the process of migrating away from Capacitor for the past few years, and this is now the only Cordova plugin in my app.There’s already a capacitor plugin on github but I was wondering if there are any plans to release an official Capacitor plugin as well.
Hi, when adding an image to the template no matter what size or aspect ratio I choose it crops the image to a small portion of the top centre of the image. Can you recommend the correct image size to use please?
I use BugSnag to capture my errors and report them in a way that can be quanitfied. This last week my top 2 errors all came from `Purchases` errors:Seen in the last 7 days:Errors Events getOfferings Error in Paywall • src/features/Paywall/index.tsx:165 There is an issue with your configuration. Check the underlying error for more details. 140 Purchase Error in Paywall • src/features/Paywall/index.tsx:197 No Package available to purchase. 34 Now, the typical response from RevenueCat is:Do you have logging enabled? YES ``` Purchases.setLogLevel(Purchases.LOG_LEVEL.DEBUG); await Purchases.configure({ apiKey: APIKEY }); ``` Can I replicate? NO So I ask RevenueCat this: is there a way to uncover the underlying issue? 140 errors in 1 week related to configuration is concerning. 34 errors of “no package available to purchase” is concerning. How else can I report errors to you so we can figure this out?
Hi!Main Flow:My backend listens to Revenue Cat webhook events. I listen to renewal to mark old subscription as in active and create a new active subscription with full in-app balance.Currently if user clicks on product he already purchased, Revenue cat react native client throws error with code Purchases.PURCHASES_ERROR_CODE.PRODUCT_ALREADY_PURCHASED_ERROR which is correct. But then I get webhook event on purchase. Question:Why this happens if Apple doesn’t let to re-subscribe to plan which hasn’t expired yet. From my understanding after client PRODUCT_ALREADY_PURCHASED_ERROR was thrown no webhook event should come to backend.
I have a user on Android in the UK (we are in US). He is saying that there is an error message persisting when he opens the app:error retrieving productThis likely would occur from await Purchases.getOfferings(); but I am unable to determine because the logs & stack trace are a dead end. Any ideas?
When running in debug mode in Visual Studio Code, the following error occurs when executing the line below:CustomerInfo customerInfo = await Purchases.purchasePackage(package); Error:E/[Purchases] - ERROR(22467): 🤖‼️ BillingWrapper purchases failed to update: DebugMessage: . ErrorCode: ITEM_UNAVAILABLE.nullE/[Purchases] - ERROR(22467): 🤖‼️ PurchasesError(code=ProductNotAvailableForPurchaseError, underlyingErrorMessage=Error updating purchases. DebugMessage: . ErrorCode: ITEM_UNAVAILABLE., message='The product is not available for purchase.')However, when I install the app from the Google Play Store, which is already published in the closed test track, and execute it, I can make purchases with a Sandbox test account.Is it not possible to test RevenueCat in debug mode? Do I need to upload the app bundle file to the closed test track every time to perform the tests?
i see Opted-out of renewal on the subscription history of our subscribers. does it mean refund?it’s too confusing. does it mean they paid the subscription but will not renew next year?
I am trying to localize Paywalls with no success.I tried to enter detailed text in Paywall setup.However, month and year words are never get translated.Actually, They are both localized inside Google and Apple stores.They show up correct once you go inside Apple or Google after clicking paywall but not on the actual paywall.So, how should I set this up?
In the iOS SDK, you can check an entitlement for a customer and determine if that entitlement is in the sandbox environment or not. For the same customer, when looking at the Firebase collection setup via the integration, the entitlements object has nothing indicating if the entitlement was granted in the sandbox or the production environment: "entitlements": { "pro": { "grace_period_expires_date": null, "product_identifier": "pro_1199_1m", "expires_date": "2024-08-01T20:03:48Z", "purchase_date": "2024-08-01T20:02:16Z" } },The only way I can think to determine if this is in the sandbox is to match the product_identifier for the entitlement over to the subscriptions object and see if is_sandbox is set. Is there a better way to do this? For a given product_identifier, will there only be a single matching entry under the subscriptions object, or will there potentially be multiple entries?
I am trying to use RevenueCat for selling consumable products on my ReactNative mobile app. To start with, I configured a product in my revenuecat account, connected it with a in app product on Google Play. In revenuecat, I can see the two are connected properly. I do not have any offerings or entitlements, because these consumable products are open for all users.However, in my code, when I queryPurchases.getProducts(["productId"]) get an empty array. Struggling for two days, not able to guess what could be the issue? Can you please help?
We have a bunch of skus from price experimentations and across platforms.E.g.co.acme.product.monthlyco.acme.product.monthly.discountedco.acme.product.monthly.discounted2 For reporting (e.g. of churn), I’d like to group them all together so the chart isn’t so fragmented. Is there a way to do that?
Hello there. We developed an app that's for both platforms, iOS and Android, the app allows users to purchase a subscription. The iOS version is working fine, but I'm trying to implement same functionality on Android, using either purchaseStoreProduct or purchaseSubscriptionOption. The first one gives me message that the item to purchase is not found and the second got stuck forever and gives no error.Can you help me please? I'm using the 7.2.8 version of the lib.
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.