Get help with anything related to RevenueCat.
Recently active
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
I have a configured offer on Google Play with a 33 percent discount, and indeed, I receive the discounted value in the introPhase, but the number 33 does not come through anywhere. I had to calculate it, but I wouldn't want to do that. Is there any way to obtain the percentage of the discount being applied?
Not directly related to RevenueCat, but is there a way to make the monthly introductory offer expire in less than 7 days in the StoreKitConfiguration? I have subscription renewal rate set to “Any Renewal Every 30 Seconds” but 30 seconds go by and nothing seems to update. I did, at one point, change monthly to 30 seconds, and the subscription canceled, but it seems that the introductory offer was still in effect. Any way to get around this?
We have a premium product which we already offer a free trial period on, which auto-subscribes for a year at the end of the trial period.We are hoping to set up an “open day” for the app where our paywall is dropped for a day (or a small number of days). The logic is that all users will get the full experience of our premium app and not have the barrier of entering their card details. Does anyone have experience of implementing this (or something similar)?
Hello! Unfortunately I tested my lifetime IAP with my sandbox user and now I can’t get rid of it.When I get the customerInfo, it always becomes active, so I can’t test my app without active purchase.I tried to delete my revenueCat customer from the sandbox, but nothing happened, and the customer is still there. Is there a solution to disable/delete lifetime in-app-purchase?thanks,Peter
Hi all,I have completed, I believe, the integration of Flutter development with RevenueCat. My app has it’s own user system. I have the following questions:When the app user X make subscription, the payment is make by AppleID? If the payment is make by AppleID, when the app user Y login and try to make the subscription using the same AppleID, what will happen? Will all the app users login to the device with a same AppleID get the subscription? If I want all app users who login to the device with a same AppleID to get the same subscription, what should I do? Thank you
Assume I have montlhly and annual subscriptions that unlock some features. I want to charge some users more for the same subscription based on some user data. What would be a good setup for this to work with both app stores? Basically one user could pay more for the exact same features as another user.
I have been planning to have my app be available as only a subscription service: monthly or annual.I was expecting to have them sign in with OAuth from Google or Apple, using Supabase Auth to handle things like sessions. Then, once signed in/registered, update my own data `user` data table to store things about the user depending on their interactions within the app.Now I am trying to add RevenueCat. I see that in the docs about Users, Purchases.configure({apiKey: <public_sdk_key>}); will generate a random ID. Unfortunately, this will not tie into my backend of known users. So the docs give an option to include appUserID in the config. My question is now about the flow.Is it reasonable to have my subscription-only app open on the login screen, then user logs in, and once logged in, trigger the configure({apiKey: ‘123abc’, appUserID: ‘known@user.com’) API with the appUserId?Or I can call the RC `logIn()` method later too... Is there a downside to waiting to configure & loa
How to detect refunds that were made through Google? I tried Purchases.getCustomerInfo but this does not get updated. I thought of using Purchases.syncPurchases but the doc says “You should not call this programmatically on every app launch for every user. This can increase latency in your app and can unintentionally alias users together.”So the solution would be to call it sometimes? Or is there a better way?
We've discovered a very strange case in our app.Here's what we do:Our mobile app makes a purchase and sends a base64-encoded receipt file to our server. We send it to the /v1/receipt endpoint. We check the entitlements that are returned in the response, and we also respond to events from RevenueCat to manage access to our service.For some users, the following has occurred (user #1, user #2):/v1/receipt returned empty entitlements. No events from RevenueCat for this user have come in. However, Apple sends the correct event SUBSCRIBED.INITIAL_BUY:{ "notificationType": "SUBSCRIBED", "subtype": "INITIAL_BUY", ..., "data": { ..., "signedTransactionInfo": { "originalTransactionId": "$txId", ... }, "signedRenewalInfo": { "originalTransactionId": "$txId", ... }, "status": 1 }, "version": "2.0", "signedDate": 1698842056024}After investigating the situation, we found that the problem was with the receipts files we got. Here are the differences we foun
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.