Get help with your SDK implementation.
Recently active
Is this possible thru the paywall builder? Or is this something that needs to be custom created?Thanks!
The response from the "Get Purchases" endpoint (https://api.revenuecat.com/v2/projects/{project_id}/customers/{customer_id}/purchases) isn’t ordered by the customer's purchase time. Is this expected? It’s weird that the Customer History is ordered by time in the dashboard, but it’s not in the REST API.
Hey folks! I've just tried using Paywalls v2 instead of my own custom paywall and I find a few things confusing that I couldn't clarify in the documentation or repo. I would love to know how things are supposed to work:If I press "Restore" when there is nothing to restore, I don't get either onRestoreError or onRestoreCompleted callbacks triggered. Nothing happens on the UI - the button changes to a loader for a few seconds and then just goes back to normal. I find it confusing and would expect something to happen to at least notify the user about what's happening. Does the paywall close by itself after a successful purchase? I see navigation happening twice after migration from custom code, where I had a manual navigation call. But when I removed it, my testers said that in TestFlight the paywall didn't close, and moreover they couldn't close it themselves via the close button; only reloading the app helped. I also noticed a new crash that appeared only on the commit adding custom pay
I am trying to set the ‘Fit mode’ for paywall background image to fit but when the paywall is displayed it shown in fill mode. I am trying to check this on simulator and even after restarting the simulator the image is not displayed as expected. Can you please advise on this issue?
Hello!I'm using iOS SDK and I need to send my event reporting metric depending on the purchase or start of a trial period. Can you please tell me if there is a property based on which I can implement the functionality I need? If someone has some developments in the form of Swift code I will be very happy to help.
I’m building a Paywall using the v2 builder and don’t understand how to make the “Restore Purchases” link functional. I was expecting a variable for this that I could drop into into the URL field.I checked the templates that contain “Restore Purchases” and all of them were just a text element with no functionality. Please explain. Thanks
Hi everyone, I’m integrating RevenueCat into my Flutter iOS app, but I’m encountering an issue when trying to fetch products from the App Store. Here’s the error message I’m getting: code: 23, message: There is an issue with your configuration. Check the underlying error for more details. 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). await Purchases.setLogLevel(LogLevel.debug);await Purchases.configure(PurchasesConfiguration("correct key"));try { final offerings = await Purchases.getOfferings(); print('Offerings: $offerings'); if (offerings.current != null) { await RevenueCatUI.presentPaywall(); } else { print('No available offerings.'); }} catch (e) { print('RevenueCat Error: $e');}purchases_flutter: ^8.6.1purchases_ui_flutter: ^8.6.1Setup Details:• SDK: RevenueCat (latest version)• App Store Connect: Subscriptions are set up • Product IDs: They match exactly be
I switched to V2 Paywall, I want to print “Try 7 Days Free & Subscribe” on the purchase button and I tried it like this: Try {{ product.offer_period_with_unit }} Free & Subscribe. This is not working, I want this variable to say 7 Days when monthly package is selected and 14 Days when annual package is selected.
This happens in the sandbox (I haven’t tested it in a production environment yet).Since I’m also using Superwall, I identified the user in the purchase controller on initialization (client) like this: Purchases.configure({ apiKey: REVENUECAT_API_KEY, appUserID }); I’m doing some tests, so I subscribed and I wait for the renewal events to arrive: Why does the first renewal arrive with an anonymous ID, and then it gets fixed in the subsequent event? Is this a sandbox issue?What other info can I provide to help debug this?
I want to do A/B testing for subscription prices on iOS. The revenuecat docs recommends to “Use distinct Subscription Groups on the App Store for each RevenueCat Offering when testing new prices”. Here’s what I would then setup:Price 1 subscription group:Annual - $39.99 Monthly - $7.99Price 2 subscription group:Annual - $19.99 Monthly - $3.99 I start the experiment, some users are being shown the first subscription group, some others the second. A week lapsed, price 1 group is the clear winner, yay! I stop the experiment. The faq says the following: When I end an Experiment, what Offering will be served to the customers who were enrolled in that Experiment? When an Experiment is ended, all customers previously enrolled in it will be served the Default Offering the next time they reach a paywall in your app. Therefore everyone is now presented with the same offering that corresponds to the price 1 subscription group on my paywall. Let’s suppose someone from the retired price
I’m testing my app for which I’ve configured a v1 paywall offering choice of subscriptions and a single lifetime price.The paywall sheet is displaying fine but the offering variable is not translated.I’m seeing offering panels like:First {{ sub_offer_duration }} free, then $7.99/yr ($0.67/mo). I will get around it for now just hard-coding in the values but it looks like a bug.Using SDK via SPM ver 5.19.0cheersAndy
Hi!I’m experiencing an issue (or possibly a missing feature) in Paywall 2.0. In Paywalls templated (v1), everything works as expected.When I tap anything in the paywall that requires a progress view (e.g., purchase or restore), nothing appears. It just leaves me waiting until the pay sheet pops up (for purchases). For restores, nothing appears and then the paywall dismisses. This could make users think their tap didn’t register, they need a loading indicator to know some stuff is happening. Do I need to adjust how I’m initializing the paywall, or is this a bug/missing feature? iOS version: 18.2.1Purchases SDK version: 5.17.0 Here’s how I’m presenting the paywall:PaywallView(displayCloseButton: true) .onRequestedDismissal { self.showPaywallView.toggle() Task { await self.purchasesManager.processInfo() } }BTW, I tested presenting the paywall in different ways (e.g., using `.presentPaywallIfNeeded`), but I got the same behavior.Would appreciate any guidance on this. Th
I am developing a Flutter app using Revenuecat Paywalls V2, my understanding is that Paywall V2 are only available on iOS for flutter, however I found this comment on a post last month saying it will be available at the end of last month, is there any update on this?
.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, 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!
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.
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`?
“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 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?
Hello team!I’m configuring a Paywall with the new v2 version. For iOS I’ve managed to make it work perfectly.Now, on Android it seems to be all correct, but the paywall shown is not the one I have configured, it seems a basic default one.I’ve checked and I have the correct Products and Offerings, as I always check it with the getOfferings function in the app.What I can do, do you know what could be the problem?Thanks!
In my Android Jetpack Compose app I am using com.revenuecat.purchases:purchases 8.14.0 and com.revenuecat.purchases:purchases-ui 8.14.0. The paywall is displayed like this: import com.revenuecat.purchases.CustomerInfoimport com.revenuecat.purchases.models.StoreTransactionimport com.revenuecat.purchases.ui.revenuecatui.Paywallimport com.revenuecat.purchases.ui.revenuecatui.PaywallListenerimport com.revenuecat.purchases.ui.revenuecatui.PaywallOptions...Paywall( PaywallOptions.Builder({}) .setListener(object : PaywallListener { override fun onPurchaseCompleted( customerInfo: CustomerInfo, storeTransaction: StoreTransaction ) { if (customerInfo.entitlements.active.containsKey(ENTITLEMENT_ID)) { setShouldPaywall(false) } } override fun onRestoreCompleted(customerInfo: CustomerInfo) { if (customerInfo.entitlements.active.containsKey(ENTITLEMENT_I
HiI implemented RevenueCat in my Flutter app. Now I am testing on my real Android device. It usually works, but sometimes not as expected.My greatest concern is that sometimes SandBox data and Play Store data aren’t synchronized. I made a purchase and it renewed 5 times as I can see on Play Store, but on Sand Box Revenue data it says it renewed only 2 times (once it was 4 times, and in other occasions it was 5 times as it should be). What does this mean? If user renews subscription, user will see he is subscribed on Play Store, but he won’t have premium access since I only rely on RevenueCat regarding someone is premium or not. How is this possible to not have full synchronization? This is major bug.
I just started using the Paywall editor to test the new Paywalls, and even though I have set text color of white in multiple instances (CTA button, text inside Paywall), the text has different color when I test it in the android emulator. I am using the Paywall composable as suggested by the docs (code is in kotlin for Kotlin/Compose multiplatform projects). Is this an SDK problem? Does anybody know? val options = remember { PaywallOptions(dismissRequest = { navigator.pop() }) { shouldDisplayDismissButton = true } } Paywall(options)I want to include an “Edit Text Field” where the user can type a discount code, and activate therefore another offering by clicking a button after they have typed the correct code. Is there a way to do that with the Paywall SDK?Thank you.
Hi guys,Our Google Cloud API usage by service credential given to RCis very high and we are trying to figure out how to optimize this.The first thing we notice from our Google Cloud dashboard is that RC is calling two similar APIs but with different versions:androidpublisher.SubscriptionPurchasesService.Getandandroidpublisher.SubscriptionPurchasesV2Service.GetThe failure rate of the first one is 100% and we are getting over 100k requests of this per day.How can we turn this off?If not, then is there a good reason for having this?
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.