💳

In-app purchase

Use in-app purchases with the RevenueCat platform to create freemium apps, monetize your content, and much more!
In-app purchase is the feature that allows you to build apps with subscriptions for digital products and services. Not only will this unlock recurring revenue for you or your business, but you’ll also be able to grow a loyal and engaged audience that won’t have to leave the app to make purchases.
Requirements
Testing in-app purchase in Bravo Vision is not possible. It will be a "fake" experience.

1. Setting up the UI

In order to set up in-app purchases, several tags are needed.

💾 Sample design file

Purchase actions

These tags will be used anywhere we want to allow users to do an in-app purchase.
Description
Tag
Triggers the purchase action. This will normally need to be added in a button where users can execute the purchase. <subscription_id>will be the name of the subscription created in the stores and in Revenue Cat (see next section).
[action:purchase:<subscription_id>]
Use this tag, together with the {price} expression in the design file, to show the price of the purchase. Check out our sample designs to see an example.
[price:<subscription_id>]

Paywall

Use this tag to create a paywall page. This page will be displayed every time users try to access content that requires a purchase. This page will usually contain the UI elements with the [action:purchase:<subscription_id>] tag.
Description
Tag
Defines the paywall page
[page:paywall]

Access control

Use this tag to create pages that only users who made a purchase can access.
Description
Tag
Defines a page that requires a level to access. Separate the subscription IDs with commas, in case there’s more than one. For example, [require-purchases:basic,medium]
[require-purchases:<subscription_ids>]

Conditional visibility for purchases

Allows to show/hide containers, and components depending on the purchase, allowing a lot of flexibility that can be already configured by tags in Figma and not in API calls.
Description
Tag
Defines when an element is visible. Separate the subscription IDs with commas, in case there’s more than one. For example, [with-purchases:basic,medium]
[with-purchases:<subscription_ids>]

Restore purchases

Action needed to restore purchases in case the app is deleted, a new device,…
It’s a requirement from Apple Store to have it.
Description
Tag
Restores purchases
[action:restore-purchases]

2. Configuration steps RevenueCat + Bravo

⚙️ iOS configuration

  1. 1.
    Configure the products/subscriptions on appstoreconnect, usually the ids are <bundle_id>.<product_id>
  2. 2.
    Configure an account in RevenueCat, create an app
  3. 5.
    Create the entitlements, offers, and products in RevenueCat
  4. 6.
    Entitlements are like the different levels
  5. 7.
    Products are all subscription types, Apple purchases products
  6. 8.
    Offerings are group products, that are available ins a specific time, mostly used for marketing purposes
  7. 9.
    Attach in the entitlements the products
  8. 10.
    Create one offering, only the “default” offering is supported!
  9. 11.
    Attach the products to that offer
  10. 12.
    We create offerings with “Custom” if we have several monthly products, for example, using custom allows us to use the idea we want. Also, we cannot add multiple products in an offering..probably a bug.

⚙️ Android configuration

You need to create your subscriptions in Google Play. By the time of the creation of this document, subscriptions in Google Play seem buggy, so please read carefully the instructions. The right steps to create subscriptions are:
Google Play Steps
  1. 1.
    Need to have an app published and live in Google Play (mandatory).
2. Create a Closed testing track, and upload an AAB with a newer version. Wait until the app is approved (need to be reviewed by Google even in this Closed testing track)
Google play Console view
3. Need to add a tester, and the tested needs to join your test either via Android or web
4. Once the previous steps are done correctly, users should be able to create a subscription in the Monetise - Products -Subscriptions section in the left side menu. If users see the screenshot below, it means steps 1 to 3 are not completed correctly
5. Click on Create subscription and enter Product ID and Name (this product ID will be the same you enter in RevenueCat)
6. Click on add a base plan, chose base plan id and select auto-renewing
7. 👉 IMPORTANT: Select Manage country/region availability in blue. If you try to add a country directly in the Edit base plan section, you might get unexpected errors trying to save
8. Unselect 95 countries/regions, search your country, check the box and click apply
9. Click on Price, enter a price and Save
10. Click Save
11. Click activate
12. Go back to the subscriptions on the main page, and if you did everything correctly, you should see your plan as active
To recap, at this point you should have:
  • Your app published in Google Play
  • A new version with the RevenueCat library integrated (new build requested in Bravo), published in a Closed testing track
  • At least one tester that joined your testing track
  • All your subscriptions created in Google Play
Now you need to replicate your subscriptions in RevenueCat
Revenue Cat Steps
  1. 1.
    Configure an account in RevenueCat if you don’t have one, and create a project. Then, create an app for that project (remember you need two different apps for Android and iOS)
  2. 2.
    After registering your app, we recommend setting up Platform Server Notifications. These notifications aren't required but will speed up webhooks and integration delivery times and reduce lag time updating your subscribers. Bear in mind this setup is for advanced users.
  3. 3.
    Create your products, entitlements, and offering in RevenueCat. To clarify the concepts:
    • Products are all your different subscription types (e.g. basic, medium, pro)
    • Entitlements are the different “entrance levels” (e.g. one entitlement must have at least one product, but may have more than one)
    • Offerings are a group of products, that are available ins a specific time, mostly used for marketing purposes. We only support one “default” offering.
  4. 4.
    First, create all your products. In our Recipes example, the list of products looks like this (note you need to create separate products for Android and iOS)
  5. 5.
    Then, create all your entitlements (normally 1 entitlement = 1 product, but this depends on each particular case)
  6. 6.
    After you have products and entitlements, you need to attach each product to its corresponding entitlement. In our Recipes example, we added 2 products to each entitlement (1 per iOS and 1 per Android):
  7. 7.
    Create an offering: “default” (the only one offering supported for now) and add a description
  8. 8.
    Enter the created offering, and click on “ + New” to add a Package
  9. 9.
    Select “Custom” in the first dropdown, and then enter the Identifier name (i.e. your product name) and a description
  10. 10.
    Enter the created package, and click on Attach
  11. 11.
    In the popup, you should see all the products you added in the previous steps. Attach the ones that correspond to the package. For our example, in the pro package, we will add the “pro products” for Android and IOS:
  12. 12.
    Click on Attach. Repeat this process for all the packages you have. When you’re done, you should see in the default offering all the packages (a.k.a subscriptions) that you have.
  13. 13.
    Then you are ready to go!🚀