Discussion and help from anything related to RevenueCat.
Recently active
I use swift code with storyboard , and I have in my code subscription button , but this button show only Annual subscription , I have monthly and yearly product Id in my entitlement , but it’s always show yearly price after I press that button . I want make two or more buttons one for Monthly , Yearly and also Lifetime if possible . But I don’t know how .. This my code , and the : fullappaccess is the Identifier for my entitlement in revenuecat Swift Code :@objc func goPremiumButtonTapped(sender:UIButton) { let package = self.packagesAvailableForPurchase[sender.tag] Purchases.shared.purchasePackage(package) { (transaction, purchaserInfo, error, userCancelled) in if purchaserInfo?.entitlements.all["fullappaccess"]?.isActive == true { self.dismiss(animated: true, completion: nil) } } hapticFeedback() }
Hi, We run an A/B/C pricing experiment test during the last four months in which we created 6 different subscription options mixing 3 prices and 2 durations.We now have the results and want to reduce all the subscriptions options to the winner. It seems that what I have to do is to remove the subscription availability from the App Store BUT:- If I remove the subscriptions for selling, all the users will not automatically renew at the end of the period => We'll lose existing subscribers revenue. - If I do not remove the sub availability, anyone can buy the new subscription and change to the old one via App Store Settings. Is there any solution to leave existing subscribers forever in their current subscription AND do not let anyone new buy the old subscriptions?
We’re getting a sudden influx of cancellation webhook calls after we introduce a new pricing model.It has 7-days free trial period and then monthly subscription.What events should be triggered given this user story:User starts a free trial Free trial ends after a week User chooses not to go on with the planI think events trigger like the following: `INITIAL_PURCHASE` → `CANCELLATION`. Is it correct? If FTE does not trigger `CANCELLATION` event, we can’t explain cancellation increase. Additional Question:Also in revenue cat charts, do active subscription contains trial users? Or active subscription chart and active trial chart are not related to each other?
Hi,I am integrating webhooks in out AWS backend application. I am wondering if webhooks can use HTTP? Seems that webhooks seem to work only with SSL certificate.Is there a best practices section for webhook implementation? I haven't found it and it could be a great resource for us. Thanks for any help.
When the phone is offline I am relying on these 2 parameters to make sure the user has access to the premium entitlement:purchaserInfo.entitlements[premiumEntitlementID].isActive == true purchaserInfo.requestDate is not older than 24hIf the premium entitlement is active but the purchaserInfo.requestDate is older than 24h, I block the access to the premium features and kindly request the user to connect to the internet to keep enjoying those features.Now for some reason I have noticed that if I grant a user with lifetime access, it seems like purchaserInfo.requestDate gets roughly stuck to the same date/time as when I granted lifetime access. The user can thus not use the premium features after 24h even if the phone has an active internet connection. This obviously defeats the purpose of granting lifetime access.To give more details I call Purchases.shared.purchaserInfo() whenever the app becomes active and also as the app is active, whenever the internet connection becomes active. I sa
Hi,Is there any way to define how RevenueCat reports developer proceeds for the Webhook/Segement integration to account for local taxes?Currently you can choose the ‘report proceeds’ option within the Segment Integration settings, but the calculation doesn’t reflect ‘Developer Proceeds’ as defined by Apple. The calculation by Apple removes local taxes from the ‘customer price’ prior to applying the take home percentage. (GROSS_REVENUE - TAX) * TAKEHOME_PC.For the Segment integration, the calculation for revenue seems to apply the `takehome_percentage` property to the `price` property (which is only actually shown in the web hook output and not shown on the Segment event) – it doesn’t account for taxes at all. CUSTOMER_PRICE * TAKEHOME_PC.For the web hook, we’re only given the customer price converted to USD – no option for developer proceeds at all. I’m sure the local currency complicates it, but it would be good if we could get the price in local currency AFTER tax.Ideally we’d have:
Hi !In my iOS application (iOS 15.0), I would like to implement the new beginRefundRequest(in:)func beginRefundRequest(in scene: UIWindowScene) async throws -> Transaction.RefundRequestStatusReference available here: https://developer.apple.com/documentation/storekit/transaction/3803220-beginrefundrequest) The fact is that, at the moment I can’t figure out how to get `Transactions` from `SKPaymentQueue` from RevenueCats SDK… I’ve found stuffs in `RCStoreKitWrapper` > `RCStoreKitWrapperDelegate` to get `updatedTransaction` delegate but these are private/protected so I can’t have any access to them outside the SDK…So here is my question: How can I add this new `beginRefundRequest` in my app ? :-)Thanks a lot for your answerBest regards Jayjay
Hi everyone, I recently started a premium subscription for my app on Google Play Store.I started using RevenueCat to handle purchases, but I struggle to integrate it into my A/B tests that I run via Firebase Remote Config. Here is the summary of the setup. The users are presented with two choices of a subscription screen (which is recorded as a Firebase event). When a user completes a purchase, the app gets notified correctly and fires another Firebase event (along with enabling premium content for the user).So this part works fine and I can analyze the relative performance. The problem is with the cancellations. Since a user can cancel the subscription and never open the app again, I have no way of processing them reliably in my app code. So I need a different way of receiving these events from RevenueCat and into Firebase. I did not find any documentation on that. So far, I manually copy cancellations from RC console into the spreadsheet, but this is time consuming and unreliable. I
`checkTrialOrIntroductoryPriceEligibility` API is returning eligible for a subscription where I have already used the intro offer. When purchasing, the payment sheet shows that I am not eligible for intro pricing and charges me for the regular price (correctly). This is what the debug log shows: [Purchases] - DEBUG: Attempting to check intro eligibility locally[Purchases] - ERROR: The data object identifier couldn't be found on the receipt.[Purchases] - ERROR: Couldn't check intro eligibility locally, error: Couldn't find an object identifier of type data in the receipt[Purchases] - ERROR: There was an error when trying to parse the receipt locally, details: Couldn't find an object identifier of type data in the receipt I expect the result to be .unknown if there was an error when parsing the receipt.
In the revenuecat documentation, the image of the example app has a string of text about a free trial. However, in the demo app, I don’t see anything that handles free trials. I do see some fields passed to me that I could use, but I have two questions. 1. Does revenuecat add text based on free trials automatically? Since I can’t find anything about them in the docs but the image shows it, I just want to confirm it isn’t happening by default.If I have to handle it manually, does anyone have a good example? I’m working in react native, so I’m thinking something like this but just want to verify the fields are what I think they are before I publish.{intro_price ? <text>Includes {intro_price_period} {intro_price_period_unit} {intro_price > 0 ? intro_price_string : 'free'} trial. Cancel before {intro_price_period} and nothing will be billed.</text> : null}
Hello we have an app that i use flutter. The apple store send me this message Guideline 3.1.1 - Business - Payments - In-App PurchaseWe found that your app offers in-app purchases that can be restored but does not include a "Restore Purchases" feature to allow users to restore the previously purchased in-app purchases, as specified in the "Restoring Purchase Products" section of the In-App Purchase Programming Guide:"Users restore transactions to maintain access to content they've already purchased. For example, when they upgrade to a new phone, they don't lose all of the items they purchased on the old phone. Include some mechanism in your app to let the user restore their purchases, such as a Restore Purchases button." i use this code: try { PurchaserInfo restoredInfo = await Purchases.restoreTransactions(); // ... check restored purchaserInfo to see if entitlement is now active } on PlatformException catch (e) { // Error restoring purchases }]\ but they say it doesnt work. Do you
Hello;I have recently uploaded my app to Apple store but was rejected. The message is;“Specifically, on our iPad Air, the "Abonelik Satin Al" tab launched to an error message.”But this is my second app including inapp purchase and first one was approved without a problem. Also the rejected app was successful when I tested it on a real device with my sandbox account prior to the submission. They also sent these photos; What should I do?
Your docs regarding stripe packages says: Only Package Pricing and Standard Pricing subscription plans with per unit pricing are supported. Metered usage and tiers are currently not supported.Does this mean, that a user for example can purchase 5 monthly subscriptions via stripe?Will this be correct displayed in revenuecat and in you webhooks to my server?
I will really appreciate what needs doing under following circumstances:Scenario 1: I setup purchases with a userID I get from Firebase Auth after login in using firebase. Let’s say it is ‘UFID’. I am logged in with my app using ‘UFID’. My appstore ID is ‘ApsID’. I do my in app purchase on my iPhone and everything is hunky dory!** Now I lost my iPhone **Question1: Is my purchase attached to my ‘UFID’ or my ‘ApsID’? - For example can I login in my app on another iPhone with my UFID and restore purchases if 1 - the ApsID is different? 2 - the ApsID is the same? Question 2: Can same subscription run on Android & iPhone without any separate backend or the person needs to buy separate subscriptions for each platform?Thanks
Getting { code: 7117, message: 'Page not found.' } when using https://api.revenuecat.com/v1/subscribers/app_user_id/entitlements/entitlement_identifier/revokeapi I am passing app user id and entitlement identifier works with the promotional but not revoke Also why does the entitlement do not expire when stripe subscription gets canceled. been trying to cancel / remove the subscription from the rev cat user.
I’ve been hitting my head against this all day yesterday and this evening and I’m not sure what I’m doing wrong. In brief, my use case is purchasing a subscription via Stripe, and then posting the receipt to RevenueCat to record the entitlement against the correct user.My code to do so is pretty simple. Here is an isolated test case written in TypeScript:import { config as dotEnv } from 'dotenv';dotEnv();import fetch from 'node-fetch';export const sendReceiptToRevenueCat = async (data: { app_user_id: string; fetch_token: string;}): Promise<any> => { const url = 'https://api.revenuecat.com/v1/receipts'; const headers = { Accept: 'application/json', 'Content-Type': 'application/json', 'X-Platform': 'stripe', Authorization: 'Bearer ' + process.env.REVENUECAT_PUBLIC_API_KEY, }; const options = { method: 'POST', headers, body: JSON.stringify(data), }; return fetch(url, options) .then((res) => res.j
I’m looking to confirm some of the behaviour around the expiration_at_ms field on the PRODUCT_CHANGE event.When we receive a PRODUCT_CHANGE event (which could be an upgrade, downgrade, or crossgrade), I understand that the expiration_at_ms will be the expiration of the old product. (The docs here make that clear: https://docs.revenuecat.com/docs/managing-subscriptions#considerations). What I’m less certain about is how it behaves for the different stores.Suppose we had the following situation: a monthly subscription was purchased Nov. 1, and is set to renew on Dec. 1. If a product change was triggered on Nov. 15th, Are the following assumptions correct?When on the Play Store:Performing a downgrade: downgrades are delayed until the next renewal, so expiration_at_ms should be Dec. 1. Performing an upgrade: should be immediate, so expiration_at_ms should be Nov. 15th Performing a crossgrade: should be immediate, so expiration_at_ms should be Nov. 15th.=When on the App Store:Performing
Hi, appreciate any suggestions on how to fix this Flutter credentials issue for Android in Google Play Store: There was a credentials issue. Check the underlying error for more details.I/flutter ( 4040): PlatformException(11, There was a credentials issue. Check the underlying error for more details., {code: 11, message: There was a credentials issue. Check the underlying error for more details., readableErrorCode: InvalidCredentialsError, readable_error_code: InvalidCredentialsError, underlyingErrorMessage: Invalid Play Store credentials., userCancelled: false}, null)
Like the title suggests, I’m testing a new subscription, and sandbox user showing purchases from prior RevenueCat in 2018 with product that's not added to RC products. Is this normal? How do I decouple that? Anyone has run into the same thing or has a clue? Thanks ahead!
Hello,We are using RevenueCat to validate subscriptions in our app.But now Apple Reject our new build because of error "RevenueCatException: message: The receipt is missing., code: 9, underlyingErrorMessage: , readableErrorCode: MISSING_RECEIPT_FILE"We have read an article about this problem:https://docs.revenuecat.com/docs/errors#-missing_receipt_fileBut we do not understand how to fix this error.And how we can pass Apple Review…Has anyone got this problem?
Hey guys, My question might be dumb, but I would like to add my main account (personal address email) as a free forever entitlement, how can I do that ? Yes I could pay a subscription directly, but I would not recover all the money since the App Store/Play Store will take 15-30% for every transaction.
I selected purchase price ¥550/JPY in Google Play Console, but RevenueCat Webhooks return ¥600/JPY as `price_in_purchased_currency`, I expected ¥550/JPY.Why does the issue occur? Please tell me RevenueCat console setting if exists.it's too serious, since Apple/Goolge requires difference price in same product.Thank you.
try { ... final PurchaserInfo info = await Purchases.purchasePackage(package); if (info.entitlements.all.containsKey('plus') && info.entitlements.all['plus']!.isActive) { // amplitude logging for new subscription // show toast to user to indicate success }} on PlatformException catch (e) { ...}We are using Flutter and support purchasing subscriptions (‘plus’ entitlement) and we noticed that our manual logging seems to be heavily undercounting the number of new subscriptions we get compared to RevenueCat’s dashes.We verified that the entitlement and products are defined properly. Our understanding is that if the purchase succeeds, then PurchaserInfo should always have the ‘plus’ entitlement active. Are there cases where it’s expected for the entitlement to be inactive when the purchase succeeds? Or is there something else we can do to debug?
We are launching a platform with two types of users PRO and NORMAL. The WebSite serves both the PRO and the NORMAL user, but for the apps we would like to have one App for NORMAL user and one App for PROQuestionsHow many revenuCat accounts do I need? Do I need to service accounts in the google Play platform? Thanks
Due to client requirement, I have to change the subscription price of a product and introduce introductory offer to the subscription product. I changed subscription product’s price and added introductory price in google play console and apple developer console as well. But revenue-cat is not propagating the changes when I fetched offer. I am doing this in flutter.
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.