Discussion and help from anything related to RevenueCat.
Recently active
the problem is I get the web hooks on EXPIRATION, PRODUCT_CHANGE and CANCELLATION but I don’t get it on INITIAL_PURCHASE or RENEWAL so we can't update our database what am I missing, I set every thing right, I also set revenueCat web hooks on App Store Connect for Sandbox and production and I even get customer history in overview with sandbox checked
Hi all, I am currently migrating to RevenueCat. My current user subscription details are stored in DB. I have used rest to migrate those over using the uuid for the user. But when a user registers on my platform, they get a 1 month free trial. This trial is basically a exp date set in the DB for the user without any interaction with Stripe, Google or Apple. My question is, how can I set this user up on revenuecat with a custom trail exp date if they without interaction with the Stripe, Google or Apple. Essentially adding a customer with a trail expiry date. Is this possible and if so how can I achieve this? Thanks
Hello all,I have setup real time developer notifications for my Android app, everything seems to be working fine and when I click the “Send test notification” in the developer console, the notification is successfully sent and no error is provided, however, all my Android purchases keep getting automatically cancelled 3 days after a successful purchase. My guess is that the purchase is cancelled because they’re not acknowledged by the SDK.I’ve followed the setup steps multiple times and the purchase flow and everything else works as expected, but it is really frustrating to see all my purchases returned because some misconfiguration on either mine or RC’s end that I haven’t been able to pinpoint.I also setup a new Pub/Sub subscription to the topic automatically created by the RevenueCat system and I successfully receive the base64 encoded notification with a payload similar to this one:{"version":"1.0","packageName":"com.my.app","eventTimeMillis":"1641511258205","testNotification":{"ve
Is it possible to share in-app purchases between two different apps of the same platform? For example, I have an app that I want to phase out and rebuild a new one from the ground up, but I want my users purchases to transfer over without having to repurchase. I’ve added the two apps to a project and it seems like it can be done in entitlements, but haven’t figured out how to get it to work. The purchases just restore to their respective apps and won't share between. If so how? Or is there any documentation I can be pointed towards.
The first offering I have added was a mistake, how to delete it ?
Hey, We are a UK based business, with 90% of our subscriptions coming in as GBP. It would be great if your graphs and etl jobs could be set to convert to the currency of your choice rather than USD. The issue I have is due to currency rate changes if we compare year on year revenue numbers, it’s hard to do that if the currency rates have changed significantly in the same period. Right now the USD to GBP rate has changed about 10-15% year on year, hence this being a bit of an issue for us.ThanksJohn
I’m trying to set up our payment at my workplace and I encountered a problem I cannot find others are having.Everything works, in theory and practically which is weird, but I still get warning logs in console when clicking the purchase button in app.So as soon as I click the purchase button I get two warning/error in log:[Purchases] - WARN: 🍎‼️ There is a problem with the SKPaymentTransaction missing a transaction date - this is an issue with the App Store.[Purchases] - WARN: 🍎‼️ There is a problem with the SKPaymentTransaction missing a transaction identifier - this is an issue with the App Store.However, I still get the prompt to purchase and I fill in my sandbox account details and hit buy. Everything is successful. The customer and data shows up on RevenueCat list. However the billing shows up as an error in customer info in RevenueCat in the details of history for customer.I found this post on RC forums with same issue but the solution was to create a new sandbox user and to mak
Getting a 429 on the https://api.revenuecat.com/v1/subscribers/app_user_id request. The response body has this: {"code":7638,"message":"There is another request in flight trying to perform the same action."}The requests are made from backend webhook code where two webhook events for the same user get load balanced to two completely different servers. So, I do have 2 outstanding requests for the same user. I'm wondering if there is a way around this since the amount of work to coordinate a single outstanding request per user isn't trivial.Thanks,Ken
When I tried to restore a lifetime access IAP on iOS with this code it did not detect a purchase. It seems to only work with subscriptions. Am I doing something wrong, or is there a different method to detect if a user has purchased a lifetime access IAP? Tried looking through docs but didn’t come across anything. Thanks for any help in advance.Purchases.shared.restorePurchases { (customerInfo, error) in //Check customerInfo to see if entitlement is active attemptingRestorePurchase = true // Bool that starts loading indicator if customerInfo?.entitlements.all[Constants.entitlementID]?.isActive == true { paidCustomer = true //Mark user as paid attemptingRestorePurchase = false //stop loading indicator } else { if networkMonitor.isConnected { // Alert toggle - checks internet connection attemptingRestorePurchase = false // stop loading indicator restorePurchaseError.toggle() // Alert toggle - Restore not successful } else {
Like the title said, we suffer a wrong data in eCommerce Revenue (expected 0 but we receive 7.5K in the below image), which then causes wrong total revenue also. The actually revenue should be 31K-7.5K. All of previous month (which we haven’t integrated RevenueCat with Firebase yet), this number should be 0 (I’ve checked again)It looks like happen on iOS only because we has this value only on iOS, is this SDK bug?
Hello,We are looking for ways to integrate RevenueCat to our payment process but we are having a bit hard time to understand why payment verification in the server side is so hard or are we missing something?For the context, we are selling digital goods and our backend server needs to verify payments before completing the purchase flow and unlock the items for use of the client. The only way to achieve this at the moment [1] is using RestAPI and calling ` /subscribers` endpoint [2] but this seems a bit fragile because:SDK returns all purchases (historically) for a product as an array, so client needs to iterate this array and find the corresponding revenueCatId of the purchase that is being made. Lets assume that the last item is the last purchase, so sending that to our backend-server. Our backend calls ` /subscribers` endpoint which returns all purchases for all products for a subscriber. So the logic is the find the revenueCatId sent from client in this list for the product, check t
I can’t fetch data from StoreKit testing framwork for test in app purchase on myappbelow this error messageflutter: fetchOffers error PlatformException(23, 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, {readable_error_code: CONFIGURATION_ERROR, readableErrorCode: CONFIGURATION_ERROR, code: 23, message: 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, underlyingErrorMessage: }, null) This is my step 1.I create StoreKit Configuration file on Xcode 2.Create subscriptionSubscription3.I config schema import StoreKit ConfigurationImport file config4.I export cerification
Hello, I have some issues with the app review.I have tested it using an android and iOS simulators and I can fetch the entitlements without any issue, I can see the description, price etc and the subscription works.However after installing the app through the TestFlight application, when I fetch the entitlements, I only see the price.Any idea why could this happen?Thanks
I am unable to view dates when exporting the .CSV from customer lists. 1) .gz is a silly file type to use for compression 2)I have followed the directions in this for PC. I have tried the Excel import wizard. It works but dates are illegible. I have tried pasting from a text editor into both GooglSheets and Excel with the same issue. I am not an Excel nor Google sheets rookie by any means but this issue has stumped me. Extremely frustrated. .csv is an extremely simple format to use and export.
Hello there, I’m currently trying to search for webhooks that have been missed due to server outage and I cannot find any past sent webhook that either got received or missed. Is there a way to look up the history of webhooks sent by RevenueCat or to recover the lost ones that didn’t get delivery confirmation? This is necessary because I use webhooks as a trigger to handle permission state changes that could affect our subscribers negatively if not handled. Is there any workaround?
Revenuecat team: Thank you for providing such a good service.ConditionSDK: react-native-purchases@^4.5.2: version "4.5.3" Restore setting: Block RestoreSDK login timing: at App initializing and before purchaseRuns restorePurchase internally before makePurchase to check if product is already purchased by different Member. (Shows message to re-login by purchased member)UsecaseiPhone user (App ID = X)log in to app as Member: A=app_user_id. Then purchase Monthly subscription. User log out Member: A. User log in as Member: B. User Try to purchase Monthly subscription (internally runs restore for checking before purchase), “Receipt already in use” error occurs and prevent Member: B from purchasing. This behavior is as we expected. But after above, When User try to purchase again as Member: B( internally runs restore for checking before purchase), this time “Receipt already in use” does not occur goes through restorePurchase and "Product already purchased" occurs AND SDK's APP_USER_ID IS C
Hi, I just came across this article talking about the new segmentation support for the retention charts and also the consideration of user maturity now.I’m a little bit confused about the last point.From my understanding, it means that in the retention chart you don’t consider anymore that a user will renew until it has actually renewed, am I correct? When I look at a retention chart without any segment, it seems like you’re still considering that a user will renew unless it cancels its subscription:Retention chart for the last 90 daysOn the other hand, when I add a segment like country still for the last 90 days, I do only see the retention of the past 2 months, and no projection for the current month.Retention chart with a segment For me, the data dilemma you’re talking about in your article is occurring no matter if we add a segment or not. Would you have an explanation about these two different behaviors? Thank you,
I have the following issue:My app requires being logged in, otherwise I don’t make use of the RevenueCat SDK, meaning that when I init() the Purchases I always provide the userID. When the user logs out, I also call the logOut() method in the SDK.If I make a purchase with account A, then log out, create a new account B and make a new purchase, on iOS at least I get a pop up saying the I am already subscribed and no matter if I press Manage or OK, the SDK will return that I have an active entitlement and make the account B premium.This is really bad, since with one account you could create multiple accounts that automatically will get the premium status.Am I doing something wrong? Is this just happening when I use the simulator with the StoreKit? I don’t want to have this behaviour in production.Thanks!
screencap of chrome errors when choosing ‘deleted’ userID Hi. just trying to wipe out some sandbox users via the project management screen. after deletion, they continue to show on my list and if you click a ‘deleted’ user...it simply reloads the screen. error messages are included from chrome dev tools...
Greetings, It seems like the only “Free Trial” option for Subscriptions on Android (Google Play) that RC supports is “Eligibility Criteria: New Customer Acquisition” in Play Store’s offers. That’s the only backward-compatible offer that RC is accepting, per docs. This offer, on the Google Play side, is only limited to the new customers (either never had this, or never had any subscription(s)). Now, consider that a user gets this package and cancels the renewal. After a while, they come back and want to resubscribe to the same package.On the Google Side, the user is not eligible to the offer. So no 14 days trials. However, on the RC side, we are receiving the same “14 days trial” intro_offer in the getOfferings() for this user, as a brand new user.It is causing an inconsistency between what our app is displaying the user in the UI and what they end up buying, which can cause us legal problems down the road.How can we prevent this?
Hi, I am trying to dynamically display the trial duration of my annual product. I have found `trialDuration` on RC framework but I don’t know to use it? I am getting products like this:private var offering: Offering? = SubscriptionManager.shared.offerings?.currentand then need to access trial duration to display it via a text label. some thing like getting localizedPriceString.Any help would be great!
Hello, I have multiple subscription offers, but only need to see if a user is subscribed to at least one to give them access to premium features. Since I’ve started using RevenueCat years ago, I check `purchaserInfo.activeSubscriptions.isEmpty` but RevenueCat’s documentation says to use `purchaserInfo.entitlements.active.isEmpty`. What’s the difference between the two methods?
I don’t understand in practice what this part of the documentation really mean:https://docs.revenuecat.com/docs/restoring-purchases#google-play-on-androidGoogle Play on AndroidDue to platform limitations, purchases will be transferred as soon as you call configure if a user's purchases are already associated with another app user ID.This may cause unexpected transfers of purchases between app user IDs, especially for apps with optional logins or users with multiple devices. To prevent this behavior, you should wait to call configure until you have the appropriate app user ID for your customer. My app is developed in Flutter, and I couldn’t find a “configure” method on the RevenueCat SDK for Flutter. Is it referring to the “setup” method? If that’s so, then should I first login the user before calling setup/configure? Won’t RevenueCat throw an error when I try to login the user before calling the setup/configure method?In short, how can I set the user UID before I call the setup/configu
Since you can have multiple apps inside one project, I’m wondering what the structure should look like?If I have two different apps, one game “Fighter”, and another unrelated app “MySocial”.Do I make these under the same project, or do I put them in seperate projects? Is the multiple-app thing meant for iOS & Android version of the same app?
This only happens to one of my apps, my first app persist entitlements until it’s uninstalled, however my new app that has an one-time-purchase, grants the entitlements after payment but when the app is restarted, the entitlements are all gone despite the payment going through, I can re-purchase it too. Is it cause im using the same service account json for both apps? The code shouldnt be wrong cause im using the same on both apps and the first one works.What could be wrong? I DID notice that I forgot to put the new app in the service account permissions, which i thought would fix the problem, but I still have the same problem.
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.