Discussion and help from anything related to RevenueCat.
Recently active
Have found conflicting posts here so wanted to get the latest info on whether IDFA is still required for RC to send the IAP events to Meta?
Hi RevenueCat team and community,I’ve recently integrated RevenueCat Web Billing into my project. It’s a fantastic product—thank you! It allowed me to eliminate a lot of legacy billing code. However, I’ve run into a critical issue: the automatically generated invoices aren’t compliant with German regulations and don’t even include my company’s address.For the German market, invoices must include: Full company name and address VAT breakdown (net amount, VAT rate, VAT amount, gross amount) EU VAT ID in the footer (or equivalent) Could you please help me with the following: Invoice customization: Can I customize the invoice template, or at least enable Stripe Invoicing to generate fully compliant invoices? Invoice retrieval: Where can I access the generated invoices for archiving and submission to the tax authorities? Customer name capture: Is there a way to collect the customer’s name during checkout so it appears under “Issued to”? Thanks in advance for your assistance!Best rega
Hi! I have a Flutter app using RevenueCat for subscriptions.When a user activates a promo code via the App Store (outside the app), RevenueCat sends a webhook with an anonymous app_user_id (e.g., RCAnonymousID:abc123).The problem is that my backend expects a known user_id to associate the subscription with a user. Since the user hasn’t logged in yet, there’s no way to identify them based on this anonymous ID, and the webhook ends up being ignored.Later, when the user logs in to the app, I call:await Purchases.logIn(customUserId); But by that time, the webhook has already been processed (or missed), and there’s no connection between the anonymous ID and the logged-in user. What I want: To be able to process the first webhook, even if the subscription was activated anonymously (via promo code). My questions: What is the correct way to associate an anonymous RevenueCat ID with a custom user ID? How can I reliably process the first webhook and link it to the right user? Is there a way
Hi!I tried the “Auto-populate your metrics” function in the Health Score page and I can’t find the data entered automatically on my dashboard. For exemple: the trial start that has been populated automatically is 3,714% and when I look at the trial conversion chart, I can’t find this figure. I tried different grouping and timeframe but impossible to get this figure. Can you help me understand how is it computed please ?Thanks in advance,Marion
Using RevenueCat ootb integration in flutterflow, in TestFlight when arriving on the Paywall on iOS a grey screen is shown for all the internal and external testers except my own device. On my own iOS device when installing the app in testflight, i am able to see the paywall and subscribe to the product. Which proofs the configuration of the subscription in Apple and entitlement/offering in RevenueCat is correct. However when other users (internal and external testers) get invited and download the app in TestFlight, upon reaching the Paywall they get a grey screen.I searched and see other topics for other RevenueCat users having the issue with the grey screen, but didn't see any relevant resolution.Hope someone can help as this is blocking our app launch! Thanks and really appreciate any help.
I’d like to ask for guidance on how to properly handle cases where users attempt to repurchase a subscription product they are already subscribed to.In my app, I’ve implemented a subscription system offering both monthly and annual plans.The issue I’m currently facing is: when a user who already has an active monthly subscription attempts to repurchase the same monthly plan via the paywall, the system silently ignores the request — no callback is triggered, and the only output I can see is the following log:Ignoring purchase request for already subscribed packageWhile investigating this issue, I noticed something interesting: if I configure the package in the offering using PackageType.CUSTOM instead of the standard PackageType.MONTHLY, the PaywallViewModel is able to proceed with performPurchase() (since Package.currentlySubscribed returns false).In this case, the RC SDK ends up calling the Google Play billing flow, which results in an error due to the duplicate purchase. This error i
I’ve uploaded a valid service-account JSON and entered my bucket ID in RevenueCat, but the dashboard still shows:“Access was denied to the financial report bucket. Please check the service account has the correct permissions to access the bucket.”What I’ve verified so far: APIs enabled (Play Developer, Reporting, Pub/Sub) Financial data permissions granted in Google Play Console JSON credentials re-uploaded and bucket ID re-entered in RevenueCat I’ve attached a screenshot of the error as it appears in the RevenueCat dashboard. Please help me debug why access is still being denied?
When submitting the receipt, I passed in the user ID but returned an anonymous ID,
anyone has similar issues today? tested in both simulator and sandbox. I'm new to Revenucat. My question is: is this issue on my end or theirs? it seems paywall works fine for me yesterday,
Hi team, I created the paywall as below and upload a custom image on it. However, the image scale is not consistent on RevenueCat and iOS app. I’ve switch it to ‘Fit’ but seems it still be ‘Fill’.Could you help on this problem? What image ratio and resolution I should used?
Hi,I just submitted a new app to the App Store, but I’ve now noticed some logs in Xcode related to RevenueCat.WARN: ⚠️ Signature failed verification ERROR: 😿‼️ Request to getOfferings(appUserID: "AppUserID") failed verification. This is likely due to a malicious user intercepting and modifying requests. WARN: ⚠️ Signature failed verification ERROR: 😿‼️ Request to getCustomerInfo(appUserID: "AppUserID") failed verification. This is likely due to a malicious user intercepting and modifying requests. Do you know what could be causing these errors? I’d really appreciate your help.Below is the code I’m using to check the subscription status: import RevenueCatimport OSLogpublic final class SubscriptionManager: ObservableObject { private var entitlementId: String = "" @Published public var subscriptionActive: Bool = false { didSet { Logger.subscription.log("Subscription status changed: \(self.subscriptionActive)") } } @Published var customerInfo: CustomerInfo? { didSet
Is it possible to activate Stripes automatic tax collection when using RC-Web?
I'm using React Native to build an Android APK.Since I'm using addCustomerInfoUpdatingListener during app initialization, and within the app, I open WebBrowser to access Web Paywall Links (low code) for payment, will the CustomerInfo be updated after the payment is successful and the WebBrowser is closed? Because if I were to monitor CustomerInfo information
Hi. I’m doing some development in the sandbox to add auto-renewing subscriptions to my app. I already have some consumable in-app purchases in production, and I have a webhook set up for “non-renewing purchase” to hear about those. I’ve noticed that when I use Xcode/StoreKit to test the purchase of my new auto-renewable subscription, the “non-renewing purchase” webhook is being called. Why is that?In Xcode StoreKit config I’ve checked that the subscription I’m purchasing in set up as an “auto-renewable subscription”. In RevenueCat the product is set up as a “subscription” (not a “not-renewing subscription”).Thanks
Why can't I use an offering on more than one paywall? What's the reason for this?
I’m facing a very frustrating error. I’m able to successfully initialize the react-native sdk: useEffect(() => { Purchases.setLogLevel(Purchases.LOG_LEVEL.DEBUG); Purchases.configure({ apiKey: Config.REVENUECAT_API_KEY_IOS, }); const productIds = ['com.***.*****.staging.pro.monthly']; Purchases.getProducts(productIds).then((products) => { console.log('Products:', products); }).catch((error) => { console.error('Error getting products:', error); });}, []) In this case, it returns a blank array of products. However, in my project configuration, I have successfully imported products from App Store Connect. Secondly, when I run Purchases.getOfferings(), it gives me the Error 23 which mentions misconfiguration. I’m not sure why am I getting that error. I have completed all the steps in the https://www.revenuecat.com/docs/offerings/troubleshooting-offerings guide and I’m still getting the same issue. I’m running my app in a simulator. I know that I need a .storekit fi
Hi,We are trying the new web paywall button in one of our app. It is working great so far but we didn’t find the way to get the info inside the app when a payment is done on the web using the web paywall button.We need trigger some code in our app every time there is a payment in the app based on the subscription taken. Today we an in-app payment, we can simply rely on the response of `Purchases.shared.purchase()`.Is there a way to do the same thing with web payment? Thanks!
The fetchOffers method in the purchase_flutter package sometimes returns me an empty list of products while working in the test environment. While I haven’t faced this issue in the production app yet. And I have been using this package since three years and it was working fine till a month ago I updated it to “purchases_flutter: ^8.7.2”. Does any one knows why is it happening? I doubt that if it is due to the configuration issue since it was working fine since three years.
I successfully managed to integrate RevenueCat into my app for subscriptions and now I’m concerned that maybe it was too easy and I forgot to do something!! I’ve been trying to find information about this and I cannot see that this is happening very often to others.My first trial subscription started 8 days ago now (free trial period is 7 days). Yesterday I waited for it to convert into my first subscription as I haven’t seen any cancellations and the end of the trial came and went with nothing. About 30 minutes after it was supposed to be converted, a new event came in of “SUBSCRIPTION_EXTENDED” - my understanding is that this is an internal RevenueCat event that happens if nothing else happens.When I check the Google Play console, it just says “Payment Pending” - “Order received. Google is the merchant of record for this transaction.”. Nothing else - it doesn’t appear that Google has tried to charge them or that they have done any fraud checks which would delay the transaction.
When I call Get List of Customers endpoint I get only 6 fields of information for every customer. The documentation shows that should be more fields.URL: https://api.revenuecat.com/v2/projects/proj_id/customersYour API v2 response (just for Item object):{ "experiment": null, "first_seen_at": 1744314095343, "id": "123456789", "last_seen_at": 1744314095367, "object": "customer", "project_id": "proj_id"}The documentation show that i should get this:{ "object": "list", "items": [ { "object": "customer", "id": "19b8de26-77c1-49f1-aa18-019a391603e2", "project_id": "proj1ab2c3d4", "first_seen_at": 1658399423658, "last_seen_at": 1658399423658, "active_entitlements": { "object": "list", "items": [ { "object": "customer.active_entitlement", "entitlement_id": "entla1b2c3d4e5", "expires_at": 1658399423658 } ], "next_page": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-a
If an expired iOS customer redeems a custom offer code (e.g. one month free), would the RevenueCat webhook send an event? If so, which event should we listen to (e.g. Renewal?) We have a backend that listens to the RevenueCat webhook to track some customer data, and are thinking of implementing offer codes (so we’d also want to listen for that)
Hope to launch an Android version Web Paywall Buttondirectly using the Web Paywall Button Pay
Hey,So I’m trying to implement subscriptions with revenuecat with different types of plans (think Spotify like, where you can invite multiple members into your plan).But in order to do that, I need to store plans/subscriptions data on my own backend.To offer a real time experience, I need to sync user data with my backend in these scenarios :- sync data on app launch- sync data when app comes back to foreground- sync data right after a purchase (user subscribe and right after I send an api call to my backend to confirm status with revenuecat REST API & sync data)- sync data with using webhooksThe problem is, the current rate limit is way too low to do this kind of strategy, as said here : This is really important for my user experience, since I don’t want to make the user wait after successfully subscribing to be able to invite other people into the subscription.What would you suggest in such scenario ? This is a deal breaker for me since it’s a core feature of my app.Thanks a lot
ERROR: 😿‼️ There was a credentials issue. Check the underlying error for more details. Invalid API Key.This comes up on TestFlight when loading the paywall. It works on production. Not sure where this is happening from?
Hey, I am getting default Paywall on Android using Kotlin Multiplatform (latest version 1.7.7+13.29.1)The errors on the logs are the followingMissing string localization for property with id: '5-cMAYlyz8', for locale: 'en_US'. Displaying default template due to validation errors. Could not process value for variable 'sub_offer_duration' for package '$rc_annual'. Please check that the product for that package matches the requirements for that variable. Defaulting to empty string. Could not process value for variable 'sub_offer_duration' for package '$rc_monthly'. Please check that the product for that package matches the requirements for that variable. Defaulting to empty string.I tried seeing in other posts that could be something in localization files, I changed many times the strings and nothing worked. Any clues?
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.