Skip to main content

Overview

You still pick the product in App Store Connect and the Encore Dashboard exactly as in Add Subscription Product. What changes with RevenueCat is which billing code your EncorePurchaseController calls and how RevenueCat learns about the purchase.

Add the product to RevenueCat first

Creating the product in App Store Connect is not enough. RevenueCat keeps its own product catalog, and the mapping from a product to an entitlement lives there rather than in the store. Complete both steps below before you ship the offer.
1

Connect your store, if you have not already

The import needs App Store credentials. Until they are connected, RevenueCat does not show an import option at all, so this step is easy to miss and looks like the feature is absent.
2

Import the product into RevenueCat

Go to Product catalog → Products → + New. The import block sits at the top of that page, before the manual fields. Import runs on demand: RevenueCat does not discover new App Store products in the background, so a product you added after your last import does not appear on its own.
3

Attach the product to an entitlement

Open the product and add it to the entitlement it should unlock. This is a separate action from importing, and it is the step that decides whether a purchase grants access.
Skipping the entitlement step is the common failure. RevenueCat’s documentation warns that failing to add your products to an entitlement “could lead to your users making purchases that don’t unlock access to the promised content.”It does not fail loudly. RevenueCat records the purchase either way: “If a user purchases a product that has not been set up in RevenueCat, the transaction will still be tracked in RevenueCat, and the product will be automatically created in RevenueCat.” That auto-created product has no entitlement, so the sale looks healthy on your dashboard while the customer has nothing.
Attaching an entitlement is retroactive: “Attaching an entitlement to a product will grant that entitlement to any customers that have previously purchased that product.” So if you find a live product without one, attach it rather than refunding those purchases. The same is true in reverse, so detaching an entitlement removes access from people who already paid.

Route the purchase through RevenueCat

Have your controller purchase through RevenueCat. Encore hands it the configured product id and RevenueCat performs the purchase, so a product you registered in the preceding steps updates its entitlements the way any other RevenueCat sale does:

Or let RevenueCat observe a StoreKit 2 purchase

Alternatively, keep the plain StoreKit 2 controller from Presenting Offers and configure RevenueCat to observe purchases your app completes; it detects the transaction on its own:
No extra sync code is needed in this mode. RevenueCat detects the StoreKit transaction itself.
Detecting the transaction is not the same as granting the entitlement. This mode still requires the product to be registered and attached to an entitlement, exactly as in the preceding steps.

Next