API Reference
LicenseChain Core API base URL is https://api.licensechain.app/v1. Authentication uses
Authorization: Bearer <user-jwt-or-app-api-key>.
Workflow-first guide map
Products API
Products can be fully managed through the API (list, create, read, PUT/PATCH update, delete), including the same fields as the Dashboard seller products UI. Use PATCH for partial updates.
Create product request
{
"name": "Pro Monthly",
"description": "Recurring access to premium feature set",
"price": 49.99,
"currency": "USD",
"active": true,
"successUrl": "https://merchant.example.com/pay/success",
"cancelUrl": "https://merchant.example.com/pay/cancel",
"helpUrl": "https://merchant.example.com/help",
"supportUrl": "https://merchant.example.com/support",
"termsUrl": "https://merchant.example.com/terms",
"privacyUrl": "https://merchant.example.com/privacy",
"refundUrl": "https://merchant.example.com/refund",
"productType": "subscription",
"billingType": "recurring",
"interval": "month",
"stripePriceIdRecurring": "price_1AbCdEfGhIjKlMn",
"stripeTaxEnabled": true,
"stripeIdentityRequired": false,
"cryptoPaymentsEnabled": true,
"hideEmail": false,
"autoRedirect": false
} Product response
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"userId": "user_123",
"name": "Pro Monthly",
"description": "Recurring access to premium feature set",
"price": 49.99,
"currency": "USD",
"active": true,
"successUrl": "https://merchant.example.com/pay/success",
"cancelUrl": "https://merchant.example.com/pay/cancel",
"helpUrl": "https://merchant.example.com/help",
"supportUrl": "https://merchant.example.com/support",
"termsUrl": "https://merchant.example.com/terms",
"privacyUrl": "https://merchant.example.com/privacy",
"refundUrl": "https://merchant.example.com/refund",
"productType": "subscription",
"billingType": "recurring",
"interval": "month",
"stripePriceIdRecurring": "price_1AbCdEfGhIjKlMn",
"stripeTaxEnabled": true,
"stripeIdentityRequired": false,
"cryptoPaymentsEnabled": true,
"hideEmail": false,
"autoRedirect": false,
"licenseEmails": [
"licenses-a@merchant.example.com",
"licenses-b@merchant.example.com"
],
"sendLicenseToCustomer": true,
"callbackSecret": "base64url_or_base64_secret_from_product_record",
"createdAt": "2026-05-11T07:00:00.000Z",
"updatedAt": "2026-05-11T07:00:00.000Z"
} Transaction status API
Use POST /transaction/status for one transaction and POST /transactions for batched details.
Status request
{
"transaction": "pi_3RxExample123"
} Status response
{
"status": 200,
"transactionStatus": "paid",
"transactionStatusReason": "Transaction successfully completed",
"info": "",
"transaction": {
"transactionId": "pi_3RxExample123",
"transactionStatus": "paid",
"statusReason": "Transaction successfully completed",
"licenseId": "lic_abc123",
"productId": "prod_8c9a1d74",
"amount": 49.99,
"currency": "USD",
"email": "buyer@example.com",
"timestamp": "2026-05-11T07:01:00.000Z",
"paymentProvider": "stripe"
}
} License verify and JWT
Verify request
{
"key": "LC-XXXXXX-XXXXXX-XXXXXX",
"hwuid": "optional-device-id"
} Verify response (with optional license token)
{
"valid": true,
"status": "ACTIVE",
"expiresAt": "2025-12-31T23:59:59Z",
"email": "user@example.com",
"verificationType": "custom",
"license_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImxpY2Vuc2VjaGFpbi0xIn0....signature",
"license_token_expires_at": "2024-01-01T01:00:00.000Z",
"license_jwks_uri": "https://api.licensechain.app/v1/licenses/jwks"
}