Get help with your SDK implementation.
Recently active
Hi @joan-cardona, @Haley Pace I am facing an issue with the configuration of appUserId and API key while using the RevenueCat SDK for subscriptions. Currently, I am configuring appUserId and API key multiple screens to ensure that the SDK receives the correct data at the time of subscribing.I have integrated Sentry logs for the purchases.getCustomerInfo() call and am logging this information within the onPurchaseStarted event on the RevenueCat paywall. From the logs, I can confirm that the originalAppUserId is being set correctly and as intended.However, on the webhook, the app_user_id appears as an anonymous user ID instead of the configured appUserId. This discrepancy is breaking our subscription flow, leading to a poor user experience and dissatisfaction among our users.Could you please help identify the root cause of this issue? Additionally, I would appreciate any suggestions or best practices for ensuring that the correct appUserId is passed consistently through the webhook.We
This page implies that win back offers are supported:Through Your App From a StoreKit Message Requires iOS SDK version 5.6.0+ However, I notice that the SDK is currently at version 5.14. I couldn’t find a roadmap for the SDK.What is the ETA for supporting win back offers? Or am I missing something?
I’ve seen the below answer given by Antonio 8 months ago. The beta access link is dead now.There’s no information about whether Apple and Google billing is supported in v2.Is it supported? If not is there a way to get access to that?And please add this to the documentation 🙏> This endpoint is publicly available only for RC Billing subscriptions, as stated in the docs. We also offer support for Apple, Google, and Stripe, but it’s currently in Beta. If you’d like to join the beta, you can request access here
We recently changed our auth provider and our users now have different IDs. Is it okay to call `login()` again with another user id and call `syncPurchases()` afterwards, grant the user acces to his purchses again? Or should I set an alias? Kind regards,Marius
I’m using RevenueCat and logging into RevenueCat on each device with their Firebase Auth UID. The subscriptions work, and it transfers premium features without having to restore purchases. When I use the Customer Center though, it says I don’t have any subscriptions, restoring does nothing, and refunds/changing plans don’t work.
I have an issue with my iOS app I just got it approved by Apple but something is wrong . When you download the app it’s asking for you to pay for the subscription but when you download that and load the app the paywall comes again and ask for payment again
getting empty response from api
I’m trying to use StoreKit testing to test purchase of a promotional offer on a subscription product. I can purchase the initial subscription, but when I come to purchase the promotional offer I see the following error: [Purchases] - DEBUG: PaymentQueue updatedTransaction: redacted (null) (Error Domain=SKErrorDomain Code=12 "(null)" UserInfo={NSUnderlyingError=0x600001f34390 {Error Domain=ASDServerErrorDomain Code=3903 "The server encountered an error" UserInfo={NSLocalizedDescription=The server encountered an error}}}) (null) - 2 From what I can see, code 12 is a problem with the signature generated for the `SKPaymentDiscount`. Since generation of the signature is handled by the RevenueCat SDK, what are the options for me to fix the problem? I have uploaded the public certificate to my RevenueCat dashboard. Maybe related: there is “Subscription Offers Key” also in Xcode that isn’t used in any way. Perhaps there is some missing configuration in RevenueCat for promotional offers and St
The Customer Center feature, using RevenueCat SDK 5.9.0, is frequently showing “No subscriptions found”. This gives the options to ‘Restore purchases’, which works (presumably, anyway - I didn’t actually have a problem with purchases!), but when I open the Customer Center again, I get the same message. Not seeing anything relevant in the logs - entitlements are being loaded properly, and I am able to use my purchase-only features without issue
I’m Facing this error when trying to get my offerings with const offerings = await Purchases.getOfferings() :[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]i already signed all the documents on app store and my subscriptions are in “Pending for submission” state .Here some screenshot of my configurations : Please help , i’m about to going bald with this issue !!! (thanks :) )
TL:DR - Purchases.setMockWebResults({ shouldMockWebResults: true }) - is not working.Since RevenueCat only works on a real device or an emulator - it is a real pain in the ass to test functionality and run Android Studio, it is lagging so much.If RevenueCat was at least “mocking” data in the browser - that would be so cool and useful to quickly iterate on the tasks related to it. And after reading documentation - I found that this method exists - but it literally does nothing, it still logs “Web is not supported”. Calling that method before or after “await Purchases.configure()” - is to no avail.Apparently nobody on the team knows how to fix or wants to fix it, since previous topics were ignored or evaded:firstsecond So either remove it entirely from the API, or fix it - because I consider that functionality is CRUCIAL.
Hi, unfortunately I didn't find the answer to my problem in other questions or in the docs.My app works like this: Users are always logged in and there are no anonymous ids ever, so I always have customIds Each user has credits and balances in a given period, and it's tracked in a third-party database The subscription gives credits each new period I'm using react-native-purchases, developing from android and ios So, to implement a restore purchase in the app, I need to do in two steps:RevenuCat: call ‘restorePurchases’ and identify the user that had the active subscription Third-party online database: transfer the credits and balances from the old user to the new userIf I don't do this tranfer, the bussiness logic is broken. I would just need to get the old user ID of revenue cat (transfered from) to do this, but that's where the problem is.In short'’’Revenuecat: Purchases.restorePurchases() Get old owner idThird party database: Transfer balances from old owner to new owne
I have implemented a monthly and annual subscription in my applications. In recent days, subscribed users have begun to complain en masse that their subscription is not active. If the user re-authorizes, it will work again, then in a week the situation is the same. After authorizations, I call the methods Purchases.logIn(vm.user!.uid);Purchases.syncPurchases();
Hi. I’m BE developer and I see that prev dev used logic “first by platform” for user to determine subscription should be updated. It causes problems when user has 2 subscriptions.Can I use “original_transaction_id” to determine subscription in webhook event handler? Can it cause some problems? Is it ok if in some cases mobile users have 2 subscriptions? Like when they switch from plan to plan.
Hello,I’m trying to check if a user is eligible for an introductory price on Android to display the correct information, but I’m encountering issues. I’ve implemented the following code to check the introductory and free trial prices: val introProductPrice = product.subscriptionOptions?.introOffer?.introPhase?.price?.amountMicros ?: 0 val freeTrialPrice = product.subscriptionOptions?.freeTrial?.freePhase?.price?.amountMicros ?: 0However, I’m only getting the discounted price. When attempting to purchase the subscription, Google Play displays an text saying that I am not eligible for free trial and instead shows the regular price.Could you please clarify the correct way to check for introductory price eligibility, or if there is another method I should be using?Here’s what I have done:I created two subscriptions, let’s call them sub1 and sub2, both with introductory offers. When I attempt to purchase sub1, I correctly see the introductory offer. However, when I try to change my su
I am testing purchases in sandbox. I have purchased a subscription before, and it has expired.When I go in to purchase again, `Purchases.purchasePackage` prints purchase successful immediately and returns nothing and stalls.
We’re distributing our apps on common Android devices with Play Store, but also on devices without any Play Services. We’d like to offer a custom paywall that redirects to Stripe on these latter devices.Are there any API’s available through RevenueCat that help in this case? Even figuring out whether RevenueCat can connect to the Play Store would help.
New iOS and RevenueCat developer here, and I’m converting a paid app to subscription. I’ve read this article, and gone through the PurchasesHelper code. To help me understand better, and so it’s easier for me to maintain later on, I prefer not to simply copy and paste code. So I’ve done my best to write this my self. Since it’s difficult to test properly in a sandbox environment (or is beyond my technical know-how) and the importance of getting this right on the first try, I was wondering if someone can take a look at my code below and let me know if this will work in production: In my app struct, I have: @mainstruct MyApp: App { init() { Purchases.logLevel = .error Purchases.configure( with: Configuration.Builder(withAPIKey: AppConstants.apiKey) .with(storeKitVersion: .storeKit2) .build() ) Purchases.shared.delegate = PurchasesDelegateHandler.shared } var body: some Scene { WindowGroup { Co
When using `presentPaywall` with React Native there seems to be no way to pass in error handlers or any other listeners. Is there a way around it?
Why on Ios I can see in_app_purchase event, but can’t see it from Android? I use flutter, and Superwall for ios (because it doesn’t work for Flutter on android). But I use RevenueCat as a main thing, superwall just in sync after RC
Hello, I have installed the necessary play store and google cloud console for my android mobile application. I did it according to revenuecat documentation and videos here.I published my application in closed test and enabled license test. Test users can subscribe successfully. (I can see this in the sandbox data section)After seeing that it was successful in closed test, I opened it to all users in the production phase and uploaded a new apk.As a result of the review, Google rejected it. They said the problem was that the subscription could not be made. The subscription options were listed successfully, but when they wanted to make the payment, the following error message appeared:The item that you were attempting to purchase could not be found.
I’m playing with a sandbox account and trying to disable premium features when the entitlement is no longer present. I have tried using the following code:Purchases.shared.getCustomerInfo { customerInfo, error in self.isActive = customerInfo?.entitlements["premium"]?.isActive == true}Setting a @State-var named isActive. It does get set to true when I make a test purchase, but when I cancel the subscription I never get false. If I kill my app and relaunch it I get an updated value saying false. How do I detect that a subscription/entitlement has expired between app launches? It seems everything is cached until I kill the app and then launch it again. I want the status to be updated at least every time the app enters the foreground. Any best practice for this?
Hi! In my flutter app, the Google Play team found an error in the subscription screen. I use a code like below to show the price: Text( widget.package.storeProduct.introductoryPrice ?.priceString ?? widget.package.storeProduct.priceString, style: TextStyle( fontSize: 18, fontWeight: FontWeight.bold, color: Colors.black, ), overflow: TextOverflow .ellipsis, // Handle overflow with ellipsis),The PLN is okay, but the Google Team from India has INR, and it shows 0. I don’t know why or how to fix or even test it. As you can see the price for the month is ok. I use here code: TextSpan( text: widget.package.storeProduct .currencyCode ?? '', ), TextSpan( text: " " + (widget.package.storeProduct.price / 12) .toStringAsFixed(2), ), TextSpan( text: "/" + context.tr("month"), ),],
I created 3 products (Monthly subscription) for Revenuecat Billing app as below: And I created 1 offering including 3 packages corresponding to the 3 products above, just like:Then I developed a subscription page based on RevenueCat Billing's web SDK. I first subscribed to the Basic plan, and after the subscription was activated, I subscribed to the Premium plan with the same account. At this point, both subscriptions became active, and the Basic plan did not automatically cancel as expected.So how can I achieve subscription switching so that only one subscription is active at a time?
Hi, I’m using the PaywallView in my app after the user creates 5 records. When the user tries to add a record greater than 5, the Paywall displays.However I don’t know how to update my logic if the user successfully purchases a subscription. The Pay wall dismisses after “you’re all set” displays. Is there a callback I can use to update the local state of the subscription? Does .sheet(isPresented:_) have an onEnded or the like where I can call Purchases.shared.customerInfo() ?I can check the in a task when the view loads… but not sure how to update the state during/after the purchase
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.