Discussion and help from anything related to RevenueCat.
Recently active
Hi there,I have a question about anonymous user IDs and subscriptions.My scenario:User subscribes on Android using RevenueCat's anonymous ID Later, they get a new iOS device and use our data transfer feature As part of this data transfer, we'd transfer the RevenueCat anonymous ID from Android to iOSWhat I need to know:If we transfer the anonymous ID and call login() with that ID on the iOS device, will the subscription be recognized? What happens to the subscription status on the original Android device after this? Are there any platform-specific limitations to this approach?Creating user accounts isn't an option for our app. We need to rely solely on anonymous IDs for subscription tracking.
onRestoreCompleted on iOS will not fire if a restore is attempted but the user doesn’t have any active subscriptionsThe thread on PaywallView callbacks not working includes this comment.I am trying to wrap up my app with both subs and a Lifetime purchase IAP.If someone buys the once-off Lifetime they should be able to restore that.Was the doesn’t have any active subscriptions just a mis-naming in passing or is this a missing feature?Apple expect us to be able to restore such.
Our app has a recurring subscription, that users need to pay in order to use it. We would like to offer something like a group subscription - if a company approaches us and want to buy 10 subscriptions for their employees we would like to offer them a discount. We could get a list of users from them, we could send them codes, the way how do we exactly do it its not that important to us. Is it even possible to do something like this with app and play store? If yes, how can I enable it via revenue cat
I even try to purchase in debug sometime its successful sometime it fails and appstore reviewer raises same objection here is the error i get on macOS.Received error that does not have a corresponding StoreKit Error: Error Domain=AMSErrorDomain Code=305 "Purchase Failed Server canceled the purchase" UserInfo={AMSFailureReason=Server canceled the purchase, AMSURL=https://sandbox.itunes.apple.com/WebObjects/MZBuy.woa/wa/inAppBuy?guid=5CE91E9CB360, AMSDescription=Purchase Failed, AMSStatusCode=200, AMSServerPayload={ "cancel-purchase-batch" = 1; customerMessage = "Unauthorized_message"; failureType = ""; "m-allowed" = 0; pings = ( );}, NSDebugDescription=Purchase Failed Server canceled the purchase}Received error that does not have a corresponding StoreKit Error: Error Domain=ASDErrorDomain Code=500 "(null)" UserInfo={client-environment-type=Sandbox, NSUnderlyingError=0x6000026468b0 {Error Domain=AMSErrorDomain Code=305 "Purchase Failed Server canceled the purchase"
Apologies if this is a basic question.I’m recording a custom subscriber attribute called 'charity’ against my customers, which stores the name of a charity they have chosen, to which I am going to donate 10% of the subscription revenue I get. So now, I’m trying to create a report of total revenue subscription in the past year, grouped by the charity, so I know how much to donate to who.I figured based on this forum question that I can achieve this using scheduled data exports. So, I have just finished setting up a scheduled data export integration to a Google Cloud bucket.I see in the documentation lots of examples of custom queries in Postgres, which looks ideal. But this is where I’m stuck. I assume these queries can be used to modify the data I get in the scheduled data export - but where do I enter the query SQL? eg I can’t see anywhere in the query integration settings where it says something like 'run this query’. I must be misunderstanding how this works.
I just tried out the amazing Paywall v2 editor on my RC-Account. In the editor my Paywall looks fine but neither my native iOS nor Android-App are showing it correctly. On iOS I see a big red warning (see below).I have the latest SDK version iOS: 5.20.3 and Android: 8.15.1. I added a german localization to my Paywall.For iOS I’m using Xcode 16.3 and run the App on physical device or simulator with iOS version 18.3.2.Has anyone seen similar issues and has a solution.
I followed the instructions (as best I can tell) to integrate RC into my react-native app. I added the subscription group and product in Appstoreconnect console. I added the sample code in my react-native app, and am trying to just “get the current offerings”. I get the generic error:[Error: There is an issue with your configuration. Check the underlying error for more details. There's a problem with your configuration. None of the products registered in the RevenueCat dashboard could be fetched from App Store Connect (or the StoreKit Configuration file if one is being used). More information: https://rev.cat/why-are-offerings-empty] After following that link ^, RC gives me a Troubleshooting Guide with a list of items to check. (Great feature btw)The 3rd item in the list states:Ensure the products are in the 'Ready to Submit' or 'Approved' state in App Store Connect. If you're submitting your first in-app purchase or adding a new in-app purchase type to your app, you'll need to submit
I checked some other related issues (this, this) but seems different. I just made an SDK update and am running into issues:SDK and Versions:"react-native": "0.76.7", "react-native-purchases": "^8.5.3", "react-native-purchases-ui": "^8.5.3", "expo": "~52.0.32", Android Studio Ladybug Feature Drop | 2024.2.2 Build #AI-242.23726.103.2422.12816248, built on December 17, 2024 Runtime version: 21.0.4+-12422083-b607.1 aarch64 VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o. Toolkit: sun.lwawt.macosx.LWCToolkit macOS 15.3 GC: G1 Young Generation, G1 Concurrent GC, G1 Old Generation Memory: 2048M Cores: 12 Metal Rendering is ON Registry: ide.experimental.ui=true i18n.locale= Android Device: Samsung Galaxy S22, running Android 14 I have had the Paywall running for some time on Expo SDK51 as described in your docs with the custom font family:<RevenueCatUI.Paywall onDismiss={onPressDown} onPurchaseCompleted={handleContinue} onPurchaseError={handleError} onRe
we are now planning to implement in-app purchases for mobile using RevenueCat. Given this change, how can we handle the trial plan assignment to a user on register via the backend while integrating with RevenueCat’s in-app purchase system? any API ?
Hi everyone, We are building web application in Flutter and wanted to ask if you can support it anyhow? I have checked official SDK and it seems to not be supported: https://pub.dev/packages/purchases_flutter/score. As of now, we have a great experience integrating your product on iOS and Android.Thanks in advance.Kind regards, Marcin
Hello everyone,We've been experiencing a decline in MRR since 1st of April, despite a normal rate of cancellations.On 20th of March, we introduced an upsell option in our paywall, allowing users to upgrade their subscriptions.While we haven’t made any changes on the Stripe side, we’ve noticed that the price value in Product Change events is now appearing as $0. As a result, these upgraded subscriptions are not being counted toward our MRR and ARR.Any insights on why this might be happening would be greatly appreciated.
For my new app (having no login support), I want to support a few coins to use the pro features to every user, post that they will be prompted to purchase more. I don’t want the user to be able to get those coins again and again by reinstalling the app. I also need to update the available coins via revenue cat if possible.Is there any such support in revenue cat? Need to know how does RC is able to store the user identifier on its own which is persistent across reinstall or restart of the phone.
I’m trying to implement web billing on my site but the documentation is extremely sparse. As far as I can see it only outlines the javascript sdk calls but I can’t find anything on how to integrate it into my site. If someone is going to sign-up using a credit card how do I pass that information. The documentation completely skips over this. Do you have a clear example of how this whole thing works? How do I integrate stripe and apple pay and google pay to actually use Web Billing. It seems to only option at this point is to use the hosted page.
I’m creating a webbapp (web + ios + android) and I’m setting up a minimal subscription support, using Revenuecat as source of truth.My implementation:The bakend receives a webhook call both from RevenueCat or for the frontend (when subscription succeeded). It just tates revenuecat app_user_id field OR the user_id (if is a frontend call, which is the same as app_user_id), and checks against RevenueCat the user entitlements, updating the associated entitlement object in the backend database. We dont care about different fields for each event kindSummary: Each time something happens (event), my backend doesn’t even care about the payload of the call, it just update entielements expiration in the database. This allow me to be completely agnostic to the platforms: IF SOMETHING HAPPENS → UPDATE ENTITLEMENTS.The problem comes to present a Manage Subscription button in the frontend. Because I don’t know or store the platform through the user has subscribed to my App.That leaves me to the quest
I was using API v2 to get customer info in order to get their entitlementsresponse = await fetch( `${apiUrl}/projects/${projectId}/customers/${userId}`, { headers: { Authorization: `Bearer ${apiKey}`, 'Content-Type': 'application/json', }, })Sometimes though I noticed that active_entitlements.items would be empty, even though the user did indeed have an active subscription. So I figured I’d try using the v1 endpoint insteadresponseV1 = await fetch(`${apiUrlV1}/subscribers/${userId}`, { headers: { Authorization: `Bearer ${apiKeyV1}`, 'Content-Type': 'application/json', },})And there it is! In this response the entitlement is included. v2 response, no active entitlements:{ "active_entitlements": { "items": [], "next_page": null, "object": "list", "url": "https://api.revenuecat.com/v2/projects/proj6e8ba871/customers/823211fd-6c1f-4d10-8b1f-de9718832140/active_entitlements" }, "experiment": null, "first_seen_at": 1741892521463, "id": "823211fd-6c
Hi,I have a blind spot when users delete their account from my Flutterflow app. That is, any paid subscriptions stored in RevenueCat remain live. Currently, only the anon Apple ID is attached to the RevenueCat record (this isnt stored in my auth users database though). The simple solution would be to also set the Apple email in the RevenueCat Customer record - then I can find a match with my auth users record. How can I have RevenueCat store the email (aswell as the Apple ID) when a purchase is made please? I’m not a coder and so I was hoping it was a settings adjustment, but I can’t see this anywhere. Many thanks for your time.
When I try to pay for a subscription in the app, and then I cancel the subscription.When I log out of the account and switch to a new account, and want to retest the paid subscription function, the following error is displayed.And the terminal shows those error: 🤖‼ BillingWrapper purchases failed to update: DebugMessage: Account identifiers don't match the previous subscription.. ErrorCode:: DEVELOPER_ERROR.nullE/[Purchases] - ERROR( 7251): 🤖‼ PurchasesError(code=PurchaseInvalidError, underlyingErrorMessage=Error updating purchases. DebugMessage: Account identifiers doon't match the previous subscription.. ErrorCode: DEVELOPER_ERROR., message='One or more of the arguments provided are invalid.')And no matter which account I switch to, the same token is used when creating an order? In other words, when using this app, the user's Google Play account will be bound to the first paid account by default. After that, no matter which account this app switches to, an error message will be d
Is there a broad timeline for adding Catalyst Support to the v2 paywalls?
When using the new paywall editor (not the v1 ones) and new templates, when I try to edit the product button I see an $rc_monthly and $rc_annual product but I only have an $rc_weekly and $rc_annual product set up, not a monthly one. These products are currently live and being sold via a v1 paywall so we’re fairly confident they are set up correctly.I am also unable to publish the paywall because no offering is selected, the offering drop-down is grayed out and says “no available offerings” in the sidebar under “General paywall properties”.Separately I’m wondering if there is a way to take a template which is designed for a single product, and add the product toggle (i.e weekly vs annual) there does not seem to be a button for this in the paywall editor.
So, I’m pretty sure this is a bug, but I wanted to post this here first. I have this working successfully in Android. But in iOS my pay flow hangs.In my pay flow, subscriptions are retrieved successfully, but when I go to purchase the selected package, it fails: Purchases.purchasePackage({ aPackage: packageToPurchase })Showing configured productsAt this point it should present the pay flow, but hangs.In android, it looks like this..
I’m creating a Flutter app with subscriptions. I’m using product priceString to get formatted price of the subscription. For some reason I get two different strings when I debug on device and on simulator (“4.99 USD” and “$3.99” respectively). 4.99 is the correct price for this subscription and I want it to be displayed with dollar sign ($) Instead of “USD”. How can resolve this issue?
RevenueCat subscription events are not showing up on Facebook ads manager. Can someone please help? Also how can I get them to show up regardless of whether someone accepted ATT?
I noticed in the docs that the new Facebook Conversions API has the option to send events even when ATT content has not been given by the user. However, a few screens above the docs say that the iOS IDFA is still required. We would prefer to skip using IDFA and asking for permission for UX reasons. Are we still required to try to collect the IDFA with Conversions API or can we completely ignore it?
Hi,I’ve had two instances so far with this Subscription cancelled due to a billing error:There’s no more info about the billing error in details. How do I debug this? What could have been the cause? Thanks ahead!
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.