New: allowances counted across every runtime of a seat See what's new →
For Desktop Apps
License desktop software.
Verify locally. Sell from inside the app.

Desktop apps can't always phone home. Monaiq's authorizations are signed and verified inside your app, then cached, so a dropped connection doesn't lock a paying customer out. Each machine runs on its own license code, and the app can sell your offerings itself — no API key ships in the binary.

Desktop licensing is hard. We know.

Desktop licensing has its own challenges — users with unreliable internet, keys copied from machine to machine, and buyers who would rather not leave the app to pay. A licensing check that needs the network every time fails all three.

Monaiq's answer is a signed authorization your app verifies itself, a cache that rides out an outage, and a license code per machine that the buyer can revoke on their own.

Built for desktop deployment

Licensing that doesn't assume a perfect connection.

Local Verification

Every authorization is signed and verified in your app, then cached until it expires — seven days by default — and served for a grace window if the service can't be reached. A bad signature is never trusted.

A Code per Machine

A seat can carry several license codes, one per machine, each with its own label. The buyer issues and revokes them from the seat page; a revoked code stops at the app's next refresh.

Feature Gating

Unlock specific features per offering. Free and trial offerings sit beside paid ones, all enforced at the application level.

Cross-Platform SDK

The .NET SDK (netstandard2.1) for WPF, WinForms, MAUI and console apps on Windows, macOS and Linux, and the TypeScript client for Electron.

Trial & Expiration

Trials run 7 days and end on their own, with no auto-renewal. An expired, suspended or cancelled license comes back as a typed denial your app can explain to the user.

Sell From Inside the App

The app reads your catalog and checks the buyer out with their own Monaiq sign-in, in the system browser. The license code comes back to the app — nothing of yours to extract from the build.

Verification in a few lines of code

The SDK fetches, verifies and caches the authorization. Your code just asks.

App.xaml.cs
protected override async Task OnStartup()
{
    // Fetch and verify the license authorization
    try
    {
        await licensingService.GetAuthorization(
            LicensingServiceReference.ServiceReference, context);
    }
    catch (LicenseAuthorizationUnavailableException)
    {
        PromptForLicenseCode();
        return;
    }

    // Check feature access
    var canExport = await licensingService.AssertLicense(
        LicensingServiceReference.ServiceReference, context,
        ServiceAccessLicenseAssertion.Create("offline-export"));
    ExportButton.IsEnabled = canExport;
}

Supported platforms

Any platform that runs .NET or can call a REST API.

WPF WinForms MAUI Electron Console Apps

Desktop licensing that rides out a bad connection.