Thinking out loud about
license management & security.
Technical deep-dives written by engineers, for engineers. No fluff, no marketing — just the real tradeoffs behind building secure software licensing.

Best Software Licensing APIs for Developers (2026)
A factual, sourced roundup of PermitCore, Keygen, Devolens (formerly Cryptolens), and LicenseSpring — what each is actually good for, not a ranked 'winner.'

Software Licensing API: What to Look For
A practical evaluation checklist for picking a software licensing API — the questions worth asking about key security, offline support, seat enforcement, and vendor lock-in.

How to Transfer a Software License to a New Computer
The real deactivate-then-reactivate flow that lets a customer move a node-locked license to a new machine themselves, without a support ticket.

What Happens If a License Server Goes Down?
Three real layers that decide what happens to a customer's app during an outage — automatic offline fallback, deliberate signed offline tokens, and the self-hosted continuity path for a total shutdown.

Software Licensing for Desktop Applications
What's actually different about licensing a desktop app versus a web service — trial periods, node-locking to a specific machine, surviving reinstalls, and working without a constant connection.

How to Build a License Key System
The real architecture behind a license key system — key format design, why servers should never store plaintext keys, and the lookup mechanism that makes validation fast and safe.

Perpetual License vs Subscription License: Which Should You Sell?
The real tradeoffs between selling a license that never expires and one that renews — revenue shape, maintenance obligations, and how to configure either (or both) for the same product.

How to Revoke a Software License After a Failed Payment
What actually happens to a Store-issued license when a customer's subscription payment fails or gets cancelled — the real Stripe webhook flow, not a hypothetical one.

Why MAC Addresses Are Bad Hardware IDs
MAC addresses are spoofable, multi-valued, randomized by modern OSes, and unstable inside VMs and containers — why they're a poor foundation for device-locked licensing, and what works instead.

Usage-Based / Metered Software Licensing Explained
How metered licensing actually works end to end — recording usage events against a license key, per-tenant event configuration, and how usage flows into real Stripe billing.

How to Implement Feature-Based Licensing
How to gate individual features by license tier instead of just validating a key — the real FeaturesJson field, the API response shape, and the SDK's HasFeature() check.

Build vs Buy: Should You Build Your Own Software Licensing System?
What actually goes into a production license server — activation races, offline verification, RLS, abuse detection — and what it honestly costs to build versus buy.

PermitCore vs Keygen, Cryptolens, and LicenseSpring: A Sourced Comparison
A factual, dated comparison of PermitCore against three other license management platforms — pricing, self-hosting, SDK coverage, and what's actually built in versus bolted on.

How to Prevent License Key Sharing
Three real, complementary techniques — node-locking, floating seat limits, and abuse detection — that stop one key from quietly becoming everyone's key.

Offline License Validation in C#: Verifying Signed Tokens Without a Server
The real ECDSA P-256 signature check from PermitCore's .NET SDK, the token format, and what a signed token can and can't protect against.

Software Licensing with Stripe: How the Checkout-to-License Flow Actually Works
A real walkthrough of how PermitCore turns a Stripe checkout into a working license key automatically — the webhook flow, your own Stripe account, and 0% commission.

Setting Up a License Store: Selling Keys Directly to Customers
Add a product, connect your own Stripe account, and get a real checkout page that issues license keys automatically.

Node-Locked vs. Floating Licenses: Which One Do You Need?
A practical, example-driven comparison of the two license models, and how to configure each.

Offline Grace Mode: Keeping Your App Working Without a Connection
Signed cache tokens, how many grace days to allow, and the honest limits of what offline verification can and can't stop.

Activating a License on a Device: How Hardware IDs Work
What actually happens when a customer's app calls activate() — hardware fingerprinting, activation limits, and reactivation on the same device.

Getting Started: Create Your First Product and License Key
A real, step-by-step walkthrough with real screenshots — from an empty account to a working license key in about five minutes. First in a 5-part series.
Zero-Knowledge Encryption in Practice: How PermitCore Keeps Your License Keys Secret
What does "zero-knowledge" actually mean in a license management context? We explain the full cryptographic chain and why a stolen database can never expose your license keys.
License Key Distribution: The 5 Models Every Software Vendor Should Know
Perpetual, subscription, floating, node-locked, metered — each model solves a different problem and creates different support headaches.
Integrate PermitCore with Your .NET Application in 15 Minutes
Install the SDK, validate and activate license keys in C#, handle offline grace periods, and protect against key sharing — production-ready code.