← All docs

License keys

License keys are issued automatically for products with license keys turned on, one key per paid order. You can validate keys from your own app and revoke them at any time.

Issuing

Tick Issue a license key with each order when creating the product (API: license_enabled: true on POST /api/products). On every verified paid order a key is issued and stored as a salted hash — the plaintext key is only ever shown to the buyer, in the purchase email.

Validating via the API

Public endpoint, no auth required — call it from your software:

curl -X POST https://YOUR_HOST/api/licenses/validate \
  -H 'Content-Type: application/json' \
  -d '{"key":"THE-LICENSE-KEY"}'
# -> { "valid": true }   or   { "valid": false }

Managing keys

The License keys card on your dashboard lists every issued key (prefix, product, buyer, status) with a Revoke button. The same over the API:

# List your keys (seller session required)
curl -b cookies.txt https://YOUR_HOST/api/licenses
# -> { "keys": [ { "id": "...", "keyPrefix": "...", "status": "active",
#      "orderId": "...", "issuedAt": "...", "revokedAt": null } ] }

# Revoke a key
curl -b cookies.txt -X POST https://YOUR_HOST/api/licenses/KEY_ID/revoke
# -> { "revoked": true }

The list shows only safe fields — key prefix, status, order reference, and dates. Plaintext keys and full hashes are never exposed. Revoking a key that doesn’t exist (or belongs to another seller) returns 404 { "error": "not_found" }.

Revocation on refund

When Stripe reports a refund on your connected account, the buyer’s license keys are revoked automatically along with the download entitlement.