Get help with your SDK implementation.
Recently active
Hello,I’m building an Ionic mobile app with the Capacitor plugin and testing payments for IOS and Android in sandbox mode. I have the Google Play store payment working properly in sandbox mode but with IOS I am having an issue with the purchasePackage method.I am receiving offerings and packages properly, using the IOS key, but when I pass in a package into the purchasePackage method, a TCP timeout occurs. I assume this is because it is reaching out to an API and waiting for a response that it isn’t getting. How can we get past this or is this a known issue with developing with Ionic Capacitor and IOS payment subscriptions? I want to test this in a production environment but that would need Apple’s approval with broken authentication. Any guidance or input would be greatly appreciated Steps taken to debug: Make sure IOS and Android keys are working properly Purposely passing broken data into purchasePackage to see what it returns Console logging and follow the trail of data until it re
Hi, I’m working on creating a native paywall with SwiftUI because we have a paywall design that deviates from the templates. (it’s mainly sizes and margin - footer paywalls are too tall for our use. Hope this is configurable in the future) While creating a custom paywall, I wish we could still use some of the variables and localization RC offers with paywall templates. e.g., I tried to access periodName (e.g. “Annual”) via package.periodNameOrIdentifier(.current)This gives “'periodNameOrIdentifier' is inaccessible due to 'internal' protection level" It seems that making ‘extension Package: VariableDataProvider’ public might allow this. Can RC support this? At a high level, the pain here is that as soon as we try to do anything custom that deviates from the template, we face reimplementing many of the conveniences RC provides. Wish there was a middle ground somehow.
My request to `https://api.revenuecat.com/v2/projects/:projectId/customers` is returning a 404 error which doesn’t really make sense. Full error object below: ```{ "doc_url": "https://errors.rev.cat/resource-missing", "message": "Resource not found", "object": "error", "retryable": false, "type": "resource_missing"}```I am using the projectId returned from calling GET Projects in the v2 API.I am using a V2 API key. The permissions look like: One thing I noticed is that the API key permissions has a “Customer information permissions” section, but there’s nothing there.I know the v2 API is in Beta… is something not finished here?
Hello, my client would like to slightly customize a template, beyond what's possible with the no-code editor, but not enough to warrant creating a new one from scratch. The modifications desired are as follows:Adding a 'chip overlay' around a price card labeled 'Recommended.' Adding a strikethrough text displaying a higher price tag near the effective price.Do you provide such customization services? We would be willing to pay for this. Thank you.
For customer P7JhJ9xGhJeZq1zhrxRptq52Kmb2, I am trying to determine when to remove extra entitlements.The EXPIRATION event seems to have triggered exactly 3 days after when renewal would have happened. Which is what I expect since grace period i set at 3 days.But the RC dashboard seems to show that there is still time until expiration. Maybe this matches the “Grace period ends” timestamp 1707470032885 on the BILLING_ISSUE event.So should entitlement be removed now when I’ve received the EXPIRATION event, or later when grace period ends?
I’m using StoreKit 2 with an automatically synced StoreKit Configuration file in Xcode which is an amazing tool to use in development. Unfortunately, even though I uploaded the public certificate for StoreKit testing, I always get the “ERROR: 😿‼️ The receipt is not valid.” message during development.I’ve read in other threads that this is a common issue. Also, I’ve read somewhere to use StoreKit 1 or to not provide a StoreKit configuration file. But I’m not willing to use older APIs and features when there are shiny new tools that make development much more fun. Please don’t try to convince me that StoreKit 1 is more stable. I’ve used StoreKit 2 directly, and it was an awesome development experience. I’m just using RevenueCat for the Live Data, Experiments, and for the Paywall UI. But my development experience has degraded since I made the switch.To improve this, I would like to simply turn off receipt validation when I run my app in DEBUG mode. In other words, I’m looking for somethi
I am testing purchasing my subscriptions in sandbox. My device has purchased a subscription before, and it has expired.When I go in to purchase again, `Purchases.shared.purchasePackage` returns immediately with the `purchaserInfo` and the default entitlement shows my previous purchase, with an isActive status of false. I was never presented with the purchase modal. When I `restoreTransactions`, the `purcahserInfo` shows the same, an expired entitlement. Why can’t I re-purchase an expired subscription?
Is there any reason _not_ to call `syncPurchases` on every fresh install? That way if a user has a pre-existing subscription, we’ll know right away.The RevenueCat documentation lists these considerations:https://www.revenuecat.com/docs/restoring-purchases#considerationsBut if the user has an anonymous ID, calling syncSubscriptions will just discard that anonymous ID the user does in fact have a subscription (I believe).I don’t see any downsides to it, but I could be missing something.
Hi there,→ I am purchase subscription with app userId 1 and using sandbox id 1→ Now I am log out from the app and login with app userId 2 and using sandbox id 2 with same deviceIn time of second user purchase I am getting [Error: There is already another active subscriber using the same receipt.]. I understood that If I try with same sandbox id then it happens but with different sandbox ids don’t why it’s happen.
I have followed this guide:https://www.revenuecat.com/docs/apple-server-notificationsto try and setup the store server notifications, but whenever navigating to App Information > App Store Server Notifications, I do not see this - “App Store Server Notifications” per instruction steps 3 and 4. Am I missing something? I do not see anywhere I could enter the URL.
Hello, I wanted to change the paywall display settings from the Paywall editor I wanted to include introductory offer values as well as variable preview values I had previously selected. When I select and save the second box (for introductory offer values ), it shows up on the preview but when refresh the page, the selection is gone and not reflected in the simulator. This behavior is same for both Chrome and Safari.
Love the new paywalls and here are some suggestions for improvements. This is paywall “Bengal” on an iPhone 15 Pro using UIKit.Please hide status bar. Big gap between header image and title. Footer font too big. Can you just say “Terms”, “Privacy”, and optional “Restore”? Please hide thumb bar.HTH
Hi,I have set up my app, with an auto-renewing subscription in a closed test track on Play Store with myself as License tester, and then downloaded the app on my test device. All subscriptions features seems to work fine, I can subscribe, cancel a subscription, restore a subscription and all actions are reflected in RC backend in the sandbox overview. But I am curious about the options one finds in Google Play Store>Configuration>License test page. I choose the ERROR_CONTACTING_SERVER as response and saved, my expectation was to get an error in the app when buying a new subscription. But no the purchase of a new subscription went well. So my question is how are these response options on the License test page linked to the RC SDK? Regards Tomas
Does anyone know if it's possible to get a shadow on the paywall footer like in their web editor? I am not sure if I am missing something? Looking through the paywall source code, it does not look like a shadow is applied anywhere?
What happens to the active subscriber’s entitlement when i remove the product from sale on my appstore connect. ? Scenario : A yearly subscriber having 10months left and i remove the yearly product from sale on appstore connect.
We are trying to show an alert if the user is not eligible for the trial/offer on our paywall. It’s very important we test that for new users this alert does not show, because otherwise we’re going to start blocking valid payments. We tried testing this on Testflight using a sandbox account. Our sandbox user presses Reset Eligibility to clear out any old uses of the trials/offers.When we carry out this test, the status comes back “Unknown”. Is this common when using a sandbox tester? Are there any obvious reasons this could be? Is there a way of testing the new user path (i.e. one that has just signed up and has not taken out any trials) without having to repeatedly create new users or something? We’re using react-native-purchases: 4.5.2
Right now I have a webhook setup to know if a user is going through a downgrade in the near future. But currently revenuecat does not send the PRODUCT_CHANGE notification when the user changes their product instead sends it when the actual downgrade happens and the user is charged but it’s not supposed to be this way according to documentation, where it says the PRODUCT_CHANGE notification will come through whenever the user requests for a change and a INITIAL_PURCHASE event will come through when the actual change takes place
Hi! We are migrating a legacy paid RN app to be subscription-based and need a way to “grandfather” in existing users (who bought the app before adding subscriptions/RevenueCat).These are anonymous users (no login) so can’t link legacy identifiers.RevenueCat provides this (Objective-C based) tutorial - https://www.revenuecat.com/blog/converting-a-paid-ios-app-to-subscriptions but does anyone know of React Native-based example (that will work on both iOS and Android)? Thanks in advance!
We would like to use the new Flutter Paywall in the Form of a footer in our app. Additionally we would like to customize the Paywall’s font and border of the CTA button. When can we expect that to be added? Best regards ✌️
Hello, I’m trying to get App Store Promotions for In-App Purchases working through RevenueCat. I feel like I must be missing a permission or some important setup call somewhere, because I just can’t seem to get the delegate purchases method containing readyForPromotedProduct to ever be called when opening an App Store Promotions link (e.g. itms-services://?action=purchaseIntent&bundleId=<BUNDLE_ID_HERE>&productIdentifier=<PRODUCT_ID_HERE>). I’ve confirmed that the normal purchases method (func purchases(_ purchases: Purchases, receivedUpdated customerInfo: CustomerInfo)) gets called every start, but not the one I want. I’ve tried all the following sources:RevenueCat documentation for readyForPromotedProduct Two different RevenueCat examples (MockPurchasesDelegate.swift, PurchasesDelegateHandler.swift) The following community threads: Here is my Swift code: final class PurchasesDelegateHandler: NSObject, Sendable { static let shared = PurchasesDelegateHandler()} e
If I use the Sphynx template on an iPhone (14) and want to display a close button I’m getting a really nasty layout.The close button is displayed in a black bar at the top. I feel I need a close button as there is no way to get past the paywall on the iPhone without it. By comparison, the iPad allows you to dismiss the paywall by tapping the modal background.The black bar overlays my content and does not allow scrolling to view the copy underneath. If the black bar could be transparent, that would be a start - is that possible?.The ‘restore purchases’ also takes up a lot of vertical space, which is impacting on how much of the actual unlock marketing copy can be seen.I’m displaying the paywall manually from UIKit code, here’s my code: // Need a close button on iPhone screens otherwise there is no way to get past the paywall without subscribing var withCloseButton = false if (traitCollection.verticalSizeClass == .compact) { withCloseButton
I am having trouble getting RevenueCat to work properly in my project when building for visionOS, integrating via CocoaPods. The problem seems to come from lines like this:#if os(iOS) || targetEnvironment(macCatalyst) || VISION_OSwhere VISION_OS is not defined, even when building for visionOS, causing the code to take the wrong path.How is this supposed to work? I can’t quite figure out where VISION_OS is supposed to be defined. Is there a reason this isn’t just using #if os(visionOS)? Any help or workaround you could provide would be much appreciated!Using Xcode 15.1 beta 2.
I am implementing Paywalls on kotlin for my Android app, however whenever the user swipes back or presses the back button, the paywall simply goes away and a white screen shows up. For context, I am implementing a hard paywall (without a back button, or option to say no). I wonder how I can override this behavior. I am using version 7.4.0.
We are using RevenueCat to manage subscriptions for an app we service. However, we had an issue with the subscribed customer's information not being updated.In fact, on the Apple subscription status screen, the trial is active (the user canceled the renewal) and the expiration date is showing, but in RevenueCat, this status is not updated.What do we need to check?Additionally, if the subscription is made outside of the app, would the status not be updated?
Running a Development Build as well as a TestFlight build both return UNKNOWN STATUS for the iOS method `checkTrialOrIntroductoryPriceEligibility`. I have read other posts that state Sandbox users won’t have a receipt on file to validate, but won’t brand new users NOT have a receipt on file to validate as well? Shouldn’t this scenario make them eligible? Also why would a TestFlight build be returning Unknown Status? I am hesitant to use this method if I can’t even get it to return anything but Unknown. "react-native-purchases": "^6.1.0"
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.