Discussion and help from anything related to RevenueCat.
Recently active
It seems to me that the process of testing app integration with RevenueCat is unnecessarily complicated due to the underlying integration with Google Playstore et al. Have you thought about supporting a RevenueCat test mode that mocks the Playstore connection? That would at least allow me to test the app to RevenueCat links irrespective of what happens with Google Playstore.
Hi, everyone this is my first question in RevenueCat Community :) I have a non-consumable in app purchase in my iOS AppWhen i click purchase no payment sheet shows up just like that 👇but purchase process is successfully how this is possible
I’ve submitted my app to the Apple App Store and keep getting rejected for the error “Receipt is missing”.How can I simulate the exact method Apple uses to test apps? Whenever I test using either:Xcode + a physical device + sandbox account or TestFlight + non-sandbox App IDthe subscriptions go through successfully. Hence I have a few questions: How do I replicate the error the app review team get so I can debug? In my scheme settings through Xcode before I submit my app, do I need to set the field StoreKit Configuration to “None”? Or can I leave this selected on my StoreKit config file when I submit my app? How do I use this receipt validation link? https://www.revenuecat.com/apple-receipt-validation/. There are no directions for use on the website. What do I need to enter in the first field which states “Paste your receipt”? I’ve been given this link by the App Review team. https://developer.apple.com/library/archive/technotes/tn2413/_index.html#//apple_ref/doc/uid/DTS40016
I have seen that there is a DocC generated website for documentation. Is it possible to get the generated content also in the Documentation window of xcode(like when docs are generated inside the project, for the project)? Thanks!
Trying to purchase package in the Sandbox (with no products in Appstore, only in StoreKit), everything seems to be set up fine. It results in success message “Your purchase was successful”But after tapping okay an error happens which says “The receipt is not valid”2022-10-11 17:42:27.282308+0300 lumio[79672:5449989] [Purchases] - DEBUG: ℹ️ Vending Offerings from cache2022-10-11 17:42:27.282698+0300 lumio[79672:5449989] [Purchases] - INFO: 💰 Purchasing Product 'monthly_sub' from package in Offering 'default'2022-10-11 17:42:27.286050+0300 lumio[79672:5449989] [Purchases] - DEBUG: ℹ️ PaymentQueue updatedTransaction: monthly_sub 02022-10-11 17:42:27.286381+0300 lumio[79672:5449989] [Purchases] - WARN: 🍎‼️ There is a problem with the SKPaymentTransaction missing a transaction date - this is an issue with the App Store. Unix Epoch will be used instead.2022-10-11 17:42:27.286621+0300 lumio[79672:5449989] [Purchases] - WARN: 🍎‼️ There is a problem with the SKPaymentTransaction missing a tr
Hi I’m having issues upgrading to react-native-purchases version v5.1.0. When I build from command line, I get the following error: 2022-10-11 16:17:22.601 xcodebuild[26352:116860] Requested but did not find extension point with identifier Xcode.IDEKit.ExtensionPointIdentifierToBundleIdentifier for extension Xcode.DebuggerFoundation.AppExtensionToBundleIdentifierMap.watchOS of plug-in com.apple.dt.IDEWatchSupportCore Is this expected? Does this version require xcode 14?
Hello guys, suddenly I cannot grant any promotional access, to be more specific, I cannot choose any entitlement, there is none, but was it available just one hour ago. Is there any limit or something? Cheers
From what I can tell, (here and here), `purchaseProduct` should execute a callback upon completion, but I can’t seem to get it to fire. The transaction goes through and the purchase is made with no issues/errors, but the callback i would expect - those console logs (in the example below) - never go through.I saw this post from a month ago where it was mentioned that there’s an issue with the purchaseProduct method, are these related?Thanks Purchases.purchaseProduct(plan.identifier, ({ productIdentifier, customerInfo }) => { console.log("productIdentifier:", productIdentifier); // does not call console.log("customerInfo:", customerInfo); // does not call }, ({ error, userCancelled }) => { console.log("error:", error); // does not call console.log("userCancelled:", userCancelled) // does not call }, null);
I am trying to migrate our existing billing system to RevenueCat, we have our own anonymous IDs, basically each time the user installs/uninstalls the app they will get a new user ID e.g. user1234, user4567 I need to preserve our ID’s for migration, but I want them to act like RevenueCat anonymous IDs where purchases are aliased, so users can access purchases on multiple devices. Is it ok if I prefix our existing IDs with the string $RCAnonymousID: and call configBuilder.with(appUserId: “$RCAnonymousID:user1234”) to make then anonymous IDs in RevenueCat. I know if I don’t provide an apUserId RC will generate one of these anonymous IDs for use, but I want to make sure it is safe for me to pass in an ID prefixed with the value explicitly? Thanks.
Hi there,I am working on testing my implementing of RC into my app but I am having issues with migration.The previous version of my app had a one time in-app purchase, while the new version of my app is going to have subscriptions.The problem occurs when migrating from the old version of app without RC to the new version of the app with RC: If I do a clean install of the new version of my app, everything works. but If I stall the new version over my old as my users would. It throws an error. My suspicion of the issue is that RC has no user id to check, but I expect it to create an anonymous id until the user signs in a later point, but I don’t know for sure because the error is not specific enough. Any advice or suggestion?
Flutter SDK: I’ve configured subscriptions and in-app products on the play console, I also setup the offerings on revenuecat but when I try to fetch the offerings for subscriptions I get an error below:😿‼️ Error fetching offerings - PurchasesError(code=ConfigurationError, underlyingErrorMessage=There's a problem with your configuration. None of the products registered in the RevenueCat dashboard could be fetched from the Play Store.E/[Purchases] - ERROR( 6352): More information: https://rev.cat/why-are-offerings-empty, message='There is an issue with your configuration. Check the underlying error for more details.')But it’s successful only on in-app products rather than subscriptions.
Is there some reason why app provided user IDs don’t alias to one another like anonymous IDs do? (I seein the chart on this page: https://www.revenuecat.com/docs/user-ids only anonymous ids will alias, not app provided ids) I want to transfer our existing billing data to RevenueCat, we give each user a user ID e.g. user1234 however this is stored locally, so if the user delete/reinstall the app they will get a new user ID e.g. user5678. In order to migrate all our data and port over our iOS code I need to:Add a hook in our backend code so all new purchases are sent to RevenueCatOnce that is in production then I can:Run a script that loops through all of the records in our DB and inserts them into RC When running step2 if the same user has multiple userIDs associated with them due to delete/re-install this will be fine because I will iterate from oldest to newest, so the newest userid will get all the purchases transferred to them by RC. However … running step2 that calls the /receipt e
So I have a version 1.0089 of our app. It worked perfectly in TestFlight, I send the app to review at Apple and it was accepted. The app of version 1.0089 can now be downloaded in the App Store, but the purchasing of a subscription is not working. Nothing really happens. No In-app UI is showing, even though it did so in TestFlight?What can I possibly be missing here?
Does revenueCat SDk qualify for any exemptions provided in category 5 part 2 of the US export administation regulations? I’m getting asked this in App Store Connect, it also says:You can select Yes for this question if the encryption of your app is:(a) Specially designed for medical end-use(b) Limited to intellectual property and copyright protection(c) Limited to authentication, digital signature, or the decryption of data or files(d) Specially designed and limited for banking use or “money transactions”; or(e) Limited to “fixed” data compression or coding techniques Thank You,Jamie
Hello, I am a flutter developer.My App has been rejected due to this problems.some subscriptions does not show name and description...like this image Plus (monthly plan) and student subscriptions are currently work well. 😢 It worked well until yesterday.I thought at first this problems is an apple sandbox server error...!! My another post on 'apple developer forums'I use RevenueCat for sync subscriptions data, but Android app has no problems...!!My subscriptions are sandbox mode. I've never changed the code. This problem occurs in both English and Korean. It worked well in Setting > Appstore > Sandbox account > management. like this imageSetting > Appstore > Sandbox account > management Apple rejection message : Apple rejection message subscription page : subscription page teacher_plus_month and student_pro_month, student_pro_year subscriptions are currently work well.yellow one is “under review”.red one is “Developer action required”. Does anyone have the same pro
I was using the code from RevenueCat sample react native project to do a trial of RevenueCat integration. In the package.json there is "react-native-purchases": "^5.0.0".https://github.com/RevenueCat/react-native-purchases/tree/main/examples/MagicWeatherFollowing is the code of App.js and there is Purchases.setDebugLogsEnabled(true).const App: () => React$Node = () => { useEffect(() => { Purchases.setDebugLogsEnabled(true); Purchases.configure({ apiKey: API_KEY, appUserID: null, observerMode: false, useAmazon: false }); }, []); return ( <> <StatusBar barStyle="light-content" /> <Router /> </> ); However, there is no log was generated as the section of Sample Output of RevenueCat doc:https://www.revenuecat.com/docs/debugginge.g.[Purchases] - DEBUG: Debug logging enabled. [Purchases] - DEBUG: SDK Version - 2.0.0 [Purchases] - DEBUG: Initial App User ID - <APP_USER_ID> [Purchases] - DEBUG: Changing App User ID: (null) ->
I am trying to use RevenueCat for my flutter application. Now app is work fine in the IOS but in the android it gives ConfigurationError. Below is the debug log. I/olutions.**roo(16974): ProcessProfilingInfo new_methods=0 is saved saved_to_disk=0 resolve_classes_delay=8000D/[Purchases] - DEBUG(16974): Retrieving customer info with policy: CACHED_OR_FETCHEDD/[Purchases] - DEBUG(16974): ℹ️ Vending CustomerInfo from cache.D/[Purchases] - DEBUG(16974): ℹ️ Checking if cache is stale AppInBackground falseD/[Purchases] - DEBUG(16974): ℹ️ No cached Offerings, fetching from networkD/DecorView[](16974): getWindowModeFromSystem windowmode is 1D/[Purchases] - DEBUG(16974): ℹ️ API request started: GET /subscribers/%24RCAnonymousID%3A4201b37be878400ca103bf6c0d9308c9/offeringsD/[Purchases] - DEBUG(16974): ℹ️ API request completed with status: GET /subscribers/%24RCAnonymousID%3A4201b37be878400ca103bf6c0d9308c9/offerings 304D/[Purchases] - DEBUG(16974): ℹ️ Requesting products from the store with ident
I’m testing the subscriptions in sandbox, I’m not sure I’m supposed to add the duration of the introductory offer to the expirationDate returned from Revenuecat API.I do see the free trial period showing up in the confirmation modal view. so whatever is coming from Apple seems to be working. it’s just that the expirationDate is ignoring the introductory period. Shouldn’t it be updated in the API?
We are having issue in integrating to revenuecat and apple pricing. We have set the manual price as $4.90 but what apple is charging the customer is $4.98. Can advise what could be the issue with this king of pricing?
Hi, I am using a Auto-renewable subscriptions in my app(Android/Flutter). Now I using “test card”/test mode. This is my user case:1. My test user have google acc test@test.com(example).2. I create a subscription for the first time. I got originalAppUserId - value1.3. time passes 20-30 (minutes) - the test subscription becomes inactive. also i can uninstall the app.4. I create a new subscription (second time). I got originalAppUserId - value2.5. the value1 of originalAppUserId the first and second times are not equal.this is right? I expected that these values will be equal(Unique and equal value for current google acc).Can I get unique value from store account(email/id) using sdk? or is it imposiible? then I need to create the user id myself? For example, add authorization to the application using a Google account? will this work?any options - I will be very grateful for the help.
Hello, I am trying to migrate Apple's subscriptions via client-side (I have all data required) to RevenueCat, however, I keep receiving the status 400 (Bad Request) from the REST API POST /receipts endpoint.This is an example of format that I am sending:{ app_user_id: 1, product_id: 'pro_quarterly', fetch_token: 'MIIUCwYJKoZIhvcNAQcCoIIT...jcxwb5vocU=', price: 13.99, currency: 'USD', attributes: { '$displayName': { value: 'Jhonatan' }, '$email': { value: 'jhonatan@gmail.com' } }}I have been succefull with Android's migration, unfornately I do not know what I am doing wrong or if there is something missing with the Apple's migration.All products from Apple are registered in RevenueCat's dashboard, App Store Connect App-Specific Shared Secret is set, as well the authorization header with the public api key refering to RevenueCat's IOS app project.
Hello Team RC,We are seeking clarification on the RC cancellation / refund activity.According to the docs here "This will refund the last purchase, immediately expire the subscription, and remove entitlement access”If my user is at day 27 of the month, and cancels the 9.99 subscription, does this mean that he gets $9.99 refunded, but loses entitlement for the last 3 days of the month?According to Google Play’s docs “Google doesn't give refunds for most Google Play purchases.”I also see in your docs that “Deleting a user from RevenueCat WILL NOT cancel their subscription”. Would it be better for us to delete the user rather than triggering the cancellation which would trigger a refund?Can you clarify for us.Thanks!
Hi, Let's say a user A bought subscription on a device A and a user B bought subscription on a device B and then the user A logged into the app on the device B. Is there a way to distinguish from which Google account subscription was bought? 🤔 I mean, I want to give users a possibility to redirect to Google Play to e.g. cancel a subscription but I don't want to let user A cancel subscription of the user B and I want to inform user that "This subscription was bought from another Google Play account".
I am struggling to get RevenueCat to automatically sync/recognise one-time purchases from Stripe Checkout.I have a Flutter app for both iOS and web (Firebase backend), and after significant work (writing custom conditional code for the Web logic...) have subscriptions working for both iOS and Web, integrated with RevenueCat. Customers can subscribe either as an IAP on iOS or using Stripe if on the Web app, and the subscription entitlement is managed by RevenueCat.But… user’s also need the ability to make one-time purchase of consumable credits. On iOS this is handled as an IAP that RevenueCat syncs, pushing the successful transaction event to my Firestore Function so I can track the credit balance.For one-time purchases via the Web app, Stripe Checkout successfully completes yet ReveneCat appears unaware of the transaction! Unlike for Stripe-managed subscription transactions there does not seem to be any automatic syncing or notification to RC of the one-time purchase.So far I have tri
Puchase was succssful via react-native-purchases in Adroid, but there is no response in promise “await Purchases.purchasePackage(purchasePackage)”Please kindly guide how to solve this problem. Thx!Screenshot:Code:import Purchases from 'react-native-purchases';const PackageItem = ({ purchasePackage, setIsPurchasing }) => { const { product: { title, description, priceString }, } = purchasePackage; const navigation = useNavigation(); const onSelection = async () => { setIsPurchasing(true); try { console.log( '************* Before await Purchases.purchasePackage(purchasePackage) purchasePackage is :', purchasePackage, ); const { purchaserInfo } = await Purchases.purchasePackage(purchasePackage); console.log( '************* After await Purchases.purchasePackage(purchasePackage), purchaserInfo is :', purchaserInfo, ); if (typeof purchaserInfo.customerInfo.entitlements.active.my_entitlement_identifier !== 'undefined'
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.