Subscriptions
Issue, limit and revoke the entitlements your users actually connect with.
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, otherwise a subscription has nothing to hand out.
app_base_urlin 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
- Open Subscriptions from the sidebar.
- Find a subscription with the search box (search by user or label) or narrow the list with the status, Source and Usage filters.
- Click a row to open the detail sheet. It is divided into sections: overview, identity, limits, access and a danger section.
- In Identity, set a Label so you can recognise the subscription later, and copy the Subscription Key or the subscription link.
- 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.
- In Access, add or remove the inbounds this subscription is served, and review the Connected IPs it has been seen from.
- 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.