Selling software once and supporting it forever is a hard business. Every new version, server and support ticket costs money, while the revenue from each customer arrives on day one and then stops. Subscription licensing ties access to an ongoing payment instead, so revenue keeps pace with the cost of keeping the product alive. It also changes what your licensing system has to do: a license is no longer valid forever, and something has to decide, reliably, when it ends.
This guide compares perpetual, subscription and time-limited licenses, explains how to choose billing cycles, trials and prices, and shows why expiry has to be enforced on the server. It finishes with renewals, grace periods and how to show customers exactly how much time they have left.
What is subscription licensing?
Subscription licensing grants the right to use software for a billing period, such as a month or a year, and renews that right each time the customer pays. When payments stop, the license expires at the end of the last paid period. The license key can stay the same for the whole relationship; what changes is the expiry attached to it on the server.
It sits between two other common models. A perpetual license is paid for once and never expires, although updates or support may be sold separately. A time-limited license grants a fixed period, such as 30 days, and then simply ends, with no automatic renewal. A trial is a special case of a time-limited license, usually short and free or cheap.
PapelShip handles all of these. Lifetime, subscription and trial keys each carry a live status in qPapel Auth, so you see a buyer's license as "Monthly · Active", "Trial · 3 days left" or "License expired" at a glance, next to keys that are banned for an HWID mismatch.
Perpetual vs subscription vs time-limited licenses
| Model | How access works | Best for | Watch out for |
|---|---|---|---|
| Perpetual | Pay once, use forever | Stable tools with low running costs | Revenue stops after the sale |
| Subscription | Renews every billing cycle | Products with servers, updates or data | Churn and failed payments |
| Time-limited | Fixed term, then ends | Events, short projects, rentals | Customers forgetting to rebuy |
| Trial | Short free or low-cost period | Letting buyers try before paying | Repeat trials on new accounts |
There is no universally right answer. A small utility that never talks to a server can live happily on perpetual licenses. A product with hosted features, frequent updates for a moving target, or ongoing data costs usually needs recurring revenue to stay healthy. Many sellers offer both: a subscription as the main option and a lifetime license at a higher price for customers who prefer to pay once.
Whatever you choose, make the model visible in the key as well as on the product page. A key that starts with TRIAL- or MONTHLY- is easier for support to handle, and custom license key formats explains how to set fixed prefixes with keymask profiles. For the wider picture of products, payments and delivery, see how to sell software licenses online.
How to choose a billing cycle
The billing cycle is how often a subscription renews. PapelShip subscription products support daily, weekly, monthly and yearly cycles, which covers most of the ways people use software.
- Daily. Suits short, intense use: a tool needed for a single event, a test day or a one-off job. Customers pay only for the days they need.
- Weekly. Fits projects measured in days rather than months, and lowers the cost of trying the product on real work.
- Monthly. The default for most software. Customers can cancel easily, which makes the first purchase feel safe.
- Yearly. For committed users. It is usually priced below twelve monthly payments, in exchange for a longer commitment and fewer renewals to manage.
You can offer more than one cycle for the same product. Variants Products let one item carry several options with separate pricing and delivery settings, so a monthly and a yearly plan can sit side by side on the same product page, sold through your PapelShip storefront.
Trials, initial price and recurring price
Three settings shape the first weeks of a subscription, and each solves a different problem.
- Trial period. Lets a customer use the product before paying the full price. It answers "will this work for me?" and should be long enough to reach the moment the product proves itself.
- Initial price. What the customer pays for the first period. It can be lower than the regular price as an introductory offer, or higher if the first period includes setup or onboarding.
- Recurring price. What every renewal costs. This is the number your business runs on, so set it first and treat the initial price as the adjustment.
With the Minimal Storefront update, PapelShip added Subscription, with recurring payments, as a delivery type alongside File Download and License Key. Subscriptions come with exactly these controls: a billing cycle, an initial price, a recurring price, a trial period and auto-renew settings.
- 01
Create the product
Add a product and choose Subscription as its delivery type. Use File Download or License Key for one-off sales instead.
- 02
Pick the billing cycle
Choose daily, weekly, monthly or yearly. Use a Variants Product if you want to offer several cycles for the same product.
- 03
Set the recurring and initial prices
Enter the recurring price first, then an initial price if the first period should cost more or less than the rest.
- 04
Add a trial and auto-renew
Set a trial period if buyers should try before paying, and configure auto-renew for how the subscription continues.
- 05
Match the license to the plan
Configure the time period of the qPapel Auth key to match the billing cycle, so the license and the subscription line up.
Why subscription expiry must be enforced on the server
One of the simplest ways to abuse subscription software is also the oldest: change the computer's date. If your application works out whether a license has expired by comparing an expiry date with the local clock, winding the clock back extends the license for free. Copying an old license file, cutting the app's network access or patching the date comparison achieves the same thing.
The fix is to let the server decide. The server knows when the license started, which periods have been paid for and what time it really is. The client sends its key and hardware fingerprint, and the server replies with the license's status. Nothing about expiry is calculated on the customer's machine.
01Key + HWID at launch
Over an encrypted, signed session
02Active, 12 days left
Worked out on the server's clock
03Key + HWID after the term
04Expired: access refused
App shows the renewal option
qPapel Auth works this way. Keys, sessions and hardware bindings are checked on PapelShip's servers, and when a key expires or you ban it, the application receives the new status on its next check. For long-running sessions, Session Token Enforcement in Remote Settings sets a maximum active session duration, so a session opened just before expiry can't simply stay open. More on the platform side is on the qPapel Auth page.
Decide, too, what the app does when it can't reach the server. Failing closed is the safest default. If customers genuinely need offline use, allow a short window since the last successful check, and never longer than the remaining paid period. Measure that window from the server's last answer, not from the local clock.
Renewals, failed payments and grace periods
Not every subscription that ends was meant to end. Some customers cancel on purpose. Others lose access because a card expired or a payment failed, and would happily have kept paying. A good renewal process treats the two very differently. The practices below are general; how you implement each depends on your billing setup.
A few days before
Reminder
Renewal date and amount
Renewal date
Payment attempted
The next cycle is charged
If it fails
Grace period
Access continues, customer warned
Grace ends
Expired
Access stops, renewal stays open
- Remind before you charge. A short email a few days before renewal, with the date and the amount, reduces surprise charges and the disputes that follow them.
- Give failed payments a grace period. A few days of continued access while the customer fixes their payment method costs little and keeps customers who never meant to leave.
- Show the grace period in the app. A clear message with the days left and a renewal link works far better than access vanishing without warning.
- Honour the paid period on cancellation. A customer who cancels should keep access until the end of the period they have already paid for.
- Keep the same key where you can. Extending the existing license keeps the customer's device binding and settings intact, instead of making them activate a new key every cycle.
- Make coming back easy. An expired subscriber is your warmest lead. Keep the renewal path open and the key's history intact so a returning customer picks up where they left off.
Show customers their subscription status
One of the questions subscribers ask most is some version of "how long do I have left?" If the only way to find out is to contact support, every renewal cycle generates tickets. Put the answer where customers can see it themselves.
PapelShip's Customer Area is a verification portal for your products. Customers enter their license key and see its subscription duration, activation date, remaining time and HWID lock information in a secure page. You can filter it to specific products and share or embed its link on your website or customer dashboard. The customer panel goes further, letting buyers view key details, send requests and get download links for your files.
- In the app: show the plan and the days remaining on the account or about screen, using the status the server returns.
- In emails: include the renewal date in receipts and reminders, not just the amount.
- In the portal: link the Customer Area from your site and your delivery email, so customers can check their status without asking.
For a complete walkthrough of what a self-service portal should include, see a customer portal for software licenses.
Domande frequenti
Make the end of a license as clear as the start
Subscription licensing works when three things line up: a billing cycle and price that match how customers use the product, an expiry that only the server can decide, and a renewal process that keeps honest customers from falling through the cracks. Get those right and recurring revenue follows the value you keep delivering, rather than a single day at checkout.
Start by choosing the cycle and the recurring price, then make sure your app trusts the server's answer about expiry rather than its own clock. Everything else, from trials to grace periods, is refinement on top.
Team Sicurezza di qPapel
Licenze e protezione del software