39Licence key
zplCore checks its licence offline: the licence key is digitally signed and verified locally against its signature. zplCore never connects to zplCore.com or anyone else for it – no phone-home, no telemetry – and works without internet access, also in isolated networks.
Without a key: evaluation mode
The NuGet packages are public on nuget.org and run without a key – for development and testing only, without support. Everything works, but outputs are marked:
- images and PDF documents: a diagonal zplCore.com TRIAL across every label,
- SVG: only as raster image with the watermark (vector SVG needs a licence),
- generated ZPL (label model, data binding, batches, converters such as EPL → ZPL or image → ZPL): several printed zplCore.com TRIAL fields on every label,
- barcodes from the barcode generator: a strip evaluation – zplCore.com below the symbol (the symbol stays scannable),
- exports to other printer languages (EPL, Fingerprint, ESC/POS, PCL).
Rendering existing ZPL never changes that ZPL – only the image of it is marked. For an evaluation with support, ask for a free 30-day trial key; it marks outputs the same way. With a purchased licence key the marks disappear from all new outputs.
Registering the key
zplCore looks for the key in this order:
- in code, once at start-up:
ZplCoreLicense.Register(key)orZplCoreLicense.RegisterFile(path), - the environment variable
ZPLCORE_LICENSE(the key itself), - the environment variable
ZPLCORE_LICENSE_FILE(path of a file that contains the key), - a file
zplcore.licensenext to your application.
using ZplCore.Licensing;
ZplCoreLicense.Register(builder.Configuration["ZplCore:License"]!);
// or: ZplCoreLicense.RegisterFile("/run/secrets/zplcore.license");
Register throws a ZplLicenseException with a clear message when the key is damaged or not genuine. Keys found in the environment or as a file never stop your application: if such a key is invalid, zplCore runs in evaluation mode and says why in ZplCoreLicense.Status.Message.
- zplCore Designer: the key must include the product Designer and an SDK licence of the same or a higher licence type. Option
License,ZPLCORE_LICENSE, containerdocker run -e ZPLCORE_LICENSE=…, Helmlicense.existingSecret. Every API response carries the headerX-ZplCore-License. - Command line tool and MCP server:
--license <key|file>, or the environment variables and the file above.
Checking the status
var status = ZplCoreLicense.Status; // SDK
Console.WriteLine($"{status.State}: {status.Message}");
var designer = ZplCoreLicense.GetStatus(ZplLicenseProduct.Designer);
| State | Meaning | Marked outputs |
|---|---|---|
Licensed | valid licence | no |
Unlicensed | no key found | yes |
Trial | valid trial key | yes |
Expired | trial or subscription period ended | yes |
VersionNotCovered | this version was released after your end of maintenance | yes |
ProductNotLicensed | the key does not include the product (Designer: no SDK licence of the same or a higher type) | yes |
Invalid | key damaged or not genuine | yes |
How long a key is valid
- Perpetual licence: valid for all versions released up to the end of maintenance, and it never expires for them. When maintenance ends, your existing versions keep running without marks; versions released later need a maintenance renewal.
- Subscription: valid until the end of the subscription; afterwards zplCore runs in evaluation mode – it does not stop.
- Trial: 30 days, then evaluation mode.
The key states the licensee, the licence type (Developer, Team, OEM/SaaS, Enterprise, Trial), the products (SDK, Designer), the number of seats and the end of maintenance or of the term. zplCore never counts seats; the number is part of your licence terms.
Attribution “by zplCore.com”
ZplCoreLicense.Attribution = true writes a small by zplCore.com in the lower right corner of every label (images, PDF, SVG and generated ZPL) and a strip below barcodes from the barcode generator, also with a valid licence – for public services that render labels for others.
Lost key or key exposed by mistake: write to support@zplcore.com – you will get a replacement.

