Discussion and help from anything related to RevenueCat.
Recently active
Hi,I am developing an app for Android using Flutter and I am trying your awesome service!!All is working fine by now, but the refund operation. I explaining what I did till now:I have purchased successfully a non-cosumable (life time) with my testing account. This is working fine also when restarting the app without internet active also after hours, meaning the cache does the job.Then I refunded the account in Google Play console and waited till it was successfuly refunded.Starting the app the entitlement is still active. At start I check this using:PurchaserInfo purchaserInfo = await Purchases.getPurchaserInfo();purchaserInfo.entitlements.all['myLifeTimeEntitlement']?.isActive <== this is trueBasically I have the same issue described in this post:https://community.revenuecat.com/topic/show?tid=326&fid=7I read somewhere that the SDK cache is refreshed about every 5 minutes. Thinking about this, I found:await Purchases.invalidatePurchaserInfoCache();which is not recommended. Any
Hello, In the billing feature, is it possible to not ask for the email when the user is paying? We already ask the email of the user before in the onboarding. I see that it is possible when you’re using the web paywall link. I would like to the same when not using the paywall link.https://www.revenuecat.com/docs/web/revenuecat-billing/web-paywall-links#email Thanks!
We are performing closed testing (sandbox mode) of subscriptions using a test app that implements the SDK to check which webhooks are fired.The following types are not fired. What is the reason?- UNCANCELLATIONI canceled a subscription contract that was within the expiration date from the store and repurchased it within the expiration date, but the webhook was not fired.- SUBSCRIPTION_PAUSEDI paused a subscription contract that was within the expiration date from the store, but the webhook was not fired even when the specified suspension period was reached.However, when the subscription was resumed after the specified period, a webhook of type RENEWAL was fired.Also, the pause function is disabled in the Google Play Console, but the pause button appears in the closed test app. Is this because it is a closed test?
Hi, I have a question if this can be done.Our ios/android app uses 2 core plans - solo and family on a subscription model. However, we would like the users to decide how many people in their family as we all know some families have 3 people some may have 20. In the current setup, we only allow +5 members for a family plan. This is very ‘locked in’ kind of option because people who might have 3 are ending up paying too much even with the family discount.My idea was to basically do something, how you have in SaaS softwares where you can increase or decrease seats or licenses.Our dev team setup a system where we had all these plans setup ( family +1, Family + 2, Family +3 …. so on and on)… to me this is definitely counter intuitive. I am sure there is a better way of doing this and probably a simpler way. Any help how we can set this up would be much appreciated. ThanksSunny
Hello,Is it possible to manage the purchase of products that use in-app currency (e.g., coins, jewels, or something similar) with RevenueCat?Specifically, I think it could be achieved if we can set the product price to free and handle product purchases via the REST API from our own server.I couldn't find such a feature in the documentation—does such functionality exist?
Not sure if bug or intended, but I noticed that after paywall is triggered by RevenueCatUI.presentPaywallIfNeeded() and user presses "Restore" (they have no subscription to restore) and then dismiss the paywall, RevenueCatUI.presentPaywallIfNeeded() returns PAYWALL_RESULT.RESTORED (in the jsdoc it says that this will be return if successful restore happened, but this is not the case).The problem is that I can't rely on PAYWALL_RESULT.RESTORED in my code.Any ideas?
Hi,I am adding a subscription for an app in the play store. Android and ios ids must be the same on our side. But when adding android subscription, we add it period and the product id is created automatically, but the android and ios ids are different, how can we solve this problem?Subscription is on auto-renewal. We have added a subscription before, but we did not encounter such a problem. Has RevenueCat been updated?Can you help me ?example-------ios: com.app.subscriptionandroid:com.app.subscripton:p1mThanks in advance :)
Is there a way to generate the same Customer Portal link (the one outlined here https://www.revenuecat.com/docs/web/revenuecat-billing/customer-portal) for a user that is sent to them in their invoice?
I am going to integrate Web Paywall Links as a way to purchase a subscription for my mobile app. I am wondering if a trial start rate or initial conversion rate can be accurately assessed for customers who’s first touchpoint with RevenueCat is through a Web Paywall link. I create a user in my database and use their database user id as the unique id for the paywall link. When a link is visited with a unique id, will that register a “First Seen” type of event in RevenueCat?If not, I can track page views and user ids in my backend, but would like to know if there’s a seamless way to integrate that info with RevenueCat. Thanks!
Google Play introduced a new Feature called “Cart Abandonment Reminders”. Is there anything important to know in order to use it with RevenueCat?https://developer.android.com/google/play/billing/integrate?hl=en#car Kind regards,Marius
Hello! I’m currently implementing a job for application that has 2 use cases.Determine all users who have been ADDED to an entitlement this week Determine all users who have been REMOVED from an entitlement this weekThe entitlement in question is a monthly subscription to one of our premium features, and I have to manually make a report of all users who were added / removed from this subscription / entitlement, so we can manually turn on/off this premium feature for them.(But NOT a user who successfully renewed their subscription this cycle and therefore isn’t added or removed, just continuing their subscription) We store a lot of information from revenue cat: All the webhooks we receive All of the information from the Get or create subscriber endpointMy first stab at attempting to do this is looking at all the webhook events a user has received in the past week. And seeing if they have an: initial_purchase, expiration, renewal, cancelation, un-cancelation, ect. and determining if they
Hi RC community,my graphql server is not compatible with webhooks, so I need to handle renewals directly inside my app.Specifically, i need to make an action at the beginning of each subscribed month.Any idea of how I could achieve that?Thanks!
I’m having issues with a lifetime product I’m trying to setup here. This is my configuration:However, the returned `currentPrice` shows `null`:I don’t see any other way to retrieve the prices using the API either. Am I missing something here?
I want to support multiple subscription tiers (silver, gold, ...) for my Android App. The subscriptions grant a monthly token quotum, consumed by using the apps features. Different tiers grant different quota. I use the RevenueCat Paywall.I have set up the different subscription tiers each with their own entitlement and currently have a single offering for all tiers.I want customers to have only one subscription at a time, but have the ability to upgrade/downgrade the subscription tier. How would I implement that?
I’m looking for a way to track the number of users that cross-grade from a higher priced plan to a cheaper plan we’re introducing to figure out potential cannibalization. Is that something that RC can help with / reports on? This question is related to but not exactly the same as
Hello, We developed a Web product and considering RevenueCat for charging a monthly subscription. Can we use RC Paywall for Web-based products? One more thing, what legal information I need to provide as a developer and product owner to use RC products? Thank you.
I have a question.I am considering introducing revenuecat to my in-house app.The existing specifications for my in-house app allow one user to have multiple accounts, but in that case, would it be best to use revenuecat's real-time API to prevent duplicate purchases of the same plan?Also, based on the above assumptions, I am considering multi-platform support for iOS, Android, and Web.When the same user with my in-house app account who has purchased a plan on an iOS device logs in on an Android device, I would like to treat them as a user who has purchased a plan and provide them with paid features. To achieve this, would I need to create a system that allows my in-house app API to make this determination using data based on Webhooks?
Calling /api/v1/subscriber/XXX for users who have had billing issues (for whom we receive the webhook just fine) always seems to show the “billing_issues_detected_at” attribute of the subscription as null. Is this a known issue or is there another call we should use to find out if their cancellation was for billing reasons?For example: below is a response for a call to one of our users who had a billing issue last year (2023). When I look this user up on the Customers section of the RevenueCat console, it shows that they had a billing issue last year. { "request_date" : "2024-07-06T22:12:15Z", "request_date_ms" : 1720303935745, "subscriber" : { "entitlements" : { "Subscription" : { "expires_date" : "2023-02-11T14:14:20Z", "grace_period_expires_date" : null, "product_identifier" : "SevenMonthly", "purchase_date" : "2023-01-11T14:14:20Z" } }, "first_seen" : "2023-01-04T14:13:33Z", "last_seen" : "2023
Hi there,I have setup a subscription in the App Store, with a free 7 day trial and also an initial active promo discount.I have been testing my paywall, and the promo discount never shows up on the paywall, just the original pricing. I’m not sure if that’s expected? I was wanting to see something like ‘15.99 for the first 3 months’ or words to that effect.Thanks!
Hello RevenueCat Community,I’ve been using RevenueCat SDK 7.28.1 for several months with a single "Pro" plan, and everything worked fine. Recently, I added a new "Collaborator" plan within the same offering (premium_access). However, adding this new plan has introduced numerous issues, and I’m now struggling to get everything working as intended.Offering StructureHere’s the structure of my offerings:Each plan includes three products, and they are all grouped within the same premium_access offering, as users cannot be subscribed to both plans at the same time.JSON Structure Returned by RevenueCatAfter extensive testing, I’ve identified the JSON structure RevenueCat is returning when I fetch offerings. Here’s a simplified version that includes the full detail of colab_monthly:{ "offerings": { "serverDescription": "Unlimited access to all premium features for a monthly/annual price", "metadata": {}, "monthly": { "offeringIdentifier": "premium_access", "product": { "identifier": "com.myapp
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 =
I am using RevenueCat in my React Native app. I have a subscription and I use getCustomerInfo to keep track of subscription status. When the subscription is purchased, getCustomerInfo’s activeSubscription property lets me know that it’s been purchased and I can let the customer know the same. But when the subscription is cancelled, activeSubscription still shows active until the subscription finally expires (in real life this would be month but in my case, it’s 5 mins). As a result, I’m not able to let the user know they’re subscription has been cancelled when they cancel (I have to wait till it expires). I have also checked out the willRenew and unsubscribeAt properties of getCustomerInfo.entitlements but they show the same behaviour. I also tried out addCustomerInfoUpdateListener instead of getCustomerInfo and it also shows the same behaviour.
Hi There, How do we create a full screen paywall that cannot be swiped down? I know we can hide the X button, but that does not make it a “hard paywall”. I need it so it cannot be swiped down/dismissed. I’m using react native. Thank you
I’m using Laravel backend with revenue-cat for subscriptions, I could not revoke entitlement using an api call to https://api.revenuecat.com/v1/subscribers/{app_user_id}/entitlements/{entitlement_identifier}/revoke_promotionals as this returns { "code": 7242, "message": "No promotional entitlements to revoke for this subscriber."}How should I test unsubscribe function using revenueCat Api for revoking non-promotional entitlements
This have been extremely frustrating, and I am in dire need for help or assistance. I created a app and added the RevenueCat code information to my project, and followed all the examples exactly. I watch countless videos. I finally got it to work on the simulator IOS 14 like explained. it works perfect. I triple checked my information both on RevenueCat platform and in apple developer. after being uploaded to apple developer, and I downloaded it from TestFlight. I try to make a purchase, and nothing happen. it is as if the screen is frozen. please help me with this issue. Thanks!!!!
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.