Discussion and help from anything related to RevenueCat.
Recently active
Error enumerating unfinished transactions for first transaction listener: Error Domain=ASDErrorDomain Code=500 "(null)" UserInfo={client-environment-type=Sandbox, storefront-country-code=GBR, NSUnderlyingError=0x600000c02dc0 {Error Domain=AMSErrorDomain Code=2 "Finance Authentication Error" UserInfo={NSLocalizedDescription=Finance Authentication Error, AMSURL=https://mzstorekit-sb.itunes.apple.com/inApps/v1/history?guid=7666DF87F208&reason=initial, AMSStatusCode=401, NSLocalizedFailureReason=No delegate to perform authentication: <AMSAuthenticateRequest: 0x600000c0f4b0> { account = jerichomiles6@gmail.com (78985344-F6FD-42AD-BCEB-DF36B39D9837), logKey = 1379CD2F, options = <AMSAuthenticateOptions: 0x600003b408c0> { AMSAuthenticateOptionsAllowPasswordGeneration = 0, AMSAuthenticateOptionsAllowSecondaryCredentialSource = 0, AMSAuthenticateOptionsAllowServerDialogs = 0, AMSAuthenticateOptionsAuthenticationTypeKey = 1, AMSAuthenticateOptionsCanMakeAccountActiveKey =
I am using RevenueCat in my React Native app. I have a subscription and I use getCustomerInfo to keep track of subscription status. When the subscription is purchased, getCustomerInfo’s activeSubscription property lets me know that it’s been purchased and I can let the customer know the same. But when the subscription is cancelled, activeSubscription still shows active until the subscription finally expires (in real life this would be month but in my case, it’s 5 mins). As a result, I’m not able to let the user know they’re subscription has been cancelled when they cancel (I have to wait till it expires). I have also checked out the willRenew and unsubscribeAt properties of getCustomerInfo.entitlements but they show the same behaviour. I also tried out addCustomerInfoUpdateListener instead of getCustomerInfo and it also shows the same behaviour.
Hi There, How do we create a full screen paywall that cannot be swiped down? I know we can hide the X button, but that does not make it a “hard paywall”. I need it so it cannot be swiped down/dismissed. I’m using react native. Thank you
I’m using Laravel backend with revenue-cat for subscriptions, I could not revoke entitlement using an api call to https://api.revenuecat.com/v1/subscribers/{app_user_id}/entitlements/{entitlement_identifier}/revoke_promotionals as this returns { "code": 7242, "message": "No promotional entitlements to revoke for this subscriber."}How should I test unsubscribe function using revenueCat Api for revoking non-promotional entitlements
This have been extremely frustrating, and I am in dire need for help or assistance. I created a app and added the RevenueCat code information to my project, and followed all the examples exactly. I watch countless videos. I finally got it to work on the simulator IOS 14 like explained. it works perfect. I triple checked my information both on RevenueCat platform and in apple developer. after being uploaded to apple developer, and I downloaded it from TestFlight. I try to make a purchase, and nothing happen. it is as if the screen is frozen. please help me with this issue. Thanks!!!!
Dear RevenueCat, Thank you for the Paywall functionality.How can I customise the close button color in Swift?
Can RevenueCat currently handle CONSUMPTION_REQUEST on behalf of the developer to help reduce refund rates? Thank you. https://developer.apple.com/documentation/appstoreserverapi/consumptionrequest
Hello, I have a problem to implement one idea on my project. Brainstorm Please!I’ve added stripe products(wordpress memebership) to RevenueCat and added webhook that notifies to revenueCat for each payments, everything works fine.For now, I provided 100% discount coupon to customers and I don’t want to collect any information from them including bank info or credit info.So I just want to trigger subscription/one-time payment and notify to revenueCat. It says, stripe doesn’t provide any interface or API methods to simulate fake transaction.To simulate notification to revenueCat, I can’t get “fetch_token”. Best regards,Robert L
I can buy consumable products over and over again on iOS, but I can only buy them once on Android. Paywall is displayed, I select the product, but when I press the button, nothing works.I tried everything but it doesn't work,what can I do?
Hello,We are encountering an issue when attempting to grant an entitlement to users. The entitlement works as expected the first time, but when we revoke it and grant it again (as part of our test suite), the entitlement does not update correctly. Specifically, the old entitlement is still showing, and the expiry dates are incorrect. Could you please provide some guidance on this issue? As you can see below, the start and end dates do not match as expected. https://api.revenuecat.com/v1/subscribers/2SANDBOX768/entitlements/Referrals/promotional{ "start_time_ms":1731403098690, "end_time_ms":1731403598690}{ "request_date": "2024-11-12T09:11:30Z", "request_date_ms": 1731402690493, "subscriber": { "entitlements": { "Referrals": { "expires_date": "2024-11-12T08:56:32Z", "grace_period_expires_date": null, "product_identifier": "rc_promo_Referrals_custom", "purchase_date": "2024-11-12T08:48:35Z"
Hello there,Consider this very simple scenario, User Installs the app → Anonymous ID is generated by RevenueCat (this ID is searchable in the RevenueCat’s Dashboard) → User perform a sign in and newAppUserID is provided by us. Now, the newly provided app ID is an alias and the anonymous ID is the Original App User ID. Everything is good!Now → User reinstalls the app, a new Anonymous ID is generated by RevenueCat (this ID is also searchable in the RevenueCat’s Dashboard), User perform a log in → RevenueCat detects that one of the customer already has this alias (Our own App User ID) and merges. Now what about the customer that was created during the re-install of the app?
We tried to get the font family working for a paywall, however we are using expo react native and it was not working no matter what i did. I tried to follow expo tutorial on how to use custom fonts and did it the react native way and nothing worked for iOS.Is there a way we can do it using expo: https://docs.expo.dev/develop/user-interface/fonts/
I set the light mode color of the close button to white, but it is always black on Android, how to fix this problem?
Is there any way of getting the FFI file for the revenue cat purcahse SDK?
Hi, I am implementing Revenue cat SDK 8.4.0 in my Android app. It works perfectly and everything is ok for most of users but lately I am receiving this crash on crashlytics java.lang.IllegalStateException: Attempting to launch an unregistered ActivityResultLauncher with contract com.revenuecat.purchases.ui.revenuecatui.activity.PaywallContract@81ad151 and input PaywallActivityArgs(requiredEntitlementIdentifier=flixunblocker_v5, offeringId=flixunblocker_offer_v5, fonts=null, shouldDisplayDismissButton=true). You must ensure the ActivityResultLauncher is registered before calling launch(). I tried to reproduce the crash but I didn’t succeed. The common thing that all the users receiving this crash are Android TV users. Do you have any idea how to fix this or how to reproduce this issue. Thanks
In my app once the user has successfully subscribed and has access to the app, I want to be able to display the current pricing that the user is on back to the user. This is fine if the user is not on an intro pricing plan, but I am having a hard time determining and then displaying this if the user is in an intro pricing period. I am able to find the correct intro pricing using the snippet below, but this does not help me figure out if the user is paying that price or the full price. packageInfo.product.introPrice?.priceString I am using React Native. Thanks
Hi, in appstore my subscription is valid until 11th of August, after which i have a trial period that will last until 11th of September. However, in the app I just see end date as 11th of August, and examining active entitlements and purchases logs, calling sync and restore doesnt change the end date and sync the purchase properly. Any help is welcome, thank you!On restore purchase I tried with both appstore restore function and revenue cats restore and sync, but no luck so far. func restorePurchases() { Task { do { try? await AppStore.sync() var customerInfo = try await PurchaseManager.restorePurchases() self.onAppear() AlertService.showSuccessAlert(message: "Purchases Restored") } catch { print("Error restoring purchases: \(error.localizedDescription)") AlertService.showGenericAlert() } } }I am initializing revenue cat in main like this and
We have 2 plans: Plan A at $5/month or $100/year, and Plan B at $10/month or $200/year.In Google Console, I set up 2 subscriptions for Plan A and Plan B. Each subscription has 2 base plans, one for the monthly duration and one for the yearly duration. Is this correct?Can we set up 2 replacement modes where upgrading from Plan A to Plan B applies the CHARGE_PRORATED_PRICE mode, and downgrading from Plan B to Plan A applies the DEFERRED mode? This rule is used by default when I set up in the Apple Store. Is it possible to have different replacement modes, or can we only apply one replacement mode?
I want to create Offerings that include discounted prices for specific Products. For example, let's say I added a promotion option within a Product in the Store Console to offer customers a discount on an existing subscription product. Then, I want to create Offerings in RevenueCat that include the discounted price rather than the base price, and link it to the Paywall. However, it currently appears that when creating an Offering, I can only set the Product itself and cannot choose which promotion within the Product to use. If there's a way to make this possible, please let me know.FYI: we use own paywalls.
Hey folks! I have a Firebase setup where I have multiple Firestores in one project. I have enabled RevenueCat’s Firebase extension, but I’m not seeing the events being written to the DB. I presume this is due to the fact that I have multiple of these DBs. Handler function is being called but erroring with this below: FAILED_PRECONDITION: The Cloud Firestore API is not available for Firestore in Datastore Mode database projects/{my_project}/databases/(default). I’m not using the (default) DB to begin with. Is there any way to pass in my DB name here somehow?
export const extFirestoreRevenueCatPurchasesHandler = onRequest( async (request, response) => { const {processUserCredits} = require("./functions/userCredits"); await processUserCredits(request); response.status(200).send('Webhook received'); });export interface RCEvent { api_version: string event: { aliases: string[] app_id: string app_user_id: string country_code: string currency: string entitlement_id: string entitlement_ids: string[] environment: string event_timestamp_ms: number expiration_at_ms: number id: string is_family_share: boolean offer_code?: string original_app_user_id: string original_transaction_id: string period_type: string presented_offering_id: string price: number price_in_purchased_currency: number product_id: string purchased_at_ms: number store: string subscriber_attributes: any takehome_percentage: number transaction_id: string type: string }}export async f
I have a react-native app that uses "react-native-purchases": "^8.2.3". I have followed the steps in the docs but I still can’t get it to work.iOS and Google works fine. This is how I initialize IAP:Purchases.configure({ apiKey: <key>, useAmazon: true})when I callconst products = await Purchases.getProducts([Subscriptions.MONTHLY, Subscriptions.ANNUALY], PRODUCT_CATEGORY.SUBSCRIPTION)I always get `Timeout error trying to get Amazon user data`
I have three monthly subscription plans: Silver Trainer, Gold Trainer, and Diamond Trainer, all grouped under a single entitlement named ‘trainer.’ However, users can currently subscribe to more than one plan at the same time. I want to restrict each user to only one active subscription among these three. How can I enforce this restriction?
When i build my app on the new sdk i get a coiuple errors:Trying to purchase a plan: ERROR: 😿‼️ There is an issue with your configuration. Check the underlying error for more details. This StoreProduct represents an SK1 product, but SK2 was expected.
Hi there!We encountered a peculiar situation with the SUBSCRIPTION_EXTENDED event (PlayStore). Here's the user flow:2024/03/15: The user subscribes (INITIAL_PURCHASE) with an expiration date of 2024/03/22. 2024/03/22: The subscription is extended (SUBSCRIPTION_EXTENDED) to a new expiration date of 2024/03/23. 2024/03/23: A grace period begins due to a BILLING_ISSUE/CANCELLATION, with a new expiration date set for 2024/04/06. 2024/03/25: The subscription expires (EXPIRATION), with an expiration date of 2024/03/22.However, the /subscribers/${userId} REST API method began returning an expiration date of 2024/04/06 after the third step and didn't update beyond that. Given these events, when did the user lose their entitlement?Was it on 2024/03/25, after the EXPIRATION event? Or on 2024/04/06, after the grace period ended?If the entitlement was lost after the EXPIRATION event, why does the REST API continue to report 2024/04/06 as the expiration date?
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.