Discussion and help from anything related to RevenueCat.
Recently active
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
Hello. From what I can see in the Revenuecat dashboard and my mobile app the purchases of my consumible product (tokens for my app) are being done correctly but the “Apple Server Notification Forwarding URL” is not being triggered.I followed the instructions here:https://www.revenuecat.com/docs/platform-resources/server-notifications/apple-server-notificationsSo I entered the “Apple Server Notification URL” into the Apple appstore:And entered my server URL in the “Apple Server Notification Forwarding URL”:But when I make a purchase, my server’s URL is not being called. I’m not sure why. For security reasons I want to be able to add the tokens in the server side, so that’s what I’m trying to do, which requires getting these notifications.Hopefully somebody can see what I’m doing wrong.Thanks
In my RevenueCat project, I implemented Stripe, which is connected to RevenueCat.I followed the documentation on how to implement web hooks, copied the “Signing secret” from Stripe to the “Stripe Webhook Secret” field in RevenueCat.But when I submit the secret, I got an error: “Invalid Password”, as shown below: Did I miss something?How can I fix that?Thanks.
Hello everyone, I'm experiencing an issue with my Android app "Story Craft Dices" and need some help. My app was successfully retrieving product prices and information using RevenueCat until recently. Now, in the RevenueCat dashboard I can see the error: "Credentials need attention" and "Could not validate subscriptions API permissions".I've meticulously followed all the steps in the RevenueCat documentation for setting up Google Play credentials. I've also taken screenshots of each step to ensure that everything is seems to be configured correctly. I'll include these screenshots in this post for reference. This is the relevant information of the credentials:The Google Play Developer and Reporting APIs are both enabled in the Google Cloud Console:The Service Account is already created and configured too:These are the roles assigned to the Service Account: And this is the key used in the RevenueCat dashboard credentials configuration: I created the user in the Google Play Console and in
The 3 months ( $rc_three_month) package is not displaying correctly on Android when added as a package with the annual and monthly packages.These are the settings: This is how it displays on iOS: And this is how it displays on Android: You can see that on Android it's displaying 1 month for the 3 months plan (middle) and also throwing off the percentage saved calculations.Tested it with both Template 4 - Persian Content and Template 5 - Bengal Content and had the same issues. I am using purchases_flutter: ^8.1.1 and purchases_ui_flutter: ^8.1.1I am testing on a real device.Flutter (Channel stable, 3.24.2, on macOS 13.6.4 22G513 darwin-x64, locale en-GB) What could be causing this? Is play console quarterly subscription not compatible with revenuecats 3 months package?
I want to switch to Android Billing Library 6. Currently I am using purchases_flutter: ^4.11.0. Everything is working fine as i want. But when i try to update it to purchases_flutter: ^6.0.0 then app got crashes at start. I don’t see any error or info in console. Help me
I am using purchases_flutter: ^8.1.1 and purchases_ui_flutter: ^8.1.1 with the Template 4 - Persian Content for purchases_ui_flutter.I am testing on a real device.Flutter (Channel stable, 3.24.2, on macOS 13.6.4 22G513 darwin-x64, locale en-GB)The Template 4 - Persian Content paywall used to pop up fine on my device and working well on my android device with the offers showing fine. However, for the first test purchase I clicked the restore button in the paywall to test it out (out of curiousity) without first subscribing and it showed a message in the debug console suggesting that the restore was somehow successful. After that, whenever i call: await RevenueCatUI.presentPaywall(); it shows the following error and: E/RevenueCatUI(23306): Paywall transitioned to error state: myAppPurchaseLogic is null, but is required when purchases.purchasesAreCompletedBy is .MY_APP. App purchases will not be successful.W/RevenueCatUI(23306): Could not process value for variable 'sub_offer_duration
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.
Hi.I'm trying to implement subscription purchases and in-app purchases using Google play and RevenueCat payment service.Although we had already succeeded in integrating other apps, we had problems integrating payments for the new app.I don't think the RevenueCat payment service works by accident.I hope everything runs smoothly.Let me tell you why I say this.We followed all the integration methods currently provided by RevenueCat and repeated them not just once, but several times.So, please refrain from telling people to refer to this while sharing reference documents.So, I often waited for more than 24 or 36 hours, and now even after waiting for a week, the payment does not work.Of course, the review and approval was completed in the closed testing track, and there were many times I waited while revising the product description for a quick method.But it still doesn't work.I am now waiting for a quick reply and hope this helps all users here who are having the same problem as me.We look
I understand that the currency of the product is handled by the App Store, but when viewing the RevenueCat dashboards, the prices are always converted to USD currently.Is there a way to set the currency displayed in RevenueCat? Thanks,Brent
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?
I’m tinkering around with RevenueCat for an app my company is releasing Q4 this year. We use Firebase as a simple backend.Context:One of our features is the submission of images for server-side processing. The submission of a job is done via a Firebase cloud function, and the abilities of the user to submit these jobs can be different depending on the user’s current subscription/entitlements. As such, it is important that the custom claims on the Firebase auth token are up-to-date when the backend function is called. Otherwise, the user might make a purchase to attain some feature, and not be able to access it immediately because the Function will reject their request. Question:When are the custom claims set, and can I expect them to be available immediately in my Firebase functions after a purchase?More specifically, if I await any calls into RevenueCat when a purchase is made, will all Firebase functions called from that point onwards have the custom claim set in the request? Or is t
Hello,I am not able to build with the @revenuecat/purchases-capacitor module. Without this module, the build works. If anyone has any suggestions to help me, I would be very grateful, as I have been trying to resolve this for several days now...I have tried:deleting the node_modules folder, then deleting package-lock.json, then npm install, npx cap sync ios deleting the derived-data folder in XCode and using “clean build folder” (many times) pod deintegrate, pod update, pod install from the /iOS/App folder pod repo update from the /iOS/App folder reverting to version 8.0.0 of @revenuecat/purchases-capacitor checking that there is no mention of swift_version in my podfile adding a single, empty Swift file to the project. going to Build Settings, looking for Library Search Paths, and adding $(SDKROOT)/usr/lib/swift as the first item on the list.I haven't tried deleting the entire iOS folder, and I would like to avoid going that far... Notes:Swift Language Version is set to 5 In-App Purch
Hello,Unfortunately documentation page https://www.revenuecat.com/docs/firebase-integration provides only client-side authorization check getAuth().currentUser.getIdTokenResult() .then((idTokenResult) => { // Confirm the user has a premium entitlement. if (!!idTokenResult.claims.activeEntitlements.includes("premium")) { // Show premium UI. showPremiumUI(); } else { // Show regular user UI. showFreeUI(); } }) .catch((error) => { console.log(error); }); It won’t prevent me to write code accessing Firestore with expired subscription. Can you please provide some examples / design patterns / best practices for server side? For example, Cloud Firestore Rules which check subscription status, or maybe cloud functions? Hard to guess ;)
I use "react-native-purchases": "^7.26.2" for appstore in-app-purchase. when notication come to banckend, I record every transation log, my all transation on my backend db are in Sandbox environment. like this: {"event":{"event_timestamp_ms":1725398372013,"product_id":"ios_scitudy_gold_annually","period_type":"NORMAL","purchased_at_ms":1725398365000,"expiration_at_ms":1725401965000,"environment":"SANDBOX","entitlement_id":null,"entitlement_ids":["paid-translation","AI-calling"],"presented_offering_id":"ios_scitudy_gold_annually","transaction_id":"2000000704057882","original_transaction_id":"2000000703575553","is_family_share":false,"country_code":"VN","app_user_id":"$RCAnonymousID:8a36f2d9967e4105866b57d7cbd38759","aliases":["$RCAnonymousID:8a36f2d9967e4105866b57d7cbd38759"],"original_app_user_id":"$RCAnonymousID:8a36f2d9967e4105866b57d7cbd38759","currency":"VND","is_trial_conversion":false,"price":32.121,"price_in_purchased_currency":799000,"subscriber_attributes":{"$attConsentStatus"
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
Added the revenuecat package to unity. No ‘purchases’ objects in scenes yet. Building for iOS and then building from XCode yields this error
Hello, My Paywall created a successful subscription with Sandbox account earlier in the day, but now on “Subscribe”, I am getting prompted for AppleID and password and after successful log in and bell sound that indicates purchase was successful, I am back on the login screen, without new subscription purchase on the Sandbox dashboard.
Hello Team,Is there any possible way to test revenueCat’s webhook events in my local envirement ?I mean something like stripe CLI tool or any way to see the events on my local machine without need to deploy a test server or directly test in production Thank you!
Hello,I’m currently working on a Flutter app, available on Android, iOS, macOS, Windows and soon Linux.Unfortunately, RevenueCat is not yet available for Windows and Linux, which is a shame because RevenueCat is really helpful when it comes to implementing purchases in a Flutter app.Is there any ETA for the support of Windows and Linux for the RevenueCat Flutter SDK?Thanks.
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.