Discussion and help from anything related to RevenueCat.
Recently active
So we get rid of all AppStore/PlayStore integration for processing payment and rely fully on RevenueCat webHook.the main issue that we encounter so far is that when we have a restoreSubscription the RevenueCat webHook does't react also if user has a purchase already and he receive "You are currently subscribed to this" and press OK again the RevenueCat webHook does't react.How can we manage this 2 scenarios ?
I have introduced monthly and yearly subscriptions using RevenueCat SDK in my app. My app including these products has been approved, but the subscription products are still “In Review” status for nearly a week.Is this a regular delay according to your experience? Do you think I should keep waiting?I am concerned because my app offers these non-available products to the customers. Not a good user experience.It seems I cannot revoke these subscription products from review in the AppStore Connect interface. I wonder if it is possible to revoke them and submit them again, if it helps?I wrote to the AppStore support, they replied that they will let the reviewers know. But nothing changed. The waiting silently continues. I keep checking and seeing “In Review” status with no feedback or update.Thank you.
Hello!BackgroundWe’ve noticed that we now typically receive a BILLING_ISSUE webhook followed by a CANCELLATION webhook with a reason of BILLING_ERROR when a customer encounters billing problems in the App Store/Play Store.The webhook documentation does not really tell me what the practical difference is between these two:BILLING_ISSUE:There has been a problem trying to charge the subscriber. This does not mean the subscription has expired.CANCELLATION w/ BILLING_ERROR:Apple, Amazon, or Google could not charge the subscriber using their payment method.The CANCELLATION event with cancellation reason BILLING_ERROR is fired as soon as the billing issue has been detected. The EXPIRATION event with expiration reason BILLING_ERROR is fired if the grace period (if set up) has ended without recovering the payment, and the customer should lose access to the subscription.From the descriptions here, it kind of seems like they are interchangeable. Neither signify that the subscription has expired,
I'd like to track the number of new paying customers we get each month (to calculate CAC). I’ve found two ways to do this, but am seeing large discrepancies between the two. Can someone help me understand the discrepancy, and recommend the best way to get this number?Here is what I’ve been looking at:Active Subscriptions Movement chart - # of “New Actives” for a given month. Customers list - filtered down (e.g. for May, first purchase date >= 2022-05-01, first purchase date < 2022-06-01, total spent > $0) I’m seeing a discrepancy of 13% for May, and 50% for June (numbers are in the low hundreds). My first guess is data lag. This comment suggests that the Customer list can take 2 hours to refresh, but that wouldn’t explain the magnitude of the difference.is there something I’m missing in terms of the definitions for “active subscriptions” and “first purchase date”?From the “Active Subscriptions” chart info on hover:Active Subscriptions shows the number of unexpired, paid subsc
I’m invoking Purchases.shared.purchase on a new iOS app I’m building and all is connected and configured properly (I think), this is what I get: 022-06-21 15:00:24.660227+0100 Mindworks[29422:726454] [Purchases] - DEBUG: ℹ️ API request completed: GET /v1/subscribers/$RCAnonymousID:1001512f67bb474d872e2adbe6ef3a22 3042022-06-21 15:00:24.664658+0100 Mindworks[29422:726454] [Purchases] - DEBUG: ℹ️ Sending latest CustomerInfo to delegate.2022-06-21 15:00:24.664755+0100 Mindworks[29422:726454] [Purchases] - DEBUG: 😻 CustomerInfo updated from network.2022-06-21 15:00:24.664820+0100 Mindworks[29422:726454] [Purchases] - DEBUG: ℹ️ GetCustomerInfoOperation: Finished2022-06-21 15:00:24.664994+0100 Mindworks[29422:726454] [Purchases] - DEBUG: ℹ️ Serial request done: GET subscribers/$RCAnonymousID%3A1001512f67bb474d872e2adbe6ef3a22, 0 requests left in the queue2022-06-21 15:00:24.665013+0100 Mindworks[29422:726540] [Purchases] - DEBUG: ℹ️ GetOfferingsOperation: Started2022-06-21 15:00:24.665164+0
I have a web application as main and a mobile application, Apple also forced us to give the option to charge for apple within the app, we are implementing.But I'm in doubt about his signature at apple after his signature expires due to payment failure, Apple says that it goes into a Billing Retry mode and that it stays 60 days trying to charge…Does this mode only enter when the grace period has been enabled or does it activate the same? My question is, there was no payment, a billing_issue event came, then an expiration event, and a cancellation event comes right after expiration, or does it only come cancellation after 60 days?I'm confused as to how the apple subscription is after it expires due to lack of payment, if it is active, then I enable my client to contract outside (web) with our means of payment and Apple is still trying 60 days, there could be two methods charging together, ours and Apple's... Can I only enable customers to contract outside Apple after these 60 days? Don't
Hi there, so my app has a few options for subscriptions. A couple of those options have an introductory offer. When my app builds my paywall VC it fetches all my products from Revenuecat and uses them to fill in the regular price from the products respective .localizedPriceString. The setup function then passes through a guard which checks if the user has subscribed before by calling .getCustomerInfo and verifying if both .entitilments.all and .allPurchasedProductIdentifiers are empty. If they both come back empty then the introductory prices are added to my paywall vc as well to be presented to the user.In my own sandbox testing this seems to work fine. I submitted my app for review, and it has been rejected a few times now. The first couple were for other issues so assumed the paywall experience was fine. The Revenuecat customer sandbox account seemed to say so. However I have now been rejected a couple times in a row because my paywall is preseting the reviewer the intro pricing but
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.
I am trying to export a list of all customers with an promotional purchase however most (over half) of the users that are export do not have the app_user_id column set.I know for a fact that all these users have an app_user_id as this is used to grant their promotions. It also looks fine for the sample of most recently active users that display in the customer list on the website as they all display their app_user_id under the customers column.I have compared the list of most recently active from the website to what was exported and there are ids on the website that don’t appear in the export.Can anyone provide insight into why this columnmight not be populated for majority of my users on the customer list export? Any help is very much appreciated.
I am migrating my Objective-C game project to V4 but can’t get past a ‘Module 'RevenueCat' not found’ build error.I have added the RevenueCat-Swift.h file and referenced it in the Bridging-Header.h file.I have upgraded Pods. @import RevenueCat; causes a build error. Completely stuck.
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’
Hello. I'm interested in understanding how installing the app on a new device with the same app store id is handled when both devices are logged in with different anonymous revenue cat ids. Will the user have to restore purchases every time they switch devices, because of the "transfer purchase" behavior or are the two anonymous ids reconciled by revenue cat as belonging to the same App store id? Thanks!
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.
Environment: iPadOS 14. I understand that when an anonymous user reinstalls and deletes the app, caling Purchases.configure generates a new app ID, and when he calls restore, the purchase is transferred from his old anonymous ID to his new one. What happens to an anonymous user’s ID if he buys a subscription on device A, then restores on device B.Will device A still be logged in?
Hello,We want to create our own dashboards from the raw data that we received from Revenucat. We transfer the data to BigQuery about 1 day behind. When we group monthly active subscribers by month, we cannot match them with the data in the table that revenuecat provides us. Meanwhile, we find minor differences acceptable. Unfortunately the difference is too much.For example, while the number of active users in May is 1419 in our code, it is 1893 in the active subscriber chart of Revenucat. I am sharing the SQL code I wrote. The logic we have established here, in short, is this. We got price_in_usd > 0 to eliminate trial users so that data is not duplicated. We also set the sandbox area to false to avoid getting sandbox data. We thought that the original_store_transaction_id refreshes itself when creating the store transaction id with every purchase. That's why we thought that when we group and count the original_store_transaction_id by months, we can reach active subscribers. So wha
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?
Hello, I have been using the SDK pretty successfully during testing. Decided to take a break came back 2 weeks later and all of a sudden I am getting “Item not available in your country” error messages when trying to subscribe to any of the subscriptions I have up on my app(APK running on a physical machine at the mo for testing.)The base plan activated for all the products does include United Kingdom and the Google account I am using to make the purchase is also United Kingdom.I’d be more wary of this being my own introduced bug If I was actually changing the code over the last 2 weeks. - hence me reaching out. ScreensError message on display under every subscription available:Google account:Item availability in Google Play Console:Any advice would be greatly appreciated - thanks in advance. David
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
I integrated RevenueCat into an app written in Swift and SwiftUI. It worked all well until now.All of the sudden Xcode throws these two errors when building the app: Could not build Objective-C module 'RevenueCat'At the import RevenueCat statementHeader 'RevenueCat-Swift.h' not foundIn a modul.modulemapThe Content of the modulemap is as followed.framework module RevenueCat { umbrella header "RevenueCat-umbrella.h" export * module * { export * }} module RevenueCat.Swift { header "RevenueCat-Swift.h" requires objc} The weird thing is, that after rebuilding the app once or twice, the errors disappear.However, if I try to archive the app, they pop up every time and prevent Xcode from archiving the Build.I updated to the lates Xcode version some days ago, beside that there's nothing special that could point to the start of the problem.Any Ideas on that?
Hi,I’ve setup my App Store Connect with a test product and added to RevenueCat too. Also installed the latest version of RevenueCat in my iOS app - now I’m trying to do a test subscription purchase on a physical device from within my app but hitting a problem.I see all the initialisation debug messages from RevenueCat in the XCode debug window - however, when I’m making the call to Purchases.shared.getProducts([“my_product_id”]), RevenueCat is not returning any product back. The SwiftUI code I’m using is pretty much exactly the same as posted by @Michael Eovine in his post from a few weeks ago @ Note: I was hoping the RevenueCat documentation would help provide some useful details but surprisingly there’s only one single mention of ‘getProducts’ (see https://docs.revenuecat.com/docs/ios-native-3x-to-4x-migration#api-changes-1) and it’s in the context of it replacing the ‘products’ call. Can someone from the RevenueCat support team please assist in either suggesting troubleshooting st
Hello, we are having trouble with getting Apple Search Ads attribution data for our app. We have followed the integration instructions located here: https://docs.revenuecat.com/docs/apple-search-ads, and have added the required configuration line: Purchases.automaticAppleSearchAdsAttributionCollection = true We also made sure that the iAd framework is imported in our project. Our apps asks authorization via the App Tracking Transparency framework. We are running ASA for quite a few weeks now, and have released the version with the attribution configuration more than two ago, but we cannot see any kind of breakdown by campaign or adgroup in the Charts segmentation settings. We are only seeing Organic users: We don’t know what we are doing wrong. Is there any way that to test our configuration in Sandbox mode? Any help is appreciated, thank you!
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!
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.