12. Subscriptions Setup
In-App-Purchase (Sell subscriptions to users )
This is a premium feature to sell subscriptions to your users. Users can purchase subscriptions using Google Pay and Apple Pay.
An extended license is required for this feature. You need to upgrade your license to Extended from your admin panel. Otherwise, you can’t assign courses as premium and the subscription feature won’t be available in the app.
12.1 Android Setup
Setup Payment Profile
From your Google Developer Console Account > Setup > Payment Profile, you need to add your payment profile. Like adding your bank account. If you have already added that, you can ignore it.
License Testing Setup
In this step, you need to add some testers who can test the IAP product in the app and purchase points without any real payment.
From your Google Developer Console Account > Setup > License testing, Add some email addresses.

Upload Initial Build at Google Play Store
To activate IAP for your app in the Google Play Store, you need to add the billing permission in the code section and upload an initial build at the Google Play Store as Close Testing. (Only the testers you will assign in the upcoming step can test the app). You shouldn’t upload it on production.
Add the Billing Permission
From the App source code, Go to the lms_app/android/app/src/main/AndroidManifest.xml file and enable the selected line shown in the picture below. This permission will enable the billing and IAP at the Google Play Store.

- If you already uploaded your app in production and released it at the Google Play Store, you also need to follow the same step (Add billing permission and upload it as a Close Testing version).
Without uploading any new version in the Closed Testing, you won’t see the IAP features.
- Before going to the next steps, make sure you have uploaded a new build in the Closed Testing and published it.
Configure Subscriptions
After publishing a new version with Close testing, you will see the Subscriptions option on your app sidebar.

Create Subscriptions
From Your App > Monetize > Subscriptions, create a subscription by clicking on the Create subscription button.
Product ID can be anything but unique. You must add the duration in days in your product ID. For example,
myplan_7 (for 7 days),
myanotherplan_30 (for 30 days)
- You can’t use any other number in your product ID except the days. Example,
myplan1_30, myplan2_365
This is not acceptable.
Look at the shown below, you will understand how to use product IDs.


- Add Product Name which will be shown on the app.
- After creating the product, add subscription details > Description.

You have to create a base plan for your product. You can create many base plans but only one will be active. A base plan ID can be anything but unique. No extra requirements for that.
- Select Type > Prepaid and select the plan duration.
Plan duration must be aligned with your product_id. For example, if you select 1 week then your product ID must contain 7. If you select 1 month then your product ID must contain 30.

That’s it. Your first subscription plan has been created. This way you can create as many plans as you want. We have used 3 plans for our demo app.
12.2 iOS Setup
Sign A Paid Application Agreement
The first and foremost thing you have to do is to accept the agreement. Go to app store connect -> Agreements, Tax, and Banking. You will see two agreements. One for Free Apps and the second for Paid Apps.
Free apps agreement doesn’t require you to add your bank account and fill in the Tax information, but Paid Apps do require. You need to accept the Paid Apps agreement. Once you accept the agreement and fill in the necessary information, your status of agreements will be active. Just like this 👇🏻👇🏻👇🏻

Configure Subscriptions in App Store Connect
From your Appstore Connect, go to Your App > Subscriptions.
- Create A subscription group. Group name can be anything. You will create all of your subscription products within this group.


- Enter reference name and Product ID.
Product ID can be anything but unique. You must add the duration in days in your product ID. For example,
- myplan_7 (for 7 days),
- myanotherplan_30 (for 30 days)
You can’t use any other number in your product ID except the days. Example,
This is not acceptable.
Look at the shown below, you will understand how to use product IDs.

- After creating the product, Select your plan duration.
Plan duration must be aligned with your product_id. For example, if you select 1 week then your product ID must contain 7. If you select 1 month then your product ID must contain 30.

- Select countries and set prices for your subscription.
- Add AppStore Localization which will be visible to the users.

- Save the product. That’s it.
That’s it. Your first subscription plan has been created. This way you can create as many plans as you want. We have used 3 plans for our demo app.
Add the In-App Purchase Feature in Xcode
From the app source code open the lms_app/ios folder in your Xcode App. Now go to the Runner > Signing & Capabilities and click on the + Capability and add the In-App Purchase option. That’s it.

12.3 Code Setup for Subscriptions
- Make sure you have completed all of the previous steps of 12, 12.1 & 12.2.
Go to the lib/iAP/iap_config.dart file and add your Product IDs here separated with commas as shown in the picture below

After that set the iAPEnaled value to true.

That’s it. Your subscription setup is completed. Now, you can test the app and the products and publish your app in production by uploading a new version.
To test the In-App Purchases feature, use a real Android or iOS phone. Emulators/Simulators won’t support this.