# Subscriptions

> Issue, limit and revoke the entitlements your users actually connect with.

Source: https://joinnasnet.com/en/guides/nasnet-linux/subscriptions/
Last updated: 2026-08-14

---

## Overview

A **subscription** is one user's entitlement: an expiry date, a traffic quota,
and a unique link that VPN clients poll for configuration. This screen is where
you create them, watch quota burn down, and suspend or renew them. Everything a
subscriber sees, from the servers in their app to the data counter and the QR code,
comes from a row on this page.

## Before you start

- You need at least one inbound configured on
  [Server → Network](/en/guides/nasnet-linux/server/inbounds/), otherwise a
  subscription has nothing to hand out.
- `app_base_url` in **Settings → Server** must be the address your users can
  actually reach, because subscription links are built from it.
- Each subscription has a random **link key** that is deliberately separate from
  the underlying proxy UUID, so the public URL never leaks a credential.

## Steps

1. Open **Subscriptions** from the sidebar.
2. Find a subscription with the search box (search by user or label) or narrow
   the list with the status, **Source** and **Usage** filters.
3. Click a row to open the detail sheet. It is divided into sections: overview,
   identity, limits, access and a danger section.
4. In **Identity**, set a **Label** so you can recognise the subscription later,
   and copy the **Subscription Key** or the subscription link.
5. In **Limits**, set the **Expiration** date, the **Data Limit**, the **Speed
   Limit** and the **Device Limit**. Both expiry and device limit accept an
   unlimited setting.
6. In **Access**, add or remove the inbounds this subscription is served, and
   review the **Connected IPs** it has been seen from.
7. Use the row actions to copy the subscription link or change the data limit
   without opening the sheet.

## Reference

| Column | What it shows |
| ------ | ------------- |
| User | The user who holds the subscription. |
| Label | Your own name for this subscription. |
| Status | Where it is in its lifecycle. |
| IPs | How many distinct source IPs have been seen. |
| Actions | Copy subscription link, change data limit, and the row menu. |

| Filter | Options |
| ------ | ------- |
| Source | All Sources, Manual |
| Usage | All Usage, Available, Exhausted |

| Field | What it does |
| ----- | ------------ |
| Expiration | The date access stops. Can be set to unlimited. |
| Data Limit | Traffic cap in GB. When it is reached the subscription becomes exhausted. |
| Speed Limit | Bandwidth ceiling applied to the subscription. |
| Device Limit | How many devices may use it at once. `0` means unlimited. |

A subscription moves between **Active**, **Exhausted** (quota hit), **Expired**
(time up), **Suspended** (by an admin) and **Terminated**. Whenever it changes
state the panel reconciles the underlying Xray accounts, and any WireGuard
peers, so what the core allows matches what the subscription says.

## Troubleshooting

**A client shows the wrong remaining data.** The counters ride on the
`subscription-userinfo` response header, which clients only re-read when they
refresh the subscription. Ask the user to pull the subscription again in their
app.

## Related

- [Accounts](/en/guides/nasnet-linux/subscriptions/accounts/)
- [Subscriber panel](/en/guides/nasnet-linux/subscriber-panel/)
- [Users](/en/guides/nasnet-linux/users/)
- [Inbounds and protocols](/en/guides/nasnet-linux/server/inbounds/)
