Get help with anything related to RevenueCat.
Recently active
I’m quite new to RevenueCat, and I’m currently working on a Flutter app targeting all OS.Since the purchases_flutter package is not available for Windows or Linux (please do something about it!), I assume that I need to use Stripe, connected to my RevenueCat account, to display a web page with a Stripe paywall (I use a Payment Link to keep it simple), and then call the RevenueCat REST API to:list my offerings purchase a product through Stripe check if a user has purchased my one-time payment product or not recover a one-time payment purchaseSo I have 2 questions:Is it the right way to do? Why do I need a secret API Key (that, I assume, I need to store on a server), while I only need a public API Key for the Android, iOS and macOS version of my app?Thanks for your help.
Hello, I know this has been asked before. Please forgive me for needing clarification. I am currently using `react-native-purchases` version `7.28.1`. I understand that simply installing this package fulfills the requirement. My application in production uses 7.28.1. Why did I still get a notification that my current release is not fulfilling this requirement? If I submit a new release, do I need to add: `implementation "com.android.billingclient:billing:7.0.0"` to build.gradle ? Do I need to add `implementation 'com.revenuecat.purchases:purchases:7.0.0'` to build.gradle? Do I need to add ` <meta-data android:name="com.google.android.play.billingclient.version" android:value="7.0.0" />` to AndroidManifest.main ?I intend to keep react-native-purchases to 7.28.1 instead of upgrading to 8.2 due to the fact that after the upgrade, I realize Purchases.getCustomerInfo() does not fetch active entitlements properly. (The subscription purchase in sandbox mode s
I have two subscription set up in play store (Standard and Premium) and i have two base plans in each of these subscriptions ( Monthly and Premium ) . When i upgrade within the same subscription (ex: standard monthly to standard yearly) i use the Proration mode : IMMEDIATE_AND_CHARGE_FULL_PRICE and when i upgrading to a different tier (ex: Standard monthly to Premium monthly/yearly) I use the Proration mode : IMMEDIATE_AND_CHARGE_PRORATED_PRICE. Everything works fine. The issue I have is that play store allows the user to have more than one subscription. It allows the user to have Standard and Premium subscription at the same time. The way i knew about this is that i signed into an account, bought a Standard Monthly subscription, then deleted the account and created a new account and on the paywall i clicked to buy the Premium Monthly subscription and it bought the premium monthly subscription also and I checked the google play store and the play store account is paying for Standard m
hello alli am trying to import the CSV Glassfy to Integrate to RevenueCat without success.i have only 3 purchases this is very few.i wrote a PHP procedure to do that but no succesful.Glassfy sent me a CSV file with the fetch_token for the 3 purchases and when i try to import i got this error “HTTP Code 521""{"code":7104,"message":"Invalid App Store shared secret for the receipt."} "can somebody help methanl youStr
I am planning to transition our customers to fixed user id from Anonymous ID.in my next Flutter app version, iOS and Android However when we did this for a test customer, I see that a new user ID was created and the existing entitlements remain on the old $RCAnonymousID id. They were not merged.The transfer is:Transfer Behavior:Share between App User IDs (legacy)What are my options?
How does Revenuecat handle chargebacks and fraudulant refund requests?Is there a place to view / contest disputes in the dashboard or is this handled elsewhere?Do I need to monitor for anything in particular? I struggled to find any information about this in the docs!Thanks!
I’m having a bear of a time wrapping my arms around how to use the wonderful Paywall features of RC, but offering my users both a subscription AND method to just buy a consumable (e.g. 20-pack of credits). I understand RC Paywall features won’t include non-subscription (consumable) products, even if they’re in the offering, correct?So what’s the recommended method for displaying both the subscription products AND consumables in one Paywalled screen?We’re coding in Flutter/Dart using FlutterFlow to help with UI design Our app is free to use, but users may purchase “Credits” (consumables) to use with some features Subscription will entitle them to use certain features (e.g. credit sharing), and may automatically add auto-resetting credits based on the particular product. (think like a phone plan which includes n minutes of data, and then they need to purchase additional data-packs if they run out, but the n minutes auto-resets every billing period)When a user is out of credits, or simp
Summary: App Store in-app purchases not pulling correctly with promotional offer (free trial)Description:I am trying to offer users a free trial using RevenueCat and in-app purchases. The line of code throwing the error is:const selectedPackage = offering.availablePackages[0]; // This is the package objectconst product = selectedPackage.product; // Extract the product from the packagelet discount: any = null;if (product.discounts) {await Purchases.restorePurchases().then((res) => {console.log('Restore purchases:', res);});discount = await Purchases.getPromotionalOffer(product, product.discounts[0]).catch((error) => {Alert.alert('Error','An error occurred while fetching the subscription details. Please try again.');console.log('Error getting discount:', error);setLoading(false);return null;});}Specifically, the Purchases.getPromotionalOffer() is throwing the error:Possible Unhandled Promise Rejection (id: 0): Error: The receipt is not valid.The debug logs are showing the following
In my app I don’t use the current offering.if let firstPaywallOffer = offers["first_paywall_standart_offer"]{ self.firstPaywallPackages=firstPaywallOffer.availablePackages.map({$0.storeProduct}) }I am getting my paywall offering like this. In the documentation experiment’s just change the current offering. How can I use experiments feature in my app. Do I have to use the current offering? if let coinOfferings = offers["first_coin_offerings"]{ self.coinPackages = coinOfferings.availablePackages.map({$0.storeProduct}) } if let specialOfferOfferings = offers["special_offer_offering"]{ self.specialOfferPackages = specialOfferOfferings.availablePackages.map({$0.storeProduct}) }The reason I use hardcoded id is that there are 3 different paywalls in my application and one of them is non-subscription packages.
Is it possible to offer discount codes on subscription?I’d like to make it if a user create their own code they can share it with their friend and then save some money on the subscription.And can the first user then get some refferal money?
Hello everyone, Recently I have created a paywall UI from RC no-code paywall builder platform and it is a typical app subscription page.I have successfully displayed this paywall on my app subscription options (weekly, monthly products etc.) with react-native-purchases-ui library. However when I tested in TestFlight, no matter how many times I touch the options and ‘subscribe’ button, they do not become selected. After waiting on the same screen for about 30 seconds, I can select the options and start my subscription.I am using expo managed workflow in my React Native app.Do you have any idea how to solve this problem?Thank you in advance.
How do people do accounting for subscription purchases (apple app store)? I can’t find any documentation on syncing purchases to quickbooks for apple or revenuecat.
My model is pretty straightforward freemium w/ a free tier. I want the free tier to be displayed alongside the other options in the paywall. I am managing the free tier limits on the backend - I just want UX consistency. Does paywall have an option for a “placeholder” package that’s not attached to a product?
Hi there, I have a project running and this is what is happeningUserA logs in UserA subscribes to product X UserB logs in in the same device UserB tries to subscribe to product X - "You are currently subscribed to this" UserB upgrades to product Y - "You purchase was successful" - but UserB has no subscription UserA logs in and was subscribed to product YIs this sandbox only issue?How can I verify if the current apple account has subscriptions to avoid UserB to upgrade UserA's plan?Shouldn't UserB merged into UserA original account?
A user from Myanmar has trouble activating the pro version of my app. When I looked into the customer profile “Last opened” is reported 3 months ago. Anyone else problems in Myanmar or what is going on?
My app shows the paywall for a few seconds and then app crashes without any logs. import React, { useEffect, useState } from 'react';import { View, Text, ActivityIndicator } from 'react-native';import Purchases from 'react-native-purchases';import RevenueCatUI from 'react-native-purchases-ui'; function Paywall({navigation}) {const [isRevenueCatConnected, setIsRevenueCatConnected] = useState(false);const [offerings, setOfferings] = useState(null);const [error, setError] = useState(null); useEffect(() => {const connect = async () => {try {console.log('Initializing Purchases...');await Purchases.configure({apiKey: 'my_api_key'});console.log('Purchases initialized successfully');setIsRevenueCatConnected(true); // Fetch offeringsconst offeringsResponse = await Purchases.getOfferings();setOfferings(offeringsResponse.current);} catch (err) {console.error('Error connecting to RevenueCat:', err);setError(err);}};connect();}, []); if (error) {return (<View style={{ flex: 1, justifyConte
Hi!I want to create an iOS App that sells brushes for the iOS App Procreate.There will be hundreds of items and my plan would be users could purchase individual brushes for a one-time payment and I would like to offer a subscription to simply unlock all brushes for the user.I have never created an app bnefore so I am wondering how to set this up. Can I create all the products within RevenueCat or do I also need to create them on the App Store? After purchasing, the App should download the brush onto the device of the user. From what I understand, I need to sign the download links to only give access to legitimate users.How do I handle this? Does RevenueCat support this flow or do I need to use my own server with webhooks? Thank you very much in advance!
Hi! We are setting of our paywall and want to offer 2 options (annual and lifetime). Annual is a subscription and lifetime is a 1-time purchase. We want to offer a 7-day free trial regardless of what the user chooses - we are able to set this up for the annual subscription, but can’t figure out how to offer it for the lifetime (one-time) purchase.Is it even possible to offer a free trial for the lifetime purchase? Thanks in advance!
Hello! So I'm making an alarm app and since the users are anonymous I'm facing an issue with cancelling and refunds. I can't do authentication but I thought that maybe I could write to Firestore through webhooks the anonymous Ids along with the state of the subscription for the user as read only data, then each user can listen to the corresponding document. Is there any security risks from the point of view of Revenuecat to expose these information public ally? I'll add app check of course, but still want to make sure it's safe to do this. Thank you.
Hi all, We offer a monthly and annual plan and our products are divided by those plans. However, I’ve been using the “product duration” filter in some reports and see that a lot of the data is coming in as “weekly” product duration. Is there a way for me to 1) view which products might have a weekly duration and 2) edit that?
I cant seem to draw any conclusions from RC docs for the matter. This is for an android app.A user (John) pays for offering A (110 $ per year) which was the default I change the default offering to offering B (69$ per year) What offering does John (who is already subscribed with the pricier sub) see when he opens up my paywall?In the Customer Profile, I see that John’s “current offering” is set to offering B. Does this mean that he sees the cheaper offering now? And if so, how can I make it so that the users that have already paid for a pricier sub, still see the offering that they paid for?Thanks
Does Purchases.configure() need connection to network? I am configuring offline mode and curious about preferences to initialize the app.
I am using react native and looking at the customerInfo object, it seems that managementURL is at the top level. I am wondering why it is not inside each entitlement maybe or a better place to account for multiple purchases on different platforms..Example, if I log into the app on Android and make a purchase, then also login on iOS and make another purchase, wouldn’t I need 2 managementURLs (one for each store)?
I am new to RevenueCat and I am looking for advice on how to architect my consumable in-app purchases with ReveneCat. With the current app I am developing for macOS, I use the AWS Polly service and each usage of Polly costs money (pay as you go). I am using consumable in-app purchases to control my cost structures from users so that I will always make a profit no matter the overall customer usage. One requirement is fiscal security where the user can't spoof/hack the consumable resources on device, so I need to store their current resource count in the cloud. I read the following in the ReveneCat help pages.Non-Subscription Purchases:It's important to note that at the moment, logic for keeping track of consumable redemptions must be handled outside of RevenueCat. We recommend your server is set up to receive Webhook events for NON_RENEWING_PURCHASE to appropriately provide consumable content for your users.For example: RevenueCat can track a consumable coin purchase and include it in t
According to the docs, fetching a list of customers should include an active_entitlements hash. However, when I paginate and pull our list of customers, none of them have this object. Is this a bug with the API, or an issue with the docs?We’re calling https://api.revenuecat.com/v2/projects/<PROJ_ID>/customers, so if there’s an ?expand= I’m missing I’d appreciate some clarification! 😄 Our use-case requires us to fetch the entitlements of our customers and filter the list based on their status, so if active_entitlements isn’t meant to be returned, this means we’ll be round-tripping thousands of customers to the respective expansion route (projects/{project_id}/customers/{customer_id}/active_entitlements).
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.