Get help with your SDK implementation.
Recently active
Is there a way to add a video to the existing fullscreen paywall in place of the image?
Within a local Xcode testing environment we sometimes run in to the following error (which is received from RevenueCat):Error Domain=RCBackendErrorDomain Code=7638 "There is another request in flight trying to perform the same action."This is the error that we receive back when we try and make a purchase (within the following code block): func purchase(package: Package, completion: @escaping (InAppPurchaseResult) -> Void) { purchasePackage(package) { _, purchaserInfo, error, userCanceled in if userCanceled { completion(.userCancelled) } else if let error = error { completion(.failure(error)) print(error) print(error.localizedDescription) } else if purchaserInfo?.entitlements.all["unlocked"]?.isActive == true { completion(.success) } else { // According to RevenueCat doc it should never happen } } }Even though we receive
Hi All,I have more than 15k active user and only handful of people having this issue. The customer created the account but we are unable to see his transaction history, upon further inspection we found out that the user is already paying for the subscription, it’s just RC don’t recognize it.After following the below doc, I realize that we might have to add restore Purchase functionality to overcome this issue. After testing in sandbox we got a weird issue which says :-“😿‼️ There is already another active subscriber using the same receipt.” which is coming from the API with endpoint “/v1/receipts”. NOTE:- Both the sandbox and app account are new so there is no way that the sandbox had an previous purchase history. Now I am a bit confused and really want to sync everything for these users, I am looking forward for a saluting from this community. Thanks & Regards Mayank Sharma
When I try to sync purchases on one of my devices, I get the following error:Error syncing purchases StoreTransaction(orderId=null, productIds=[plus_upgrade], type=INAPP, purchaseTime=1641997886514, purchaseToken=<redacted>, purchaseState=UNSPECIFIED_STATE, isAutoRenewing=null, signature=<redacted>, originalJson={"productId":"plus_upgrade","purchaseToken":"<redacted>","purchaseTime":1641997886514,"quantity":1,"developerPayload":null}, presentedOfferingIdentifier=null, storeUserID=null, purchaseType=GOOGLE_RESTORED_PURCHASE, marketplace=null, subscriptionOptionId=null, replacementMode=null). Error: PurchasesError(code=UnknownBackendError, underlyingErrorMessage=Backend Code: 7651 - The payment for this non-subscription product is not complete., message='There was an unknown backend error.')On the Play Console, I see that this in-app purchase has been refunded and it has a proper order ID.Any idea?
Hi, I’ve been using Paywall with React Native, and it’s been great so far, but it doesn’t handle subscription upgrades/downgrades for Google Play, which is a major issue.Without this essential feature, Paywall becomes almost unusable for managing multiple subscriptions on the Play Store.Are there any solutions to make RevenueCat Paywall work for upgrades/downgrades with Google subscriptions in React Native?
I am using Flutter, fyi.How do I check that the user is logged into their google account (and Play Services) on their device, so that I don’t get an error when I show the paywall?
offering] DEBUG: ℹ️ Skipping products request for these products because they were already cached: ["pinqin_10_skill_coins"][purchases] INFO: 💰 Purchasing Product 'pinqin_10_skill_coins'[error] ERROR: 😿‼️ The operation is already in progress for this product.[purchases] ERROR: 💰 Product purchase for 'pinqin_10_skill_coins' failed with error: Error Domain=RevenueCat.ErrorCode Code=15 "The operation is already in progress for this product." UserInfo={NSLocalizedDescription=The operation is already in progress for this product., readable_error_code=OPERATION_ALREADY_IN_PROGRESS_FOR_PRODUCT_ERROR, source_function=addPurchaseCompletedCallback(productIdentifier:completion:), source_file=RevenueCat/PurchasesOrchestrator.swift:986}along with this whenever I am restarting the project , it works fine without this error.
Hi RevenueCat Support,I'm encountering an issue with my app, which was recently released on the App Store. When making a conversion via a sandbox account, the entitlements are not activating, and the CustomerInfo object consistently shows no active entitlements. Here’s an excerpt from the debug log:[DEBUG] Transaction: Optional(<StoreTransaction: identifier="2000000720835399" product="XXXMONTHLY" date="2024-09-20 20:48:21 +0000" quantity=1 >) [DEBUG] PurchaserInfo: Optional(<CustomerInfo: originalApplicationVersion=1.0, latestExpirationDate=Optional(2024-09-20 20:53:21 +0000), activeEntitlements=[:], activeSubscriptions=[:], nonSubscriptions=[], requestDate=2024-09-20 20:53:49 +0000, firstSeen=2024-09-20 20:51:57 +0000, originalAppUserId=EF36029C-E740-4B3C-B14C-1E179B37FD8D, entitlements=["PRO": "<EntitlementInfo: \"\nidentifier=PRO,\nisActive=false,\nwillRenew=false,\nperiodType=PeriodType(rawValue: 0),\nlatestPurchaseDate=Optional(2024-09-20 20:48:21 +0000),\noriginalPurc
Is there a way to send customer data when you use presentPaywall? All of my customers are anonymous.App User ID$RCAnonymousID:dad1b19971024dfcbb968e83ac87e288I’m using the react node package,import RevenueCatUI from 'react-native-purchases-ui';await RevenueCatUI.presentPaywall({displayCloseButton: false,});
Hello,I’m using Revenuecat SDK in flutter (purchases_flutter 6.30.2).I have an app on Google Console with a free phase of 10 days.When I call Purchases.getOfferings(), I'm getting it, but the duration is expressed as below:period shows P1W3D = 10 days (ISO 8601), which is ok.periodNumberOfUnits = 7 days, which is wrong.Is there a problem in my interpretation or the data returned is inconsistent ? I found the same problem in freePhase.billingPeriod:Thanks for your supportChris
It was working fine a few weeks ago, but now it just crashes every time I try to configure RevenueCat. Issue goes away when I don’t configure it.What do I do?
Is there a way to set custom package name & details on paywalls? Currently, you can only set the same info across all packages. I have different packages that offer different levels of access (which need some description and can’t be purely forced into the name). I see the Siamese (tier) option allows this but the other paywall templates do not. Thanks.
Hello, I'm starting to test the platform and I came across a problem using the Purchases.setAttributes method in Flutter!When I create a customer with the ID: "teste_123", and put some information in the Purchases.setAttributes method, everything works normally. I can see this attribute information both in the webhook and in the platform.However, if I cancel this subscription and make a new one with the same customer, the information is no longer set in the attributes.My code looked like this:
I’ve set up a default paywall for my React Native app which updates and displays correctly on my main device (iPhone 15 Pro). However it was rejected from the App Store because when they open it, it shows a much earlier version of the paywall without all the features or formatting included. This is also the case on my Android test device. If the updated paywall is showing on one device, why wouldn’t it work on the others?I should mention that the updated paywall is still not showing correctly on all devices more than 12 hours after creating it (changes update instantly on my main device, though).
Purchases work fine, but I realised my users take no further steps as expected. So I debugged with a Appstoreconnect Sandbox user and real iPhone device.After the purchase in PaywallFooterView(), log shows both debugPrints from onPurchaseCompleted, but navigation inbetween gets ignored. A bit strange since not async. Navigation in onDismissed gets executed.I can probably workaround by settings flags in onPurchaseCompleted, and navigate to another page in onDismissed, but I think this is unexpected behaviour?Log:flutter: 🟩💰 onPurchaseCompleted msg[paywalls] DEBUG: ℹ️ Looking up localization but found no stringsflutter: 🟩💰 onPurchaseCompleted - Transaction: xyzflutter: 🟩💰 onDismissflutter: Page2 opened Code in PaywallFooterView():onPurchaseCompleted: (CustomerInfo customerInfo, StoreTransaction transaction) {debugPrint('🟩💰 onPurchaseCompleted msg);Navigator.of(context).push(MaterialPageRoute(builder: (context) => Page1()));debugPrint('🟩💰 onPurchaseCompleted - Transaction: ${
I’m playing around with releasing my mobile app as a web app, as it’s on the same codebase. The only thing is missing is being able to offer purchases.I know the JS SDK is in Beta, and I guess if I was not a solo-dev, I’d use the stripe integration instead as it seems more mature and stable.Is anyone else here using it in production? How is it working out for you all?
I’m look at the targeting logic to choose a different offering to show a user based on either custom attributes or placements sent from the app. I don’t see why you need placements, in terms of you could just create a custom attribute with a name like “paywall-opened-from” and have different values depending on where the user launched the paywall from e.g. “first-run”, “settings”, membership-page” etc. Why have this separate concept of a placement along side custom attributes, what are the benefits of using them vs. just creating an attribute to define that logic? Thanks.
Is the web sdk “@revenuecat/purchases-js” suitable for use on a node.js server or does it have browser specific dependencies? If it is not, is using an open-api client generator the preferred way to use the rest API?
Hi, My game is distributed via Steam on Windows Desktop Platform. I’ve already setup RevenueCat Store Page and Stripe as well. I need to use Stripe payments because my game is distributed only on Windows Plaftform. But in the Purchase script I see only Android/iOS and Amazon. But I don’t use none of these because my game is on Windows Desktop.So, How can I use RevenueCat with Stripe configuration in Purchase Script? Please help me!
According to Revenuecat documentation:“Subscriber attributes are only synced with RevenueCat servers on app launch, app backgrounded, and when purchases are made or restored.” However, we want to sync these attributes to RevenueCat servers without app being sent to background.As you can see from the attached pictures of code I tried, and debug logs, I could never force subscriber attributes to be synced to revenuecat servers without app being sent to background. They are also synced if there is a purchase, but after purchase event. However, we need to use them for before purchase event. Because they are missing with the initial purchase event webhook we are receiving from revenuecat.Any help would be greatly appreciated, thanks
Whenever a user logs out or updates an app their subscription seems to be lost. We are using React Native SDK.
Hi, We are using Expo EAS to build our app and looking forward to integrate RevenueCat SDK to our project. In RevenueCat React Native SDK Docs, it is pointed out that we need to add payment/billing permissions for Android and IOS (Link). However, with Expo EAS in Managed, it is not possible to modify xcode and gradle projects. I have seen that some people used EAS successfully with RevenueCat, so can somebody please share how they did the “Android Billing Permission” and “IOS In-App Purchase Capability” configurations? Thanks a lot.
Hi,My app was rejected because the paywall didn’t load:- Device type: iPhone 13 mini and iPad Air (5th generation)- OS version: iOS 17.6.1 I’ve seen this image when the paywall is slow to load. I’ve never seen it not load. It could be because my initial data is slow to load, but it’s never not loaded before.thanks
I am working on preparing an Android app to properly support the `Transfer to new App User ID` behavior. Up until now, the project on RevenueCat was blocking transfers. The app offers access to content based on a subscription, and the users require an account to purchase any subscription. While reading the documentation, I noticed this section that mentions the following auto-transfer behavior:So I made the following changes - as instructed by the docs here - , to make sure the existing subscription tied to the Google Play account doesn’t transfer to an anonymous user id:Only call `configure` or `login` on the SDK when the user is logged in the app (has a user id) Never call `logout` on the SDKHowever, the problem that I noticed is that when I log in to another in-app account, the auto transfer behavior that is mentioned on the doc snippet shown at the beginning is not happening. Is that section of the documentation outdated or am I missing something?Here is an example scenario that I
How do I know the customer id (originalAppUserId) when a notification is sent to my server?When a user purchases a consumible item I can see the userId in the dashboard, but can’t see it in the callback to my server URL. I only get this information:['appAppleId', 'bundleId', 'bundleVersion', 'environment', 'signedTransactionInfo'] In the signedTransactionInfo I get this keys:[transactionId, originalTransactionId, bundleId, productId, purchaseDate, originalPurchaseDate, quantity, type, inAppOwnershipType, signedDate, environment, transactionReason, storefront, storefrontId, price, currency]None of them are related to the user, so how can I know what user made the purchases being notified to my server?Hopefully somebody can help me out with this.Thanks in advance :)
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.