Get help with your SDK implementation.
Recently active
When using purchases_ui_flutter I get the following errors when trying to run a debug build:Could not resolve all files for configuration ':app:debugRuntimeClasspath'. > Failed to transform lifecycle-livedata-core-2.8.3.aar (androidx.lifecycle:lifecycle-livedata-core:2.8.3) to match attributes {artifactType=android-dex, asm-transformed-variant=NONE, dexing-enable-desugaring=true, dexing-enable-jacoco-instrumentation=false, dexing-is-debuggable=true, dexing-min-sdk=26, org.gradle.category=library, org.gradle.dependency.bundling=external, org.gradle.libraryelements=aar, org.gradle.status=release, org.gradle.usage=java-runtime}. > Execution failed for DexingNoClasspathTransform: C:\Users\porta\.gradle\caches\8.9\transforms\02266809379a8c0cb61126b0d331cfeb\transformed\lifecycle-livedata-core-2.8.3-runtime.jar. > Error while dexing. > Failed to transform constraintlayout-core-1.1.0.jar (androidx.constraintlayout:constraintlayout-core:1.1.0) to match attributes {
I have tried to hit the https://api.revenuecat.com/v1/subscribers/{userId} endpoint and I receive data back, as the https://www.revenuecat.com/reference/subscribers api docs show: Get OR create a subscriberIf the provided app_user_id doesn't exists, a new subscriber will be created with the App User Id. However, when I go to my customers page I do not see that customer having been created. How can I achieve this? What I’m ultimately trying to achieve is to provide a user with access to my app without them needing to make a purchase, however in order to set a promotional entitlement it would appear the user needs to already be created.Any ideas?
Just testing Paywalls v2 on react-native. iOS works perfectly, Android is showing the fallback - standard paywall. "react-native-purchases": "^8.7.0", "react-native-purchases-ui": "^8.7.0",react-native: ^0.76.1The logs don’t seem to show any errors: ℹ️ Debug logging enabledℹ️ SDK Version - 8.13.0ℹ️ Package name - XXXXXXXXXXXXXXXX👤 Initial App User ID - nullℹ️ Purchases configured with response verification: DISABLED👤 Identifying App User ID: $RCAnonymousID:XXXXXXXXXXXXXXXXℹ️ Deleting old synced subscriber attributes that don't belong to $RCAnonymousID:XXXXXXXXXXXXXXXXℹ️ Listener setℹ️ Sending latest CustomerInfo to listener.ℹ️ setAttributes calledRetrieving customer info with policy: CACHED_OR_FETCHEDℹ️ Vending CustomerInfo from cache.ℹ️ Checking if cache is stale AppInBackground trueℹ️ Starting connection for com.android.billingclient.api.BillingClientImpl@aXXXXXXXℹ️ App foregroundedℹ️ CustomerInfo cache is stale, updating from network in foreground.Retrieving customer info wi
Error purchasing: Error Domain=RevenueCat.ErrorCode Code=8 "The receipt is not valid. The purchased product was missing in the receipt. This is typically due to a bug in StoreKit." UserInfo={NSLocalizedDescription=The receipt is not valid. The purchased product was missing in the receipt. This is typically due to a bug in StoreKit., rc_backend_error_code=7712, rc_response_status_code=422, NSUnderlyingError=0x301610a80 {Error Domain=RevenueCat.BackendErrorCode Code=7712 "The purchased product was missing in the receipt. This is typically due to a bug in StoreKit." UserInfo={NSLocalizedDescription=The purchased product was missing in the receipt. This is typically due to a bug in StoreKit., rc_backend_error_code=7712}}, source_function=parseUnsuccessfulResponse(), source_file=RevenueCat/HTTPClient.swift:890, readable_error_code=INVALID_RECEIPT}Until a couple of days back Lifetime plan used to work. Not sure what happened since 2 days I am unable to purchase this is sandbox mode - I am u
I recently launched a monthly and annual subscription for my app. Both don’t have a free trial, because the product already has a built in free trial (it’s a golf app, users get 5 free rounds a year and then can do either subscription to get unlimited rounds).I’d like to offer promo codes to new users that either give them a free trial or a discount.I built something using offer codes, but tbh offer codes are just so janky on apple’s end that the experience is pretty rough. I’d really love to use introductory offers and build something like so1) I have my own promo code table in my backend that maps a promo code to a SKProductDiscount id2) By default on my paywall screen I only show my products (no introductory offers)3) Users can enter a promo code and if it’s valid, the endpoint will return the SKProductDiscount id4) If the id matches an introductory offer of one of the products, I either update the UI or just trigger the purchase(package:discount:) call automaticallyI know this flow
We've recently upgraded to RevenueCat SDK 8.6.1 in our React Native app and noticed a change in how the paywall events are triggered, for both our old Paywall v1 and new Paywall v2.Previously, when a user subscribed, the onPurchaseCompleted method was called as expected. However, in the latest version, users who start a trial now first trigger onPurchaseStarted and then onDismiss, without onPurchaseCompleted being called.Here’s our implementation: const handlePurchaseStarted = useCallback(({ packageBeingPurchased }: { packageBeingPurchased: PurchasesPackage }) => { posthog.capture("onboarding_paywall_purchase_started", { packageIdentifier: packageBeingPurchased.identifier, });}, [posthog]);const handlePurchaseCompleted = useCallback(async ({ storeTransaction }: { storeTransaction: PurchasesStoreTransaction }) => { posthog.capture("onboarding_paywall_purchase_completed", { transactionId: storeTransaction.transactionIdentifier, productIdentifier: storeTransaction.produc
Sorry if it was asked before, I searched but couldn’t find anything :(What is the best way to calculate the price for annual subscription per month/week? I want to show user, how much he/she will pay for an annual subscription each month or week.An app already implementing this, is Snapchat. I checked all over revenuecat documentation but didn’t find this feature.
I’m encountering an issue where payments made using a slow test card are eventually refunded because they aren’t acknowledged in time. Environment:Google Sandbox environment and slow test card Android SDK 8.11.0 Real-time Developer Notifications have been configured as described hereSTR:Purchase a non-consumable (lifetime subscription) using a slow test card While the transaction remains pending, close the app and wait approximately 7 minutes Reopen the appExpected Result: The user has the non-consumable (lifetime subscription), and the payment completes successfullyActual Result: The user does not have the non-consumable (lifetime subscription), and the payment is refunded. Also, there is an email from Google indicating the purchase was cancelled due to lack of acknowledgment:This test purchase was cancelled because it was not acknowledged. You should ensure that all purchases are acknowledged so that they are not subject to refunds. For more information, see https://developer.android
I’ve implemented Customer Center (works fine on iOS). On Android the dark mode doesn’t work properly. Using default color settings in the Customer Center Appearance config. "react-native-purchases": "^8.7.0","react-native-purchases-ui": "^8.7.0"
Hey guys,is it possible to collect customers billing address via RC-Web.When using stripe its usually just one variable that you pass to the checkout.Yet we have not found a way to do it with RC-Web.ThanksBestPhil
I am working on my paywall which will detect when a customer purchased an older version of my app so that I can offer them a 50% discount or a free period on the subscription of the new app, depending on when they purchased the old app. I’m trying to figure out how to get the prices I’ve set on the offer codes that I will use. I’ve got a button that will take the user to the App Store to complete the purchase and when they come back from the App Store, I’ll sync their purchase and dismiss the paywall. Right now for the 50% discount offer, I’m just diving the subscription price by 2. However, Apple’s offer codes don’t work like that. You have to select specific prices for each offer code. I do display the original subscription price and also a “Your price: $24.99” label just below the button that takes them to the App Store to complete the purchase.But I realize now that the prices I display will be wrong because it’s not always a divide by 2 price. For example, one of my prices is $44.
I have an application with payments implemented using Web SDK. I'm looking for ways to allow users to submit refund requests directly within the app. Are there any options available such as a refund link in the customer portal, or Rest API endpoints that I could use to build a custom UI for refund requests?
Hello!I want to use RevenueCat to centralize subscription management (code) across different platforms (Web, Android, etc.) for the same app.I want to get the native local Stripe products (ids) or prices (ids), and use the Stripe native checkout paywall.I set my native and local products for my Stripe app in the RevenueCat project setting page - see the attached screenshot below.I can use the local Stripe product / price to generate a sessioned Stripe paywall.Do you know how to get the Stripe products (ids) (using RevenueCat SDK or API)?Thanks in advance for your help. PS: Stripe features trial subscription enrollement without requesting a payment method upon; RevenueCat does not.See more in the post at the following link:
Hi All,I have built a Flutter app and used the purchases_flutter package. In the official release environment on the Google Play Store, one of my users encountered an error with the following steps:The user made a purchase before logging in (Purchases.login) with AppUserID = $RCAnonymousID:.... After that, the user logged into the system, and their AppUserID was assigned as their system userId. The user attempted to restore the purchase (Purchases.restorePurchases), but it did not work. The app could not retrieve the previous purchase information ($RCAnonymousID) and sync it with the current user (userId in the system). The Google Store account used for the purchase is still active and retains the purchase history.I checked the Google Store console, and the purchase history is recorded there. When checking the Order ID in the RevenueCat console, and the system recorded the payment with AppUserID = $RCAnonymousID, which was created at the time of the initial purchase. For this issue, I
I’m building a paywall that I would like to have a conditional ‘Close’ button on - in some cases it should be a hard paywall, but in others, I want the user to opt out. I’m showing the paywall with `PaywallView(offering: offering, displayCloseButton: <logic-goes-here>)`, but even if I send in a hardcoded true or false, it makes no difference. I’ve tried this with my Paywall equipped with a ‘Navigate Back’ button, and without, but the ‘displayCloseButton’ parameter never has any effect.
We’ve periodically been seeing a “There was a problem with the store” error when Android users try to purchase. Does RevenueCat have any logs that can help diagnose the error? Or how can I diagnose this problem?
Hello,We’ve got a Flutter app that requires user register / login and we’re providing the SDK with an App User ID tied to those credentials to allow our users to share the same subscription among multiple devices. This is working fine and we recover the same Entitlements no mater the device the user Logs In.What we’re having problems is with subscription management since many actions (Upgrade, Downgrade, etc...) will only work from the device that did the original purchase as stated in the docs: Managing SubscriptionsA user can only manage their subscription on the platform it was purchased from.Having the same App Account logged in in two devices with different Google Play accounts and calling Purchases.purchasePackage() generates the following error:PlatformException(4, One or more of the arguments provided are invalid., {code: 4, message: One or more of the arguments provided are invalid., readableErrorCode: PurchaseInvalidError, readable_error_code: PurchaseInvalidError, underlying
I’m trying to use the new beta paywall builder, but I get this error despite having offerings and products setup.
RevenueCat Paywall Not Displaying Despite Proper Configuration in React Native App.Environment- react-native-purchases: 8.5.4- react-native-purchases-ui: 8.5.4- react-native: 0.74.5IssueI'm encountering an error message stating "offering Default has no configured paywall" despite having already:1. Created a paywall in the RevenueCat dashboard2. Linked it to the Default offering configuration3. Properly integrated react-native-purchases and react-native-purchases-uiWhat I've Done1. Created and configured a paywall in the RevenueCat dashboard2. Linked the paywall to the Default offering3. Installed and configured the latest versions of react-native-purchases and react-native-purchases-ui4. Verified my API keys and configurationCode Implementationimport { View } from "react-native";import RevenueCatUI from "react-native-purchases-ui";export default PaymentSettings = () => { return ( <View style={{ flex: 1 }}> <RevenueCatUI.Paywall /> </View> );}Expected B
Hi everyone,I’ve integrated RevenueCat’s React Native package into our Expo-managed app, and I’m running into an issue getting everything working in Testflight. I’ve added the getOfferings() and purchasePackage() functions into our app and everything is working as expected when running the app locally, but the app is crashing as soon as it’s opened in TestFlight. To create our build for TestFlight, I’m usingeas build --platform iosLet me know if I’m missing anything or if you need anything from my side to help resolve this issue.Thanks!
Hi!Any plans on updating the Arrow dependency? I saw in the libs.versions.toml that it is set to 1.2.4 and since my project was relying on 2.0.1 I was getting build errors (iOS Simulator). Downgrading my project dependency to 1.2.4 helped.I am not sure if there is something in my build.gradle I can set to avoid this but the downgrade was not a big issue for me.BestCorey
I am trying to set up my app for iOS to use my subscriptions. All my subscriptions are in ‘ready for review’ state. I always get this error when trying to fetch my subscriptions. Also my test flight seems to have issues not sure if this may be related but when trying to install it says ‘app unavailable or doesnt exist’I have uploaded my relevant binary I have added subscription relevant metadata I have completed all the agreements (paid and free apps)My issues areConfiguration error when trying to find offerings (API still works i believe and connects to apple but cannot fetch the offerings) Test flight not working properly (not sure if related)flutter: PlatformException(23, There is an issue with your configuration. Check the underlying error for more details. There's a problem with your configuration. None of the products registered in the RevenueCat dashboard could be fetched from App Store Connect (or the StoreKit Configuration file if one is being used). More information: https://
Hi,I’m currently trying to figure out how exactly I’m supposed to show promotional offers when using the pre-built paywall created in RevenueCat and displaying it in a iOS app.I can confirm that the promotional offer exists in the .storekit file.
In my mobile application, users can create accounts.When logging into an account, I call logIn() in the RevenueCat SDK to set a custom app_user_id.When logging out, I call logOut(). Subscriptions are only available to authenticated users. Users can create groups within the app.When a user purchases a subscription, premium access is granted to all members of their group. To handle this, I have a table in the database that stores data about the active entitlement: PremiumTable:• id (autoIncrement primary key)• Purchase date• Expiration date• groupId – the ID of the group that received premium access• ownerUuid – the ID of the user who made the purchase (I’m unsure whether to store app_user_id or original_app_user_id here). The issue I’m facing:1. A user creates a group.2. He purchase a premium subscription, and a record is created in PremiumTable.3. He log out, which resets the RevenueCat app_user_id.4. He log in with a different account associated with a different group.5. He press Rest
I’m working in React Native and using the RevenueCatUI.Paywall from react-native-purchases-ui. Specifically, I’m using RevenueCat for purchasing subscriptions through Apple. One thing I am seeing is that on my paywall when a purchase is being processed, there is no visual indicator that the payment is processing. So my users are able to continue to press the purchase button and are prompted again through the Apple dialogs to complete the purchase even though it is still processing. Is there a way to disable the purchase button while the payment is processing? Would this need to be done in my code or through the Paywall builder in the RevenueCat portal?
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.