Discussion and help from anything related to RevenueCat.
Recently active
Hey!I’ve encountered really strange issue. As I was analysing data received from RevenueCat webhooks, I saw that time of `purchased_at_ms` was moved by 8 hours comparing to what it should actually be. I’m still analysing the data but for now I see a clear dependency between events and the issue.When we received the BILLING_ISSUE event and then the CANCELLATION event, the RENEWAL event that came after that had a proper time (the purchased_at time was a few seconds or a few minutes before we received the event). When we don’t receive any of these events, the purchase_at_ms time is 8 hours ahead of time we received the RENEWAL event. Also, when I purchased from sandbox account, I received a proper purchased_at_ms time...The data I’ve analysed so far contain only users that use iOS.Have you seen similar issue?I’ve checked a lot of users’ data and I don’t see any other dependencies...
Hi, I have checked all of the items in and made sure its all correct. The app is not released but published in a close testing channel which I’m part of. Still, no offerings come back, whats going on? These are my logs: D/[Purchases] - DEBUG( 1110): ℹ️ API request started: GET /subscribers/%24RCAnonymousID%3Aafb7767ec56d420081f8cce0563c5200D/[Purchases] - DEBUG( 1110): ℹ️ API request completed with status: GET /subscribers/%24RCAnonymousID%3Aafb7767ec56d420081f8cce0563c5200 201D/[Purchases] - DEBUG( 1110): ℹ️ Sending latest PurchaserInfo to listener.2I/System.out( 1110): (HTTPLog)-Static: isSBSettingEnabled falseD/[Purchases] - DEBUG( 1110): ℹ️ API request started: GET /subscribers/%24RCAnonymousID%3Aafb7767ec56d420081f8cce0563c5200/offeringsD/[Purchases] - DEBUG( 1110): ℹ️ API request completed with status: GET /subscribers/%24RCAnonymousID%3Aafb7767ec56d420081f8cce0563c5200/offerings 200D/[Purchases] - DEBUG( 1110): ℹ️ Requesting products from the store with identifiers: somus_isa
I am getting a "Invalid Product Identifiers" error followed by this other error:"None of the products registered in the RevenueCat dashboard could be fetched from App Store Connect [...]".This is for a new iOS app, not yet live on the App Store. I'm testing on a real device.I have followed the guides carefully and I have gone over the post here and some other posts in the community but can't figure out what the problem is.This is all I have checked:"The product identifier set in RevenueCat matches exactly with the store". Not really sure what is exactly meant by product identifier here. I have tried both the Bundle ID and the SKU and got the same errors. ❓ "You're testing on a physical device and not a simulator". I'm testing on physical device. ✅ “The bundle ID in Xcode [iOS] or package name [Android] match what's in App Store Connect or Google Play" Bundle id matches ✅ “If you have both development and production environments for your app, be sure to double check you are using the c
Hi,I have a question regarding RevenueCat.As an example: Suppose a company has the following:- Company has three iPads- these three iPads are associated to one Apple ID- each iPad registers with its own business email address and password- The password is only for the company and controls things like delete account etc. (administration)- Licenses are associated with this own business email address.Does it work that I can implement a monthly subscription to each iPad, i.e. for each email address with RevenueCat?
I have a problem using RevenueCat on IOS.When I login user A account and link it to RevenueCate. And Then Buy Package A. On the same phone, I logout account A then login account B and the buy Package B, but the list of entitlements returned entitlements A and B.In this case, Can we link Package A to account A and Package B to account B?
I’m implementing RC on Android. Sandbox testing.My use case is this:✅ I make a purchase in the app and reload the purchaser info ✅ The user correctly now has an active subscription, in both RC and Google Play Store❌ 5 minutes later I re-open the app and load purchaser info. The active subscription is gone from RC, both via getPurchaserInfo and on the website✅ On Google Play Store it’s however correctly still active and I keep getting purchase confirmations mails every 5 minutesWhy is the subscription deleted from RC after the initial 5 minute subscription period?
Relatively minor but just seeking some clarification on the numbers in the dashboard. We are currently doing testing and haven’t published the app to a production environment yet. As it stands the dashboard is showing 132 new customers and 138 active users, all of these are test users. Deleting the test customers does remove them from the Customers list (after a period of time) however the dashboard still seems to count them. Active users, as I understand it, is just the number of user ID’s (including anonymous/generated) that have been seen within 28 days. My question is over time we’ll still be testing things and will interfere with these numbers. Is there anyway to differentiate between the testing users and production. Toggling the ‘View Sandbox data’ doesn’t seem to effect these numbers?
I would like to track on my server when each user first subscribed. I hit the /subscriptions endpoint and check `subscriber.original_purchase_date`, but it is set to some date in 2013 (I only started implementing IAPs in the past couple of weeks). The property under `subscriptions.<product>.original_purchase_date` seems correct, but I would prefer not to have to check every product in that `subscriptions` dictionary for the earliest date, especially not knowing right now which products I will want to add later, and which of those I will count as subscriptions.What is the purpose of `subscriber.original_purchase_date` and why is it set so early? Is it an artifact of Sandbox testing? A bug?
Hi , My Android app suddenly became returning an empty string on getDescription() . no code change on my app. however thegetProduct still return the products info.
Hello,I have an app, where I’m selling pictures. I have Non-Consumable and Auto-Renewable Subscription formula. This means, you can buy pictures one by one or you can subscribe for one year to get all of them. My GET API check your inventory, to make sure you own the image. Therefore I synchronise the database via Webhook. My RevenueCat structures look like this:I have 1 offering called default, with 2 packages (Annual and Lifetime) Annual package has 1 product Lifetime package has 1 product (I don’t want to map the product-image one by one, cuz it’s not scaleable) I have 2 entitlements First one is for lifetime things, therefore this has only 1 product (Lifetime package) Second one is for subscriptions and lifetime things, therefore this has 2 products My problem is, if my customer make a Non-Consumable purchase (so buy only 1 image), my webhook called, but i do not know, which image was bought. I know who bought, cuz after login I’m settings the app_user_id. Any suggestion?
User got purchase transferred from another user, in the renewal event after this transfer the webhook did not receive app user id, instead only RCAnonymousID is included in the webhook request. How do I know which user had this renewal in this case?
Hi, I have successfully running RevenueCat in-app subscriptions and now integrating another subscription method - Stripe Web Payments. I have created Products in Stripe and have created Products in RevenueCat using product ID from Stripe as product key in RevenueCat. I also have tried to create RevenueCat products using price id from Stripe. After I make a purchase in Stripe, I want to validate receipt so purchase appears in RevenueCat by making a POST request to API:curl --location --request POST 'https://api.revenuecat.com/v1/receipts' \--header 'X-Platform: Stripe' \--header 'Authorization: Bearer *** MY_STRIPE_KEY ***' \--header 'Content-Type: application/json' \--data-raw '{"app_user_id": "iLxQ2wdl26","fetch_token": "sub_1KRgPlGOGvcC5HQI5pE"}'But no matter of the configuration, I get this in response:{"code": 7103,"message": "The receipt is not valid."} Maybe anyone has any tips that I might be missing? Cheers,Daniels
Got this error while trying to setup Purchases 3.4.3 in React Native.Method addObserver must be called on the main threadAnyone faced it?
Besides the sdk still being in beta(rc), would you say it has the features to be used in production? or does it not yet have all the basic features of the old sdk? Will RevenueCat support the new refund API apple introduced past WWDC with v4?
Hello, I’m getting credentials issue with google play store in my flutter app. I created them about 5 days ago so more than 36h has passed. Also I creted other credentials but couldnt get it to work neither. DEBUG(19728): ℹ️ API request started: POST /receiptsD/[Purchases] - DEBUG(19728): ℹ️ API request completed with status: POST /receipts 503E/[Purchases] - ERROR(19728): 🤖‼️ There was a credentials issue. Check the underlying error for more details.I/flutter (19728): ERRORI/flutter (19728): PlatformException(11, There was a credentials issue. Check the underlying error for more details., {code: 11, message: There was a credentials issue. Check the underlying error for more details., readableErrorCode: InvalidCredentialsError, readable_error_code: InvalidCredentialsError, underlyingErrorMessage: Invalid Play Store credentials., userCancelled: false}, null)
Hi,I have multiple entitlements in my app and I want to group the products under respective entitlement on my paywall. I am able to get only purchased entitlements from `getPurchaserInfo` . Is their a way to get the "Associated Entitlements" for all products (both purchased and not purchased)? Thank you
I know its not possible to cancel a user’s subscription using the RevenueCat’s SDK however we want to build a user experience in the app where if a user presses on a ‘Cancel’ button we navigate the user to the settings app of their OS. For example in React Native you can use `Linking.openURL('app-settings://notification/')` to navigate the user to the notification's settings of the app. Does anyone know what the url is for the `manage subscription` setting page in iOS and Android? If you want to see a real-life example of this, check out the Strava App.
When I test the subscription in the sandbox, it prompts:Apple Media Services Terms and Conditions have changed.Finally, "Coming Soon!" appears and it is over, there is no response.Please see the screenshot below to help me see if any steps are missing.thank you all.
Hi, really loving RevenueCat!I have the following situation:Android App I initialize Purchases SDK in the AndroidApplication class with an anonymous User ID User logs in → I log in the user into the purchases SDK → User has an anonymous ID + my domain user IDThe problem happens, when the following happens:The user purchases a subscription with automatic renewal The user uninstalls the app and then installs it again The next time the webhook calls my backend for the renewal, it will contain ONLY an previously unknown anonymous ID and no way for me to match it to the userThe main problem stems from this I believe:Current App User ID Provided App User ID already exists? Provided App User ID has anonymous alias? Result Anonymous Yes Yes PurchaserInfo changes to Provided ID, no aliases created. My solution is to manually alias the current app user Id every time a user logs in IF the current app user id is an anonymous one. It has worked so far, however, it feels strange. Is t
Hey team, consider the following scenario: User Signs up. We show them an “Initial Paywall” Offerings: $20 month, 2 week free, $80 a year, 2 week free Here, we let the user “Skip” the Paywall In this case, we don’t show it to them again, for 2 weeks _2 weeks later_. We show the user a “Blocking Paywall” Offerings: $20 month, $80 a year Some users buy at “Initial Paywall”, some users buy at “Blocking Paywall”. 3 months later, the user goes to their “Membership Settings” We want to let the user upgrade / downgrade Here, their `activeSubs` could contain _either_ 2 weeks free, or notProblem:Let’s say in the upgrade / downgrade, I have “$20 a month”, “$80 a month”. A user on the “20 a month, 2 weeks free” _can theoretically “upgrade” to the $20 a month plan. This feels like a bug, as it won’t make a difference -- I would like it so they can only upgrade to the yearly one. Is there a “best way” to handle this scenario?
A customer of ours is encountering the error shown below in our React Native app on Android. It seems that from my research, this message is coming from Google’s subscription service. How do we troubleshoot?
Hi, We were wondering if there is a way to get the experiment name or id and the variant the user is in from the user object in the React Native SDK?Or does it come via the Webhook at least? Thanks so much!
Hey,We are reaching you because we have some questions concerning the switch between alias id and transfer purchase.Today we use the alias behavior, but we would like to have one user id = 1 subscription, so we should migrate to the transfer purchase behavior.What will happen for users who share a subscription with multiple ids (aliased)?Also, we would like to know if it's possible to detect the email linked to a subscription before he restores his purchase? If the purchase is already linked to an email, we would like to prevent our users to restore their purchase.Thanks a lot!
When using revenue cat on flutter, I am getting the billing unavailable error at times and cannot access any subscription info about the user, Mostly occurs when device starts offline, then later refreshed with internet connection, navigating to the page that checks subscription then gives billing unavailable error
Hello,I have user crashes related to configuring Purchases. However, when i have experienced this crash, it is when i am trying to close the app. I have a single exit point and use:startActivity(intent);finish();before moving to a new intent. My exit looks like the followingThread.currentThread().interrupt();finish();System.exit(0);finish();Any thoughts?
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.