Get help with anything related to RevenueCat.
Recently active
We are playing with the idea of introducing an affiliate program that revolves around using offer codes to track purchases. Very much in the same way that you see podcasts doing it by telling their listeners to enter code “PODCAST” to get 10% off, which in turn allows the company to track sales and measure campaign performance. I know that iOS and Android both have offer codes, but I think this type of thing would require a more custom solution. Has anyone done this before? I know we could easily build our own system that generates codes, and let users enter a code in the app, which we verify, then display alternate pricing and tag the user with the offer code. But then we have to figure out the best way to track sales, retention, life time value, refunds, etc. to determine how to pay affiliates. Would we be able to utilize any of the integrations for this purpose? Has anyone done this in combination with a promotional service like https://www.talon.one/?Any insight here would be appre
For some reason, the `{{ product.price_per_month }}` has a different currency symbol than `{{ product.price }}` Does anyone has an idea how to fix it?
Recently i have seen that lot of renewals from billing retry. These users are like June or July month users. After getting charged these users are asking for refunds and apple is approving it. This is causing issue in total refund rate for us. We already received notice from apple for higher refunds rates. But this issue keep increasing day by day. Anyone can help me in this?
My app uses credits as consumable in-app purchases. What I want is to restore users' credits after they reinstall the app. Is there a way to maintain the same user ID so that I can use them to restore users' credits in the back-end?
Image changes are not propagating to paywalls in production. This is happening for 3-4 days now across multiple paywalls and multiple test devices (physical and sim). I’ve tried removing the image, republishing, re-adding the image, republishing, but there’s no change to the image content at all. Text changes to the paywall in immediate and working as expected. I’m not sure if it’s related, but I did upgrade to the 5.35.1 iOS SDK last week. I already created a support ticket a couple of days ago, but wanted to raise here in case there was a workaround anyone is aware as this is blocking me from releasing a new subscription option.
For the life of me I cannot figure this out! I have a year and half of app dev for my app Chip In, everything is tested out perfectly, but this last subscription issue, which is keeping me from going live. I am testing in Sandbox and 100% logging out of my main apple account michael***@gmail.com completely, logging in to the test phone (latest OS) with a new apple test account setup in sandbox test**@chip***. So 100% the phone is not logged in with this first account. No matter what I do, it keeps saying receiptAlreadyInUse when I try to make a purchase of one of my two subscriptions setup in apple. My app connects to PLAID financial and i get billed for daily webhook synchronizing one or more of their banks/credit card accounts. So I can’t just transfer subscriptions to new IDs as they could bounce back and forth between multiple users, while I get charged $$$ in the background from PLAID synchronizing all those accounts with their bank transactions, al though they are effective
I setup RevenueCat recently to deal with a subscription IAP for my app. It all works perfectly.I noticed that my consumable & non-consumable IAPs (which were setup years ago and have nothing to do with RC) are also appearing in my transaction reporting. My question is this: Do these transactions count towards the £2,500 per month free usage? And if so does anyone know how to remove them from RC? I tried deleting these products but it complains they have transactions against them. All my ‘checks’ in the apps that users have these consumables/non-consumables are done through Apple Directly, not involving RC.
Hi I’m having the following problem:I cannot add additional fonts to the paywall designer or additional font styles (e.g. bold).I already uploaded a Custom font (Display fair) and it only registered regular and italic.Now I want to add additional styles for this font but besides uploading the fonts and styles and seeing the process bar filling up they are not added.I can also not delete the fonts I already uploaded. What can I do ?
BackgroundI posted an earlier, slightly incoherent ,version of this on the Shipaton livestream discord during the Paddle web payment event, without anyone having time to answer.These ideas may be interesting for anyone debating complex business models and associated payments.Martial arts domainMy app is for clubs and instructors for martial arts (I’m deeply into kung fu and tai chi) & I’m pushing to get it wrapped well enough for Shipaton (unsurprisingly).It will be international from day one and needs to be cross-platform because of SE Asian Android dominance.Whilst initially pitching the idea very much at clubs with members attending in-person, there’s a lot of scope for them to profit more from online sales.DefinitionsThe proposed monetisation model is around teachers and students. Teachers may be associated with a club but, at least for now, “teacher” as a proxy for the club works to, uhh, simplify this.I’m using the term “course” in a very broad sense - it may encompass a sing
Hi, I’m currently trying to integrate this APIhttps://www.revenuecat.com/docs/api-v2#tag/Customer/operation/list-subscriptionsIn the response example, it shows `entitlement` with `product` details of that entitlement. But, from my testing, the `product` field is not in the response. I've tried experimenting with `expand` parameter with multiple values, but the `product` field is not showing. Is the documentation wrong? Can you tell me how can I get the `product` details? "entitlements": { "items": [ { "created_at": 1755827296320, "display_name": "Premium", "id": "entl861f....", "lookup_key": "premium", "object": "entitlement", "project_id": "proj8d....." } ], "next_page": null, "object": "list", "url": "https://api.revenuecat.c
Context1I have an existing iOS app using RC for subscription and lifetime purchase of Pro features.I am about to roll out a Mac version (part of Shipaton).For both, I would like to implement virtual currencies. This is a long-planned feature to be used to buy content where a portion of the payment would be forwarded to content authors. I’ve implemented most of the local document model including content rights tracking all the way down, was holding off hoping you’d solve the rest for me.I have also considered allowing coins to be used to purchase short-term access to Pro features, for people who hate subs and don’t want to commit to the size of the lifetime purchase.These products (Touchgram) emphasis user privacy and preserve anonymity, requiring accounts only for people who will be submitting content for re-sale. Context2As a separate Shipaton submission, I’m building a Compose Multiplatform app. However, if virtual currencies prove problematic, I think the business model can work wit
I’ve been working with the API and noticed that in several endpoints where active_entitlements or similar objects are returned in a lightweight format, we only get the internal entitlement_id, like this: { "entitlement_id": "entl498b7a7b44", "expires_at": 1755783769000, "object": "customer.active_entitlement"}However, it would be extremely helpful if the lookup_key was included as well in these responses.For example, in:GET /v2/projects/{project_id}/customers/{customer_id}GET /v2/projects/{project_id}/customers/{customer_id}/active_entitlementsWe only get the internal ID, and in order to know which entitlement this refers to (e.g. "Pro", "Premium", etc.), we have to make an additional API call to:GET /v2/projects/{project_id}/entitlements/{entitlement_id} This adds unnecessary complexity and overhead, especially when managing entitlements for multiple users at scale.Would it be possible to include the lookup_key directly in all entitlement summaries across the API?It would make inte
I’m building an app where the user can make a purchase without creating an account. In this case, RevenueCat associates the purchase with an anonymous App User ID. Later, I prompt the user to create an account, and I call:await Purchases.logIn(newUserId)(Using Flutter SDK)This correctly links the original anonymous user to the new App User ID (an alias is created in the dashboard), but no TRANSFER webhook is fired.I’m relying on RevenueCat webhooks to keep my backend subscription data in sync, but in this case no webhook is triggered — so my backend doesn’t get updated.Questions: Is this expected behavior when logIn() creates an alias rather than transferring the purchase? If so, what’s the recommended way to update my backend in this flow?
Hello,Two of my customers have downgraded from an Annual (Trial conversion) to Monthly.It is my understanding that the down grade would only ‘apply’ at the end of the current subscription period (therefore in 12 months time for these candidates)However the screenshot here in RC is showing an immediate change and the Total Spent reflects the Monthly subscription price. When i check ‘View Details’ to see the events, i only see PRODUCT_CHANGE, i don’t notice any refunds. Can someone explain what is happening? Why is Total Spent reverted to a monthly value. I’d expect it to be for the Annual Tier (which is $99.99)
I am getting the V2 Paywalls setup. I have it working on my Simulator just fine. Now I am testing an actual device & my Paywall gets stuck.the `applicationId` is the same on both. I was originally calling `await Purchases.getOfferings();` so I could show my custom loading instead of the loading paywall UI. But that was getting stuck also.There are NO errors in my logs. I do have `MISSING_METADATA` warnings, but isn’t that OK because it’s a “DEV” bundle and will never actually be submited for approval. Plus, it renders on the simulator. That being said, I have added screenshots so they’re now “Ready to Submit”. Is there something different about my physical iPhone compared to simulator? Android is OK on both simulator & device
Hi, Does anyone ever encountered randomly this issue in the lasts few days ?I’m getting that using a Firebase Cloud Functions, never been able to reproduce using Postman... GET /v1/subscribers/{id} return 403 with : data: '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">\n' +'<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">\n' +'<TITLE>ERROR: The request could not be satisfied</TITLE>\n' +'</HEAD><BODY>\n' +'<H1>403 ERROR</H1>\n' +'<H2>The request could not be satisfied.</H2>\n' +'<HR noshade size="1px">\n' +'Bad request.\n' +"We can't connect to the server for this app or website at this time. There might be too much traffic or a configuration error. Try again later, or contact the app or website owner.\n" +'<BR clear="all">\n' +'If you provide content to customers through CloudFront, you can find steps to troubl
Hello,I have an app that’s been live for about a year. When I first set up the project, I didn’t define my own user IDs, so RevenueCat has been assigning them automatically. Now I’d like to switch to using my own user IDs to make subscription granting and tracking easier.My question is: what happens if I assign new user IDs to existing users? For example, if a user currently has a premium subscription under their RevenueCat-assigned ID, will their premium status still be recognized after I set a new ID?This is crucial to clarify, as I want to avoid any risk of premium users losing access to their subscriptions. Thanks in advance for your guidance.
Live paddle webhook is trigger successfully but data is not coming at revenue cat side.For sandbox user data coming revenue side and it is working fine but not for live.I am verify Live api key all fine. then I added the API key in revenue cat then webhook automatically in my live Paddle account. And logs print in paddle as well. but LIve data not coming in RevenueCat sideplease help me what is wrong here
Hi!Is there anyway we could set a “default” entitlement for new users.The trial from Apple Store imply the activation of a subscription and it seems to repeal a lot of users.Is there any way we could have something to give new users the ability to try the app with an entitlement with a limited duration? Doing it through the Rest API induce a lot of latency and we have to wait for the app to contact the server, then the server to grant the entitlement and finally the local customer to synchronise and sometimes it takes a long time. It would be great to be able to assign a default entitlement when a user is created without relying on the various stores. Is something like this possible? Is it a feature you could consider? Thanks!
I’m integrating with RevenueCat webhooks to track subscription plan changes across iOS and Android. From the documentation, I can see the following events are emitted when a plan change occurs: Android: PRODUCT_CHANGE,INITIAL_PURCHASE iOS: PRODUCT_CHANGE,RENEWAL My questions: Can I rely solely on the PRODUCT_CHANGE event to handle corresponding plan changes in the backend for both iOS and Android? Does the PRODUCT_CHANGE event guarantee that the payment has been processed successfully, or is it just an indication of the plan change attempt? In the case of a payment failure during a plan change, what happens to the subscription? Does the existing subscription continue until the end of the billing period? Or would RevenueCat emit an EXPIRATION event for the new subscription?
I’d like to see the list of all customers (people with a revenuecat id, not necessarily a subscription), order by last open or something, is there a way to do that? Or at least get the ability to search by customer id, as typing in all 32 chars of an id from a screenshot gets a bit old quick :) I see customer lists, but is there a way to just do a one time search?
When I access they web billing payment section for react native, it says sandbox on the top. Is this valid or should it not be saying that? Sorry if this was said before I couldn’t find anything about it.
After Google will also open up to external payments (https://support.google.com/googleplay/android-developer/answer/14372887?hl=en&ref_topic=15820351&sjid=9606841540042051-EU) will there be an option for the Web Purchase feature on Android Paywalls as well?
My main question is:Is there another way to implement offer codes aside from using Apple’s native offer code redemption either through URL or Purchases.shared.presentCodeRedemptionSheet()? Context:The apple store connect is really restrictive when it comes to offer codes.Like only having 10 offer codes per subscription. That is important because we plan on using this for affiliates and if we have more than 10 affiliates, we have to make another subscription of the same price but different identifier, and that doesn’t seem like a good solution. This adds up to the fact that RevenueCat’s webhook records the offer code name in the webhook instead of the custom code name.Custom codes are always unique and considers even deactivated offer codes or custom codes. We don’t know how many users our affiliates would get and there’s a set maximum of 25000 redemptions for a custom code which means if that is exhausted, people can’t use that offer code anymore.During testing, there is an occurrence
I have connected with live paddle account but it display me message connected to paddle sandbox. If I have want change any thing live automatic to manual save not actIve, it is always disable and I am not able to save the changes.
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.