Get help with anything related to RevenueCat.
Recently active
Hi everyone,I’ve created my app in App Store Connect and set up both an in-app purchase and a subscription. However, the In-App Purchase section does not appear on the app version page, so I can’t attach the products for review.At the moment, both products show Developer Action Required, but inside each item everything seems filled out and ready for review. I’ve also confirmed that the tax forms, business forms, bank details, and other agreements are accepted.The app itself got accepted, but the in-app purchase/subscription was returned, so I’m trying to finalize the deployment and resubmit everything correctly.I already tried checking the app version and submission flow, but the IAP/subscription section still doesn’t show up. Has anyone run into this before? What usually needs to be fixed so the section becomes visible and I can submit the app together with the IAP/subscription for review?Thanks in advance.
Hello RevenueCat Support Team,We are experiencing an issue with the getOfferings() function in our iOS app (Swift/SwiftUI).Details:In our RevenueCat dashboard, we have two packages within the same Offering:Weekly package (subscription) Yearly package (subscription)Both products are properly registered and published in the App Store, and we have confirmed their "Approved" status in both App Store Connect and RevenueCat.However, when getOfferings() is called in production (App Store build), only the weekly package is returned. The yearly package is missing from the offerings response.We have confirmed that:Store product IDs match exactly with RevenueCat product IDs Entitlements are correctly linked to both products The Offering includes both packages Both products show "Approved" status in App Store Connect The issue does not reproduce in sandbox (debug builds or TestFlight) , both packages return correctly The issue does not reproduce when Xcode is attached to the production build Waiti
13
Hello,My Web Billing app config ("HOURRAIL App") is connected to a live Stripe account (verified in Account Settings, Mode: Live).Real transactions are going through with a “Web purchase link”.However, the config only shows a sandbox key (rcb_sb_...), no production rcb_ key is visible anywhere in the dashboard.Is there a step to explicitly generate/unlock the production key, or is this a provisioning issue?
I’d love to see more flexible credit distribution for subscriptions, especially for cases where the billing period and the credit refresh period are not the same. A common example would be an annual plan where the user pays once per year, but their included credits are delivered gradually, such as a fixed amount every month instead of all at once.This would be very useful for AI products where usage still needs to be controlled through monthly credit allowances. Having this built in would make the setup much simpler and reduce the need for heavy custom logic on the backend.I've seen a lot of similar feature requests but no news and I think it's something that RC user really really wants.
I have 2 non-consumable entitlements for my app. In the paywall, I include a “restore purchases” button. I present the paywall with RevenuCatUI.presentPaywall(). When a user taps the “restore purchases” button, the paywall is not dismissed and no update is shown until the user manually dismisses the paywall. Then the modal that I present is shown.While I’m sure I could make my modal visible via a higher z-index, I’d prefer to have the paywall to be dismissed when the user taps the restore purchases button. AI tells me to use RevenueCatUI.presentPaywallIfNeeded(), but how do I use that with 2 optional entitlements? I.e. present the paywall if either entitlement is missing.
We run an app with a yearly and monthly subscription. We have a great initial conversion rate, but a very high refund rate (10th-20th percentile). People are in general very happy about the product and we have 4.9 stars on the App Store. We are iOS exclusive.I noticed a strange pattern that I’ve seen repeatedly. Users seem to cancel their trial, but then it converts anyway and they request a refund (understandably). I attached a screenshot of a typical flow before a refund.What can be the reason for that? It is hurting out business.We use Superwall as paywall provider, it’s a Flutter app, we integrated the RC customer center so users can cancel within the app via Settings. Our monthly refund rate sits between 2-4%. We also activated the setting that RC automatically advises Apple to grant the refund, since I don’t believe in forcing people to pay for something they don’t want.Any hint is appreciated. Thanks!
Please add chart/easy tracking of renewals. It would be very helpful to know each days total subs - conversions and renewals.Currently you have to troll through the raw customer list ThanksNicolas
I have these 4 subscriptions:In paywall the discounts are shown correctly but in the app, the monthly discount is not there: I'm using product.relative_discount for all of them.iOS works fine, just Android is the one with the issue
I have bit of a pickle. You have to have premium to be able to log in to my app, and when you log in I also log the user in with the user id in revenueCat, so I can trace them better. All good there.. BUT. I have users that buy premium on Android, and then they use their iPhone - also buying premium. And then they login on the iPhone with the same email as they use on their Android.It seems to me that the two subscriptions kind of gets merged. What is happening here? Am I setting myself up for pain? I’m thinking of adding a prefix to the user id. SO if they buy premium on iPhone and then log in, I actually log them in with ios_theirUserId and android_theitUserId.But maybe I should just change it so they can log in without Premium and then share the premium status between platforms. I’m not sure what’s happening now.
Trying to update an IAP price on Google Play Store and I'm locked from making any changes because I need to migrate to wards the OneTimeProduct REST API (away from the current InAppProduct resource).Taking a look at the RevenueCat Google Play Store configuration docs, it looks like it still uses the inappproducts API.Is there any plans to migrate to the new OneTimeProduct API so that we can migrate away from the old and be unblocked to manage our prices?
My app offers a subscription that awards in-app credits on a recurring basis. These credits when used in the app cost me operational costs, with a relatively low profit margin. Occasionally a user will subscribe, use most or all of their credits incurring me significant charges, then request a refund which so far has been granted in full every single time by Apple.I have enabled sending consumption data to Apple, as well as tried setting the refund preference to decline refunds to avoid incurring further cash loss. I then contacted Apple, and they directly told me there is nothing I can do, and they do not have any suggestions. Perhaps this abuse is allowed by Apple, and we just have to price it in to our service cost, but I was wondering if anyone else has experienced something similar or if you have any genuine suggestions Apple isn’t sharing with me?
I had the design I wanted for phone and then switched to a tablet thinking that you all saved the phone version. I went to adjust that because it didn’t fit right on a tablet, and it messed up my phone design. Do you all not have a way to do phone and tablet separately? I’m not well versed with the design but on varying platforms, when I switch it has a separation for phone and tablet and one doesn’t affect the other.
Hi guys/gals, Does anyone know if I have to have a mobile app in order to use RevenueCat? I have a React/Node web app that I want to use RevenueCat has my paywall provider but I dont’ have a mobile app at the moment. Please advise or ask more questions about my situation. Thanks!-Colin
Hey! I’m exploring a system in my app where users can either pay a one-time fee to unlock a single specific article in a news app, or subscribe (monthly) to unlock all articles in the app.The subscription is easy. Product => Entitlement, check for the entitlement, badaboom, done.I am however not 100% sure on the best way to “unlock a single article”.I understand how to trigger the purchase, and I understand I need to implement a webhook against NON_RENEWING_PURCHASE to confirm receipt. What I’ve yet to nail down is the method in which my server knows which article to unlock.Is there a way to attach any form of metadata in the purchase? (`article: 123456`). I can’t seem to spot it.Alternatively, is the flow to have the app itself (after the purchase goes through) call an “unlock” API on my server with transactionId and article ID, which then looks for a corresponding webhook?With this flow, how would folks recommend handling the race condition between the webhook (which per docs can
I need help with some reports and the AI model here provide different answers everytime I ask some info.I have sent multiple emails and unfortunately - no response yet.Hoping to have someone from RevenueCat to help me, asap.
Hi team — I have a production iOS app launched 5 days ago, zero subscriptionsbecause Purchases.getOfferings() returns null current. Confirmed via REST APIV2 that subscription.duration is null in your database for our products(project proj7ea33d78). Sent a detailed support ticket 12h ago, no responseyet. This is blocking revenue on a launched app. Can someone from engineeringtake a look? Reference our support ticket about project proj7ea33d78.
I’m trying to set up an integration with the v2 API. I will need to create a RevCat customer if one does not already exist for this person, so I will need to search for a customer by app user id (and create a new customer if one is not found). But I can’t find any API that allows me to find customers by app user id (which is the only thing we have on our backend). How can I do this?
Hello, I’d appreciate some advice about adding another subscription duration to a released app.The app currently has a published paywall that contains only 1 package for an approved monthly subscription. I'd like to submit a weekly subscription to Apple for review and add the weekly option to the paywall alongside the monthly one.I’ve done the following so far:added the weekly subscription in App Store Connect to the subscription group with the same level as the monthly subscription it's now in "Ready to Submit" status imported the new weekly subscription as a product in RevenueCat attached the same entitlement as the monthly subscriptionThe app uses the “current” offering from the SDK to display the paywall, so the released version should be able to show the new subscription with an updated offering/package/paywall.I’m not sure whether I should modify the existing offering and paywall or create new ones.Can I modify the existing offering and paywall in place to add the weekly option w
Hello,I am experiencing an issue where the Introductory Offers displayed in my app (via RevenueCat SDK) do not match the configuration in App Store Connect.Variable: product.offer_period_in_daysCurrent Configuration of Introductory Offers in App Store Connect: Product A: 7-day Free Trial Product B: 3-day Free Trial Observed Behavior in TestFlight: RevenueCat returns a 365-day period and a 7-day period for these products instead of the configured trials. Environment: SDK: React Native Environment: TestFlight
Hi all,I've launched a privacy-first companion app — no sign-up, no login, no email collection. All data stays on-device by clinical design.Verified healthcare professionals apply via my website for free access. I want to grant them a 1-year promotional premium entitlement via the dashboard. The catch: I can't search for their customer record because email isn't indexed (and isn't passed via the SDK).What's the recommended pattern?Custom App User ID via logIn() with an opaque token I email them?Or a different approach for apps without sign-up?Anyone built something similar - all advice is very welcome!Thanks!
Hi RevenueCat team,I’m using RevenueCat Virtual Currency for subscription-based credits where credits expire at the end of the subscription billing period. The normal spending behavior works well for this model: expiring credits are consumed first, and unused subscription credits do not roll over into future periods.I’m running into an issue when consumed credits need to be refunded.Flow:A subscription grants expiring credits for the current billing period. My backend spends credits through the virtual currency transactions API. In some cases, that spend needs to be reversed/refunded. Today, the only option I see is to create a positive virtual currency adjustment through the API.The problem is that this positive adjustment appears to behave like a new non-expiring/admin adjustment, rather than being tied back to the original credit bucket that was consumed. So if the original spend used expiring subscription credits, the refund can effectively turn those credits into non-expiring cred
Hi everyone,My yearly subscription is not appearing in the production paywall, while monthly works correctly. Both products work as expected in TestFlight. The app has been live for ~40 hours since approval and the issue persists.Products:Working in production: monthly subscription Missing in production: yearly subscription Both products: Status "Approved" in App Store Connect, "Approved" in RevenueCat, Cleared for Sale, all countries selected, in the same subscription groupRevenueCat config:Both products are attached to the current offering as $rc_monthly and $rc_annual Both share the same entitlement Using the components-based PaywallWhat I've verified:Live API key (not sandbox) is in the production build — confirmed because monthly works Paywall renders both packages correctly in TestFlight using the same build Pricing is set on both products in App Store Connect Console.app on a production device shows the app is hitting Apple's production storefront for the correct bundle IDHas an
I went through the whole Troubleshooting checklist. I haven’t even submitted a new release since December, so nothing has changed. I have only one Offering, one Entitlement, and 3 Products, 2 of which I’m using. It’s a SwiftUI app in XCode. It’s as simple a configuration as possible. And it started randomly giving me Error #23 recently. The only thing I can think of is that my Apple Dev Subscription did renew during that period. But all the numbers stayed the same. I even re-generated the API and In-App keys in the store. I've tried updating all the client libraries and running it from XCode as well. Nothing gets rid of the error. Any ideas?
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.