# Licensing

> How a CorePanel license works: what it unlocks, how it binds to your server, what happens when the license server is unreachable, and how to move a license to another machine.

Source: https://www.corepanel.net/docs/licensing/
Last updated: 2026-08-23
Part of the CorePanel documentation — https://www.corepanel.net/docs

---

CorePanel **Personal** is free and needs no license. A license is what unlocks the
**Pro** and **Business** features on a server — nothing else changes.

Two rules govern everything on this page, and they are worth reading before the details:

- **A license binds to the public IPv4 address your server is seen from**, observed by the
  license server on the connection itself — never an address your machine reports. There
  is nothing to configure and nothing that can be spoofed by editing a file.
- **Licensing never takes a site offline.** Every failure mode — an unreachable license
  server, an expired license, a revoked one — ends in the same place: the server falls
  back to Personal features. Sites, mail, DNS and databases keep running.

## Choosing an edition

The first time you sign in, CorePanel asks which edition this server is going to be.

![The edition chooser: three cards side by side — Personal (free, up to 20 websites), Pro (unlimited websites, full WAF, firewall, speed optimizer) and Business (marked "Most complete", with the client area, hosting packages, WHMCS and cPanel import), both marked as paid editions. Pro and Business each carry a "14-day free trial" line. Below the cards, an email field, an optional checkbox for product news, and a button reading "Start the free trial".](https://www.corepanel.net/_astro/edition-chooser.DdbMVaNQ.svg)

**The choice is not final.** Everything here can be changed later from **Server → License**,
including starting a trial you skipped at the time.

- **Personal** is free, has no time limit and is a complete edition: up to 20 websites with
  their mail, DNS, databases, backups, free SSL and the WordPress manager, plus
  [two applications](https://www.corepanel.net/docs/applications/configuration/#the-editions-cap) on their fixed
  resource limits.
- **Pro** and **Business** each come with a **14-day free trial**. No card, nothing to
  cancel — it ends by itself.

The email address is asked for in all three cases. On a trial it is where the warnings go
before it ends; on Personal it is how we can reach you about a security release affecting
your server. The checkbox below it is a separate opt-in for product news, and nothing else
depends on it.

If you would rather not decide yet, pick Personal. It is a supported edition, not a
downgrade, and the trial is still there when you want it.

## Free trials

A trial is an ordinary license with a short life: it installs itself, unlocks the whole
edition, and expires. Start one from the chooser above, from **Server → License** on a
server already running Personal, or from a shell:

```bash
corepanel license trial --edition business --email ops@your-domain.com
```

While it runs, the panel header shows **Trial — N days left**, turning amber in the last
three days. You are also warned by email at 7, 3 and 1 days, and once after it ends.

Three things are worth knowing before you start one:

- **One trial per server and per email address.** A second request is refused, and the
  answer is the checkout rather than another trial.
- **The address has to be one that can receive mail.** Documentation and reserved domains —
  `example.com`, anything under `.test`, `.invalid`, `.localhost` or `.local` — are refused,
  because the trial warnings at 7, 3 and 1 days would go nowhere. The same applies to the
  address given for Personal, which is how you hear about a security release.
- **Switching edition mid-trial is free and keeps the original end date.** Starting on Pro
  and moving to Business to look at the client area does not restart the countdown, and
  does not use up a second trial.
- **When it ends the server goes back to Personal.** Nothing is taken offline: every site,
  mailbox, database and certificate keeps running exactly as it was. What stops is the paid
  features, and creating sites beyond Personal's allowance of 20.

### Trialling Business with real customers

Business includes the client area, which Personal does not. If you put real hosting
customers on a Business trial, plan for the end of it:

- When the licence ends, your customers keep signing in for **5 more days**, and see a
  notice telling them to contact you.
- After those five days, those logins stop. **Their sites, email and databases keep
  working** — what ends is their access to the panel.

The five days are there so the message reaches you and you can act, not as a second trial.
If a trial is going to end while customers depend on the client area, buy the licence
before it does.

## Buying a license

Buy from the server that will use it: **Server → License**, pick **Pro** or **Business**
and a billing cycle, and press **Continue to checkout**. Payment happens in a tab that
opens on [corepanel.net](https://www.corepanel.net/pricing), handled by Paddle as merchant
of record — taxes are calculated there.

![The License page on an unlicensed server: across the top, the edition in effect (Personal) with a NO LICENSE badge; below it, side by side, an "Upgrade this server" card with Pro and Business selectable side by side, a Monthly/Yearly billing choice and a "Continue to checkout" button; and an "Already have a key?" card with a license key field and an Activate button.](https://www.corepanel.net/_astro/license-upgrade.VpVt3ytw.svg)

**Nothing is typed in afterwards.** The checkout tab carries a single-use token minted by
that server, so the payment comes back to that machine: the panel installs the license by
itself as soon as it clears, and the key never has to be seen. You can close the tab, or
the whole panel — an unredeemed purchase is retried at every check-in.

The same thing from the shell, for a server you administer over SSH:

```bash
corepanel license upgrade --edition pro --cycle yearly --wait
```

Buying from [the pricing page](https://www.corepanel.net/pricing) instead works too, but there is no server
attached to that purchase, so the key arrives **by email** and you activate it as below.
Prefer the panel when you already know which machine the license is for.

### What it costs

Pro and Business are licensed **per server**, monthly or yearly — yearly is ten months of
the monthly price, so two months are free. Prices exclude tax: VAT, GST or sales tax is
added at checkout according to where you are.

The current figures are on the **[pricing page](https://www.corepanel.net/pricing)**, and the panel shows them
again in **Server → License** before you commit to anything.

> **Note**
>
> Business is on sale while part of its network-protection tier — **custom WAF rules**,
> **Geo blocking** and **DDoS L7 protection** — is still being finished. Everything else in
> the edition (the multi-tenant views, the client portal, per-user limits and WHMCS) is
> available today. The [pricing matrix](https://www.corepanel.net/pricing) marks those three as *Soon* rather than
> included.
## Activating a license

This is the path for a key you already hold — one bought from the website, moved from
another server, or issued to you directly. A license bought from the panel installs itself
and never shows you a key, so there is nothing to do here.

In the panel, go to **Server → License**, paste the key and press **Activate**. The key
looks like `CPL-XXXXX-XXXXX-XXXXX-XXXXX-XXXXX`; it is case-insensitive and the dashes are
optional. The page is reserved for **super-administrators**: the license decides the
edition every account on the server runs under.

From the shell:

```bash
corepanel license activate --key-stdin < license.key
corepanel license status
```

The key is a bearer credential, so on a shared machine prefer `--key-stdin` over passing
it as an argument, where it lands in the shell history and in the process list.

Activation contacts the license server, which binds the license to the address it sees and
returns a **signed** answer. The panel stores those signed bytes and verifies them against
a signing key built into CorePanel itself, so a stored license cannot be edited into a
better one.

## The License page

**Server → License** answers three questions at a glance: which edition the server is
**getting**, which edition the license **pays for**, and whether anything needs attention.
Those first two are separate on purpose — when they differ, the panel says so instead of
showing an edition that is not actually in effect.

![The License page: on the left, the edition in effect (Pro) with an ACTIVE badge, the masked license key, the status, the bound IP address, the expiry date and the last successful check-in; on the right, a form to paste a key and activate it. The header carries "Check in now" and "Release" buttons.](https://www.corepanel.net/_astro/license-page.BOr41hKa.svg)

The page also shows the masked key, the bound address, the expiry date and the last
successful check-in. The key is always masked (`CPL-EQ0T6-…-2ES83`): CorePanel never
displays or logs it in full.

The same information, for scripts and monitoring:

```bash
corepanel license status          # exit status 1 if the paid edition is not in effect
corepanel license status --json
```

## Check-ins, and what happens when they fail

Once a day the panel asks the license server "is this server still entitled?". You can
force it from the page (**Check in now**) or with `corepanel license refresh`.

A failed check-in is **not** a verdict. Your ISP's link, a DNS hiccup or maintenance on our
side must not cost you the edition you paid for, so an unreachable license server starts a
countdown instead:

| Time since the last successful check-in | What happens |
|---|---|
| Up to 7 days | Nothing. The edition applies normally |
| 7 to 14 days | The panel warns you and shows the deadline; the edition still applies |
| Over 14 days | The server falls back to Personal features |

Recovering is a single successful check-in — there is nothing to repair and nothing to
re-enter. If the countdown ran out, run `corepanel license refresh` (or press **Check in
now**) once connectivity is back and the edition returns.

A **verdict** is different. If the license server answers that the license expired or was
revoked, that is an answer, not an outage, and it applies immediately.

## Moving a license to another server

Release it on the old server first — that path is free:

```bash
# on the server you are leaving
corepanel license deactivate

# on the new server
corepanel license activate --key-stdin < license.key
```

Activating a key that is still bound elsewhere also works: the license is **rebound** to
the new server, spending one of the license's rebinds (3 per 30 days). Releasing first
spends none, which is why it is the recommended order.

Releasing makes the server forget the key, so keep the key at hand before you do it. The
panel asks for confirmation, and the CLI refuses to run non-interactively without `--yes`
for exactly that reason.

**A changed IP address is not a migration.** If the same server gets a new address, just
check in: the panel notices the mismatch, rebinds and retries by itself.

## What leaves your server

The check-in sends four things: the license key, a random number that makes each answer
single-use, your server's hostname and the CorePanel version. The bound address is not
sent — it is what the license server observes.

Nothing else travels: no account names, no domains, no email addresses, no site content,
no usage figures.

## Troubleshooting

**"The stored license does not verify"** — the saved license does not match the signing key
this CorePanel build trusts, so it is not honoured. Check in again to fetch a fresh one.
If it persists after an update, contact support.

**Check-ins keep failing** — the server needs outbound HTTPS to
`licenses.corepanel.net`. Confirm name resolution and that nothing is intercepting TLS to
that host:

```bash
curl -fsS https://licenses.corepanel.net/healthz
```

**"Waiting for the payment to be confirmed" does not go away** — the panel is polling for
a payment the license server has not been told about yet. Give it a minute: the
notification from the payment provider is normally seconds, occasionally a retry. If it is
still there after a few minutes, leave it — the panel keeps trying in the background and
at every daily check-in — and contact support with the email address you paid with.

Do **not** press *discard* if you paid. It is meant for a checkout you abandoned. (If you
do press it, the panel tries to redeem the purchase first and installs the license instead
of throwing it away — but do not rely on that.)

**The panel shows Personal after a successful payment** — the license is bound to another
address (a server rebuilt with a new IP, or a license still bound to the old machine).
`corepanel license status` shows the bound address; `corepanel license refresh` rebinds
when the address simply changed.

**"This purchase was already claimed by another server"** — that checkout link was used
somewhere else. The license exists and is bound to that machine: release it there
(`corepanel license deactivate`) and activate it here with its key, or contact support.

**Rebind allowance exhausted** — the license moved between servers more than 3 times in 30
days. Contact support; the limit exists to stop a single key from being rotated across a
fleet, not to get in the way of a real migration.

## Related

- [CorePanel CLI](https://www.corepanel.net/docs/cli#corepanel-license) — the full `corepanel license` reference
- [Hosting Accounts](https://www.corepanel.net/docs/accounts/#the-server-wide-website-limit) — the website limit of
  the free edition
