Get help with anything related to RevenueCat.
Recently active
We've noticed that when a user subscribes with a free trial and cancels it (after the trial period), then subscribes again, our code doesn't log the successful purchase, even though RevenueCat does. This seems to only occur for subscriptions without a trial period, as our code only looks for an entitlement set up as a subscription with a trial period.We believe the issue lies with our code not accounting for subscriptions without a trial period: const purchaseMade = await Purchases.purchasePackage(the_package);if (typeof purchaseMade.productIdentifier !== "undefined") ... For some reason, this returns true when they subscribe with the free trial and false when they subscribe without it.Additionally, we're facing another issue with testing subscriptions after a trial ends effectively. We don't know how to do this without waiting for 3 days(introduction trial period). Do you know of a quicker way to test this?
I’m getting an issue opening any docs page, such as https://www.revenuecat.com/docs, https://www.revenuecat.com/docs/getting-started, or https://www.revenuecat.com/reference/revenuecat-rest-api.The page flashes with content for a second before turning white.Things I’ve tried:Multiple browsers Disabling browser cache The browser on my phone on data instead of WiFi Ensuring browser plugins like ad-block are disabled
I’m currently setup with “Transfer to new App User ID”for my“Transferring purchases seen on multiple App User IDs” option.Where should I be calling SyncProducts() that makes most sense?Should it be if I call getCustomerInfo after signing in and it comes back empty?If I do this, can I safely assume that I’ll never have to show the paywall screen and I can just display a waiting dialog until the new entitlements arrive in my listener?At the moment, I’m just calling SyncProducts after sign in but I would like to hold off from displaying the paywall if I’m certain that the purchases are going to get transferred.I could obviously just test this but as we all know, just because something SEEMS to be working, it doesn’t necessarily follow that it will consistently if the application runs contrary to convention.
I see with the new Developer API that we now have the ability to create products, entitlements, offerings, and packages. This is great, but I would really like to be able to also create a new app via the API. Also as part of this, I would need to then be able to get the public key for the newly created app in order to automate on my side. Are there any plans for adding the ability to create an app through the API in the near future?
Hi! Deep link clicks to apply custom promo codes isn’t working (cf screenshots) in Android. If my code is “BETA”, I’m using the link https://play.google.com/redeem?code=BETA as specified in your doc and in the google play doc. Inputing the same code, “BETA” here, manually in the payment prompt in my app works. I’ll add that deeplinks for single-use promo codes work (using the same link construction rule as for custom promo codes, so if my code is 123456789 the link https://play.google.com/redeem?code=123456789). Any idea how to make deeplinks for custom promo codes work? Best,Jane
Hello - thanks for reading! I have a slightly unique use case and am looking for guidance. Product: A service that allows users to upload a video and we create clips from that video that the user can then watch in the app. Goal: I want users to experience this service for free so they can understand and fully appreciate the value of it. Then on subsequent video uploads I want to charge them. Issue: I’m not aware of any way to discount/coupon the first In-app purchase and then charge the user for subsequent purchases. This is on iOS, and the product is a consumable product. Appreciate any help!Max
Hi,We are trying to create an offer code for a partner that gives their clients a month free and then 20% off our product. Is there a way to have an offer code or some combination of offer code and introductory offering that gives a user both a month free and a discount?Basically, the flow would be - a user comes on to our app referred by a partner. We to set up some relationship with the partner where THEIR users specifically get both: 1 month free 20% off our list price. For further context, we use the in-app offer code redemption sheet currently for offer codes. Are their better options than this for partner offer codes in an iOS app?
i have flutter app for android. I use a monthly subscription(3 days trial). one of the users saw the following story: Changed their renewal preference to MySubscId Started a subscription of MySubscId2023-04-08 4:02 AM UTC Last opened the app2023-04-08 4:01 AM UTC Had their subscription of MySubscId expire2023-04-03 3:06 PM UTC Had their subscription of MySubscId cancelled due to a billing error2023-04-03 12:26 PM UTC Entered a grace period of MySubscId due to a billing error.2023-04-03 12:26 PM UTC Started a trial of MySubscId2023-03-30 12:26 PM UTC First seen using the app2023-03-30 12:24 PM UTC Total Spent for user = 0. so the user used the trial for 3 days, then his subscription ended. but what does “Changed their renewal preference to” mean? Changed their renewal preference to MySubscId Started a subscription of MySubscId2023-04-08 4:02 AM UTCany hints - I will be grateful.
Hello,I’ve just submitted a new app.The hap has 10 IAP (5 kind of products: 1,3,6,12 months + lifetime, each for 2 different groups/price points).I added all 10 products because I want to do price experiments.Of course, the current offering has only a subset of these products; presently one of the two lifetime IAPS is the only product in the active paywall.Apps rejected the app for “App Completeness”; when I asked for clarifications they wrote back:Regarding the guideline 2.1, you have submitted 10 In App Purchases for review but the app binary only includes 1 In App Purchase. If you do not want to include in-app purchase products in your app, it would be appropriate to remove any unused in-app purchase products from App Store Connect before resubmitting for review. So they complain I have 10 IAPs but I am showing just one.Of course I could easily set the current offering to one which has 4 or 5 products, but that still leaves 6 out.How do I manage this rejection? Is it kosher t tell A
We want to stop offering a set of subscriptions in our app for our lower tier, but want to let existing users to continue to have access to the subscription. If we remove the subscriptions from sale, how do we let the users continue to get access to the features they paid for, and also be able to restore the purchases till their annual/monthly subscription expires?
I have an android app published to the google play store around 4 days ago and revenuecat is not working even though the products are active on the google play console. Everything is working on the dev build. Everything loads properly. But in production, with no settings changed, the revenucat part suddenly doesnt work anymore.I’ve tried doing some error checks and it seems that the code is not getting past the first line of purchases.configure (googleApiKey is defined, i have checked)await Purchases.configure({ apiKey: googleApiKey });const offerings = await Purchases.getOfferings();const customerInfo = await Purchases.getCustomerInfo();does anyone have any ideas?
What is the difference between “cancelled_trial” and “expired” statuses? In the lists of customers it’s showing me only the former - the latter are in a separate area, but I’m not sure how to count that. Would “cancelled_trial” eventually move to “expired”? Thanks!
My app has a multi-user login system. I’m offering ability to purchase individual subscriptions based on account. I need a way to pull current active device subscriptions so I can assign unique subscriptions to user accounts. Does revenue cat have a Swift SDK option to pull current active device subscriptions?
If a user is first identified with an anon ID, then logs in to my app and is signed in to revenuecat with a custom ID, does that custom ID always override as the app_user_id?The documentation explains how aliases are merged, but doesn’t say which ID is set as the main app_user_id (e.g. for webhook data). https://www.revenuecat.com/docs/user-ids#login-method-alias-behavior I’m using the Firebase RevenueCat extension, and I want to be sure that the app_user_id will always be my custom ID if one is set, because the extension syncs data to firestore via that id. If it uses the anon id, then the data will not be correctly synced. During testing it seems like this is the case, but I want to be sure. Will the custom ID always become the app_user_id?
Hello,we are trying to implement IAP in an iOS app and are running into weird behavior regarding transferred purchases.We are signed in on two different iOS devices with an apple sandbox account. On the two devices, we use different app user ids. Now, we first made a subscription purchase on one device and canceled it afterward again. Then, we made a second subscription purchase on the other device (different app user id, same apple sandbox account).Whenever the app is started, Purchases.shared.logIn is called with the app user id of that device. With that, each time in the revenue cat dashboard, the purchase of the second device is transferred to the app user id of the last device we started the app on.This does not seem to be the desired behavior here – at least not what we need. We would expect the purchase to always be associated with the app user id which was used to make the purchase. In this example, the two app user ids are not related to each other. The only connection is the
For example this is how I would fetch the info about a user. First I need to set the unique user id during the configuration:Purchases.configure(“PUBLIC_KEY”).appUserID(userId).build()) Then after a purchase I could simply obtain it:http get https://api.revenuecat.com/v1/subscribers/$USER_ID Authorization:"Bearer XXXX" Content-Type:"application/json" X-Platform:android accept:"application/json" The problem with userID is that they will get lost, if the user deletes the app and reinstalls it, and will no longer have access to the existing purchases. The only way would be creating an email signup in the flow, which I was hoping to avoid. The other way is to use anonymous users:Purchases.configure(“PUBLIC_KEY”).build())Now ReveneCat can create aliases and merge the ids upon reinstallation as long as it’s the same user in Google PlayStore that made the purchases. This solves the problem, but now I have no way to double check the entitlement from the server side through RevenueCat’s RestAP
I want to give my customers a limited period discount for the lifetime product in my app, and I want to show both the original price and the discount price for that product in the paywall so that my customers would know how much they could save if they purchase now. I have configured a price change on App Store connect for this IAP product, and I wonder how I can get the original price and the discount price? It seems that the `package.storeProduct.localizedPriceString` gives me the discount price and I didn’t find a way to get the original price.
I tried to purchase consumable products at Test Flight and Xcode. When I try to purchase a consumable product that I’ve just purchased, RevenueCat does automatically purchase the product but does not show the payment popup, and I’m not seeing this transaction at RevenueCat dashboard. I’m concerned that it’ll be same at production environment. Any help?
I’m a basic developer and have found an idea of which I would like to monetise with a monthly subscription. It’s a simple two page app - which the base has been written. However I would really like to now integrate RevenueCat into this to enable monthly subs. Is there a pool of developers that, with payment can help out with this as I’m going around in circles.
I am using cordova-plugin-purchases in my App. I’ve noticed many “Had their subscription of vetcalculators_monthly_android:vetcalculators-monthly-android cancelled due to a billing error” comments in my sandbox testing recently. (Also in iOS). I’ve not changed anything in my code and wondering why this is happening. Also, I am wondering if there is a way to access this particular revenuecat info from within the App using the SDK or API: { "app_id": "app2c0d07f6dd", "app_user_id": "$RCAnonymousID:420b573c1e75455aae4bc433fea3979f", "cancel_reason": "BILLING_ERROR", "country_code": "US", "currency": "USD", "entitlement_ids": [ "monthly" ], "environment": "SANDBOX", "event_timestamp_ms": 1681342243670, "expiration_at_ms": 1681342232285, "is_family_share": false, "offer_code": null, "period_type": "NORMAL", "price": 3.99, "price_in_purchased_currency": 3.99, "product_id": "vetcalculators_monthly_android:vetcalculators-monthly-android", "product_price_in_purchased_curren
When I upgade my plans from Starter to Pro, found this error: There was a problem updating your plan, please try again or visit our Help Center.
After looking at some posts, I saw that for iOS, if a user gets a refund through Apple, it is automatically detected. Does this mean that the entitlement is automatically removed? In the case of Flutter, can we directly check it using customerInfo.entitlements.all['pro']?.isActive?
I’m wondering what happens in the scenario when subscription auto-renew is enabled and an RC account has been deleted. For instance: Member deletes account from app RC account is deleted through REST API Subscription is not cancelled in App store and auto-renew is enabled Auto-renew date is due…At this point is a new random RC account created? Does auto-renew still work when an account has been deleted?
Hi team,I’ve been working on integrating RevenueCat into my iOS app. The app itself is super simple but it comes with some app extensions. The extensions themselves don’t have access to internet (yes, that’s a restriction). Therefore, I’m using a group user defaults to share the subscription states between the app and the extensions.Now, the app itself mostly won’t be opened by the user often, which has caused an issue as follow:The user opens the app and subscribes to be a Pro. The app shared the Pro status via user defaults with the extensions. Every time the extension is running, it checks the user default value and decide what entitlement the user has. After a while, the user cancels the subscription in the App Store subscription management screen. The subscription ends soon after that. The extensions still think the user has the Pro subscription because the user hasn’t opened the app since then.How do I make sure the subscription state is updated in a timely manner when the app it
In The Case of a Change/ Changes in Custom UserID,what happens to the Older userID(s)?does the older custom user ID still old subscription privilege ? I am trying to cap the number of devices that can be signed in with a subscription with My logic, in the case where a user intentionally try to outsmart the system by signing in the same email they used in purchasing a subscription to many device in pursuance of premium access for multiple devices with a different Sign In with Apple or google sign in, my Logic create a new custom User ID for the original subscription account ,each an every time its been used with a new Auth, with the hope that each and every previous custom userID would be redundant , hence limiting number of account that is allowed for one subscription account . So please, tell me what will happen to the previous custom IDs that were created before the the account was assigned a new one .. thanks
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.