Are you trying to create a subscription in Google Play Console but seeing the message “Your app doesn’t have any subscriptions yet” along with an “Upload a new APK” button?
This message usually appears when Google Play has not yet detected an uploaded version of your Android app that supports Google Play Billing. You cannot properly configure subscription products until a billing-enabled build has been uploaded to Play Console.
This guide explains why the message appears, how to fix it in Android or Flutter, and how to create and test monthly, yearly or other subscription plans correctly.
What Does “Your App Doesn’t Have Any Subscriptions Yet” Mean?
The message does not necessarily indicate a Play Console error. It usually means your app is not yet ready to create subscription products.
Google Play needs an uploaded application build associated with your package name. That build should include Google Play Billing support. Once Play Console processes the build, the option to create a subscription should become available.
In other words, Google Play is effectively telling you:
“Upload a billing-enabled version of your app before creating subscription products.”
Although the button may say “Upload a new APK,” most modern Android and Flutter applications are published using an Android App Bundle, or AAB. You can normally upload an AAB to an internal, closed, open or production track.
Why Does Google Play Require an Uploaded Build?
A subscription created in Play Console must be connected to a real Android application. Google Play uses the application package name and uploaded build to identify the app that will request the subscription.
The uploaded build also helps Play Console detect whether the app is prepared to communicate with Google Play’s billing system.
Common requirements include:
- A valid Android package name
- An app created in Google Play Console
- A signed APK or Android App Bundle
- Google Play Billing integrated into the application
- The billing permission included in the final Android manifest
- A build uploaded to at least one Play Console release track
Common Reasons the Create Subscription Button Is Missing
| Possible reason | What to do |
|---|---|
| No app build has been uploaded | Generate and upload a signed AAB to an internal or closed testing track. |
| Google Play Billing is not integrated | Add a supported billing package or library to your application. |
| Uploaded build does not contain billing support | Create a new build after adding the billing integration, increase the version code and upload it. |
| Play Console is still processing the build | Wait for processing to finish and check the Subscriptions page again. |
| Payments profile is incomplete | Review your merchant account, payment profile and required agreements. |
| Insufficient Play Console permission | Ask the account owner to provide the required app and financial permissions. |
How to Fix the Subscription Message in Flutter
If your application is built with Flutter, the general process is to integrate a billing package, generate a signed app bundle and upload it to Play Console.
Step 1: Add a Google Play Billing-Compatible Package
Flutter developers commonly use the official in_app_purchase package or a subscription-management platform such as RevenueCat.
To use Flutter’s in-app purchase package, add it to your project with:
Then run:
If you use RevenueCat, install its Flutter SDK instead:
You do not need to install both packages unless your architecture specifically requires it. Choose one purchase-management approach and implement it properly.
Step 2: Check the Billing Permission
The compiled Android application needs the Google Play Billing permission. Billing SDKs normally merge the required permission into the final manifest automatically, but it is still useful to verify the result.
The relevant Android permission is:
If you add it manually, place it inside the root <manifest> element in:
Important: Adding only the permission does not create a working payment system. Your application must also connect to Google Play Billing, fetch products, launch purchases and handle purchase results.
Step 3: Increase the Version Code
If an older version of the app is already uploaded, create a new build with a higher version code.
In a Flutter project, you can update the version in pubspec.yaml:
In this example, 1.0.1 is the user-visible version and 2 is the Android version code.
Step 4: Generate a Signed Android App Bundle
Run the following command from your Flutter project:
The generated file is normally available at:
Make sure the release build is signed with the correct upload key before sending it to Play Console.
Step 5: Upload the Build to Play Console
- Open Google Play Console.
- Select your application.
- Go to Test and release.
- Open Internal testing or Closed testing.
- Create a new release.
- Upload the signed
app-release.aabfile. - Add release notes.
- Review and roll out the testing release.
You do not need to release the app directly to production merely to begin configuring and testing subscriptions. An internal testing track is usually the fastest option during development.
Step 6: Wait for Google Play to Process the Build
After uploading the AAB, Play Console needs time to process and recognise it. The Subscriptions page may not update immediately.
Once processing is complete, return to:
The Create subscription option should now become available if the required setup has been completed.
How to Create a Subscription in Google Play Console
After the uploaded build is recognised, follow these steps:
- Open your application in Google Play Console.
- Go to Monetize with Play.
- Select Products.
- Open Subscriptions.
- Click Create subscription.
- Enter a unique subscription product ID.
- Add the product name and description.
- Save the subscription.
Choose the Product ID Carefully
A product ID is the permanent identifier used by your application to find the subscription. Keep it short, descriptive and consistent.
Examples include:
A subscription product can contain different base plans, so you do not always need a completely separate subscription product for every billing duration.
Create Monthly and Yearly Base Plans
Once the subscription product has been saved, add its base plans.
For example, a premium subscription could include:
| Base plan | Billing period | Example ID |
|---|---|---|
| Monthly Premium | Renews every month | monthly |
| Yearly Premium | Renews every year | yearly |
For each base plan:
- Click Add base plan.
- Enter a unique base plan ID.
- Select the auto-renewing plan type if it should renew automatically.
- Choose the billing period.
- Set the price for supported countries.
- Save the plan.
- Activate it when everything is ready.
Be careful: A base plan ID cannot be changed or reused after activation. Choose the ID before activating the plan.
Subscription vs Lifetime Purchase
A lifetime purchase should not normally be created as a subscription because it does not renew.
| Purchase option | Correct Play Console product type |
|---|---|
| Monthly premium access | Subscription with a monthly base plan |
| Yearly premium access | Subscription with a yearly base plan |
| Lifetime premium access | One-time in-app product |
| Remove ads permanently | Non-consumable one-time product |
If your application offers monthly, yearly and lifetime premium access, you may need one subscription product with multiple base plans plus a separate one-time product for lifetime access.
How to Test a Google Play Subscription
Do not purchase your subscription normally while it is still under development. Configure license testers and use a testing track.
- Add the tester’s Google account under Play Console license testing.
- Add the same account to your internal or closed testing list.
- Share the track’s opt-in link with the tester.
- Ask the tester to join the test.
- Install the application from Google Play—not from a random APK file.
- Open the app and start the subscription purchase flow.
- Confirm that premium access is granted after a successful purchase.
- Check whether restore purchases works after reinstalling the app.
Google also provides Play Billing Lab for testing billing scenarios such as trial offers, regional behaviour and subscription price changes.
Common Subscription Setup Mistakes
1. Testing With a Manually Installed Release APK
For reliable testing, install the application through the Play Store testing link. A manually installed build may not behave in the same way as a Play-distributed build.
2. Using a Different Package Name
The package name in your Flutter project must match the package registered in Play Console. Subscription products belong to one specific app.
3. Using the Wrong Product ID
The product ID used in your Flutter code, RevenueCat dashboard and Play Console must match exactly. Product IDs are case-sensitive.
4. Forgetting to Activate the Base Plan
Creating and saving a base plan is not enough. It must be activated before eligible users can purchase it.
5. Forgetting to Acknowledge the Purchase
Initial purchases must be acknowledged after granting access. According to Google Play Billing documentation, an unacknowledged purchase can be automatically refunded.
If you use RevenueCat, its SDK normally manages purchase acknowledgement as part of the purchase-processing flow. If you manage billing yourself, make sure your implementation handles it correctly.
6. Relying Only on SharedPreferences
Do not treat a local boolean such as isPremium = true as the permanent source of purchase status.
Local data can disappear if the user clears app data, reinstalls the application or moves to another device. Query Google Play or your subscription-management service to restore the user’s entitlement.
Do You Need a Backend for Google Play Subscriptions?
A basic Flutter app can use Google Play Billing without operating a custom backend. Client-side billing APIs can query purchases, acknowledge them and restore access.
However, Google recommends secure server-side purchase verification for stronger protection and more reliable subscription lifecycle handling.
If you do not want to build and maintain a custom backend, a service such as RevenueCat can simplify:
- Purchase validation
- Subscription status management
- Restoring purchases
- Monthly, yearly and lifetime entitlements
- Android and iOS subscription handling
- Expiration and cancellation tracking
RevenueCat does not remove the need to create products in Play Console. Your Google Play products still need to be configured correctly and connected to matching products in RevenueCat.
Frequently Asked Questions
Why does Play Console ask me to upload a new APK?
Play Console has not detected an uploaded build that is ready to use Google Play Billing. Upload a signed, billing-enabled AAB or APK to a testing or production track.
Can I upload an AAB instead of an APK?
Yes. Android App Bundles are the standard publishing format for modern Google Play apps. The button may mention an APK, but you can generally upload a signed AAB through a release track.
Do I need to upload the app to production?
No. You can normally upload your billing-enabled build to an internal or closed testing track while developing and testing subscriptions.
Why is the Create subscription button still unavailable?
Check whether the build has finished processing, contains billing support, uses the correct package name and version code, and whether your payments profile and account permissions are complete.
Can I create monthly, yearly and lifetime plans?
Yes. Monthly and yearly access can use subscription base plans. Lifetime access should normally be created as a separate non-consumable one-time product.
Can users restore their purchases after reinstalling the app?
Yes. Your app should query Google Play or your purchase-management platform and restore active entitlements associated with the user’s Google Play account.
Final Thoughts
The “Your app doesn’t have any subscriptions yet” screen is usually not a serious error. It simply means that Play Console needs to recognise a billing-enabled version of your application.
Add the required Google Play Billing integration, increase the version code, generate a signed Android App Bundle and upload it to an internal or closed testing track. After Google processes the build, return to the Subscriptions page and create your subscription product, base plans and offers.
Take time to test purchases, cancellations, renewals and restoration before releasing the feature to real users. Subscription setup is not complete until users can safely recover their premium access after reinstalling the app or changing devices.

