Revenusion
For developers

Enforce a license in four lines, meter it in one

A signed license your process checks in memory. A session that renews itself. Usage reporting that batches in the background. Everything the SDK does is on the REST API, so any language works.

Private preview. Short form, personal reply.

FeatureGate.cs
var license = await session.AccessLicenseAsync();
if (license is null || !license.FeatureValidation.IsValidFeature("advanced-export"))
{
    return Results.Forbid(); // not licensed for this feature
}
Export.cs
var status = await session.AssetConsumption.TryConsumeAsync(
    license.LicenseValidation.CurrentSession, "api-calls.total", amount: 1);

if (status is null ||
    status.QuotaUsagePolicy is TierUsagePolicy.Deny or TierUsagePolicy.SuspendUsage)
{
    return Results.StatusCode(429); // over the quota for this tier
}
quickstart.sh
# 10. Activate a license — the activation code and a device fingerprint.
#     Keep the returned licenseToken: it is the bearer for the calls below.
curl -X POST "$API/api/v1/provision/activations/license" \
  -H "content-type: application/json" \
  -d '{ "activationCode": "'"$CODE"'", "fingerprint": "'"$FINGERPRINT"'" }'
quickstart.sh
# 11. Report usage — the license token from step 10, not the API token.
#     Its `jti` claim is the session id in the path.
curl -X POST "$API/api/v1/provision/usage/try-consume/$SESSION_ID/$METRIC?amount=1" \
  -H "authorization: Bearer $LICENSE_TOKEN"

# 12. Read it back
curl "$API/api/v1/provision/usage/$SESSION_ID/$METRIC/usage" \
  -H "authorization: Bearer $LICENSE_TOKEN"
Quickstart

From an empty account to a metered license, on one page

The REST quickstart runs the whole loop with just an API client. For the admin half, the portal does the same in a handful of screens, all point and click.

  1. 1Get a token — client-credentials grant; the token carries exactly the scopes the request asks for.
  2. 2Create and publish a product — it starts in Draft; publish when it is ready for customers.
  3. 3Add a feature and a meter — a feature says what the license grants. A monitored asset is what usage counts against.
  4. 4Create an entitlement — and say who may activate it — an activation code alone, or a signed-in user.
  5. 5Attach the product and publish — the step that decides what the license grants.
  6. 6Issue an activation code — from the API, or with a few clicks in the portal.
  7. 7Activate — the returned license token becomes the bearer for the licensed application.
  8. 8Report usage, read it back — the response is the decision and the metric’s state after it.
Program.cs · register the SDK
builder.Services
    .AddMonetizeItHttpClientWithAuthentication(builder.Configuration)
    .AddMonetizeItLicenseConsumer(builder.Configuration);
Three surfaces

Pick the one your product already speaks

.NET SDK

Revenusion.MonetizeIt.Client.* packages on netstandard2.0 — .NET Framework, .NET 8+, MAUI and Unity. Activation, validation, entitlements, usage, offline, fingerprinting.

Packages publish to NuGet with the first public release.

.NET SDK guide

C / C++

libmonetizeit — the .NET consumer core compiled with Native AOT behind a C ABI. monetizeit.h plus a header-only C++ RAII wrapper, prebuilt per platform.

Validation, encrypted cache, entitlements, metering, online and offline activation.

Native library

REST API v1

One versioned path, OAuth 2.0 client credentials for your backend, activation code + fingerprint for the runtime. Additive evolution, so everything you build keeps working.

Any language with an HTTP client and a JWT library.

Using the REST API

Open client code. Every client library is public on GitHub: the .NET SDK, the C/C++ library and the samples. You may change and distribute them as part of your Oclavex license.

Security by design

Every secret stays on the server

Just a public key

Activation is anonymous or authenticated with the license token itself. Decompile the binary and all you find is a public key.

Pinned public key

The SDK requires the tenant’s public key to start, and validates every license against it — locally, on every launch.

Encrypted cache

The license is cached on disk encrypted, so the application keeps working offline and the grant stays private.

Live key rotation

Pin more than one signing key; publish, promote and retire while customers carry on as usual.

Idempotent metering

Usage commits take an idempotency key. A retried commit returns the original decision, and each unit is consumed exactly once.

Signed webhooks

HMAC-SHA256 over a CloudEvents envelope, with an overlap window when you rotate the secret.

Documentation

Everything is written down

The docs are the contract. Every claim on this page links to the page that backs it.

See what Oclavex can do for your software

Tell us about your software and how you want to sell it. A person replies, and you can open a live demo while you wait.

Private preview. Short form, personal reply.