Get help with anything related to RevenueCat.
Recently active
I’m trying to delete two unused products (the ones without entitlements in my account). However, when I try to do this, I get a message saying that they can’t be deleted because there are transactions using that product.However, no matter where I check (lists, charts, sandbox purchases, etc.) I can’t see any record of subscriptions using those products. How can I determine what transactions are being referenced so I can successfully delete the products?Separately, I ordinarily wouldn’t care about having unused products, but I’ve been experiencing an issue where I see [Purchases] - WARN: 🍎‼️ Invalid Product Identifiers messages for those two products appear while testing my iOS app on a physical device.I receive 50+ of these messages within ~1 second, memory usage for the app spikes from 30MB to >2GB, and the entire app crashes. What is going on here and how can I resolve this issue? I’m very concerned that my users could be experiencing this as well.
After subscription expires due to non-payment on IOS can I create a different grace period (example of 3 days) and control it on my own or if it is expired at Apple, the customer really must not have access to my Application and Apple prohibits it if they have access for a few more days even though the grace period has not been enabled from native Apple?
How many days before renewal (expiration date)can a BILLING_ISSUE event come from Apple?In Apple's documentation they say that they try to see if there is a problem with a payment with the customer 10 days before and 24 hours beforetry to renew the customer's subscription several times.I was in doubt if I can receive a BILLING_ISSUE 10 days before that period or if it would only be within 24 hours before.
Hi, We already have a Stripe webhook endpoint that does preprocessing and database updates for the webhooks listed here among others on our Express server. Is there a way to `forward` that webhook that Stripe sent our server to RevenueCat once our updates are done rather than having Stripe send RevenueCat the webhook directly? Inside those webhooks from Stripe am I simply able to call the following endpoint and the subscription status would automatically updated in RevenueCat, thereby triggering a RevenuCat webhook?await axios.post('https://api.revenuecat.com/v1/receipts',{ app_user_id: userId, fetch_token: subscription.id },{ headers: { 'X-Platform': 'stripe', Authorization: `Bearer ${config.revenueCat.stripe}` } })
I have several offerings, one of them is the Current.I fetch the offering in my react native app this way: import Purchases from 'react-native-purchases';export const Premium =(props: {}) => { useEffect(() => { (async () => { const offerings = await Purchases.getOfferings(); console.log(offerings.all) <----------- })() }, []); ...}In dev mode, ‘all’ includes all my offerings including custom offerings, however in production only my Current is included in ‘all’
For testing/sandbox, can we have conditionally allow transfer vs block restore?It’s quite difficult to keep all the test accounts inline and temporarily enabling restore behavior to transfer in the dashboard can lead to other issues affecting prod users.
Hi! We are trying to use ‘Grant Promotion’ to user.And want to know how to give promotion to user who not yet registered in Revenuecat But our app. Condition:User never subscribes ,(so there is no data in Revenuecat)Is there any way to push our user data to revenuecat?
When I make a purchase from the SDK, my backend calls a method to validate the purchase with the subscribers api.The response returned has a body like this:{ "request_date": "2022-06-21T11:55:20Z", "request_date_ms": 1655812520624, "subscriber": { "entitlements": { "active": { "expires_date": "2022-06-14T06:23:52Z", "grace_period_expires_date": null, "product_identifier": "onemonthusd899", "purchase_date": "2022-06-14T06:18:52Z" } }, "first_seen": "2022-06-21T11:11:25Z", "last_seen": "2022-06-21T11:11:38Z", "management_url": null, "non_subscriptions": {}, "original_app_user_id": "$RCAnonymousID:e7d81c263043488bb14c909718f83508", "original_application_version": "1.0", "original_purchase_date": "2013-08-01T07:00:00Z", "other_purchases": {}, "subscriptions": { "onemonthusd899": { "billing_issues_de
Hey everyoneI read the blog post re WWDC2022 and it mentioned that there should be an App Store Connect API to create in-app purchases manually.Link: https://www.revenuecat.com/blog/wwdc-2022-recap/However, I wasn’t able to find anything in the actual documentation of the App Store Connect API.Does anyone have any more details?Thanks!
I have a multi-platform SaaS (Software as a Service) for iOS, Android, and web. Purchase ServicesWeb: StripeiOS: Appstore IAPAndroid: Google Play IAPAll purchases are connected to RevenueCat.As far as I can tell, there is no library for web developers to access information, only a REST API. How are websites checking if a user is a entitled/paying member? My current plan for implementation is as follows:Get Subscriber via Rest AI Check the resulting object’s `subscriber.entitlements[‘my-entitlement-id’]` paying/subscribed if exists & if `expires_date` > `current_date` Question 1: Is this the best method to achieve this OR is there a web SDK somewhere?Question 2: How often should I poll for subscription information?Should I hit the database every time they navigate to a new membership page? Should I cache the membership information for a specific amount of time (somehow?)
Just learning our way around the console app, and noticed that on our Setting page, where you can select the “Restore Behavior”, there is a link to documentation. Unfortunately, that link comes up with a 404. Does anyone happen to have the correct link?
Hello,I know based on legal/irs rules, we are not allowed to collect subscriptions and manually pay the person the end user is subscribing to. I know stripe has connect, which the 3rd parties authenticate and provide their payout details (ach or otherwise). Then they also deal with creating the IRS forms and such. Does Revenuecat support taking subscriptions on behalf of another business entity?
Hi there, We're using `purchases_flutter: 3.9.5` in our Flutter app. When I sent a Test Flight with our IAP implementation, all users get an iOS popup saying the `Apple Media Services Terms and Conditions have changed`, which upon pressing "ok" takes the user to a blank screen. This state is so weird that revenue cat doesn't even return anything from the Purchase method. So by closing this blank screen the app just hangs on loading, waiting for Revenue Cat to return a response from the purchase method, which it never does. Closing the app completely causes the Terms to Pop back up once again, but this time it loads, and upon pressing accept the iOS "successful purchase" pop up comes up. Any following purchases work as expected, without the terms. All iOS beta users are facing this issue the first time they try to perform the purchase. Will this happen in the live app? Anyone know what to do here? Thanks
Hello! I have few question about RESTAPI “Delete Subscribe” If I call this , Store’s subscirbe is canceled? (appstore,playstore..)
My app has offered monthly and annual auto-renewable subscriptions. I would like to offer a special auto-renewable subscription with a longer free trial period for a limited time, e..g three days. The expected behaviors are:People can only buy it within the three-day period After the three-day period, existing subscribers will still be auto-renewed but no new customers are allowedWhat’s the best way to implement it? Thanks!
Let’s say I have two products both of which are auto renew subscriptions. Both give the same entitlements. Product A is $10 per monthProduct B is $15 per monthWe offer product A to select customers. Is it possible to migrate a user who has purchased product B to product A? I know I can change the price of product B to match A but I only want to affect this single user.
Is there a way to create a new customer from inside your app (both Android and iOS), without the customer buying anything? The idea is that I can then assign an entitlement for those customers. The above question stems from the following problem. My app operates on a one year subscription basis. However, an organization wants to pay for multiple subscriptions for their participants. I would like to bill the organization separately and allow the participants to access the paid content.
Hello everyone!I’m seeing that there are some differences between the documentation in https://docs.revenuecat.com/docs/ios-products and the iOS product page (https://appstoreconnect.apple.com/apps/xxx/appstore/subscriptions). Is there an ETA for upgrading that documentation?
I have an app defined in the Google Play Store and the goal is to sell subscription. I already have all the products defined in Google Play and Revenuecat. My problem is what to fill in Google Play app price item. Prices are for subscription only. Should I set the price to unpaid? Or paid with zero price?
I get this error when I try redeeming an offer code in a production app. It shows me the screen to enter a offer code and then shows a progress indicator which then leads me to this screen
I’m storing the “point of entry” that turned in a purchase. If entitlements changed I log the point of entryThis approach worked fine for months, but as the app ages, it seems more paid users are returning, and instead of using the restore option, they are actually buying the non-consumable again, so I’m getting more and more false flagsI looked at the entitlement properties, and I expected that checking equals for originalPurchaseDate and latestPurchaseDate might have been the solution. But at least in the sandbox, no changes occur to any of those dates after a repurchase I see purchasePackage returns an SKPaymentTransaction, which has a transactionDate and an “original” property with a transactionDate. So I could probably delay the storing and cancel if I see both of those dates not matching, but I was hoping to keep all the logic in the delegate when purchaseInfo changed
We have a few subscribers who have had minor issues with the subscription product in our app. As a sign of good faith, we’d like to proactively offer them a free month so they stick around. We’ve seen articles for providing an introductory offer, but our use case seems to be a little different. Month 1: User starts an active monthly subscription (user pays)Month 2: We provide a “free month” so that the user is NOT billed on renewal (user does not pay)Month 3: User is automatically billed again moving forward (user pays) Is there a way to do this while keeping the subscriber active throughout the entire process, and all behind the scenes so no action is needed from their end? Any feedback is appreciated. Thanks!
I have a Flutter app with $0.99 one-time consumable product. Customers start the purchase and cancel it about half a minute later when the Google payment bottom sheet appears. RevenueCat returns:PurchasesErrorCode.purchaseCancelledErrorIt's my first app with revenue, so I have nothing to compare it with. Is it normal that most of the time users start and cancel their payments?
Hi, If we set id “A” as a user app id in RC and set id “B” as a user alias for the same user, is RC will be able to match a user with the id “B” knowing that it is not the user app id?To give you more context, we need id “A” to be set as a user app id as we need this id to be sent to Amplitude. But we also need id “B” to be set for the user as we need to it to match user between different platforms (iOS and MacOS).Could you confirm that it is the order that determine which id is set as the app user id?According to this question, it is the case so it means we should first set id B then id A then. Hope my question is clear, Thank you, Damien
In the image it shows a renewed subscription, right after it shows payment error, but on Google Play it is renewed.The problem is that the user is getting a billing_issues_detected_at warningIt's been two days and there's no equality in the datacould someone help
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.