Discussion and help from anything related to RevenueCat.
Recently active
Hello RevenueCat Support Team,We are investigating an attribution issue related to AppsFlyer integration on Android and would appreciate your assistance.ContextIn some cases, purchase events (af_purchase) sent to AppsFlyer via S2S are attributed to an old appsflyer_id, which appears to belong to a previous installation of the app. According to AppsFlyer documentation, a new appsflyer_id should be generated on every fresh install.AppsFlyer support confirmed that these purchase events are received via S2S and advised us to ensure that the latest appsflyer_id is correctly extracted from the AppsFlyer SDK and used in the S2S request.Our implementation We obtain the AppsFlyer ID via:AppsFlyer.getAppsFlyerId() We pass it to RevenueCat after SDK initialization using:purchases.SetAppsflyerID(AppsFlyer.getAppsFlyerId()); RevenueCat then forwards purchase events to AppsFlyer via S2S. Questions Does RevenueCat update the AppsFlyer ID used for S2S events, or is the first provided value persis
How do I add a Footer to my Paywall. When not using a template I don’t see the option as it’s not included by default and it’s none of the components.
The Paywall doesn’t show the price (although all other UI are shown correctly) and pressing the purchase button doesn’t have any effect. It shows the price and the button works in Test Store.I have added myself to Google Play Internal Testing and have the correct product ID and base plan Id from Play Console. I have also linked the offer and entitlement correctly. The Google Play API key is also correct in the client code.
So we’ve been running an experiment for about a week now, and discovered a row called “other”. We’re guessing that it is counted as “other” when a user changes the product, say from Monthly subscription to Annual subscription in the device settings or app store. (*not* within the app or RevenueCat paywall) The question is, if our understanding is correct, how does this affect the actual offerings rows? For example, If a user changed from monthly subscription to annual subscription, then is monthly subscription counted -1 and annual subscription counted +1 in the Experiments report table? Or do the numbers not change once they’re counted? Thanks!
Per https://www.revenuecat.com/docs/tools/experiments-v1/creating-offerings-to-test, we created different subscription groups: https://i.imgur.com/9eIRy0Y.jpegWe’re only using “Asr All Acces” pricing, but we want to experiment with the “Asr All Access ($3/mo $30/yr)” and “Asr All Access ($4/mo $40/yr)” subscription group pricing. Apple rejected this 😐 Any suggestions on working around this? Is different subscription groups still the best way to experiment with pricing?See below for Apple’s reason: Guideline 2.1 - Performance - App CompletenessIssue DescriptionIn-app purchase products associated with the app version submitted for review, such as All Access (1 month) ($3), All Access (1 month) ($4), All Access (1 year) ($30), All Access (lifetime) ($50), All Access (1 year) ($40), and All access lifetime ($49.99), could not be found in the submitted binary.Next StepsIf you do not want to make these in-app purchase products available at this time, remove the unused in-app purchase produc
One of the paywall templates has a toggle to enable a free trial (and is set to off on default). I want to use this but it is not clear how to set it up.My question is do I need to duplicate my products in App Store Connect and have one set with, and one set without a trial period? Or is there an easier way and can RC somehow handle the trial?
How are we supposed to determine which roles are required for which endpoints? The descriptions for configuring roles via the dashboard are vague and do not match the apis whatsoever.
I am currently not receiving any push notifications on my iphone when a user is purchasing something in my app.I confirmed in the IPhone settings as well as within the RevenueCat app that RevenueCat is allowed to send notifications. Any idea why I wouldn’t be notified about a transaction?Thanks!
I am testing a "No-Login" app (Anonymous IDs only) using RevenueCat in the Apple Sandbox environment. My project also uses Firebase and AppsFlyer. I am trying to simulate two completely different users, but RevenueCat is automatically aliasing them into a single Customer Profile.The Workflow I Followed:User A: Installed the app → Generated $RCAnonymousID_1 → Purchased Weekly Plan using Sandbox Account A.Cleanup: Uninstalled the app from the device.Switch: Signed out of Sandbox Account A in developer Settings and signed into Sandbox Account B.User B: Freshly installed the app → Generated $RCAnonymousID_2 → Purchased Monthly Plan using Sandbox Account B. The Issue: Instead of creating a second Customer Profile for $RCAnonymousID_2, RevenueCat added $RCAnonymousID_2 as an alias to the first profile.Integrations in Use: Firebase: I use the Firebase integration. (Are Firebase Instance IDs or UIDs being used by RevenueCat to link these sessions?) AppsFlyer: I have the AppsFlyer integration
Discovering the sdk is challenging when it’s not clear if test case is failing because of developer errors or because some functionality is not supported in the Test Store.I’ve found this information is really scattered on a case by case basis. IS there anywhere where we can see what functionality should or shouldn’t work in the Test Store?This page exists - https://www.revenuecat.com/docs/test-and-launch/sandboxHowever it lacks important details - for example, that introductory offers cant be tested in the Test Store.
Hi! I am using an app that has 2 parts: a web part and a mobile part (for Android and iOS). Both are generated using the same codebase with Quasar, which in turn uses Capacitor to generate the mobile apps.To allow users subscribe on the mobile part, I use the Capacitor SDK. I want users to be able to see their customer information (current plan, renewal dates...) in the app, be it the mobile or web version.Obtaining this information on the mobile version is easy using the Capacitor SDK. However, I’m not sure about the recommended way to obtain this info on the web part. My first idea was to use the Web SDK. However, there is no way to get a “web” API key, aside from setting up the RC Billing with Stripe, which I don’t intend to use. So I plan to use the Android key.Here are my questions:Is it OK to use public API key for Android store, as in theory the customer info is shared amongst every platform? Is it the idiomatic way to use the web SDK as I plan to or is there some caveat that I
I have an app that uses one-off lifetime purchases instead of subscriptions. The overview dashboard seems to be set up with subscription data in mind. Is there any way I can make it show one-off purchases and other data related to that?
Hello,I’m testing RevenueCat exit paywalls using the Expo + React Native setup and running into an issue where the exit offer paywall never appears after closing the initial paywall.Environment: react-native: 0.81.5 expo: ~54.0.30 react-native-purchases: ^9.7.5 react-native-purchases-ui: ^9.7.5 Setup details: Using the RevenueCat Paywalls UI Calling presentPaywall() from react-native-purchases-ui Testing in dev environment Using default offering Both: Default paywall Exit offer paywall are created and published Expected behavior: presentPaywall() shows the default paywall User closes it Exit offer paywall should automatically appear Actual behavior: Default paywall shows correctly User closes it Nothing happens — exit offer is never displayed No errors are logged, and the close action completes silently.How I’m presenting the paywall:import { presentPaywall } from "react-native-purchases-ui";await presentPaywall();Questions: Is there any additional confi
Hi,is it possible to defer the enrollment to an experiment to a later point of time?I’m using the React-Native SDK. We set up our first experiment a couple of days ago and had a look at the numbers so far. RC experiment stats tell us there were 860 (A: 430 / B: 430) customers so far getting enrolled to our experiment. Our analytics tool however tracks the paywall visit. There only ~300 users made it till the paywall. After a short chat with AI I found out that RC enrolls the user to an experiment variant once the `getOfferings()` has been called. We do call this function, but only in the component which displays the paywall. In RevenueCat on our customers I can see that the customers get enrolled immediately at the same point of time once they were ”first seen using the app”. We initialise the SDK with `Purchases.configure()` directly after the app starts. Between the initialisation and the `getOfferings()` call we only fetch the customer info using `Purchases.getCustomerInfo()` to che
Hi guys,I’ve integrated RevenueCat several times in Flutter applications, but this time something strange is going on whenever I try to make a purchase on an actual device using the Apple’s sandbox account.I am charged on Apple and my subscription on Apple is active, but RevenueCat returns an error. The customer on the RevenueCat dashboard doesn’t seem to have an active subscription.I also tried changing the sandbox user, deleted the customer from the RevenueCat dashboard and tried again, but the issue still persists.Debug logs for the errorRequest-ID: '5ad15917-8bbc-423e-af57-473db0f0c502'; Amzn-Trace-ID: 'Root=1-69830dfb-54296ef62baba1f255786ed5'flutter: SubscriptionService: Error purchasing package: PlatformException(8, The receipt is not valid., {readableErrorCode: INVALID_RECEIPT, message: The receipt is not valid., underlyingErrorMessage: The receipt is not valid., readable_error_code: INVALID_RECEIPT, userCancelled: false, code: 8}, null)flutter: PaywallController: Unexpected er
I’m having an issue with fetching the one-time products I created. They are already set up in Google Play and have been imported into RevenueCat. The products show a Published status, but when I try to purchase them, it doesn’t work.The app is unable to find the products or offerings for one-time purchases. However, subscriptions are working correctly and all subscription information is fetched as expected. The issue seems to be specific to one-time products.Does anyone encountered this issue? How do you solve this? My configurations are done. App Store / iOS is fine. Only the Android causing the issue.
Hello RC community,I need help understand how Apple vs Google handle signed purchase data. I ran into something that I can't figure out and may be getting wrong. The query:With Apple's StoreKit 2, when you grab `transaction.jwsRepresentation`, you get `signedDate` field that's generated fresh every time you request it(I assume). So if someone intercepts a JWS token, it goes stale in minutes. Good for security.But for Google Play Billing, the signature is created once when the purchase happens. `purchaseTime` is static, there's no equivalent to `signedDate`. The same signature comes back every single time you query it(I assume). What I'm wondering:1. Am I understanding this correctly? Google really doesn't have a freshness mechanism?2. How does RC deal with this for things like: - Detecting stolen/leaked purchase tokens - Account transfers - Replay attacks3. Is this just a known limitation everyone accepts, or is there some workaround I'm missing? Stuff I've already looked at:-
I want to backup configuration as code. With help of rest APIs, I've got JSONs for products, offerings, etc. But I failed doing so for paywalls. https://www.revenuecat.com/docs/api-v2#tag/Paywall/operation/create-paywallIt mentions the endpointPOST https://api.revenuecat.com/v2/projects/{project_id}/paywalls But I find no way to get a paywall. Am I missing something?
Hi, I just want to enable free trial for yearly package and not the other packages. Does this functionality exist right now ? have attached a relevant previous post, just wanted to know there has been any update since the attached posthttps://community.revenuecat.com/general-questions-7/how-to-implement-a-free-trial-for-monthly-only-setup-no-free-trial-for-yearly-7195
I downloaded the subscription key for an in-app purchase from Apple into a file named 'SubscriptionKey_XXXXXXXXXX.p8' However, when I try to upload this file I get this error: “Invalid file name, it should be SubscriptionKey_XXXXXXXXXX.p8. A file name with any other prefix could be a private key for a different Apple service. Please validate you are uploading a Subscription Key.“Can I get some help as to why this is not working? I tried a bunch of different names as well but i get this same message every Time
I’m building a paywall with the builder and I’m testng in on my app, in Google Play Console I’ve set a 7 days free trial for both offers (Annual and Monthly), but I don’t see the “Try for 7 days then 5€ a month” text, I see the basic one (Full access for just {{ product.price_per_period_abbreviated }}). Maybe because I’m using the same account I have already used to test subscriptions? The account is a test account for the app, shouldn’t I always get a fresh paywall lke it was the first time? Basically what I want is simple, if free trial is available show free trial text, otherwise the basic text.Can you explain to me how to setup this the right way?
I also posted this in another category. An employee deleted the project from our RevenueCat account and we think even deleted the account. It is hooked up to manage payment on a React Native app. We cannot access the dashboard to contact support in hopes of getting the account restored.
An employee deleted the project from our RevenueCat account and we think even deleted the account. It is hooked up to manage payment on a React Native app. We cannot access the dashboard to contact support in hopes of getting the account restored.
We have a free App on the stores of Apple and Google and sell via IAP subscriptions to use our service using the RevenueCat paywall. This works well for B2C customers and should remain.But B2B customers want to buy license packages of e.g. 50 licenses and assign those to users within their organization. Therefore we need the ability to sell subscription licenses in bulk.The amount of licenses must be flexible to suit customers of different size.Ideally this can be done through our existing WooCommerce shop where customers would select the license amount from a dropdown. These bundles should then also be unlocked/processed via the paywall in RevenueCat to avoid changing our App and to maintain the B2C offer. I did all the work on the WooCommerce side to sell licenses and was able to pull web orders using n8n and make.com. But I struggle to create entitlements in RC using the REST API. According to latest ruling, this process should be allowed. Can one of you confirm this is doable at al
I am considering whether a unique device ID is suitable as user ID for my use case.I came up with the following subsequent scenarios / concept, can someone confirm or correct my understanding of how RevenueCat works?----------------------------------------------------------------------------------------BaselineThe App uses Device ID as RevenueCat User ID -> identified User.The scenarios take place on iOS.----------------------------------------------------------------------------------------Scenario 1User named Timinstalls App on Device ID 1234ABC with Apple ID tim.cook@apple.com and makes a purchase in the AppResult: Receipt is stored with Apple ID, Purchase associated with Device ID is stored in RevenueCat----------------------------------------------------------------------------------------Scenario 2Then, Timinstalls App on another Device ID 5678DEF with same Apple ID tim.cook@apple.com and launches the App initiallyEffects:App initially calls syncPurchases once Receipt is 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.