Get help with anything related to RevenueCat.
- 876 Posts
- 2,197 Replies
How is `takehome_percentage` computed ?
Hi,I’ve researched the subject for some time but I can’t quite figure out how is RevenueCat able to compute the takehome_percentage value for a certain transaction. I do understand that when somebody pays for a subscription the sdk knows the value + currency and it can extract the receipt then pass the actual transaction information to the api. What makes me wonder is how accurate is the takehome_percentage that RevenueCat’s webhook passes forward. In my mind the only way this would be possible is by looking inside the unified receipt and determine if that user was subscribed for more than a year, then apply the reduced percentage to the next transaction.Thank you
Configuring subscription products
Hello, I have a question on how to implement RevenueCat in our react native app and would like to verify if i configured the products correctly. So i have 1 subscription group in the app store with product a monthly, a yearly, b monthly, b yearly, a+b monthly and a+b yearly.I added these 1 to 1 in products in RevenueCat. Then I made 3 entitlements: a, b and a+b and added their monthly and yearly product. These are the 3 levels of access. These 3 levels i want to show in the app. When a user already has subscription a and purchase b it needs to go to a+b. Now i get confused with offerings because i create a default one and can only add 1 monthly and 1 yearly product. What I do now to show the products in the app is with Purchases.getOfferings() and then made 3 offerings. Again a, b and a+b and get result.all instead of current to loop over all the products. In app i can purchase a product in sandbox mode and get an active subscription but then i can purchase another. Is this normal ? Ho
Cancellation done directly from app store & play store are not getting updated even after receiving S2S notifications.
Hello,We have set up our apps perfectly with RevenueCat and are currently testing in the SANDBOX mode.A customer purchases an in-app subscription from the app andAfter sometime cancels it directly from the app store / play store. Re-subscribes it directly it from the appstore.In both the cases revenue cat is informed by S2S notifications but still these events are not updated in revenue cat.Are we missing something? How do we do this??
Determine all uses added or removed from an entitlement / subscription in the past week.
Hello! I’m currently implementing a job for application that has 2 use cases.Determine all users who have been ADDED to an entitlement this week Determine all users who have been REMOVED from an entitlement this weekThe entitlement in question is a monthly subscription to one of our premium features, and I have to manually make a report of all users who were added / removed from this subscription / entitlement, so we can manually turn on/off this premium feature for them.(But NOT a user who successfully renewed their subscription this cycle and therefore isn’t added or removed, just continuing their subscription) We store a lot of information from revenue cat: All the webhooks we receive All of the information from the Get or create subscriber endpointMy first stab at attempting to do this is looking at all the webhook events a user has received in the past week. And seeing if they have an: initial_purchase, expiration, renewal, cancelation, un-cancelation, ect. and determining if they
Best way to extend a subscription?
What would be the best way to give the user a free month if they are already had a subscription? We want to implement a referral reward system in our app and the user can redeem multiple free months separately so we would want them to stack if possible.I’ve seen that both iOS and Androids have Promo Codes we could give to users but those seem to be for new users:https://docs.revenuecat.com/docs/ios-subscription-offershttps://docs.revenuecat.com/docs/android-promo-codesI did see that RevenueCat has an API to extend this as well, but wasn’t sure how that would work. Is RevenueCat that one that tells Apple or Google to charge for the subscription again? If not does it tell Apple or Google to not charge until a certain time? Do they stack? Here is the url to the API:https://docs.revenuecat.com/reference/grant-a-promotional-entitlementThanks for the help!Asher
Anyway to attach custom metadata to a user's payment
We need to add some metadata (key-values) to user’s payments. As an example, we’d like to send workspaceId and other key-value parameters along with a payment that user is creating.I understand that there is a Subscriber attributes which offers capturing custom metadata on the user object, however what we need is to attach metadata to individual payments and not users.Anyway to acheive this functionality with RevenueCat APIs?
Consumable Purchase via Test Flight
I am testing a tvOS app that has a subscription and two consumable product IAP. The consumable product IAP works properly when running the tvOS app via Xcode. However, when running the same app via Test Flight, the consumable IAP does not allow the purchase of a second exact consumable and instead provides this message: “The In-app purchase has already been bought. It will be restored for free”. Again this is a consumable purchase so there should be no restoration and the user should be able to purchase it as often as they want. This again does NOT happen when running via Xcode. The consumable IAP is set as consumable on App Store Connect and is not associated with any entitlement here on RevenueCat. I am obviously concerned that if it’s happening on TF that it will happen in production as well. Why is this occurring? Thanks.
Users are renewing a sub with a price of 0
99% of my subscriptions are working fine, but I have a handful of users that are ‘renewing’ every month for a price of 0. Their initial conversion was also 0, as is every monthly renewal cost ongoing. Any idea what’s going on? Am I being cheated or is something just being mis-reported?I’ve never changed prices, run any offers or introductory pricing, just a 7 day free trial, which as mentioned above is pretty much working as expected apart from these few anomalies.Thanks
Stripe Test Mode best practices?
It’s unclear what the best practice is for managing test mode (especially on Stripe) wrt Rev Cat. In Stripe you have to create a different set of Products (with different IDs) for live vs test mode. Does this mean that I should maintain a separate “test” or “dev” project in Revenue Cat?I’m wondering if there’s another approach I’ve not yet thought of that may be simpler.
Detect a Successful/Unsuccessful Purchase
New to RevenueCat and cannot seem to find the solution to what to do after making a purchase with this code in Flutter:PurchaserInfo purchaserInfo = await Purchases.purchasePackage( _selectedPackage);How do I properly determine if the purchase to a subscription was successful or not successful so that I can navigate the user properly?
Invalid Play Store credentials after changing them
Hi,I recently change the Service Account JSON because the old one did not work after moving app to another account on Play Store Console. I changed it 48 hours ago and I still have Invalid Play Store credentials.I verify that the Service Account JSON hasn’t any space after copied it from RevenueCat page. I double checked that everything is ok after following your guide.You say in the guide that it can takes 36 hours, in the support, you say 48 hours. What the max time should I wait before recreating the service?For the spaces, I entered the JSON with spaces but when I download it from your site, there isn’t any space, you remove them automatically?Do you have on your side more information to help me?Thanks
Is there an REST API for retrieving all Products under a project.
Is there an REST API for retrieving all Products under a project? I need it to integrate into our CMS. Internally I see this https://api.revenuecat.com/internal/v1/developers/me/projects/XXXXX-PROJECT-ID/productsBut it does not work with the REST API. Thank you
Subscription Renewal with Block Restores
Hey,We are looking into the available ‘Restore Behavior’ configurations from RevenueCat, and I believe based on our business requirements we need to use the ‘Block Purchases’ option. Our app requires an account to make a subscription purchase, and requires the user to be logged into that account to use any subscription entitled features. One concern we have is how the ‘Block Purchases’ configuration behaves when a subscription renewal occurs. The ‘Restore Transactions’ behaviour makes sense, as this would require the customer to log into the account that initially made the subscription purchase. But what happens if the logged in user at the time of renewal is different than the logged in user who initiated the subscription? We are currently still configured to ‘Alias (legacy)’, but from our initial testing it seems like a subscription renewal is applied to the currently logged in RevenueCat user. In the customer history for this account, they do not have a ‘started subscription’ event,
How should I setup my products for multiple auto-renewing subscriptions that award credits?
I’m working on an IOS application with the following in-app purchase options:$0.99 - Receive 1 credit per month (Auto-Renewing) $1.99 - Receive 3 credits per month (Auto-Renewing) $2.99 - Receive 5 credits per month (Auto-Renewing) $3.99 - Receive 10 credits per month (Auto-Renewing) $4.99 - Receive 1 credit (Consumable)Users may only subscribe to one auto-renewing option at a time, but they can purchase the single credit consumable without restriction.My question is how should I organize these products as offerings/entitlements/packages/etc.? My current method is:All four auto-renewing products above are associated with a single entitlement Each auto-renewing product has a 1:1 “parent offering” The consumable product has no associated entitlement/offeringThe tutorials I followed all suggest using offering and entitlements, and so I did. However I feel it’s all clunkier than it has to be. For example, with the Purchases SDK, fetching the offerings and then extracting the packages (prod
Subscription price 0 after update
We've just released an update to our approved app in the App Store (iOS). However, when attempting to subscribe to an IAP, the value from the store is returning $0.00, and the trial is not showing despite everything being set up correctly in App Store Connect.We have changed the version number for the app, along with the build number, which seems to be the only thing that's changed for iOS.Has anyone run into this before? We've been rejected by Apple because the subscription price does not match that advertised in the app.Any help greatly appreciated!
0 packages for new offering
I’m creating a new offering to run an experiment, I’ve done this a few times before. All of the products are approved by apple and in use in production.I’ve created the new offering in RC (pro_annual_higher) and it shows ⚠️ 0 packages: but when I click on the package, it shows that there are 3 packages associated with it: Will this work in an experiment? Or will there be no products shown?CheersLewis
Synchronization of Revenuecat data and my personal database
Hi. I am still designing my project architecture, Im planning to use revenue cat as the payment for may application. Process1 - User buys an item in the App2 - User are now able to view the details (videos, images etc.)How am i going to sync the revenue cat data to my own personal database which is going to be either of the ff (MySQL, DynamoDB, MongoDB etc.)Where should i verify if the user has already purchased the item ?Is it from the revenue cat or in my personal database ?Thank you everyone. Have a good day!
Best practices to switch user from subscription to lifetime "subscription" which is consumable.
Hey,What is the best practice to switch users from existing subscription to life time product on iOS and Android, like lifetime “subscription” which is actually not a subscription but consumable product.As I understand you cannot cancel subscription on iOS , so the only thing is to show link to the user and notify that he should cancel current subscription manually? Little bit not user friendly approach.And for Android seems like you can revoke + refund via api, but only revoke is needed actually not a refund. Or same as iOS to show link to user for cancellation, which is also not a very good option.Thanks
ERROR: 🍎‼️ There was a problem with the App Store. Code=100 "Authentication Failed"
My purchases are successful on real devices. But I am getting the error log in the simulator. This results in a rejection by the review team. What's the solution? (I created and installed the certificate in the document for test device purchases.) Here is my LOG 2022-01-07 00:49:54.151515+0300 ScoutAppFUT21[7770:194248] [boringssl] boringssl_metrics_log_metric_block_invoke(151) Failed to log metrics2022-01-07 00:51:25.634886+0300 ScoutAppFUT21[7770:194001] [Purchases] - DEBUG: ℹ️ applicationDidBecomeActive2022-01-07 00:51:26.017855+0300 ScoutAppFUT21[7770:196034] [boringssl] boringssl_metrics_log_metric_block_invoke(151) Failed to log metrics2022-01-07 00:51:26.320790+0300 ScoutAppFUT21[7770:194001] [Purchases] - DEBUG: ℹ️ Vending PurchaserInfo from cache.*********User is not Premium*********2022-01-07 00:51:26.344411+0300 ScoutAppFUT21[7770:194001] [Purchases] - DEBUG: ℹ️ Vending Offerings from cacheUser is not yet Premium2022-01-07 00:51:27.356642+0300 ScoutAppFUT21[7770:194001] [Pu
Good afternoon. In addition to monthly/semi-annual subscriptions, we have an opportunity to make one-time purchases (consumable), when a user buys for example 1/5/10 items, his internal balance is replenished and he can spend it at any time. With the current settings on the tests there is no possibility to buy an item more than 1 time. Could you please tell me what's the problem? All done according to the instructions. And also when paying with a test card returns an error in the callback, how to fix
Already have an account? Login
Log in to the Community
Authenticate with RevenueCat
Enter your username or e-mail address. We'll send you an e-mail with instructions to reset your password.