Get help with anything related to RevenueCat.
Recently active
When I export my Figma file to RevenueCat the line spacing is much larger than it is in Figma. I’ve also tried building this natively in RevenueCat, but I don’t see any controls for linespacing. And if I just use two blocks next to each other with no space, the line spacing is still too large. Is there anyway to address this so the linespacing for the paywall in RevenueCat matches the design as created in Figma?
Hi there. I have a carousel contained within a stack and want to set the Size/Height of the stack to “Fill”, but it’s just showing a “Fill disabled: parents height is set to fit” message. However the parent is the main Paywall component which has no option to change its size?
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.
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?
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
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’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.
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
Hi! I’m currently evaluating the Virtual Currency feature for our iOS+Backend app. At the moment, I’m intentionally not using an authentication system to reduce user friction and churn. Instead, I rely on RevenueCat’s default anonymous app user IDs and Apple’s restore mechanism. This worked well so far for entitlements: when a user deletes and reinstalls the app, RevenueCat correctly restores purchases and migrates entitlements to the new anonymous user ID after a restore. However, I’m struggling to understand how this is supposed to work with virtual currencies. From reading the docs, it seems that virtual currency balances are strictly tied to the RevenueCat app user ID and are not migrated or restored when the user reinstalls the app and a new anonymous ID is generated. My questions are:When RevenueCat checks historical App Store transactions and restores entitlements via Apple’s restore mechanism, is the virtual currency balance expected to be restored automatically as well, or do
Currently I’m reviewing my access flow with API V2. Right now I am using list subscriptions https://www.revenuecat.com/docs/api-v2#tag/Customer/operation/list-subscriptions to capture current_period_starts_at and current_period_ends_at. I use these currently along with gives_access, and status to determine used monthly usage quotas and access. The process seems to work well and line up with what I’m seeing in the docs. However, my issue come in when status = in_grace_period. Its unclear to me how I can determine the access period range if grace period is active. I read about grace_period_expires_date being used for this in the docs and older community posts, but this field doesn’t seem to exist in API V2 (only in the docs for v1).What approach is proper using the V2 API?
I’m testing our RC paywall on my phone on a test version of the app (iOS).We have an in-app purchase set up in RC and linked to the paywall (not a subscription purchase).When I tap the buy button, a page appears saying “Redeem Special Offer” with a box to enter a code. There is no special offer and I don’t want this page here. How do I edit the paywall so that it doesn’t show?
I have cross checked the bundleid and isuserId with app store connect and also re-upload multiple time but i am getting same validation issue
Hello,We’re planning to compare the transaction data from our service with RevenueCat’s transaction data in order to identify: missing orders mismatched subscription renewal status discrepancies in refund status Our plan is to run this as a batch job once a day during off-peak hours.From what I’ve seen, Scheduled Data Exports seems to be the most suitable RevenueCat feature for this purpose.Do you think this is the right choice? If there's a better alternative, I’d really appreciate your input.
What is the recommended way to set up separate Terms and Conditions links for App Store and Google Play Store? I couldn’t find a way in either the component API or the Paywall editor to make it dynamic. Should I set up separate offerings and paywalls for both platforms or is there an easier way?
I just got rejected because I have 2 yearly IAP where only one is shown in the paywall. The reviewer complained he cant find the second one. I kept it for AB tests later.How to deal with this? Telling this to Apple straight?
Hi RevenueCat Team,We’re looking for guidance on implementing the following offers using RevenueCat:25% discount for all new users (triggered from any event/source)Extra 3 months free on the annual plan for Dreamforce attendeesLifetime access at $149 for AppSumo customers (one-time purchase)Could you please advise:The recommended RevenueCat approach for each (intro offers, promo offers, custom entitlements, non-consumables, etc.)How to limit these offers to specific audiences/eventsAny Apple/Google constraints we should be aware of
Hello,I’m having an issue with Android purchases in my app and would appreciate guidance.Current status: Subscriptions are fully configured in RevenueCat and Google Play. Offerings are fetched successfully on both platforms. Purchases work correctly on: iOS production Test environments both on ios/android On Android production, the app successfully retrieves offerings and packages, but attempting to purchase always fails with: “subscription plan not available”What I have already confirmed: Android app is installed directly from Google Play (closed testing track). Tester Google account is properly added and opted into the test track. Correct Android public SDK key is used. Products are published in Google Play: noor_monthly_premium noor_annual_premium These products appear correctly in RevenueCat Android products and offerings. Offerings are returned correctly from Purchases.getOfferings() on Android. The same code path works on iOS without any issue
Hi I think Exit offer does not work with PaywallView any solution for it ? sdk: flutter 9.10.7
Hey guysI have a problem with my paywall, when testing on a physical device, the paywall does not fit entirely on the screen, but it’s not vertically scrollable only horizontally scrollable. The paywall was designed on Figma and imported to Revenuecat . If a paywall doesn’t fit entirely on the screen, it should be scrollable right ? I tested on an iphone 12 and on the paywall editor I used an iphone 17 screen. Look at the attached images. I’m also using Flutter
I recently integrated RevenueCat into my Android (Java) app and I’m facing both: Crash: UninitializedPropertyAccessException – singleton not initialized ANR: Slow operations on the main thread during Purchases.configure() RevenueCat InitializationI initialize RevenueCat in my Application class: @Override public void onCreate() { super.onCreate(); Purchases.setLogLevel(LogLevel.DEBUG); Purchases.configure( new PurchasesConfiguration.Builder( getApplicationContext(), "goog_PtfrQdxywvuyHZAeNNLzJalKKIt" ).build() ); } Usage in Premium ScreenIn my PremiumScreen Activity onCreate(): Purchases.getSharedInstance().getOfferings(new ReceiveOfferingsCallback() { @Override public void onReceived(@NonNull Offerings offerings) { // Handle offerings } @Override public void onError(@NonNull PurchasesError error) { // Handle error } }); Crash Details kotlin.UninitializedPropertyAccessException: There is no singleton instance. Make sure you configure Purchases before trying to get the default instan
Hi,Im having a hard time getting my app through ios review.Specifically failing it because my rc pay wall shows Error 23 and I get this message in the log…Your products are configured in RevenueCat but aren't approved in App Store Connect yet. This prevents users from making purchases in production. Please ensure all products are approved and available for sale in App Store Connect But I think Im seeing error 23, because apple are not approving my Monetization section.Specifically the app store localization keeps being reject. Is the good hypothesis? That in order to stop error code 23, I need to apple approve the localizations?Im just going round in circles with them
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.