What developers usually do is make a lite version that has essential features and make a separate paid version that has the essential features and some advanced features. The problem with this model is that the developer needs to figure out which features are "essential" and which are "advanced". You need to be able to provide a lite version that will allow users the features they need but not so many features that make the paid version not worth upgrading. It's a delicate balance.