Discussion and help from anything related to RevenueCat.
Recently active
I am testing revenue cat 4.0 with Unity 2020.3.8f1 on fire tablet amazon but the callback of Purchases.GetOfferings is never called. With other platforms (iOS and google play) it works correctly.I’ve already configured amazon revenuecat key, shared amazon key,set useAmazon=true and enable sandbox mode as write here: https://developer.amazon.com/docs/in-app-purchasing/drm-sample-app.html#step-6-enter-sandbox-modeI have created a scene empty with your script “PurchasesListener.cs” (and Purchases.cs) to replicated the issue.The callback in GetOfferings is never called either on PurchasesListener.Start() or when you pressed on the UI Button “GetOfferings”
I have followed instructions from the official documentation (https://docs.revenuecat.com/docs/ios-subscription-offers) but I can’t get promotional offers to appear.I’m using a sandbox user, which has an expired annual subscription. When I call any of these methods, I either get 0 offers or it says that the user is not eligible for the promo offer (pay up front, x% off first year).let d = package.storeProduct.discounts (returns 0)let e = await Purchases.shared.checkTrialOrIntroDiscountEligibility(product: package.storeProduct) (returns ineligible)let promoOffers = await package.storeProduct.getEligiblePromotionalOffers() (returns 0) Here are the entitlements for the user:identifier=pro,isActive=false,willRenew=false,periodType=Normal,latestPurchaseDate=Optional(2022-05-28 12:36:19 +0000),originalPurchaseDate=Optional(2022-05-27 16:03:13 +0000),expirationDate=Optional(2022-05-28 13:36:19 +0000),store=Store(rawValue: 0),productIdentifier=com.mycompany.myapp.pro.yearly,isSandbox=true,unsu
Do Refunds get sent to Amplitude?
After a few re-purchases of the same product (after it expired normally) it becomes impossible to re-purchase it again. The Apple native purchase dialog is not displayed, PurchaseProduct callback is called with no errors, but the CustomerInfo does not include any active Entitlement or any ActiveSubscription.(We are using RevenueCat SDK 4.0.0 and Unity 2021.3.8)Of course, those purchases are in sandbox. But it's impossible for us to determine if this is a sandbox-only issue. We never had a similar issue with in our current implementation of Unity IAP, so answering this is actually an important for us as we are currently trying to assess if the SDK is stable enough to transition to.Here are the [Purchases] logs from one of those failed purchase: 2022-09-01 12:06:22.334218-0400 AppName[18946:594262] [Purchases] - DEBUG: ℹ️ Skipping products request because products were already cached. products: ["com.company.app.subscription_one_month_01"]2022-09-01 12:06:22.337390-0400 AppName[18946:593
Dear all, I would like to receive a payment by means of RevenueCat from an user and split that payment to me (the app itself) and to another specific user. The logic is akin to Uber, which receives a payment from a passenger and split that between Uber itself and a specific driver. I’ve done my research on RevenueCat docs but had not found anything about. Thanks in advance for clarifications!
I have two products (weekly, monthly) and two entitlement attached to them. In sandbox, when I purchase the first weekly, the entitlement is right. But when I upgrade to the monthly when weekly entitlement is active, active entitlement seems to be be still the weekly. I expect it to entitled to only monthly. Upon purchase of monthly debug logs show the purchased product as monthly but I can’t get its entitlement as active entitlement.purchaseInfo.entitlements.active seems to have only one entitlement and it’s weekly. The product definitions are in the same subscription group. The sandbox data also shows the latest purchase as weekly and user’s entitlement to monthly. What could be the problem here?I’m checking it like shown below: Purchases.shared.purchase(package:selectedPackage) { transaction, purchaseInfo, error, userCancelled in if let error = error { print(error.localizedDescription) self.purchaseFailed(purchaseInfo, error, userCanc
Hello, I’m trying to to handle the error thrown when the transaction is interrupted ( Accept terms and conditions, update payment info ). All the clue I have is “ Error: There was a problem with the App Store.”Can i rely on this message to identify this type of error? This seem too generic to me, and i fear that by handling this message some errors could stop being monitoredI’m testing with the enable interrupted purchases in store kit
A procurement person reached out regarding one of our apps and asked if they could manage “subscriptions in bulk” for their organization via their mobile device management system. They also want the ability to add and remove subscriptions on the fly.I know Apple offers a Volume Purchase Program, but that’s only for paid apps and doesn’t cover IAPs.Any ideas? So far I’m thinking:Purchase/manage seats on the web via Stripe; Create a new paid app specifically for them with a price point ~= LTV*2 yearsAny ideas will be appreciated
This is the behavior I’m seeing (tested on iOS) when setting the Restore behavior to Block Restores.App store userA logs into our app as user1 user1 purhcases a monthly subscription user1 eventually cancels monthly subscription and it expires user2 logs in on the same device (i.e. still app store userA) user2 purchases monthly subscription, gets the ‘receiptAlreadyInUse’ error, HOWEVER, the purchase still went through successfully and user1’s purchase was restored.This feels like a bug that the purchase made it through even though the SDK returned an error.Also, the link to the documentation on restores is currently pointed to here which gives a 404.
As per the title:I always get the ‘Receipt is missing error’ when testing via TestFlight.In Xcode, when configured with a StoreKit file, it works fine. Without StoreKit and TestFlight it does not work, the app review is also always getting rejected.I cannot see why it does not work. The products and offerings are configured correctly (and they are shown in the app), it’s just the receipt that is always missing when purchasing.
Hi, I have searched and read many posts regarding to my problem.Many users encountered the same issue as mine. However, none of them received a solution or clear confirmation about this issue.A new sandbox user works fine with the first purchase of a subscription item. But after expiration, if we want to resubscribe, it sometimes just fails.More specifically, we are using https://github.com/RevenueCat/purchases-unity/releases/download/4.1.0/Purchases-UnityIAP.unitypackage with a Unity app.When we click on a subscription button for a resubscription, the function PurchasePackage works fine without an error, but in the callback, we check customerInfo.Entitlements.Active.ContainsKey(entitlementId) and it is still false.I think at least there should be a confirmation whether it only happens in TestFlight/sandbox environment or not?Thanks!
I am trying to create some new subscriptions on Google Play console and have created a new product with a matching product ID on RevenueCat and in the Google Play console. After creating the new product on the Play Console, I have to add a “Base Plan” and give it a unique “Base Plan ID”. What should I put for the “Base Plan ID”? Should I put the product ID as the base plan ID as well? I know these are new changes to the Play Console, so appreciate any guidance I can get on this.
The revenue amount reported by RevenueCat did not equal the amount I expect, so I want to update my mental model. What am I missing? I’ve set the price to 24.99 USD. The Mr. Google set the price across the globe accordingly. The list price in Germany is 28.99 EUR including 19% VAT. So the price shown to user is 28.99 EUR. The 5.51 is deducted as a VAT. Then there was a purchase. List Price: OK Tax: 4.63… Weird, that it’s not 5.51 as stated about, but… Okay. Estimated Revenue: OK. This is how what I expect to get after setting the price to 24.99 USD and deducting 15% Google’s share. It’s not exactly 85%, and I guess that’s because of conversions from USD to EUR. Bacause this is fine: What looks really, really out of scope is this: I’m seeing a List Price with the User’s country tax. And the revenue which is reported by Revenue Cat for this transaction is this: 24.714 USD.(I’ve double checked the receipt id, it is the proper transaction). The questionsIs that the List Price I’m seeing i
I installed the expo managed workflow and also followed the revenuecat/react-native-purchases guide and trying a simple code to setDebugLogs I keep getting React.useEffect(() => { Purchases.setDebugLogsEnabled(true); }, []);null is not an object (evaluating 'RNPurchases.setDebugLogsEnabled') I also tried a simple configure and got similar issue React.useEffect(() => { Purchases.configure({apiKey:"xxxxxxxxx"}); }, []);null is not an object (evaluating 'RNPurchases.setPurchases') Any idea what could it be or how to debug this?I read other comments and issues but none of them had a working solution Note: I started trying this today so I have the latest versions of everything, expo, react native and react native purchases
I have an app that offers subscriptions on both the App Store and the Google Play Store. The user can subscribe to a monthly/3-month/annual plan in the app. I’m thinking about raising prices only for new subscribers, but after reading https://docs.revenuecat.com/docs/price-changes and questions posted in the community, I’m still not 100% sure how to proceed, especially when it comes to Google Play. My setup is pretty straightforward:RC:Single entitlement, associated with all products, that gives “unlimited” access to the app 3 products (1m/3m/1y) for the App Store 3 products (1m/3m/1y) for the Google Play Store 3 packages to group 1m/3m/1y products Single offering that contains the 3 packagesApp Store1 subscription group that contains 3 subscriptions (1m/3m/1y)Google Play Store3 subscriptions (1m/3m/1y) My questions:App Store: I think the best way is create a new subscription group with new subscriptions/prices. In the iOS settings app, existing subscribers will only see the old subscr
HelloI want to use billing client v4(Google) with purchases_flutter over 3.4.0 and flutter 3.1.1.but “java.lang.NoSuchMethodError: No virtual method queryPurchases" occured at this code.await Purchases.setup(publickey);and stack trace is this.D/[Purchases] - DEBUG(21733): ℹ️ API request started: GET /subscribers/oDNEWTpax9Xkz0FVC3tdoRzdPbh1/offeringsD/[Purchases] - DEBUG(21733): ℹ️ API request completed with status: GET /subscribers/oDNEWTpax9Xkz0FVC3tdoRzdPbh1/offerings 304D/[Purchases] - DEBUG(21733): ℹ️ Requesting products from the store with identifiers: jp.kazushige.sato.suudoku.month1, jp.kazushige.sato.suudoku.month6, jp.kazushige.sato.suudoku.month12D/[Purchases] - DEBUG(21733): ℹ️ Requesting products from the store with identifiers: jp.kazushige.sato.suudoku.month1, jp.kazushige.sato.suudoku.month6, jp.kazushige.sato.suudoku.month12D/[Purchases] - DEBUG(21733): ℹ️ Querying purchasesE/AndroidRuntime(21733): FATAL EXCEPTION: Thread-11E/AndroidRuntime(21733): Process: jp.kazushig
I’m testing my live purchases in the App Store before public announcement of the product. I’m probably misunderstanding but “Conversion to paying” chart shows zero conversion, even though I installed the app and paid for a real subscription myself yesterday. The subscription shows up correctly, but it shows zero conversions. Why?
Hi everyone,for the transparency in our privacy policy, we need to know how long the user related data is stored in the systems of RevenueCat. Of course, this depends on how long a subscription is, so I could imagine something like “12 months after a subscription has ended”.Unfortunately, I haven’t found anything in RevenueCats privacy policy, so I’m asking here for a helpful note :)Best,Ben
I'm currently using the revenucat webhook to manage the subscriptions (iOS works just fine) and while testing the Android purchase flow, I've been struggling with the following issues:The trial webhook is not being received as the documentation says, it's just coming as a normal initial purchase, it does not have the property "period_type": "TRIAL" but has the "period_type": "NORMAL" instead. This is making really hard to identify when a user is trialing or already has trialed.I created the offer just as the documentation explains: The other problem I've been facing is that a user is not doing an upgrade but another new subscription purchase is happening instead, why is this happening? example situation:Starts with a premium trial Decides to downgrade to a basic planSubscription should change to basic (even that the change is not being applied immediately, the plan should be changed (probably in the end of the trial with a renewal) and at least one PRODUCT_CHANGE event should be trigg
In the past 2 weeks we have had 5 Google Play Pass users complain that they are not getting an unlocked version of our app upon install. When we look up their accounts in the Rev Cat portal we are not seeing any entitlements. Please check the following account ids:eccadc44-b852-49e3-9abd-98ca8caaa5793e02d09e-39af-4f3e-97e7-1202c5721a800bbacb64-3025-438d-9c97-e9072834ad3fff55917c-c849-4a1e-8a76-47055e13cf62 Normally we see the entitlements that are tied to purchase we provisioned for Google Play Pass on accounts like these in the portal
Working through setting up RC for the first time am using https://docs.revenuecat.com/reference/subscribers to grab a particular user’s entitlements and subscriptions information. Per the docs, I see that the subscriptions payload returns a mapping of product_id to the subscription itself. When testing with a Sandbox account, I see the is_sandbox populates as true which is to be expected. If a user has a sandbox subscription and I then subscribe the same user with a production subscription, what exactly happens? Is this allowed and, if so, how does this affect the final subscriptions payload?
When I am setting attributes with Cordova whether generically like this:Purchases.setAttributes({“age”: “24”});Or when using something like the display name like this:Purchases.setDisplayName(“Doe”);I always end up with an error message that looks like this:To Native Cordova -> PurchasesPlugin setAttributes INVALID ["options": [{ age = 24;}]]Or this for the display name:To Native Cordova -> PurchasesPlugin setDisplayName INVALID ["options": [Doe]] Am I missing something? I went through and updated everything in my app to be uptodate. I am using the following versions of things:"@ionic-native/core": "^5.35.0","@ionic-native/purchases": "^5.35.0","cordova-plugin-purchases": "^2.3.0",Everything else with purchases is working just fine as far as I can tell, I just can’t seem to use it to set an attribute.
Hello, I have a question on how to implement RevenueCat in our react native app and would like to verify if i configured the products correctly. So i have 1 subscription group in the app store with product a monthly, a yearly, b monthly, b yearly, a+b monthly and a+b yearly.I added these 1 to 1 in products in RevenueCat. Then I made 3 entitlements: a, b and a+b and added their monthly and yearly product. These are the 3 levels of access. These 3 levels i want to show in the app. When a user already has subscription a and purchase b it needs to go to a+b. Now i get confused with offerings because i create a default one and can only add 1 monthly and 1 yearly product. What I do now to show the products in the app is with Purchases.getOfferings() and then made 3 offerings. Again a, b and a+b and get result.all instead of current to loop over all the products. In app i can purchase a product in sandbox mode and get an active subscription but then i can purchase another. Is this normal ? Ho
While working with on the app in my simulator everytime I remove and run the app revenue cat new customer data is increasing. I would like to filter this debug mode datas. Is there anyway to do that? some thing like this:#if DEBUG Purhcases.environment = .sandbox#endif
It’s been over 36 hours and still I‘m seeing this error. RevenueCat docs says that this will go away after 36 hours but it hasn’t. D/[Purchases] - DEBUG(30735): ℹ️ Found 0 unsynced attributes for App User ID: faizanrafiq.htc@gmail.comD/[Purchases] - DEBUG(30735): ℹ️ API request started: POST /receiptsD/[Purchases] - DEBUG(30735): ℹ️ API request completed with status: POST /receipts 503E/[Purchases] - ERROR(30735): 🤖‼️ There was a credentials issue. Check the underlying error for more details.I/flutter (30735): PlatformException(11, There was a credentials issue. Check the underlying error for more details., {code: 11, message: There was a credentials issue. Check the underlying error for more details., readableErrorCode: InvalidCredentialsError, readable_error_code: InvalidCredentialsError, underlyingErrorMessage: Invalid Play Store credentials., userCancelled: false}, null) Any help will be greatly oblidged.
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.