In this blog, I am going to discuss What is App Monetization and how could you use in your project.
At this moment, Microsoft AppSource does not have an option to let customers subscribe and pay for an app that they want to use. So that leaves partners with the task to integrate some way of monetization into their app.
There are several ways to achieve self-monetization. Some options are:
- Use a license key to unlock the app
- Host a registration page
- Integrate with a payment provider
The process for unlocking the app with a license key could work like this:
- The customer installs your app and gets a 30-day trial automatically
- After these 30 days, the app locks its features and requires a license key to unlock
- The customer can retrieve a license key by means of a manual and offline invoice process or a self-hosted web site
Host a registration page
A registration page can be used to create your own registration and payment process. There are many scenarios possible, but they all involve integration between the app and the registration server to check if the customer is entitled to use the application.
This way of doing it yourself requires investment in creating and hosting a web server that keeps track of registrations, payments, and usage.
Integration with the payment provider
In fact, this is a variant of the registration page, but the main difference is that you use a payment provider to keep track of registrations and payments. You can focus on the product, rather than having to think about technologies that are probably new to you. A payment provider is a trusted third party and they will be responsible for keeping customer records safe, including credit card data.
In this blog, you can see a demo integration with payment provider Stripe (http://stripe.com).
There are other payment providers as well, and if you feel that others might be the better option than this demo app can serve as an example of how to integrate with a payment provider in general.
There are several models on how to calculate a price for a product.
- Freemium: The app offers limited features for free. To get more features, the customer needs to pay for it.
- Purchase: The customer pays a one-time fee for the app and then can use it indefinitely.
- Subscription: Price per certain period, e.g. month of the year. The price could be per tenant, per company or per user.
- Usage: The price is calculated based on the usage of the app. For example the number of inserted entries or calls to a back-end service.
- Trial: All of the above calculation models can be combined with a trial period in which the customer can try out the app without paying for it. Ideally, during this trial period, all features of the app are available. After the trial period has expired, the customer needs to start paying for the app.
Stripe payment provider
Stripe is an online payment provider that works in any country over the world.
They can work with 135+ different currencies and accept all major debit and credit cards. On top of that, the support of other payment methods like Bancontact, iDeal, SOFORT, Giropay, SEPA Direct Debit, Alipay and Bitcoin. This Blog describes how to make use of credit card payments in the combination of periodic payments.
Credit card data and PCI Compliance
Anyone involved with the processing, transmission, or storage of card data must comply with the Payment Card Industry Data Security Standards (PCI DSS). Stripe has been audited by an independent PCI Qualified Security Assessor (QSA) and is certified as a PCI Level 1 Service Provider. This is the most stringent level of certification available in the payments industry.
PCI compliance is a shared responsibility and applies to both Stripe and your business. When accepting payments, you must do so in a PCI compliant manner. The simplest way for you to be PCI compliant is to never see (or have access to) card data at all. Stripe makes this easy for you as they can do the heavy lifting to protect your customers’ card information. You can simplify your PCI compliance as long as you use their libraries to collect payment information and review and validate our PCI compliancy annually. Most users can validate their PCI compliancy by filling in the Self-Assessment Questionnaire (SAQ).
This blog describes how to make use of the Stripe.js and Elements library of Stripe. This allows you to be eligible for the simplest method of PCI validation: SAQ
- Stripe automatically creates a combined SAQ A and Attestation of Compliance (AoC) for you, available for you to download in your account’s compliance settings, and no action is required on your part to submit further proof of your PCI compliance.
To read more about Stripe and PCI compliancy, refer to this page: https://stripe.com/docs/security.
The most important benefit of Stripe is that they can automatically handle payments of subscriptions. It is possible to set monthly, yearly or custom payment periods. The amount can be based on a fixed amount, per-user or even on usage.
Subscriptions are based on products and plans. A Stripe product should represent an app or a set of features in your app. With a set of features, we mean a certain level, like ‘Standard’ and ‘Advanced’.
Each product in Stripe can have one or more payment plans. This is used to define the price for a certain period and has multiple options so define a price per user of for the whole subscription or based on usage.
The monetization demo described in this blog consists of two products, each with their own price.
Stripe supports to define custom fields. To distinguish between the Standard and Premium app, this demo app has created a custom field ‘Level’ which can hold the value ‘standard’ or ‘premium’.
The Stripe dashboard can be opened via https://dashboard.stripe.com
Customers are created from the app. They appear automatically under the Customers tab in the menu. They can be viewed inside the Stripe dashboard.
The product is visible under the Billing menu. Each product can have one or more price plans. A plan can be set up with an automatic trial period.
In our next blog, we will show you how to use App Monetization in your project…