Discussion and help from anything related to RevenueCat.
Recently active
We have integrated RevenueCat Android SDK with our native Android app. Almost all of the purchases are handled as expected but sometimes it doesn’t. I observed very few customers have been facing the below PurchaseError.PurchasesError(code=PurchaseInvalidError, underlyingErrorMessage=Couldn’t find existing purchase for SKU: {subscription_id}, message=‘One or more of the arguments provided are invalid.’) I read the source code of the purchases-android SDK, and if my understanding is correct, this error occurs when it fetches purchase history via BillingClient and there’s no record that matches with the subscription ID set by `PurchaseParams::oldProductId({subscription_id})`.I believe it is NOT something like network issue or service unavailable error, etc, since if there’s an issue between client and Google billing system, it should NOT go through the code that emits the PurchaseError in question. (should go onError route instead)FYI: https://github.com/RevenueCat/purchases-android/blob
.sheet(isPresented: $paywall.displayPaywall) { PaywallView( offering: paywall.selectedOffering ?? Offering(identifier: "default", serverDescription: "default", availablePackages: []), displayCloseButton: true) .onPurchaseCompleted({ customerInfo in analyseFood() }) .onRestoreCompleted({ customerInfo in analyseFood() }) .ignoresSafeArea() }iOS 16.7.10RevenueCat 5.16.0The iOS version is a bit old but I use a separate phone with a sandbox account for testing purchases though. These callbacks are never called onPurchaseCompleted and onRestoreCompleted, also after test/sandbox purchase the Paywall doesn’t dismiss itself and stays on the screen. I have another screen written with UIKit and everything is OK with the Paywall UI invocation but SwiftUI version has weird problems
Hello there,I’m creating multiple whitelabel apps for several platforms, clients etc and would love to use RevenueCat for everything subscription-related. I was checking out the RevenueCat Rest API but it doesn’t seem like I can (fully) create projects, apps and basically everything programatically through the API. Did I look into the wrong place or is there just no support for this? And maybe somebody knows if this is on the roadmap? All the best and thanks!
Hi RevenueCat Team, I wanted to clarify how Monthly Tracked Revenue (MTR) is calculated for annual subscriptions. For example, if I sell a $12/year subscription and the user pays the full $12 upfront, does RevenueCat:1. Count the full $12 in MTR for the month when the transaction happens?2. Or does it amortize the revenue over 12 months, adding only $1 per month to MTR? Additionally, how does this apply to lifetime purchases? Are they also amortized over a specific duration, or do they count fully in the transaction month? Looking forward to your insights!
I’m using a footer paywall:struct Paywall: View { var body: some View { ScrollView { VStack { … } } .paywallFooter() }}However, by doing so, it seems that there is no way to use the “presentPaywallIfNeeded” method, and that I would have to re-implement the logic myself. Is this correct?
Hi there,We have a multi-tier concept similar to this:Tier 1 - access to 1 course onlyTier 2 - access to 2 courses onlyTier 3 - all access to coursesAnd each tier will have 1 month, 6 month and 12 month variations.Users can have only 1 subscription at the same time, and for example user can go from "Tier 1, 1 month" to "Tier 3, 6 months" subscription. So we have set up App Store Connect with the following:- Only 1 subscription and all 9 variations created under the same subscriptionBut what about Google Play Console? Should I create one subscription and create 9 base? Or 3 different subscriptions with each of them having 3 variations (1 month, 6 months and 12 months)?Also, should I create 3 entitlements or 1 entitlement in RevenueCat?
the story: I was integrated in-app purchase directly with apple, but sometimes i got duplicate transactions, i don't know why so i switched to using RevenueCat. Below is the problem i got when using RevenueCat.the context: customer 46611 made a purchase with package1 but the webhook was duplicated. the first webhook request was called to handle package1, the second one was called with package4 infonote: the second transaction was created before using RevenueCat SDK. my event type is Non renewing purchasequestion: Why do duplicate webhooks happen, and how can I avoid them?
Hi, I was rejected from app store with the following reason: Guideline 2.1 - Performance - App CompletenessIssue Description The app exhibited one or more bugs that would negatively impact App Store users. Bug description: we were unable to proceed with subscription purchase as we encountered an error when we tapped on 구독 신청 button. My revenue cat integration is currently not working on iOS but i am assuming that this is because my subscriptions on app stores aren’t approved. (Error I get when i run `presentPaywall()` with sandbox apple account)Error 23: There is an issue with your configuration. Check the underlying error for more details. However, according to the AppsStore, for my subscriptions to be approved, i need to submit a new version. Your first subscription must be submitted with a new app version. Create your subscription, then select it from the app’s In-App Purchases and Subscriptions section on the version page before submitting the version to App Review. So i am curre
I was thinking about uploading my React-Native Android App to Huawei AppGallery.I use IAP using RevenueCart with iOS and Google and was wondering, whether Huawei support is already available / planned / not possible.Thanks in advance!
I’m experiencing an issue with my iOS subscription offerings in RevenueCat. When users tap on subscriptions in my app, the pricing displayed is incorrect – for example, it shows INR 1500 for the yearly plan and INR 12000 for the monthly plan, which do not match the values configured in App Store Connect. Here’s what I’ve checked so far:• API Key (.p8):My API key was uploaded about 8–9 months ago, and according to my RevenueCat dashboard, it is still valid and active.• Product IDs:I’ve verified that the product identifiers in RevenueCat exactly match those in App Store Connect. The products are properly set up, and each subscription is marked as “Ready for Sale.”• Bundle ID:The bundle identifier in RevenueCat matches the one in my App Store Connect account.• Other Checks:I’ve ensured there are no pending Apple agreements or issues in the Agreements, Tax, and Banking section that might be affecting product status. I also confirmed that this issue is specific to iOS (my Android offerings
Hello, We noticed that all our users on RevenueCat dashboard have “Transfer to new App User ID” as a transfert behavior, is it normal?I’m wondering if we are doing something wrong here. Thank you for your help!
How do I process pending transactions using revenue cat? When a transaction is pending, does revenue cat handle it automatically or do I have to do something special? Can someone help?
I’m using the following to purchase inapp using revenue cat if let offerings = offerings { for offering in offerings.all { let packages = offering.value.availablePackages if let indexOfItem = packages.firstIndex(where: { $0.storeProduct.productIdentifier == productId }) { let package = packages[indexOfItem] Purchases.shared.purchase(package: package) { (transaction, customerInfo, error, userCancelled) in if customerInfo?.entitlements["sumizeit_premium"]?.isActive == true { Task { await self.purchase (vc: vc, productId: productId, product: productId) } } } } } } Is that the correct code to make purchases? When I use that code I’m able to purchase, but apple server notifications do not work. I don’t get an apple server notification and the forwarding does not work. Can someone help please?
I use Webhooks to register purchases and unlock premium features for the account that purchased the product. I have made a purchase with one Account, lets call it User A. After the subscription expired, I logged in with a different Account, lets call it User B. Of course I called Purchases.logIn(UserB.id) in my app. I then purchased the subscription again and confirmed that it uses User B’s id as the app_user_id in my app. However in my Dashboard and my Webhook it still shows that User A made the purchase.This happend in a Sandbox environment and I used the same Apple Id for both purchases. My RC Project uses the Restore behavior “Block restores”.Can someone explain this behavior to me? I had expected that the Customer Id in my Dashboard is always the app_user_id that makes the purchase in the frontend. Is that not the case? I’m really confused and couldn’t find anything about this behavior in the docs.
My understanding is that while there is a concept of sandbox versus production purchases, there is no concept of a development versus production users. And since we can’t filter by custom user attributes, stats that involve factoring in the total number of users, like subscription rate, will be off in charts and experiments.Off the top of my head, some solutions might be:Mock RevenueCat outside of prod. Delete development/test users when I’m done with them. Accept that some metrics will be off. Perhaps use a separate analytics service for those.Is my understanding correct? And is there an official recommendation for how to handle this?
Hi there,I saw a post 6 months ago saying customising fonts for Flutter Paywalls was on the list and can see that it is an option in the paywall editor, just not accessible/working for Flutter. Is this now updated? I can’t seem to customize my fonts for my paywall at all
We’re working on migrating our in app purchase code to StoreKit 2 and to stop using “receipts” for purchase verification on iOS. We manage this ourselves so we can update information in our backend when a purchase is made. But I want to send the transaction to RevenueCat. The documentation for `v1/receipts` is not 100% clear to me. Does the `fetch_token` support both the legacy receipt and a `jwsRepresentation`?
According to the Firebase Integration, it uses an event name called “purchase” as the default. This is different than the GA / Firebase event name that is used as default “in_app_purchase”. Is this correct?Are they in fact distinct events?
I’m curious to see what the RevenueCat folks, as well as other users, make of Apple’s just-announced change in policy regarding directing users to make purchases on the app’s website: https://developer.apple.com/support/storekit-external-entitlement-us/ I think that this change has something to do with recent anti-trust lawsuits, possibly involving the Fortnite people. But, if you read through the article, it sounds like Apple is not only making a lot of demands on how to make use of the new policy, but they are also expecting developers to continue giving them a cut of the sales, including the ones made on the app’s website, if users clicked a link to the site from within the app (although I don’t know how they plan to enforce that). Thoughts?
“RC doesn’t automatically cancel a subscription if a user purchases a different IAP (e.g., lifetime package). For Apple, though, developers aren’t allowed to change a user’s subscription, so you should instead notify your user to cancel their annual subscription if they purchase lifetime as well.”Sorry for the long post but with the above context, but I have some questions around my iOS App.Do you mean we should detect the above activity after user has purchased and then notify them to cancel?Can we notify the user about this when the user is about to buy an IAP inspite of having a subscription and vice-versa? If we are using the configurable paywall v2 - presentPaywallIfNeeded - will this case be handled automatically? Apple servers are down today so unable to check this scenario.I have gold monthly, gold yearly, and platinum lifetime, all configured under 1 entitlement and showing up on the paywall and I am relying on the configurability of the paywall to handle this type of scenario
I have two customers showing up in my sandbox customer list but I can’t delete them.When I click on them, they don’t pull up but they still show up in the list.How do I contact support to help me delete these customers that refuse to go away?Another post says it could take up to an hour but it’s been over a day.
We’ve integrated Customer Center (Flutter SDK 8.6.1) in our Flutter app, and about 40% of the time the app crashes when it’s invoked. Also, the Cancel subscription function doesn’t work (at least not with Sandbox purchases). It just keeps saying Cannot Connect.
Can I create a horizontally moving component?Right now, it can only scroll up and down.Is it possible to add horizontally scrollable cards between these lists?
I’ve been finalising my paywall and after too much time stewing over the hero image, finally tried to upload it. I followed the guide that the image should be below 5MB and 2:1 ratio for Siamese template.No image appeared.I then tried it in my app, just in case it was a Preview bug - still nothing, just solid black.Different bit depths and original image sizes made no difference - I wasn’t seeing any errors in the web editor.Finally tried exporting a jpeg and it’s accepted. Failing png Bigger failing png Working jpeg
I saw this post in which RC says that paywalls generated by RC must always be swipe-down-able, or dismissible.That means it’s not possible to use a RC paywall as a hard paywall that cannot be dismissed?I’m sorry but that’s whack.Can you please change this and allow paywalls to exist as full screen experiences that cannot be dismissed?
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.