How to create a good paywall in Flutter

Published on

A paywall is the screen that will ask your users to pay to access your app.
This could be a one-time payment, a subscription, or a freemium model.

You could think this is simple, but after publishing an app you will quickly realize that it is not. Apple and Google have strict guidelines on what a paywall should look like and how it should behave. So you can't just put a button that says "Pay now".

I have detailed you here a list of the most common mistakes that will get your app rejected by Apple or Google during review.

In this article, I will show you how to create a good paywall that will get validated by Apple on first review and convert your users into paying customers.

Show the value

You have to explain to your users why they should pay for your app.
What are the benefits of paying for your app. What will they get that they don't have now.

But, you don't have to list everything.

After launching many apps here is what I have learned.

One good pattern is to show the benefits with the features Ex :

Show subscription and products

Flutter paywall good practices to show products

1 - You have to show the Subscription name that you haved filled in on App Store connect Apple will reject your app if that is not the case.
2 - If you have a trial you have to show the trial days correctly. And explain to your user that after 7 days they will pay the subscription price for the period.

Try to show some reassurance to your users. Explain that they can cancel anytime and that they will not be charged if they cancel before the end of the trial.

Show the price

💡 For each products you have to show the prices and the period.

Improve conversion with prices

You can improve your conversion by showing the price in a different way.

This is a very common practices that may change the way your users see the price. Do some tests and find the best way to show your prices.

Legal information

You have to show the legal information of your app.

For Apple the terms of services are the EULA (End User License Agreement) directly from App Store connect. For Google play you have to show your own terms of services. The privacy policy is the one you have filled in on App Store connect.

Restore

Subscriptions and purchases are linked to the user's account. (The user account is the one linked to the store). So you have to give the user the possibility to restore his purchases. For ex if he changes his phone, or have multiple devices.

Flutter paywall restore button

A common pattern is to show a "Restore" button inlined like this. As this is not the main action you want your user to do, you can put it in the bottom of the screen, with legal links.


How to A/B test your paywall?

A/B testing is providing different versions of your paywall to different users and see which one converts better. You can do this with Firebase Remote Config.

Or you can use a service like Adapty, RevenueCat or Superwall paywall builder.

Those services will allow you to create different paywalls and see which one converts better. For now I prefer doing this with Firebase config and make native paywalls myself. But I know that some have been really successful with those services, and I will probably try them in the future.

When should you A/B test your paywall?

You should A/B test your paywall when you have a good amount of users. Before getting a good amount of users you should focus on getting users. Improving conversion on one day with 30 people means nothing.

Data needs to be significant to be relevant.


More tips


Conclusion

Creating a good paywall is not that easy. It's not only a technical challenge but also a marketing challenge. You have to show the value of your app and convince your users to pay for it. But there is also a lot of required information that you have to show to your users, requested by Apple and Google.

I hope this article will help you create a good paywall that will convert your users into paying customers. ApparenceKit provides your 2 paywall templates that you can customize and use in your app.. And because we have an anonymous mode, your can let your user pay without creating an account.

Create a 5 stars app using our Flutter templates

Check our flutter boilerplate
kickstarter for flutter apps
Read more
You may also be interested in
How to build a sidebar menu with GoRouter nested navigation in Flutter  blog card image
How to build a sidebar menu with GoRouter nested navigation in Flutter
Published on 2025-01-17
A new Flutter template dashboard for ApparenceKit and Supabase  blog card image
A new Flutter template dashboard for ApparenceKit and Supabase
Published on 2025-01-21
ApparenceKit is a flutter template generator tool by Apparence.io © 2025.
All rights reserved