You already have paying customers with working keys, an application wired to one SDK, and no appetite for a weekend of "my key stopped working" messages. That is what makes changing licensing providers feel risky. With a written plan, a move away from KeyAuth is an ordinary, reversible cutover, and the platform you land on can do a good deal more than check keys.
This guide is for C++ and C# developers who want to migrate from KeyAuth to PapelShip. It covers what to inventory first, how to map your current features to their equivalents, how to move keys and users, how to swap the SDK and test it, and how to cut over without locking anyone out. KeyAuth is a reasonable place to start licensing; this is simply how to leave it cleanly when you need more.
Why teams migrate from KeyAuth
KeyAuth validates license keys through an API, and for many developers that is enough to begin with. Teams usually start looking elsewhere when one product turns into several, or when a licensing API on its own stops covering what they need. The reasons tend to cluster, and most migrations are driven by more than one of them at once.
- A split stack. A licensing API on one side and a third-party store on the other, joined by webhooks. Every outage in that bridge becomes a stuck delivery and a support ticket.
- Secrets still in the binary. API keys, configuration and premium logic shipped inside the build, where a key check alone does nothing to protect them.
- No runtime visibility. A valid-or-not answer tells you nothing about which debuggers or analysis tools are running next to your software.
- Selling and licensing in different places. Keys, revenue, invoices and customers spread across separate dashboards that never quite agree.
PapelShip answers these in one platform: qPapel Auth for licensing and protection, a built-in storefront with card and crypto checkout, and qPAnalyzer for runtime analysis. The PapelShip vs KeyAuth comparison sets out the differences feature by feature. This guide is about making the move itself.
It is worth being clear that none of this makes KeyAuth the wrong choice to have started with. A single licensing API is the right size for an early product, and outgrowing it is a sign of success, not a mistake. The question is not whether KeyAuth works; it is whether a platform that also sells, protects and reports would remove more friction than the move costs. For a growing product, it usually does.
What to inventory before you start
The migrations that go wrong are the ones that start in code. Before you change a line, write down what you have. An afternoon spent here prevents the surprises that cause downtime later, and it gives you the checklist that every later step is measured against.
| Item | What to collect |
|---|---|
| Active keys and users | Every live license with its product and remaining time |
| Products and durations | Each plan you sell and how long its keys last |
| Server-side values and files | Anything your app currently fetches from the auth service |
| SDK integration points | Where your code starts a session, authenticates, checks and fetches |
| Sales channel | Where customers buy today and how keys reach them |
If you sell through more than one channel, note each one. A key that reaches customers through a reseller, a Discord bot and a website needs all three paths accounted for before you switch delivery, or one group of buyers will quietly stop receiving keys on cutover day.
How to migrate from KeyAuth, step by step
With the inventory in hand, the move itself is a sequence of small, testable steps. Keep the old and new code paths separate so you can ship one clean build at the end rather than a half-migrated one.
- 01
Plan the cutover
Decide your overlap window, who talks to customers and what "done" looks like. A one-page plan is enough, and it keeps the later steps from drifting.
- 02
Map your features
Match each KeyAuth capability you rely on to its PapelShip equivalent, so you know on day one what moves directly and what changes. The next section is a starting map.
- 03
Move keys and users
Export your active licenses with their remaining time, then recreate your products and durations in PapelShip. Ask support to coordinate the import so live licenses keep the time customers paid for.
- 04
Swap the SDK
Replace the old auth calls with the qPapel Auth SDK for C++ or C#. Start a session, authenticate the key for this device, fetch what the app needs over the encrypted channel, and keep the session alive with a heartbeat.
- 05
Test against real conditions
Make a test purchase, time the key delivery, activate on a clean machine, change hardware and request a reset. Confirm that a failed check leaves the application with nothing useful to run.
- 06
Cut over and retire KeyAuth
Release the new build, tell customers what changes, and keep the old service running briefly for anyone slow to update before you switch it off.
- 01
Inventory
Keys, secrets, sales
- 02
Map features
Old to new
- 03
Move data
Keys and users
- 04
Swap SDK
C++ or C#
- 05
Test
Purchase to reset
- 06
Cut over
Overlap, then retire
Testing is the step most people under-budget, so give it its own time. A clean machine with no prior activation, a second machine to prove the HWID lock, a changed component to force a reset, and a deliberately wrong key to confirm the failure path all belong in the plan. The code change is small; proving it behaves is where the day goes.
Mapping KeyAuth features to PapelShip
Most of what you use in KeyAuth has a direct equivalent, so the map is mostly reassurance. The differences are the capabilities PapelShip adds once your licensing and selling live in the same place, rather than anything you have to give up.
| Capability | KeyAuth | PapelShip |
|---|---|---|
| License key management | Yes | Yes |
| HWID binding and machine locking | Yes | Yes, with per-user reset cooldowns |
| Cloud variables and secrets | Yes | Server-side variables, strings and files |
| Native C++ authentication | Yes | Native C++ and C# SDKs |
| Debugger and process blacklists | Yes | Yes |
| In-memory execution | Not offered | Encrypted DLLs streamed into memory |
| Runtime threat analysis | Not offered | qPAnalyzer |
| Built-in storefront and key delivery | Not offered | Instant at checkout |
| Crypto and card checkout | Not offered | Wallet-to-wallet crypto and card gateways |
If native integration is your main concern, the deeper guides to C++ authentication and licensing and C# licensing without hard-coded secrets show how the session model looks in each language.
Cutting over without downtime
Downtime during a licensing migration comes from one thing: a customer whose key stops working before the new build reaches them. An overlap window removes that risk, because both services answer during the switch and nobody is caught in the gap.
- 01
Freeze new KeyAuth sales
Stop issuing new keys on the old service for a short window, so you are migrating a fixed set rather than a moving target.
- 02
Import active licenses
Bring your live keys into PapelShip with the same remaining time. Support can coordinate this so the import matches what customers already paid for.
- 03
Release the new build
Ship the version that authenticates against PapelShip, and point your storefront or payment links at it.
- 04
Tell customers what changes
Usually it is just downloading the new version. If any key values change, state the new key plainly so nobody is guessing.
- 05
Retire KeyAuth
Keep it running through the overlap, watch for stragglers, then switch it off once traffic has moved across.
Day 0
Freeze KeyAuth sales
Migrating a fixed set
Day 0
Import active licenses
Same remaining time
Day 1
Release new build
Authenticates against PapelShip
Days 1 to 7
Overlap
Both services answer
After
Retire KeyAuth
Once traffic has moved
The exact lengths are yours to set; the shape is what matters. Keep both services live long enough that even infrequent users have opened the app once, watch the old service's traffic fall to near zero, and only then switch it off. A migration judged by "has everyone moved?" rather than "has a week passed?" is the one that produces no lockouts.
What you gain after the move
A clean migration is worth doing for the operational simplicity alone, but the real return is the protection and selling features that only work when licensing and commerce share a platform. Turn them on in order once the base is stable.
- Server-side secrets. Move API keys, configuration and premium logic out of the binary and into server-side strings and files delivered only after a successful check.
- HWID binding with fair resets. Stop key sharing while letting honest customers move machines, as covered in what HWID locking is and how resets work.
- Runtime analysis. qPAnalyzer flags renamed and unknown tools that static blacklists miss.
- One sales channel. Card and crypto checkout, key generation and delivery in one place, with no webhook bridge to fail, so there is nothing to maintain between the store and the license.
- Remote control. Change protection behaviour and variables without shipping a new build, as in updating protection remotely.
Turn these on in sequence rather than all at once. Server-side secrets and HWID resets pay back immediately and are worth doing in the first week; runtime analysis and remote rules are better added once the base is stable and you have a feel for your own traffic. A migration that ends with every feature half-configured helps no one; one that adds a layer at a time ends up actually used.
Questions fréquemment posées
Plan the move, then make it
A KeyAuth migration is six focused steps: inventory, map, move data, swap the SDK, test and cut over. Done in that order, with a short overlap and a note to customers, the switch is quiet. What changes is everything behind it: faster delivery, secrets off the client, and licensing, selling and protection in one dashboard.
If anything in the plan is unclear for your specific setup, the import is the part worth asking about first, since it is the step with customers' remaining time riding on it. Support can coordinate that side so the move stays a cutover, not a rescue. Everything else is ordinary engineering you already know how to do.
If you are still weighing options, the guide to KeyAuth alternatives sets out the criteria to judge any platform against before you commit to one.
Équipe Sécurité qPapel
Licences et protection logicielle