Discussion and help from anything related to RevenueCat.
Recently active
I set up USER_ID to the Purchases.sharedInstance.logInWith() method and then SDK response created parameter always return false.
Hello,I am using the ionic sdks. However for some reason i get the error“There is no singleton instance. Make sure you configure Purchases before trying to get the default instance.”I am using the code below and as you can see I am calling Purchases.configureWith before Purchases.getCustomerInfo(). But not sure why I am getting this error?Can anyone guide as what I am doing wrong?Also attaching screen of my consolePurchases.setDebugLogsEnabled(true); if (context.user) { console.log("before configure"); Purchases.configureWith({ // @ts-ignore apikey: import.meta.env.VITE_RC_ANDROID_KEY, appUserID: context.user, }); console.log("after configure"); try { console.log("before customerinfo"); const customerInfo = await Purchases.getCustomerInfo(); console.log("after customerinfo"); console.log(customerInfo); } catch (e) { console.log(e);
Hello,How could I get alias for a purchased user from CustomInfo model class? I looked it up and just found `originalAppUserId` and cannot find any alias fields.I invoked Purchases.getCustomerInfo(), but I can’t find alias here.Please help me!
HiI have set the RC id linked to my users accounts’ unique identifiers and I thought that was ok. So the RC accounts are linked to my app accounts (a user, theoretically could have one account with subscription and another without it, imagine like a user having a professional Dropbox subscriptions and a personal one accessed via the same device)But after an Apple rejection when they asked me to make possible that users conserve their subscriptions even if they upgrade phone, then I’m questioning myself if this is the right approach. It seems that, as subscriptions can only be cancelled via the stores menu, then all the accounts accessed via the same device would act the same.Is this the “standard” way to make it work? Subscriptions linked to Stores accounts and not to my-app accounts?I don’t have a preference, 99.9% of the cases my users will have just one account. I just want to make my app compliant and to make it work in the standard way.
RevenueCat returns an AnonymousID for originalAppUserId instead of the UUID I send it. After the purchase I login to RC with the UUID(RC returns an anonymous ID). Also, at startup after logging in with the UUID in didFinishLaunchingWithOptions, RC returns the same anon ID in the purchases(_ purchases: Purchases, receivedUpdated customerInfo: CustomerInfo) callback.This has a material impact on the use of my multi-user app since I depend on the uuid userId to determine many aspects of the app state.How can I ensure that RC returns the user ID that I gave it?Here’s how I initialize RC at startup in didFinishLaunchingWithOptions: let configuration = Configuration.Builder(withAPIKey: "asdf") .with(appUserID: currentClientUser.id) .with(usesStoreKit2IfAvailable: false) .build()Purchases.configure(with: configuration)Purchases.shared.logIn(currentClientUser.id) { (customerInfo, created, error) in os_log("Purchases.shared.logIn customerInfo: %@", log:
Hey RC team,I work in a company that has more than 100 engineers. We usually have two isolated 3rd party environments for security purposes: one for our production and another for our non-production environments. Do you see any negative trade-offs in this approach?PS: This thread is almost about that, but using different projects instead of different accounts.
Hi,We’re seeing events from the Revenue Cat webhook whilst in Sandbox mode (before go-live) where a subscription or renewal flows through with 12.17% `tax_percentage`. Can anyone explain why that might be? I would expect 20% VAT? Is it something we’ve misconfigured or am I missing something?Example webhook event here:{ "api_version": "1.0", "event": { "aliases": [ "9e2090e4-11cc-4ff8-8f0f-281eb9e6b84d", "$RCAnonymousID:7610af8f52924950b428cd4d313823f2" ], "app_id": "app790cf74d0c", "app_user_id": "9e2090e4-11cc-4ff8-8f0f-281eb9e6b84d", "commission_percentage": 0.3, "country_code": "GB", "currency": "GBP", "entitlement_id": null, "entitlement_ids": [ "Pro" ], "environment": "SANDBOX", "event_timestamp_ms": 1678382003118, "expiration_at_ms": 1678382162000, "id": "6D453662-6B23-47EE-97B4-7856431CA391", "is_family_share": false, "is_trial_conversion": false, "offer_code": null, "original_app_user_id": "$RCAnonymousID:76
Platform: AndroidStore: Google PlayProduct Type: Monthly SubscriptionRevenueCat Purchases Version: com.revenuecat.purchases:purchases:5.1.0 Hi,I am facing a situation that I'm not sure how to properly handle, related to restore behavior. Up until now, our project had the "Restore behavior" option to "Block restores". Now, we want to start allowing users to restore their subscriptions. The problem is that the Android app has unwanted behavior if we turn that "Restore behavior" option to "Transfer purchases" - to quote the documentation, "Due to platform limitations, purchases will be transferred as soon as you call `configure` if a user's purchases are already associated with another app user ID.This may cause unexpected transfers of purchases between app user IDs, especially for apps with optional logins or users with multiple devices. To prevent this behavior, you should wait to call `configure` until you have the appropriate app user ID for your customer." The app has optional login
I have integrated Revenue cat SDK in my android app but when I upload app bundle on Playstore it rejects by saying that you’re using Cardinal Commerce SDK. Does Revenue cat uses Cardinal Commerce SDK?
I have an app released in all platforms (desktop, mobile, web, browser extension) and has single codebase. I am looking into integrating payments for subscriptions for Pro features.Looking into revenuecat website makes it clear that it supports iOS, Android and Stripe. When I go to the docs section I see SDK guides for Apple and Android. But not so much on stripe. I could not find anywhere that RC does not yet support stripe integration via its SDK. In fact reading the docs I get the opposite impression that the SDK functions work seamlessly across all three platforms.These are the Stripe related pages in the docs -https://www.revenuecat.com/docs/stripe-products - It mentions setting up subscriptions in the stripe dashboard. At the end it links to continue to product setup guide. Nothing to indicate if SDKs are supported or not.https://www.revenuecat.com/docs/entitlements - The product setup guide shows at a high level how things work in RC and puts stripe in same list as other platfor
We’ve been using RevenueCat entitlements client-side with some success. That’s great.We’re now trying to integrate this with our backend to control the nature of the push notifications we do and do not send (and/or what the content of that push notification is).Yes, we have the webhook set up, and that works fine. But how do we sync our backend with the RevenueCat entitlements to, effectively, catch up on which users are already entitled? (I don’t really want to know the individual subscription/product for which people have signed up, just who is entitled to what.)There are endpoints to query a particular user, but that seems horribly inefficient to say “hey, we want to do a push for these thousands of members, so let’s query them, one at a time, to see if they still have that entitlement.” There is a CSV download for customers, but that does not appear to have all the entitlements in it. (Also, that “CSV” is actually semicolon delimited. What’s up with that?)So, bottom line, is there
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) I get this error sometimes and it fails to fetch offerings. But it resolves on its own after sometime. Please help resolve this as I would be going for production soon.
We would like to test changing the duration of the free trial on our active subscription. However, when trying to do so I get this error message:“This subscription has been migrated from a legacy subscription and is read-only”. Does any of you have a similar issue? I appreciate your help.
Error: The receipt is not valid. The purchased product was missing in the receipt. This is typically due to a bug in StoreKit.I think I found a bug with the react-native-purchases purchaseProduct method on iOS (not android). See the types in the screenshot attached (the function invocation in the screenshot works, without the optional parameters it does not on iOS). I also see it says “subs by default”, but on a subscription purchase it does not work without explicitly supplying the PurchaseTypes.SUBS enum value. Revenue Cat lists the first parameter as required and the other 2 parameters as optional (upgradeInfo?, type?). However, if you don’t supply the second 2 parameters on iOS an exception is thrown with error message - “Error: The receipt is not valid. The purchased product was missing in the receipt. This is typically due to a bug in StoreKit.” This took me a while to figure out as the types seem to be incorrect here, they should be required because without them this exception i
So currently, I need to implement restore purchases if the user was previously subscribed. I understand Revenue Cat’s API in which it checks entitlements -- (Does this work for offerings btw?) I was going to show a restore button to the user if they qualify (as suggested by apple) which would trigger the function on click. However, my app has NO login credentials. Given this, I only have info such as device id, how can I make a conditional that shows whether the restore button is shown to the user or not?
‘PRORATION_MODE’ enum is not contains the ‘IMMEDIATE_AND_CHARGE_FULL_PRICE’ option. Here is the documentation: https://developer.android.com/google/play/billing/subscriptions#upgrade-downgrade
Hello, End-to-end testing of IAP is painful. On iOS, I can’t do Storekit testing on simulator without running through Xcode (how to implement in headless ci?). Also I can’t do Storekit testing on a release archive. I don’t have the budget to run on real devices. On Android, it kind of works, but is especially painful because automating the purchase UI is not trivial and flaky. While I could mock at my app level (i.e. at JS level in my case), I don’t get any guarantee that the purchases will work in the real world. I already had so many issues with purchases working here and not there, that’s why I’m now using RC. I don’t want to have responsibility over this part of the code. It would be very convenient to be able to set a different API key in Purchases.configure() and then all the purchases would success without going through real App store / Play store stuff. Different API keys could also be created with different expected behaviours such as “Always approve” or “Always declines”. Tho
To make diagnosing issues as easy as possible, we are thinking of logging errors (as documented in https://www.revenuecat.com/docs/errors) into Sentry.Our main concern is potentially storing sensitive info like Payment Details, etc. Is this a valid concern? Or are errors guaranteed to be safe to log?
Hello, I have got this e-mail from Apple:“ Your Apple Pay Payment Processing Certificate is set to expire on January 5, 2023. This certificate is required to encrypt the Apple Pay Token. If you don’t update the certificate before January 5, 2023, customers will be unable to use Apple Pay listed under merchant.<my app>.To successfully update this certificate, please reach out to your Payment Service Provider or, if the payment token is decrypted by you, follow these instructions" Do I need to perform any actions in my RevenueCat configuration?I can not find any documentation for this situation.Thanks for helpSlawek
Hi folks.I’m developing a iOS Flutter app that is available, among others, in USA and Spain.TL;DR: I’m having correct/incorrect prices on my Consumable purchases depending on the Region The long story: I have a paywall for my PRO subscription that it’s working well, showing the same prices I’m configuring in the App Store Connect UI for the different subscription options (depending on subscription duration). AFAIK this is true for all regions I’ve tested.But now I’m developing a new paywall with three consumable purchases that essentially represents bulk PRO license packages (25 PRO licenses, 50 PRO licenses and so on).The main issue here is that when I’m showing the new paywall using Spain region (the main one) the configured prices doesn’t corresponds to the ones configured in App Store Connect. More precisely, all prices are incremented by a nearly ~10% percent. The currency (EUR) looks good.But the same code & config on the iOS simulator (an “stock” iPhone 13 with iOS 15, I hav
My iOS app has a monthly and annual subscription offering, with the monthly price set to $8/month and the annual set to a much more affordable $30/year ($2.5/month). As such, I expect my “retention” for the monthly product to be low, with users deciding within a couple months whether they either want to “Upgrade to Annual” or “Cancel” their subscription.I know from RevenueCat’s charts that my retention rate for the Monthly product is roughly 2 months; is it possible to understand what percent of these “churned monthly subscribers” are cancelling their subscriptions completely, and what percent are upgrading to annual?Ultimately I am trying to assess what the true “LTV per paying customer” is for users who initially sign up for the monthly IAP but then upgrade to the annual.
Using Flutter, I’ve built out subscriptions for Android & iOS using the RevenueCat Flutter SDK. I was a bit confused as to why there wasn’t support for the Web Platform - so now I am having trouble wrapping my head around how to integrate payments on the web platform. I have read through all of the documentation regarding integrating web payments with Stripe, and i have the Stripe integration set up - however, I feel that hasn’t given me a good path to move forward on. Essentially - these are the methods I use to get subscriptions working in my app: // Should I fetch products from RevenueCat or Stripe on the web?Future<List<Product>> fetchProducts();// Should I grab customer information from RevenueCat or Stripe on the web?Future<bool> identify({required User user});// I assume this should be handled by StripeFuture<bool> purchase({required Product product}); The flow of it all is quite difficult for me to understand. For the mobile apps - revenuecat Is t
We need to get a unique purchase ID for non-subscription purchases. It may take some time for the item purchased to be delivered. At this time, we want to show the loading screen. For this, the user device should be able monitor the purchase status. According to our logic, for this purpose the device should periodically send requests with the transaction ID to find out the status on the backend.The webhook gives us the transaction_id:{ "...": "...", "transaction_id": "2000000263221092", "original_transaction_id": "2000000263221092", "...": "...", "id": "3C725F74-BB80-40F0-A409-67F5352D9FCD", "app_id": "appf1fcec6c3f"}The same transaction_id is available in the RevenueCat SDK logs:```plain[Purchases] - DEBUG: ℹ️ There are no requests currently running, starting request POST receipts[Purchases] - DEBUG: ℹ️ API request started: POST /v1/receipts[Purchases] - DEBUG: ℹ️ API request completed: POST /v1/receipts (200)[Purchases] - DEBUG: ℹ️ PostReceiptDataOperation: Finished[Purchases]
I want to create a feature in my app that g9ves a user a free month for free “unlocking premium” if the user invites 3 “friends”. How can I make this happen? When I got on Apple Store Connect It only lets me add a free month at the start of their subscription
I installed Firebase integration inside Revenuecat and also added the neccessary extension to my Firebase project.When I buy a product in my application the event is visible inside Revenuecat but the detailed view not showing up the integrations (it says, no integrations to show) Anyone else experiencing the same issue?PS: I already did the same setup with my dev environment (different project) and there it worked, but now I checked and we did not change anything in that project and the firebase events are not working there neither.
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.