Own Your Licensing Infrastructure

Generate cryptographically signed licenses, manage tiers and features, and verify offline—all on your own infrastructure. No transaction fees. No vendor lock-in. Complete control.

MIT License
RS256 JWT
OpenAPI
license-api.sh
# Generate a license token
$ curl -X POST /api/v1/licenses
-H "Authorization: Bearer sk_live_..."
-d '{"customer_id": "cus_123"}'
# Response
{
"token": "eyJhbGc...",
"tier": "pro",
"features": ["export", "api"]
}

Licensing platforms are holding you hostage

You've built something valuable. Now you're stuck choosing between platforms that take a cut of every sale, can suspend your account without warning, or lock you into their ecosystem.

Account Suspensions

Platforms can freeze your account, hold your funds, or shut you down entirely—often without explanation or recourse.

Transaction Fees

3-10% on every transaction adds up fast. The more successful you get, the more you pay—punished for your own growth.

Vendor Lock-In

Your customer data, license history, and business logic trapped in someone else's database. Migration is designed to be painful.

Built for developers who value control

Your Data, Your Server

Deploy on any infrastructure—your VPS, cloud provider, or on-premise data center. Customer data never leaves your control. Perfect for regulated industries.

  • GDPR, HIPAA, SOC 2 ready
  • No third-party data access
  • Deploy in minutes with Docker

Predictable Economics

No per-customer fees. No transaction percentages. The same cost whether you have 10 customers or 10,000. Your success doesn't increase our cut.

$0 /transaction

Self-hosted. You only pay for your infrastructure.

No Vendor Lock-In

Your RSA keys, your JWT tokens, your data schema. Standard formats mean you're never trapped. Export everything, anytime.

  • Industry-standard JWT tokens
  • PostgreSQL database
  • Full data export API

Developer-First Design

Clean REST API with OpenAPI documentation. Public and secret keys for different access levels. Build exactly the integration you need.

# Verify license offline
import jwt
jwt.decode(token, public_key,
algorithms=["RS256"])

From setup to verification in four steps

1

Generate Keys

Create your RSA key pair. The private key signs licenses, the public key verifies them.

2

Define Tiers

Set up pricing tiers (Free, Pro, Enterprise) and feature flags for granular access control.

3

Issue Licenses

Generate JWT tokens via API or dashboard. Include tier, features, and expiration in the payload.

4

Verify Anywhere

Validate licenses online via API or offline using the public key. Works without network access.

Built on proven standards

No proprietary formats or custom protocols. Blackwalnut uses battle-tested cryptographic standards you already know.

RS256 JWT Signing

RSA-SHA256 signatures. 2048-bit minimum key length. Asymmetric keys for offline verification.

OpenAPI 3.0 Documentation

Full API spec with request/response schemas. Generate client libraries in any language.

PostgreSQL Backend

Standard SQL database. Use your existing backups, replication, and tooling.

Docker Ready

Single container deployment. Works with Docker Compose, Kubernetes, or bare metal.

verify.py
import jwt
import requests

# Fetch public key (once, cache it)
pub_key = requests.get(
    "https://license.yourapp.com/api/v1/public-key"
).text

# Verify license offline
def verify_license(token):
    try:
        payload = jwt.decode(
            token,
            pub_key,
            algorithms=["RS256"]
        )
        return 
            "valid": True,
            "tier": payload["tier"],
            "features": payload["features"]
        
    except jwt.InvalidTokenError:
        return "valid": False

Take back control of your licenses

Deploy Blackwalnut on your infrastructure and start issuing cryptographically signed licenses today. No credit card. No vendor lock-in.

Quick start
$ docker run -p 4000:4000 goodway/blackwalnut