# Fix license expiry and renewal problems

Your Blink instance runs on a license from IZT. It is activated once, online with an activation code or offline with a license file, and then renewed before it expires. You need to be an **instance owner** to activate or renew; anyone with the **View license** permission can see the license state and your plan.

## Symptoms

- A banner across the console says **The license has expired.** and counts down the days until new agent builds and updates stop.
- The banner says **The license and its 30-day grace are over: no new agent builds or updates. Agents keep connecting.**
- **Instance** › **License** shows the state **Expired, in grace**, **Lapsed**, **Not valid** or **Not activated**.
- The join page says **The support tool is not available yet.**
- A banner says more users or Access devices are in use than your plan allows, for example **12 users for 10 technician seats: new users are refused until you are under the limit.**
- A page shows **Not included in your plan:** followed by a feature, or a pill such as **Custom roles: not in your plan**.
- An action is refused with **Your plan does not include …**, or with a message that all technician seats or Access devices in your plan are in use.

## What still works

| License state | What happens |
|---|---|
| **Active** | Everything works. |
| **Expired, in grace** (first 30 days after expiry) | Everything still works. The console shows a banner with the days left. Renew now. |
| **Lapsed** (after the 30-day grace) | Everything in your plan keeps working: installed Access devices and downloaded support tools keep connecting, and Support sessions keep working. Blink no longer gets new agent versions, Access devices are not updated, and new enrollment installers cannot be built. |
| **Not activated** or **Not valid** | Nothing in the plan is available until the license is activated or renewed: Support codes, enrollment and new users are refused, and the console marks every feature as not in your plan. The server cannot fetch agents from IZT or build installers, so customers cannot download the support tool. |

A license problem never cuts off agents that are already connected or installed.

## Renew a license

### Your server reaches IZT online

Blink renews by itself, starting when about a third of the license period is left, and keeps retrying. Under **Renews**, **Instance** › **License** shows the date automatic renewal starts, and below it the last attempt and its error, if there was one.

1. Open **Instance** › **License** and read the last attempt's error.
2. Click **Renew now**.
3. If renewal keeps failing, check that the server can reach `license.blink.izt.app` and `build.blink.izt.app` on 443/TCP (firewall, proxy, DNS), then contact IZT with the error shown.

### Your server is offline

Renewing offline is the same exchange as offline activation, without a code:

1. In **Instance** › **License**, check that **Hostname** shows your licensed host name, then under **Offline** click **Activation request** to download the request file.
2. On `license.blink.izt.app`, use the **Renew** page and upload the request. The portal returns a license file.
3. Back in **Instance** › **License**, click **License file** and choose the file to import it.

The request file is valid for 30 days after you download it. Your server's clock must be correct: a request dated in the future is refused.

## Plan limits and missing features

These messages come from your plan, not from a license fault. See [Understand your plan and its limits](/configure/plans-and-limits/).

| Message | What to do |
|---|---|
| **Your plan includes** *N* **technician seats and** *M* **are in use. Technician seats: ask your provider to raise the limit.** | Every user account takes a seat, pending invites included. Disable or delete a user you no longer need, or ask IZT for more seats. |
| **Your plan includes** *N* **Access devices and** *M* **are in use. Access devices: ask your provider to raise the limit.** | Revoke or delete an Access device you no longer need, or ask IZT for more devices. |
| **Your plan does not include** *feature*. … | Ask IZT to add the feature to your plan. |
| **Not included in your plan:** *feature* | The page or control needs a feature your plan does not include. Ask IZT to add it. |

After IZT changes your plan, an instance owner selects **Renew now** on **Instance** › **License** to get the new license straight away. An offline server picks it up with the [offline renewal](#your-server-is-offline).

## Error messages

| Message | What to do |
|---|---|
| **That activation code is not valid. Check it, or ask IZT for a new one.** | Check the code. It looks like `BLINK-XXXXX-XXXXX-XXXXX-XXXXX`. If it is right, ask IZT for a new one. |
| **The build service refused the hostname: …** | The host name does not match your license. Contact IZT. |
| **Confirm with a code from your authenticator first.** | Enter your two-factor code when asked, then try again. |
| **The stored license is not valid for this instance** | The license belongs to another instance, or was issued before your server's identity key changed. Renew it; if that fails, contact IZT. |
| **The license service signs with a key this server does not know: the current license is kept. Update the server to renew.** | Install the current Blink server release, then renew. |

:::caution[Check your server's clock]
A server clock that is far off can make a valid license look expired, or not yet valid. Keep the server's time synchronised.
:::

## Blink Cloud

On Blink Cloud the hostname is set for you and shows **Managed by Blink Cloud**, and renewal is automatic. If every page of your Blink address shows **This account is suspended**, contact IZT.

## When to contact IZT

Contact [IZT](https://izt.app) if renewal keeps failing, you need a new activation code, the license shows **Not valid**, or you want to change your plan or add technician seats or Access devices. Send the **Instance** id and the **License id** from **Instance** › **License** (use the copy button next to the instance id), and the error shown under the last attempt.
