Discussion and help from anything related to RevenueCat.
Recently active
It goes something like this:1 - Sign into RC with appID12 - Purchase subscription.3 - Sign out and back in again using appID24 - RC says no subscription active for appID2 and so we present offerings.5 - Purchase fails because (presumably) Play Store thinks we already have an active sub because appID1 bought one using the common PlayStore sign in.I’d like to prohibit sub sharing across different accounts.In order for appID2 to be able to purchase a subscription, another Play Store account needs to be used.What’s the general best practice for dealing with this scenario?Many thanks.
So I recently started seeing more and more users starting to get issues fetching products and this is the error they get after calling Purchases.shared.getOfferings: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 After investigating it, from what I've seen, it only is happening for users on iOS 17.3.1. For all other users, it seems to be okay and has been working successfully.I’m wondering if anyone knows what could be causing this / also happening to them?
I am using react-native-purchases-ui. In my code, I have explicitly set displayCloseButton: true when calling the presentPaywallIfNeeded function. The close button is shown successfully on iOS with the teal color. However, on Android, it is not visible at all. I am using: “expo”: “49.0.17”,"react-native": "0.72.6","react-native-purchases": "7.21.0","react-native-purchases-ui": "7.21.0", See examples:ANDROID Android Paywall (no close button)iOS
I am attempting to keep my database up to date with my users’ subscription states via RevenueCat’s webhooks. When my server receives an event from RC, it extracts the `app_user_id` and immediately hits the /subscribers API endpoint to fetch the new subscription info for that user and save it to my database. This seems to be working for new subscriptions, renewals, and cancellations.I am running into an issue with the `TRANSFER` event type, however. I can trigger this event by logging out one of my users, logging into a new account, and restoring purchases. The Apple ID remains the same throughout, and I correctly log in/out to the Purchases SDK at the correct times, so RC (correctly) transfers the entitlements over to the new user ID.I receive the `TRANSFER` event via webhook, and handle it as a special case. Instead of simply extracting and refreshing the `app_user_id` (which isn’t present), I check the user IDs in `transferred_from` and `transferred_to`. The user IDs are then sent as
I have installed the lasted version of revenue cat in my expo app and all work fine in IOS but when I created a build to test on android it crashed with ```Your app just crashed. See the error below.com.amazon.a.a.o.a.b: Executing thread must be thread: 2, was: 206at com.amazon.a.a.o.a.a.a(Assert.java:59)at com.amazon.a.a.o.a.a.a(Assert.java:48)at com.amazon.a.a.o.a.a.a(Assert.java:31)at com.amazon.a.a.k.c.a(ResourceManagerImpl.java:50)at com.amazon.a.a.k.c.<init>(ResourceManagerImpl.java:34)at com.amazon.a.a.b(AppstoreSDK.java:171)at com.amazon.a.a.<init>(AppstoreSDK.java:155)at com.amazon.a.a.a(AppstoreSDK.java:234)at com.amazon.device.iap.PurchasingService.registerListener(PurchasingService.java:89)at com.onesignal.TrackAmazonPurchase.setListener(TrackAmazonPurchase.java:107)at com.onesignal.TrackAmazonPurchase.<init>(TrackAmazonPurchase.java:84)at com.onesignal.OneSignal.handleAmazonPurchase(OneSignal.java:978)at com.onesignal.OneSignal.init(OneSignal.java:855)at
Just a day ago I was able to make a test purchase on my actual iphone with no problem, but suddenly I get this error and the purchase fails.When I try to purchase again after the failed attempt, I get a dialog that says "You are currently subscribed to this subscription.What could be the cause?I have not changed the shared secret or the bundle Id.Thanks in advance. [ ] [Purchases] - DEBUG: ℹ️ There are no requests currently running, starting request POST receipts[ ] [Purchases] - DEBUG: ℹ️ API request started: POST /v1/receipts[ +856 ms] [Purchases] - ERROR: 😿‼️ The receipt is not valid.[ ] [Purchases] - DEBUG: ℹ️ API request failed: POST /v1/receipts: The receipt is not valid.[ ] [Purchases] - DEBUG: ℹ️ PostReceiptDataOperation: Finished[ ] [Purchases] - DEBUG: ℹ️ Serial request done: POST receipts, 0 requests left in the queue[ ] [Purchases] - ERROR: 😿‼️ The receipt is not valid.[+1072 ms] [Purchases] - ERROR: 💰 Product purchase for 'MY_P
I noticed when testing that my subscription expires pretty quickly. Subscription acceleration is vaguely explained in the docs (more details would be super helpful). The odd thing is that if I go through with the purchase again, it appears to succeed (it does not throw a PlatformException) but then when I print the entitlements right after the purchase code (await Purchases.purchasePackage(package)) I see this:{premium: EntitlementInfo{identifier: premium, isActive: false, willRenew: false, periodType: PeriodType.normal, latestPurchaseDate: 2021-09-22T01:58:04Z, originalPurchaseDate: 2021-09-21T20:58:05Z, expirationDate: 2021-09-22T02:58:04Z, store: Store.appStore, productIdentifier: jsdev_59_1y_1w0, isSandbox: true, unsubscribeDetectedAt: 2021-09-22T02:59:55Z, billingIssueDetectedAt: null}}If going through with a purchase does not renew an expired subscription, what does?(sorry for the mediocre formatting, your code formatter for this forum doesn’t support markdown and doesn’t support
I have set up various products on play store and am able to fetch them successful via the Purchases.sharedInstance.getOfferingsWith function. Some of my products have introductory pricing and/or free trials. I have tried testing this functionality and it seems to work. The problem I am running into now is if I have a user that has made use of the free trial or intro pricing for the subscription, cancels the subscription, and then wants to resubscribe I don’t appear to have a way to tell that the user is not longer eligible for intro pricing or free trials. The only way to tell is only after the user has started to go through the play store billing flow, but I need to display the correct information about the product in my app’s UI.
Error enumerating unfinished transactions for first transaction listener: Error Domain=ASDErrorDomain Code=500 "(null)" UserInfo={client-environment-type=Sandbox, storefront-country-code=GBR, NSUnderlyingError=0x600000c02dc0 {Error Domain=AMSErrorDomain Code=2 "Finance Authentication Error" UserInfo={NSLocalizedDescription=Finance Authentication Error, AMSURL=https://mzstorekit-sb.itunes.apple.com/inApps/v1/history?guid=7666DF87F208&reason=initial, AMSStatusCode=401, NSLocalizedFailureReason=No delegate to perform authentication: <AMSAuthenticateRequest: 0x600000c0f4b0> { account = jerichomiles6@gmail.com (78985344-F6FD-42AD-BCEB-DF36B39D9837), logKey = 1379CD2F, options = <AMSAuthenticateOptions: 0x600003b408c0> { AMSAuthenticateOptionsAllowPasswordGeneration = 0, AMSAuthenticateOptionsAllowSecondaryCredentialSource = 0, AMSAuthenticateOptionsAllowServerDialogs = 0, AMSAuthenticateOptionsAuthenticationTypeKey = 1, AMSAuthenticateOptionsCanMakeAccountActiveKey =
Hi, I want to purchase a specific subscription offer from google play.This should work as described here: https://www.revenuecat.com/docs/subscription-offers#more-control-over-offer-selection and here: https://github.com/RevenueCat/cordova-plugin-purchases/releases/tag/4.0.0 I did my setup for Ionic(Vue) + Capacitor as described here (https://www.revenuecat.com/docs/ionic)I have the following dependencies installed:@awesome-cordova-plugins/core@^6.3.0 @awesome-cordova-plugins/purchases@^6.3.0 cordova-plugin-purchases@^4.2.3 cordova-annotated-plugin-android@^1.0.4 In my App I am usingimport { Purchases } from '@awesome-cordova-plugins/purchases';and geht the typings from here:node_modules/@awesome-cordova-plugins/purchases/index.d(those seem to be incomplete! subscriptionOptions are not defined in the types I get) BUT: In the results of “Purchases.getOfferings()” I get packages with products and those products have an array called “subscriptionOptions” with all my options listed. So the
Hi All,Trying to publish an app and got the following:Unsafe EncryptionYour app contains unsafe cryptographic encryption patterns. Please see this Google Help Center article for details. p0.e0.c Unfortunately got nothing else, no email, so just have to guess what code its refering to. Best guess is the key used to configure revenuecat for in-app purchase.configuration = PurchaseConfiguration('goog_********************************');They suggest using Jetpack (https://support.google.com/faqs/answer/9450925)I am however struggling to implement this in flutter. Does anyone have any example code/articles etc that could help?I suspect this will impact all apps that use a key within the app like revenuecat.Thanks
Hi, this is our first in app purchase (annual subscription) and the first time using RevenueCat, Overall everything seems to be working except for the following code which is never call Please help. Thank you. - (void)purchases:(nonnull RCPurchases *)purchases receivedUpdatedCustomerInfo:(nonnull RCCustomerInfo *)purchaserInfo {// handle any changes to purchaserInfo NSLog(@"\n\n\n Purchase Updated INFO: %@", purchaserInfo); [self CheckForSubscription];}
Hi, I want to promote my IAP, does RevenueCat provide a guideline for implementing this app store promotions? Thanks!!---------------------------App Store PromotionsYou can promote up to 20 in-app purchases, and they’ll appear on your app’s product page and can be shown in search results or be featured by our editorial team. Users can tap an in-app purchase to open your app, where they can buy it. Make sure your app supports the SKPaymentTransactionObserver method to process this transaction.
Hello, I’m using react native (react-native-purchases and react-native-purchases-ui both at 9.7.0) for my iOS-only app. I’m displaying a paywall to my users via const result = await RevenueCatUI.presentPaywall({ offering });The paywall renders correctly. I have a restore button that restore the purchase correctly, but it does not dismiss the paywall. The user is often left confused as to whether the restore worked or not. How can I get the paywall to dismiss automatically after a restore? There’s no `dismiss()` method on `RevenueCatUI` either, and I would like to not use `<RevenueCatUI.Paywall />` component as that has several scroll issues when used in a bottom sheet to mimic similar behavior of `RevenueCatUI.presentPaywall()`
Hi RevenueCat Support Team,I’ve recently integrated the Meta Ads integration as per your documentation and triggered several purchase events while running the app in development mode. However, I’m not seeing any indication that these events are being sent to Meta—neither in the RevenueCat dashboard nor on Meta’s side.A few additional details: I haven’t implemented the ATT prompt yet, so users have not granted tracking permission. From the docs, it appears that the IDFA is optional and RevenueCat should still be able to forward events without it. The app is using RevenueCat’s anonymous ID and I’ve verified that purchases are correctly being tracked in the RevenueCat dashboard.Could you help clarify:Are events from development builds or sandbox purchases forwarded to Meta Ads? Is ATT permission mandatory for Meta Ads event forwarding in practice, even if IDFA is optional? Are there any known limitations or delays when viewing these events in the dashboard or Meta Events Manager?Let me kn
## Issue DescriptionWhen implementing RevenueCat UI (v7.x.x) in a Flutter application, I've encountered a consistent issue where `PaywallResult.cancelled` is always returned in iOS Sandbox testing, even when purchases are successfully completed. This affects both consumable purchases and subscriptions. In android works well. This issue is only with the Paywalls v2. With the v1 used to work correctly. ### Actual Behavior- Android: Works as expected, returning `PaywallResult.purchased` for successful purchases- iOS Sandbox: Always returns `PaywallResult.cancelled`, even though: - The purchase is successfully processed by RevenueCat - The entitlement/purchase is correctly reflected in RevenueCat dashboard - Customer info is properly updated I would like to know if there is any known solution for this or is related with the sandbox environment. Thanks!
I am working on my paywall which will detect when a customer purchased an older version of my app so that I can offer them a 50% discount or a free period on the subscription of the new app, depending on when they purchased the old app. I’m trying to figure out how to get the prices I’ve set on the offer codes that I will use. I’ve got a button that will take the user to the App Store to complete the purchase and when they come back from the App Store, I’ll sync their purchase and dismiss the paywall. Right now for the 50% discount offer, I’m just diving the subscription price by 2. However, Apple’s offer codes don’t work like that. You have to select specific prices for each offer code. I do display the original subscription price and also a “Your price: $24.99” label just below the button that takes them to the App Store to complete the purchase.But I realize now that the prices I display will be wrong because it’s not always a divide by 2 price. For example, one of my prices is $44.
I have integrated CleverTap and set the Account ID And Passcode correctly but when I checked so all subscription events are in retrying status or fail. I have sent the events by https://api.clevertap.com/1/upload and all sent success. How can I resolve this case?
I’ve implemented revenuecat for in-app purchase with google play. I’ve done all steps carefully, but when purchasing in testing mode, it gives this error “This version of the application is not configured for billing through Google Play. check the help center for more information”. I have wasted more than a month solving this error. Nothing works for me. Please help.Thanks!
When clicking on the Continue button in Paywall V2 nothing happens. I think it worked once but after canceled the subscription and removed the customer from revenuecat dashboard I can’t get a new subscription.I have made sure my sandbox user (ios) does not have any active subscription as well.What have I missed?
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
Im using the the new Paywall UI library for react native. I have created a paywall with a Spanish localized version. However, when testing the app on iOS with the default language set to Spanish I get the default paywall in English. I have not yet tested this on Android. Im using react native purchases and purchases-ui 7.16.1 and expo sdk 49
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!
Hello,I am trying to add Revenue cat to my IOS flutter app using this package: https://pub.dev/packages/purchases_flutterAfter i make a purchase with sandbox and the screens show done(in picture 2), I got stuck in the payment screen, even i re-enter my credentials and pay again the app keeps showing me tha payment screen over and over (i got stuck in this function: Purchases.purchaseStoreProduct it does not return any CustomerInfo even though I paid and the ios screen shows done.).I checked snadbox in revenue cat dashboard but all of my payment did not get persisted.Can someone help me, and thanks in advace.Here is my code(Picture 1):
Hello, in my android app using jetpack composed i implemented revenue cat. Everything seems to be ok apart from the fact that the paywall showing is the basic paywall. I have Designed paywall using the V2 of the paywall editor , but the basic paywall is still showing. I checked my logs and everything seems to be fine: [Purchases] - DEBUG D 👤 Logging in from $RCAnonymousID:b831970ef3294aa19a10b4ddf59fc251 -> tNQh1DwjRTU9zJZIk08oEGnLHBo2[Purchases] - DEBUG D ℹ️ No subscriber attributes to synchronize.[Purchases] - DEBUG D API request started: POST /subscribers/identify[Purchases] - DEBUG D API request completed with status: POST /subscribers/identify 200[Purchases] - DEBUG D 👤 Logged in successfully as tNQh1DwjRTU9zJZIk08oEGnLHBo2. Created: false[Purchases] - DEBUG D ℹ️ Found 0 unsynced attributes for App User ID: $RCAnonymousID:b831970ef3294aa19a10b4ddf59fc251[Purchases] - DEBUG D ℹ️ Deleting subscriber attributes for $
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.