Discussion and help from anything related to RevenueCat.
Recently active
I have 2 products in the AppStore: a monthly subscription and a yearly subscription, and I am testing the RevenueCat API in sandbox.the purchase function (Purchases.shared.purchase(package: package)) seems to be working fine, there’s no error.I’ve tested a scenario where I buy a monthly subscription, and then a yearly subscription right after, the purchase function returns the CustomerInfo with old info (still the productIdentifier pointing to the monthly subscription). However, Purchases.shared.restorePurchases actually return the up to date CustomerInfo with the yearly subscription.Here’s the code I’m using to purchase:static func purchase(package: Package, completion: @escaping (_ info: CustomerInfo?, _ error: Error?, _ usercancelled: Bool) -> Void) { Purchases.shared.purchase(package: package) { transaction, customerInfo, error, userCancelled in completion(customerInfo, error, userCancelled) } } Could it be a bug or is there something wrong wi
I am making a test purchase for a monthly subscription. It happens correctly the first time and for the correct user. I am using the always accept visa card from google testers. There is exactly one renewal happening which is fine and the second time I get CANCELLATION with BILLING_ERROR on the sandbox.
Hi Team - My goal is to setup offer codes to allow customers coming from partnerships to redeem prepaid subscriptions.After setting up auto-renewing subscriptions, I’ve hit a snag implementing Offer Codes in my iOS app.The following has been configured:2 subscriptions(yearly and monthly) setup in App Store Connect under same the subscription group Both subscriptions are at the same level of service and include a 7-day trial period Subscription key uploaded to RevenueCat Created 1-year free offer codes under the yearly renewable subscription Offer code is for new, existing and expired usersObserved user experience:User logs in to app and subscribes to monthly renewable subscription User then navigates to https://apps.apple.com/redeem?ctx=offercodes&id=1579782821&code=CODE to redeem 1-year free offer Code is accepted and Apple ID authorization is prompted After authorizing the subscription a error is presented stating, “ This offer can’t be redeemed with your current subscription
I setup every thing as in documentation and wait for a weak and still getting that error “Invalid Play Store credentials “ after making purchasewhat should i do now ???and dose space in Service Account credentials JSON string make a different ?
If a user subscribes to a free trial, cancels that free trial, and then later attempts to initiate a free trial again for the same product, they are immediately (and unexpectedly) charged by Apple. Our app has language around free trials, and we’d love to find a way to dynamically update this language to no longer mention the free trial once the user is no longer eligible under these conditions. Is there any way for us to know whether a user is, according to Apple, eligible for a free trial?
If there is an attempt to change the purchase (switch between subscriptions), while app is without internet we will get a response like this:`PurchasesError(code=StoreProblemError, underlyingErrorMessage=Error finding existing purchase for SKU: something, message='There was a problem with the store.')`All the next attempts (even if the internet is now available) will return the following response:`PurchasesError(code=OperationAlreadyInProgressError, underlyingErrorMessage=null, message='The operation is already in progress.')``This is happening until the app is killed and restarted.
I’m integrating RevenueCat into an app with a custom configuration and AB testing system. I can mirror some of what my app does in RevenueCat by setting up different offerings in RC. Then RC can report its transaction centric view segmented by the cohorts that my custom client side code creates. But to achieve this I need the client/app to call a RC API to set the users current offering. Is there a way to do this?
Hi TeamI have integrated RevenueCat InApp purchase. I created subscription details screen in mobile app. Like Current plan name, status, period etc. which are fetch the details from backend server. We are managing all events on backend side then mobile side, We are fetching those details from the server via REST API. So plan status is Active once cancel current subscription plan from App store. It should be receive cancel event in web hook and get updated status from backend api.What is solution for get web hook event on time. ?
Hi TeamI have integrated RevenueCat InApp purchase. I created subscription details screen in mobile app. Like Current plan name, status, period etc. which are fetch the details from backend server. We are managing all events on backend side then mobile side, We are fetching those details from the server via REST API. So plan status is Active once cancel current subscription plan from play store. It should be receive cancel event in web hook and get updated status from backend api.What is solution for get web hook event on time. ? Thank
Hi,How can I get the current App user id not the original one?We can have purchaserInfo?.originalAppUserId but I need current app user id to differentiate between different devices of a single user.
Hello, If you get the error : TypeError: _reactNativePurchases.default.setup is not a functionThe getting started for RN is not up to date.The Purchases.setup("public_ios_sdk_key") is no more available.https://docs.revenuecat.com/docs/getting-started#7-configure-the-sdkYou should use Purchases.configure({ apiKey: "public_ios_sdk_key" }) instead.https://docs.revenuecat.com/docs/configuring-sdk#initialization
Please have a look at this customer:https://app.revenuecat.com/customers/64393e08/044c7fb8-183a-4928-be54-44b513ccd58aAccording to the history he bought a subscription with us on 19th August. But the webhook was fired today. This is a delay of 5 days which is totally unacceptable for an in app payment.Please verify whether the buy date (19th Agust) is really true or an errorAnd if it is true, you have to make sure such delays won’t occur anymore. Such huge delays can make customers get really mad and make them want their money back.
Hello, My app has 3 products, Monthly, Annual, and Lifetime packages in 1 offering. On launch I call getOfferings, take the current offering, and store the packages. My paywall is dynamically generated based on these packages. When I try and call purchase() on my Annual or Lifetime packages it works fine, but my Monthly fails with a weird error: 2022-08-23 11:00:18.932233+0930 Pestle[44020:4973217] [Purchases] - INFO: 💰 Purchasing Product 'mymonthlyoffering' from package in Offering 'Pro Upgrade'2022-08-23 11:00:23.562161+0930 Pestle[44020:4973974] [Default] [StoreKit] Received error that does not have a corresponding StoreKit Error:Error Domain=ASDServerErrorDomain Code=3502 "This item is not available." UserInfo={client-environment-type=Sandbox, storefront-country-code=AUS, NSLocalizedDescription=This item is not available.}2022-08-23 11:00:23.562331+0930 Pestle[44020:4973974] [Default] [StoreKit] Purchase did not return a transaction: Error Domain=ASDServerErrorDomain Code=3502 "Th
I am wanting to change a user’s current offering depending on how they answer certain questions in our onboarding flow (before seeing the paywall). I am able to successfully update their current offering using the REST API, but when the user reaches the paywall, the “standard” current offering is still shown, not the user’s customer current offering. I read somewhere that the current offering is cached on app launch. Is there any way to refresh this without having to restart the app?
We’re integrating RevenueCat to our Unity app, but we can’t seem to find the way to display the detailed logs I’ve seen around in the documentation and in this forum. Those described here. I’ve tried in both an Android and an iOS build.I am, of course, calling SetDebugLogsEnabled(true) before calling Configure(...), as prescribed in the docs. I can also correctly purchase sandbox subscriptions using the SDK, so the setup phase seems to be working fine. (We’re using RevenueCat SDK 4.0.0 and Unity 2021.3.8)
I'm using lib 4.1.2 purchases_flutter.My app requires login to be subscribed.Subscribe works correctly, the problem starts when I log out of the user and log in.When I login again the entitlements active comes empty, if I reopen the app it also comes with empty entitlements.I'm using test user on android with annual subscription renewed every 30 min.Any tips?
We have custom subscribers attributes like persona and we would like to be able to segment and filter graph based on this. I don’t think it’s possible today, is it in a planned featured? It would really help to estimate LTV and revenue per persona.
[React native IAP implementation]Hello! I’m implementing a redeem code button that will redeem discounted annual products in my app. The way i implemented to check it was add a purchasesListener when he clicks the redeem code button, the problem is I want to remove the listener when he goes from page A ( page with redeem code button ) to another page B ( meaning he did not reclaim the coupon ), or when he enters another specific page C in our app, that is se screen after the paywall if he did not claim any offer codesI don’t know if I agree with the interface of this purchases listener. Having to pass a function reference when i add and when i remove means i have to keep track of this function reference in some sort of global store or do some workarounds only to keep the exact reference i used to remove…Couldn’t the sdk accept a function and keep inside the sdk the reference to the function, making it immutable across app’s lifecycle?I thought it this way→ add purchasesListener ( cal
Hi there.I offer yearly renewing subscription to my users.Now I want to create a referral program when the user gets 1 year of subscription as a gift.On Android I can refund him, but what about Apple?How can I grant them the free access without asking them to stop the renewing?
Help me please why Step App Review IOS require in-app purchases within your app. Suggest me when i will publish , must to any config.Present i show in app purchase by StoreKit testing it show normal (can display item). Why My to rejected
Is there a list of all the error code number? Ideally we could rely on an enum to decide what message to display or if we want to attempt a retry, but there is a code number in the SDK’s error that could be the next best thing:We could use that, but we can’t seem to be able to find a comprehensive list of all the errors with their codes, only this list of strings. Where can we find such a list? (We’re using RevenueCat SDK 4.0.0 and Unity 2021.3.8)
Hello everybody!I've been working on a react-native project which already has a subscription flow that uses stripe on it's web version. The subscription is currently being managed in our back-end and basically, what we do, is to link an entity User (this one is generated in the register flow) to an entity Customer that is responsible for storing the payments data (this one is generated after a purchase is made through stripe). To keep the subscriptions status up to date, we have an endpoint that receives webhooks events from stripe and updates the data in our database. with that being said, the problem I'm facing right now is: As I'm using the revenuecat lib to perform the in-app purchase, how can I match each new purchase with a customer of my database?I've tried using the apple server notification service, which is working fine, but I don't know how to link the received payload to a user or a customer. If there is any data in there that I can link to Revenuecat, please let me know be
Greetings,We have a product with subscription. We offer 1-month, 6-month, and annual plans. It’s already working on iOS and Android.On Web/Stripe, it can be done in two ways:Create one Product with 3 Price objects. Create three Products with one Price per Product.RevenueCat Doc says “In order for Stripe subscriptions to unlock entitlements, you must set a Product Identifier in the desired Offering to match a Stripe product ID exactly.” Which, to us, means that it’s preferred to have 3 difference products (option 2 above). That would also be in-line with Apple Store and Google Play.However, Stripe’s Pricing Table (and other tools out there) differentiate between 3 products and 1-produce-with-3-prices. What’s the recommended way of setting this up? Any limitations or drawbacks on each option?
We have the combined issues of 1) purchase requests hanging and 2) PurchaseErrorCode.operationAlreadyInProgress for our flutter app. Haven’t been able to reproduce on our side but have several users recently report this.Example of a recent Android report: https://finch.hellonext.co/b/Bugs/p/can-t-sign-up-for-trial-with-monthly-billing. We always display the error code that is returned (like in the bug report screenshot) but it sounds like some users can have requestToPurchaseProduct effectively hang without an error code returned. Is requestToPurchaseProduct always supposed to throw an error to timeout, or are we expected to handle timing out purchase requests ourselves?After the hanging, users who close the app and retry again end up getting stuck with PurchaseErrorCode.operationAlreadyInProgress. The error documentation said to wait but the user has been stuck with PurchaseErrorCode.operationAlreadyInProgress for a while, so is there any recommended ways to debug/handle this state?
Hi, I am developing an app in South Africa, can I use RevenueCat to accept payments / subscription payments in my country? ThanksBruno
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.