> ## Documentation Index
> Fetch the complete documentation index at: https://docs.keyport.sbs/llms.txt
> Use this file to discover all available pages before exploring further.

# Licenses

> Create, configure, and revoke licenses for your customers.

Licenses belong to a product and are linked to a customer identity. When your application calls the validation API, KeyPort checks the license against the settings you configure here.

## Create your first license

<Steps>
  <Step title="Open the product">
    In the sidebar, go to **Products** and select the product you want to issue a license for.
  </Step>

  <Step title="Go to Licenses">
    Click the **Licenses** tab inside the product view, then click **New license**.
  </Step>

  <Step title="Set a customer identifier">
    You must provide at least one of the following:

    * **Email** — the customer's email address
    * **Discord ID** — the customer's Discord user ID

    Both can be set together if your workflow uses both identity signals.
  </Step>

  <Step title="Set expiry">
    Choose between a **lifetime** license (no expiry date) or an **expiring** license and pick an expiry date and time. Expiry enforcement is controlled at the product level — make sure it is enabled if you want the date to be enforced during validation.
  </Step>

  <Step title="Set IP limit (optional)">
    Enter a value for `max_ips` to limit how many distinct IP addresses can activate this license. Leave blank or set to `0` for no limit. IP enforcement must also be enabled on the product for this to take effect.
  </Step>

  <Step title="Create the license">
    Click **Create license**. The generated license key is shown and is ready to distribute to your customer.
  </Step>
</Steps>

## Customer identifiers

A license must have at least one identifier so KeyPort can link it to a real customer:

| Identifier | When to use                                           |
| ---------- | ----------------------------------------------------- |
| Email      | Standard for web or SaaS customers                    |
| Discord ID | Useful for communities and Discord bot-gated products |

## Lifetime vs expiring licenses

* **Lifetime** licenses have no expiry and remain valid until explicitly revoked.
* **Expiring** licenses become invalid after their set date when expiry enforcement is on. You can update the expiry date at any time from the license detail page.

## Managing a license

From **Licenses > \[license key]** you can:

* Update the expiry date or add notes
* Reset the IP history (clears all recorded IPs, allowing the customer to activate from new addresses)
* View and manage per-license IP records and blacklist entries
* Review and approve or deny transfer requests
* Revoke the license

## Revoking a license

Click **Revoke** on the license detail page. A revoked license returns an invalid response on all future validation requests. Revocation is immediate and cannot be undone from the dashboard — create a new license if access needs to be restored.

<Note>
  On qualifying plans you can bulk-revoke licenses from the product's license list view. Select the licenses you want to revoke and choose **Bulk revoke** from the actions menu.
</Note>

## License limits

| Plan       | Licenses per organization |
| ---------- | ------------------------- |
| Free       | `200`                     |
| Pro        | `5,000`                   |
| Enterprise | override or unlimited     |
