Get help with anything related to RevenueCat.
Recently active
On the paywall when the user select the plan then below are the set of issue i see.Main Issue: The subscription bottom sheet for the password to complete the purchase appears and then it’s all set appears but then the user is not navigated to further screen on the app and remains on the same paywall screen, again selecting the same plan it gives “You are the same plan with the purchase time stamp” but checking the same on the revenuecat it’s neither on the customer history nor on the firebase subscription table that has been created by revenuecat official extension. For the few instance I see the data is capture on the revenue cat and table but still the user stays on the paywall There is delay when the revenuecat share the data on the firebase subscription table mostly 4-5 mins delay from the event occurred On the Test flight after plan successful purchase user has to wait for 20 seconds to navigate further app page example welcome pageAll the above issue are specifically on the Tes
I’m curious how the API to override a user’s current offering, and the new targeting rules interact.My understanding is the targeting rules override which offering is designated the current offering for a user. If the current offering was manually set via:https://api.revenuecat.com/v1/subscribers/{app_user_id}/offerings/{offering_uuid}/override ...does that still take precedence over targeting rules?
Hey,When I call the v1/subscribers/{app_user_id} endpoint, in the response there is an array under the “subscriber.non_subscriptions.product_name” key containing the purchases of that product. My question is if there is a limit on the number of purchases that can be returned there and if so what happens if that limit is reached? I see that the oldest purchases are returned first, so I’m worried if there is a limit, then I won’t receive the latest purchases. The documentation says nothing about pagination for this endpoint. https://www.revenuecat.com/docs/api-v1#tag/customers
According to Revenue Cat, I made $151 with 24 transactions in June 2024. However, Apple only sent me a payment of $92.46 today stating 19 units sold. The previous month, Revenue Cat reported $44 in revenue and Apple paid me $37.29, so I know up until this month, Apple was paying me in full minus the 15% fee for small businesses. How can I figure out why Apple paid me less than usual. I have started receiving international payments, so my hypothesis is that Apple is not paying me for countries outside the US and Canada. If so, how do I start receiving those payments as well?
Hi, when adding an image to the template no matter what size or aspect ratio I choose it crops the image to a small portion of the top centre of the image. Can you recommend the correct image size to use please?
I have a user on Android in the UK (we are in US). He is saying that there is an error message persisting when he opens the app:error retrieving productThis likely would occur from await Purchases.getOfferings(); but I am unable to determine because the logs & stack trace are a dead end. Any ideas?
When running in debug mode in Visual Studio Code, the following error occurs when executing the line below:CustomerInfo customerInfo = await Purchases.purchasePackage(package); Error:E/[Purchases] - ERROR(22467): 🤖‼️ BillingWrapper purchases failed to update: DebugMessage: . ErrorCode: ITEM_UNAVAILABLE.nullE/[Purchases] - ERROR(22467): 🤖‼️ PurchasesError(code=ProductNotAvailableForPurchaseError, underlyingErrorMessage=Error updating purchases. DebugMessage: . ErrorCode: ITEM_UNAVAILABLE., message='The product is not available for purchase.')However, when I install the app from the Google Play Store, which is already published in the closed test track, and execute it, I can make purchases with a Sandbox test account.Is it not possible to test RevenueCat in debug mode? Do I need to upload the app bundle file to the closed test track every time to perform the tests?
i see Opted-out of renewal on the subscription history of our subscribers. does it mean refund?it’s too confusing. does it mean they paid the subscription but will not renew next year?
I am trying to localize Paywalls with no success.I tried to enter detailed text in Paywall setup.However, month and year words are never get translated.Actually, They are both localized inside Google and Apple stores.They show up correct once you go inside Apple or Google after clicking paywall but not on the actual paywall.So, how should I set this up?
Hi there,I did find a similar post to what I wanted to ask here, but it’s now closed for comments:Our context is that we implemented and shipped IAPs ourselves, before we decided RevenueCat was worth trying out. We didn’t store the raw base64 receipts, because Apple actually discourages and deprecated the /verifyReceipt endpoint last year. We did store every transaction ID, though, and —as that post notes — we’re able to get the full transaction info securely and verifiably through the App Store Server API.Since we don’t have the base64 receipts, we indeed went with a client-side migration path, but the result is that RC’s data even a week+ after shipping is incomplete. We’re trying RevenueCat out now, but it’s been really hard to trust and rely on RC data when we can see the numbers are still incomplete and inaccurate (like still 30% off in some cases!!).Is there any way you all could reconsider this limitation? This would be very meaningful to us.Could you also share more about what
I have over 500 users subscribed to a certain price plan.I want to increase the price of my app, but I want to let my current 500 users continue with that plan indefinitely. I can create a new plan with a higher price and make everything work fine in my paywall.The problem is, people can still sneak into the app store and view my old lower price offer and subscribe to that. I don’t see any way to disable old prices in app store connect without ruining it for all my existing users. Is there a solution to this for ios & android?
I’m a big fan of the Experiments feature. However, in my app I have a discount/affiliate program that gives certain users a discounted price. In the app, if they have the custom RevenueCat attribute “latest_referral” set, it will override their assigned Offering and use the Offering associated with that referral instead. It would be great if I could ignore/exclude customers with that attribute from the results of experiments.
we are using purchases_flutter packagein pubspec.yaml version info below:- purchases_flutter: ^6.3.0in pubspec.lock version info below:purchases_flutter: dependency: "direct main" description: name: purchases_flutter sha256: "5791321994934c265f9a178c69a329e0f7c21b1975b1e40abfadfa1a3f07cd8a" url: "https://pub.dev" source: hosted version: "6.24.0"From Google play console has issue ‘App must use Google Play Billing Library version 6.0.1 or later’How can fix this.Regards Abdulahad
After upgrading our Flutter environment from version 3.13.8 to 3.19.3, we encountered a persistent error when fetching offerings from RevenueCat using the purchases_flutter plugin. The application throws a type cast exception, specifically type 'Null' is not a subtype of type 'Map<dynamic, dynamic>' in type cast, during the offerings fetch operation. DetailsFlutter Version: Upgraded from 3.13.8 to 3.19.3. purchases_flutter Version: Initially encountered on version 6.21.0; upgraded to 6.24.0 in an attempt to resolve the issue, but the error persists. Error Message: type 'Null' is not a subtype of type 'Map<dynamic, dynamic>' in type cast Error Location: The error occurs within the try-catch block around the Purchases.getOfferings() call, indicating an issue with handling the fetched offerings data. Observations: The debug logs indicate that the getOfferings call successfully contacts RevenueCat and receives a response, but fails during JSON deserialization or handling within
Google play now requires billing lib >= 6.0.1 , I found this blog: https://www.revenuecat.com/blog/engineering/google-play-billing-library-7-features-migration/I added `implementation "com.android.billingclient:billing:7.0.0"` and updated Revenuecat to 8.2.1 I exclusively use the Revenuecat sdk for my app, namely: `Purchases.sharedInstance.purchaseWith , getOfferingsWith , awaitSyncPurchases, awaitRestore, getCustomerInfoWith, awaitCustomerInfo` do I need to make any more changes before uploading my app ?
Hi!I recently launched a hard paywall in my app and have had a fair few people each day sign up to the 3 day free trial.Around 55% of users remain after the 3 day trial but I am finding that when it ends around 40-45% of the remaining users are running into 'billing errors' meaning they end up not paying at the end of the trial despite never cancelling.The app does target a younger audience, but this still feels way too high. Has anyone come across this issue before at such a high % and if so, is there anything we can do to try and improve this number?Thank you!
Hello,I want to have two separate paywalls for my app. One for subscriptions and for one one-time purchases. I have created both paywalls in my RevenueCat account. However, when I use the RevenueCatUI.presentPaywallIfNeeded() function with different strings for offering identifiers, I get every time the default offering. In other words, the second paywall does not show even through I have put the correct offering identifier. Do you know how to achieve the behavior I described above?
Hello,I want to have two separate paywalls for my app. One for subscriptions and for one one-time purchases. I have created both paywalls in my RevenueCat account. However, when I use the RevenueCatUI.presentPaywallIfNeeded() function with different strings for offering identifiers, I get every time the default offering. In other words, the second paywall does not show even though I have put the correct offering identifier. Do you know how to achieve the behavior I described above?Just to clarify, the user does not have the entitlements so the paywall shows.
RC’s Experiments seems pretty useful but completely linked to Offerings. The thing is I would like to use RevenueCat’s Experiments to run A/B tests for other things than my paywall: trial funnels, changes in UI and texts, …Is there any way to do that? I was wondering if I could use Offerings metadata for that, but would I still need multiple Offerings? I really want to keep only one Offering but test other things...
Hi,I am trying to get subscriptions associated to a customer_id calling https://api.revenuecat.com/v2/projects/{project_id}/customers/{customer_id}/subscriptions but none found even though I know customer has one subscription associated.I've double checked that my api_key is the correct one and also project_id and customer_id are correct values. Postman returning 200 but no subscription appears in items[]Thanks
I’m using the sandbox in the iOS simulator. The iOS version is 17.4. I’m using the paywall from Revenue to prompt user’s to purchase. When I click button to purchase, the phone shows me info about my purchase (see photo below) and if I click `Subscribe`, it asks me to log into my sandbox account. After logging in, I here a beep and briefly see the word `done` on the phone, but I just get redirected back to the spot in the photo and the subscription isn’t registered. No errors are being logged from the Revenue Cat SDK either. Does anyone know what I’m doing wrong?
Are there any limitations set for frequency / quantity of REST API requests?
My application uses RevenueCat 7.0.0, and it does not include the Google Play Billing Library. I received a message from the Play Console stating that it is necessary to have Google Play Billing Library version 6.0.1 or higher. How can I update my project to comply with this requirement? Is it enough to add the following dependency:def billingVersion = 7.0.0implementation "com.android.billingclient:billing:$billingVersion"Do I need to make any additional changes to the code, or can I simply update RevenueCat and add this dependency?
I’m trying to implement a gift card redemption flow in my ReactNative app. I’m testing in sandbox / staging right now. Currently, once the user inputs a code, it fires of a request to my backend, which does the call to the Grant Entitlements REST API. My backend then returns a success state, and then my frontend rechecks getCustomerInfo, but it’s not working as expected. TL;DR:How should I be checking for customerInfo in my ReactNative app after I grant an entitlement via the REST API? It doesn’t seem to be refreshing correctly? It seems to be the case that the user’s Promo entitlement in customerInfo can’t be updated with subsequent successful calls to grantEntitlement, which means that the same user can’t redeem multiple subsequent promotions. Is this just a sandbox / staging thing, a short duration thing (I have it set for 10 min intervals for testing), or is this a production limitation?FULL CONTEXT // NOTE: I had to string together multiple examples, so ignore the timestampsIn my
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.