Free up to 250 active licenses

Add licensing to your software in minutes.

Keys, device activations, offline validation, trials, and payment sync with Stripe or Paddle, without building or running a licensing backend. Free up to 250 active licenses. $10/month up to 2,000.

Electron example Basic integration ~10 min
import { License } from "@keygrant/electron";
const license = new License({ product: "my-product", apiBaseUrl, publicJwks,});const result = await license.activate(key);
if (!result.ok) showActivationWindow(result.error);
638 Active licenses
Your bill $10

Indie: up to 2,000 active licenses.

SDKs

Six SDKs, or none at all.

Each SDK checks the signed license on the device, so your app keeps working offline. Any other language can use the REST API directly.

The dashboard

See every key, device and sale.

Issue and revoke keys, watch devices check in, and see which trials turn into sales, from one dashboard.

The KeyGrant dashboard home for a demo company: tiles for active licenses, activations in the last 30 days, trials running with their conversion rate, and plan use, a line saying two sales are held for review, recent activity, and a card for each of three products. The KeyGrant dashboard home for a demo company: tiles for active licenses, activations in the last 30 days, trials running with their conversion rate, and plan use, a line saying two sales are held for review, recent activity, and a card for each of three products.

Active licenses, new devices, running trials and the sales that need a look, as you sign in.

Shown with a demo account. The company, its products and its customers are made up.

Why KeyGrant

Licensing infrastructure that stays out of your way.

Built for software we ship ourselves. KeyGrant isn't licensing infrastructure designed in a vacuum. We use it for our own commercial software.

01

Integrate it quickly

Add the license check and ship. Use the REST API directly, verify licenses with standard libraries, or use a KeyGrant SDK for the convenient path.

02

Keep paying customers working

An outage or lost connection shouldn't disable someone's software. Signed licenses and configurable offline days keep legitimate customers running offline.

03

Pricing you can understand

A license counts only while it's valid. Expired, revoked and test licenses don't count. No revenue share and no rolling active-user formulas.

04

Built on standard verification

Licenses are standard signed JWTs, not a proprietary blob. Verify them locally with the KeyGrant SDK or any compatible JWT library using your public key.

On every plan

Everything you need to license software.

API reference →

Keys & validation

Issue, validate, renew, and revoke licenses through the API or dashboard. Turn on Key pickup and an App Store build restores a license with an emailed code, no key to type.

Device activation

Set device limits, activate and deactivate machines, and control how devices are identified.

Trials & subscriptions

Support perpetual, subscription, timed and trial licenses without changing your integration.

Offline validation

Signed licenses and configurable offline days keep your software working without a constant connection.

Payment automation

Connect your Stripe account or link your Paddle account. Purchases can issue licenses automatically; refunds and cancellations can revoke them.

Customer portal

Let customers view their license and deactivate old devices without contacting support.

Admin dashboard

Find a customer, inspect their licenses and devices, issue replacements, and fix problems quickly.

REST API + optional SDKs

Use the REST API directly, verify signed licenses with standard libraries, or use a KeyGrant SDK for device handling, storage, offline validation, and activation flows.

How it works

From signup to a working license check.

  1. Step 01

    Create your product

    Create a product in KeyGrant and get the credentials needed to issue and verify licenses.

  2. Step 02

    Choose your license rules

    Set perpetual, subscription, timed or trial licensing, device limits, and how long licenses run offline.

  3. Step 03

    Add license verification

    Verify signed licenses directly or use a KeyGrant SDK to handle activation, storage, device state, and offline behavior for you.

  4. Step 04

    Connect payments

    Connect Stripe or link Paddle to issue, renew, and revoke licenses automatically.

Payments

Sell through Stripe or Paddle, or neither.

Link the processor you already use, and a paid checkout creates a key, each renewal moves its expiry forward, and a refund can revoke it. Payments go straight to your own account, and KeyGrant takes no share. A processor is optional: KeyGrant works without one.

Pricing

Free up to 250 active licenses. $10/month up to 2,000.

An active license is one that is still valid, sold or issued by hand. Expired, revoked and test licenses don't count. One plan covers all your tenants, and its limits count across them, including tenants you co-own.

Free $0
250 active licenses 1 product
Indie $10 /mo
2,000 active licenses 5 products
Studio $25 /mo
10,000 active licenses 20 products
Business $69 /mo
50,000 active licenses Unlimited products
Every plan includes
  • REST API + signed licenses
  • Optional SDKs
  • Offline validation
  • Configurable device limits
  • Stripe or Paddle payments
  • Customer portal
  • Admin dashboard
  • Trials and subscriptions
  • Key pickup for App Store builds
Start free No revenue share. Cancel anytime.

No ALUs. No 90-day windows. No revenue share.

You pay for licenses that are actually valid. Once one expires and its grace period runs out, or it is revoked, it stops counting, so your bill tracks real usage, not a formula you have to decode.

Common questions

Questions, answered.

Can't find what you need? Read the docs or email [email protected].

What counts as an active license?
Any license that is still valid, whether it was sold or issued by hand, including one in its grace period. It stops counting once it expires and its grace runs out, or once it is revoked. Test licenses never count, and a trial your app starts on a device is not a license.
Does each tenant need its own plan?
No. One plan covers every tenant you own, and its limits count across all of them: active licenses and products in every tenant add up, archived products included until you delete them. Adding a tenant adds no room and costs nothing. On Free, that is 250 active licenses and one product in total. Tenants you co-own with someone else count too: they share your plan and its limits.
What happens if KeyGrant is unavailable?
Your customers keep working. Signed licenses are verified on the device for the offline days you set. KeyGrant SDKs keep the license on the device and check in again later when a check-in fails.
Do you take a percentage of my sales?
No. KeyGrant charges a flat monthly price based on active licenses. When you sell through Stripe or Paddle, payments go straight to your own account.
Which platforms are supported?
KeyGrant works anywhere you can call an HTTP API or verify a signed JWT. SDKs for Electron, .NET, Rust, Swift, C++ and Flutter (iOS, Android and desktop) add convenience, but they're optional: license verification itself uses standard libraries. Apple's App Store forbids unlocking an app with a typed key, so an App Store build restores a license with Key pickup: a code emailed to the address on the license.
Can I migrate from another licensing service?
Yes. Import existing license keys with their customer emails, issue dates and expiration dates, run both systems during the transition, then switch validation to KeyGrant.

Add licensing to your next release.

Free up to 250 active licenses. $10/month up to 2,000.