Industry
Use Case
Favorite Feature
A company runs several multi-tenant office buildings. Tenants book a package that decides what their staff can use: the main entrance, the garage, the gym, meeting rooms, a faster network segment. Contractors and visitors need access for a few days and then none at all.
The badge system only knew three fixed access levels. Anything finer was done by hand:
The operator wanted the packages defined in one place and access to stop on its own when it should.
The operator’s access control server is the only system that talks to NetLicensing. Badge readers and network switches ask that server, and the server asks NetLicensing. Each tenant company is a licensee. Each contractor or visitor gets their own licensee too.
Product: Building Access
├── Module "Amenities" – Multi-Feature
│ └── FEATURE templates: ENTRY, GARAGE, GYM, MEETING, NET-PLUS
├── Module "Passes" – Subscription
│ └── TIMEVOLUME templates: 1 day, 3 days, 7 days (timeVolumePeriod = DAY)
└── Module "Parking" – Rental
├── FEATURE template: Reserved space (one license per space)
└── TIMEVOLUME template: 1 month per space
Amenities. In the Multi-Feature model, every license template is a feature, and its number is the feature ID. A tenant on the Basic package has ENTRY and MEETING licenses. Premium adds GARAGE, GYM and NET-PLUS. Moving a tenant up means adding licenses in the Console. Moving them down means setting active=false on the extra ones. The badges stay as they are.
Contractor passes. For a contractor, the operator’s back end creates a licensee and gives it a Subscription license with a start date:
curl -u apiKey:YOUR_API_KEY -H "Accept: application/json" \
-d "licenseeNumber=CTR-2026-0412" \
-d "licenseTemplateNumber=PASS-3DAYS" \
-d "startDate=2026-11-10T07:00:00Z" \
https://go.netlicensing.io/core/v2/rest/license
Three days later, validation for that licensee returns valid=false for “Passes”, and the gates stop opening. Nobody has to remember anything. If the job runs longer, the back end adds another pass that starts when the first one ends.
Reserved parking. The Rental model licenses several copies of one thing, each for its own period. Each reserved space is a FEATURE license. Monthly TIMEVOLUME licenses extend a space via parentFeature. Validation returns each space with valid, expires and a green, yellow or red expirationWarningLevel, so the operator sees which spaces are about to lapse.
When a badge is presented, the access server finds the licensee behind it and validates:
curl -u apiKey:YOUR_API_KEY -H "Accept: application/json" -X POST \
https://go.netlicensing.io/core/v2/rest/licensee/TENANT-0312/validate
The response has one entry per module. For “Amenities” it lists every feature with valid=true or false. The server opens the garage gate only if GARAGE is valid. It sets the network switch port to the faster segment only if NET-PLUS is valid.
The server caches each result until its ttl. A badge swipe never waits for the internet, and a short outage doesn’t lock people out of their offices. The flip side: a revoked pass stops working at the end of the cached period at the latest. The operator chooses a short TTL in the NetLicensing settings for that reason.
Tenants have contracts and are invoiced by the operator’s own accounting system, so the NetLicensing Shop isn’t needed here. All licenses are created at price 0 through the API or the Management Console.
Want to try a similar setup? Talk to us or create a free account.

Internet Access Control
How a café start-up used NetLicensing subscriptions to sell premium high-speed internet by the day, week, month or year, with access granted to registered devices automatically.

Internet & Network Access Control: Time-Limited Access to Physical Connection Points
How a coworking operator can rent dedicated ethernet desks to teams by the month with the Rental model and sell hourly connection credits to drop-in members with Pay-per-Use.