Get help with anything related to RevenueCat.
Recently active
Hi all, We have an app in both iOS and Android stores and we use RC for consolidating our subscriptions.There are currently few thousand paying subscribers (both Android, iOS and Stripe). The decision has been made to sunset the application and migrate the users to another service.We are looking at;Removing ability to purchase annual subscription. Users can still purchase and use monthly. Stop existing annual subscribers from renewing (is that possible - what is the best way?) In the next 12-14 months - slowly nudge users to another service/app.I guess my question is;What is the best way of doing this? Is it possible to refund users earlier - or at least set their subscriptions to non-renewable (iOS/Android/Stripe). Stripe we seem to have a full control. Are there any other gotchas? To remove the app - do we simply unpublish it from the stores? Will it automatically cancel subscriptions of existing users and refund them? Thanks heaps! Luke
Hi,Firstly, thank you for providing this framework and documentation, it makes integration of subscriptions a breeze. We are using Revenue Cat - React Native SDK.I have a scenario that I am not sure how to handle, was thinking if you can provide any suggestions.We have a web product that uses Stripe for subscription management. The user can signup for a product and gets an introductory free trial of 1 month. Then after that 1 month they are prompted to renew, the can choose to renew by paying, or also can extend their trial by adding another offer code (promotional offer).Lets say, the user now installs iOS app during the first the trial month (that was issued by the web platform). On the app after the month, we were planning to show them a screen to renew the subscription and show the option to enter the promo code. But having implemented this and going through the promo offer purchase flow I get the error that “The User is ineligible for that action.”. I think this has to do with the
We just released our app. 1 user reported this issue where they subscribed, but then see this error message: I don’t know why this happens. Here is my flow inside Expo/React Native app: Wrap app in providers <PurchaseProvider setPurchasesChecked={setPurchasesChecked}> <AuthProvider> <Stack/> </AuthProvider></PurchaseProvider> Inside the PurchaseProvider getCustomerInfo: useEffect( function initPurchaseConfig() { const initialize = async () => { try { Purchases.setLogLevel(Purchases.LOG_LEVEL.VERBOSE); await Purchases.configure({ apiKey: APIKEY }); const info = await Purchases.getCustomerInfo(); const { isActive } = info?.entitlements.active[entitlementName] || {}; setIsActive(!!isActive); } catch (e) { setMessage(['error', (e as Error).message]); } finally { setIsReady(true); setPurchasesChecked(true); } }; initialize(
Debug Output when running app…. is this normal? It does slow down start up. Seems to validate and work fine. MacOS v 14.1.1 (23B81)RevenueCat debug output on my app TalkTextChat ******* app init to call purchases.configure(withAPIKey...[Purchases] - DEBUG: ℹ️ Configuring SDK using RevenueCat's UserDefaults suite.[Purchases] - DEBUG: 👤 Identifying App User ID[Purchases] - DEBUG: ℹ️ Debug logging enabled[Purchases] - DEBUG: ℹ️ SDK Version - 4.17.7[Purchases] - DEBUG: ℹ️ Bundle ID - au.com.egads.talkingtextchat[Purchases] - DEBUG: 👤 No initial App User IDdidSet for phrases[Purchases] - DEBUG: ℹ️ Vending CustomerInfo from cache.phrases: ["Hi, my name is John, I cannot hear or speak, and need to use this app to talk with you.", "Here here is a new test phrase!", "Another new phrase."]didSet for numPhraseEntriesname JohnnumPhraseEntries:3phrases:["Hi, my name is John, I cannot hear or speak, and need to use this app to talk with you.", "Here here is a new test phrase!"
We are a subscription app, made in unity project, that generates iOS and Android apps.We also allow the user to create a subscription via web using Stripe.Currently, we store Stripe’s data in our Users DB and when the users logs in, we check against our DB to see if the user has a valid subscription.For Android and iOS we use a custom App User Id, which is the device/install ID.Our intention is to start identyfying users with our internal user_id (associated to the login credentials) and unify subscriptions via rcat to work cross platform, allowing a user that purchase via any platform, to login in any other device/platform and enjoy the subscription access.What would you recommend as the best way to proceed? How can we logIn a new App User ID for both new and old customers for this to work smoothly?Any help, use cases you know, is welcome!
greetings I have an android application with the kotlin language, and I want to implement pending purchases to deliver coins in a transaction with a slow card, I have already tried several similar sdk, and all have the same problem, that pending transactions to deliver coins do not work due, most are only focused on subscriptions, I would like to know if you can implement purchases of coins and if you can deliver the coins after the transaction is completed later.If you have an example of how to handle coin delivery for pending transactions I would appreciate it, since they all have the same problem.
Hi. I have integrated RevenueCat to my iOS version of my app and am using it with satisfaction. Therefore, I am considering using it to the Android version of my app. My app for Android version has a premium version for lifetime access for almost 10 years. Currently, I am no longer selling lifetime access as I have changed to selling only subscription plans. However, because any promise to users is important, I should continue to provide lifetime access to users who have purchased the product. My app does not have an app login system. So, I have been providing access by referring to PlayStore purchase history. After testing, it seems that RevenueCat's Purchases.configure() consumes all one-time products. This means that if the user reinstalls the app or changes devices, they will no longer be able to access their lifetime access. This is because RevenueCat's anonymous ID would be changed in these situations. The workaround I am considering is to use RevenueCat to process subscription p
After having subscriptions working correctly in my apps on ios and android, since yesterday I have started receiving an error when connecting to the android play store and it is not possible to make a subscription on android. Anyone know what might be happening?
I got the following event through webhook: { "event_timestamp_ms" : 1674239936328.0, "store" : "APP_STORE", "transferred_from" : [ "84c2523f-2f06-49af-886c-a151cc630232" ], "transferred_to" : [ "48f3ab7f-86fd-45a3-9bf6-db8edeea0904" ], "type" : "TRANSFER", "id" : "00DC5B1C-3166-47FB-8F19-AB2B406F8484", "app_id" : "app9a300b6a91"} Is it expected? There is no product_id, so I don’t know what should I transfer.
My app is built in Flutter. As suggested by the revenuecat documentation, I’m redirecting the users to the app store to redeem offer code.In some tests I made, the offer code was accepted by the app store but revenuecat didn’t recognize it and the user is seen as not paying.I’ve setup all the settings required bu revenuecat, including the “In-app purchase key configuration”.Not even “addPurchaserInfoUpdateListener” is called after the redemption of the offer code.
HiI have been working with the Revenue Cat Export and I am trying to understand how the billing issues detected works on the Apple Store (it appears to be different to the Play Store).The flow that I think is happening is:Customer reaches end of subscription Payment attempt is made for the next subscription period Payment fails The column Billing_Issue_at is updated for the last paid subscription row and no new row is created.Point 4 is important as it means that lines flagged as billing issues would be legitimate transactions, and not failed transactions.The customer goes into dunning for 60 days. If the customer pays a new line is added to the export If the customer doesn’t pay then nothing happens, there is no unsubscribe flag added to the export. After 60 days it can be assumed that the customer subscription has expiredIs this correct?
How do I show this free trial when checking out? I have setup my App Store Connect API & In App purchase key config to RevenueCat.When checking the data shape of `Purchases.getOfferings()` using JS/ReactNative API, my annual offer seems to have it there as part of the `introPrice`: annual: { offeringIdentifier: 'default', product: { priceString: '$49.99', currencyCode: 'USD', description: 'Access all content', productType: 'NON_CONSUMABLE', discounts: [], productCategory: 'SUBSCRIPTION', subscriptionPeriod: 'P1Y', price: 49.989999999999995, identifier: 'ios_annual_4999_default', title: 'Annual Subscription', introPrice: { periodUnit: 'DAY', periodNumberOfUnits: 3, period: 'P3D', priceString: '$0.00', price: 0, cycles: 1, }, }, packageType: 'ANNUAL', identifier: '$rc_annual',
I originally started without a trial offer on my subscription. I updated my Google Play store to include an offer for 3 day free trial:3 day trial in Google PlayHowever, I do not see it in the `offering` of product or indicated anywhere in the `introPhase` or `freePhase` as they both are `null`. How long does it take for subscription offer phases to appear? I tried adding a tag too, but this also is not being found.
Hello!In terms of data, the US ist not considered safe in the EU (because of the patriot act). Therefore there is no easy legal basis to use RevenueCat (US based). Now there is a new “Data Privacy Framework” between US and EU, but RevenueCat has to self certify for this. AWS, Google, … all of them switch to this legal basis. Does RevenueCat consider this?Best regardsData Privacy Framework:https://www.dataprivacyframework.gov/s/participant-search
Hello,This documentation page is unclear: https://www.revenuecat.com/docs/firebase-integration#2-set-firebase-user-identity-in-revenuecatIt has an example in Swift. But I am developing application in Flutter.I want to implement In-App Subscription Purchase, and after purchase made, I want to use Apple provided token, or even better Email, to authenticate to Firebase. Am I looking at correct documentation page? Any sample code for Flutter? Flow: user makes purchase without any external authentication on iOS, using system provided authentication to App Store and making purchase; I need this <user> to be able to access Firebase as an authenticated user. Thanks
hello. I have a question about the payment amount for the Pro plan.It's my understanding that 1% is paid monthly if you make more than $2500 in revenue.Does the 1% payment include the $2500? Or would it be 1% on the amount over 2500?Ex) 1. if I make $3000 in revenue in a month I pay 1% on the amount over $2500, which is $500. => 5$2. if I earn $3000 in a month, I pay 1% on $3000. => 30$
Can anyone explain if I am doing this correctly? It seems to work fine on Android, but on IOS it takes at least 10 seconds for the Apple confirm dialogue to appear, and then after confirming purchase (in sandbox) it then pops up again and never gets to the alert and redirection? ```useEffect(() => { (async function () { await Purchases.setLogLevel({ level: LOG_LEVEL.INFO }); // Enable to get debug logs await Purchases.configure({ apiKey: "XXX" }); })(); }, []); const purchaseStoreProductA = async () => {const offerings = await Purchases.getOfferings();const productToBuy = offerings.current&& offerings.current.availablePackages&& offerings.current.availablePackages[0].product;if (productToBuy == null) {alert('No product');return};const purchaseResult = await Purchases.purchaseStoreProduct({product: productToBuy}); purchaseResult ? alert('Thank you for subscribing.') + history.push("/ios-signup/") : null;}```I call purchaseStoreProductA(
Hello, I’m currently setting up the `Paywalls` feature and so far is coming along really nice. However, I can’t find a way to ship different versions of the Paywall for different countries. For example, I’d like to show a set of features (that the subscription would unlock) different in the United States vs the rest of the World. Is this something possible? I think as of now, the only way is creating a different offering and run an experiment, however I’m already running another experiment. Thank you in advance!
I checked the status page, it doesn’t mention any issues, but all the MacOS sandbox subscription and purchase keep failing: "There was a problem with the App Store. This could also indicate the purchase dialog was cancelled." The same code was still working yesterday, now they all stopped working suddenly, is that the issue from Revenuecat or Apple? Anyone has the same problem?
Upon reading the documentation and the various integrations and features that it offers, it is not very clear to me if this is primarily a wrapper for interacting with the stores (Google Play/App Store), or if this is a whole other platform that I would have to manually configure and add products.Related questions:- where do I get the money from in-app products sold via this SDK? (the app stores or this platform?)- how are products managed? (directly from the app stores, or synced with this platform, or manually?)I would like to have a better overview before I get started with investing a lot of time coding this SDK into my app (I am evaluating the perspectives for migrating from another cordova plugin which had some complicated breaking changes that involve a lot of refactoring as well)
I have been following the instructions here https://docs.revenuecat.com/docs/creating-play-service-credentials and downloaded the the .json file in step 2. I am attempting to “Enter the Credentials JSON in RevenueCat” in step 4, though I’m concerned I’m doing it wrong. The UI seems to expect a single line of text, and the .json that Google Cloud generates is quite large. If this is the proper way to use Revenue Cat, this is janky as all hell. Anyway, I have taken the .json contents into a plain text editor, joined all lines, and removed all spaces (as per recommendations in other community posts), but when I attempt to upload the .json, I see this error message: (Image reads: “The provided Google Service Account credentials JSON is invalid.”) This seems to be an immediate failure (many community posts seem to involve long wait times for credentials to become active or something). There is no help for figuring out if I’m adding the json contents incorrectly, or if so, what’s wrong f
I would like to redirect the user in the App upon a successful purchase.```const purchaseResult = await Purchases.purchaseStoreProduct({product: productToBuy});```How/where would I call this redirect?
Hello, I followed guide for configuring RevenueCat in Google Play Console but I can't send the test notification. I have this error in Play Console: "Make sure you've entered the topic name in the correct format, that you've configured Google Cloud correctly, and that you have the required permissions".I've waited more than 48 hours but nothing changed; when I click on "Submit test notification" in Play Console, the POST returns: "The caller does not have permission" and HTTP status 403.I've seen and double checked the really useful checklist but didn't found the problem, could you please help me?Thanks
I see the following error log in Logcat, checked the links provided in the log, and checked and tried almost all of the related links posted by RevenueCat and community members.Tested interal and closed testing versions on the real devices.But no luck, Please help. (I am using React Native) Error fetching offerings - PurchasesError(code=ConfigurationError, underlyingErrorMessage=There’s a problem with your configuration. None of the products registered in the RevenueCat dashboard could be fetched from the Play Store.More information: https://rev.cat/why-are-offerings-empty, message=’There is an issue with your configuration. Check the underlying error for more details.’)
Hey,How to filter all users on RC with status SUBSCRIPTION_PAUSED ?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.