# How account plans work

> What your account plan sets for the whole account, which plan applies, and what happens when you reach a limit or move to a smaller plan.

Source: https://www.coritan.com/docs/billing/account-plans/

In the dashboard:

- /dashboard/billing/plan: https://www.coritan.com/dashboard/billing/plan
- /pricing: https://www.coritan.com/pricing

Your *account plan* sets what your whole account can have: how many websites and load balancers it holds, how many people share it, and the email, sending and storage it gets at no charge. Each account has one plan: Free, Pro, Business or Enterprise. Servers, instances, apps, extra storage and IP addresses are services of their own. You order them on any plan, and each is billed on its own.

## Plans open in stages

Coritan opens account plans to accounts in stages. Until they open on yours:

- [`GET /account/plan`](/docs/api/reference/client/account-plan/#op-get-api-v1-account-plan) answers `"enabled": false`, and [`GET /account/entitlements`](/docs/api/reference/client/account-plan/#op-get-api-v1-account-entitlements) answers `"enforced": false`.
- The limits on this page do not refuse anything.
- Ordering, changing or trying a plan answers `403` with `{"code": "plans_not_open", "message": "Plans are not open on this account yet."}`.
- The dashboard keeps its earlier layout: **Billing** in the sidebar with no **Plan** tab, and the overview in place of Home ([The dashboard](/docs/get-started/dashboard/)).

You can cancel a plan and [set up the services a plan includes](/docs/billing/included-services/) at every stage.

## The plans

Free
: Every account starts on Free. It costs nothing, needs no payment method and has no end date ([The Free plan](/docs/billing/free-plan/)).

Pro and Business
: Paid plans with higher limits, billed monthly or yearly. You can [try either one free](/docs/billing/free-trial/) once, and [order one or move between them](/docs/billing/change-account-plan/). `GET /account/plan` lists each plan's current prices under `available`.

Enterprise
: Sold by our sales team, with the terms in your agreement. It cannot be ordered online: send an enquiry from the [contact page](https://www.coritan.com/contact) or write to [sales@coritan.com](mailto:sales@coritan.com).

## Which plan applies

A paid plan that is active decides your limits. Without one, your free trial decides them while it runs. Without either, the account is on Free.

A plan you cancel keeps applying until the end of the period you paid for. While a paid plan is suspended for an unpaid invoice, the account has the Free plan's limits, and paying the invoice restores the plan ([Failed payments and suspended services](/docs/billing/failed-payments/#a-service-is-suspended)).

## What each plan includes

| | Free | Pro | Business | Enterprise |
| --- | --- | --- | --- | --- |
| Websites | 3 | 10 | 50 | Unlimited |
| Load balancers | 1 | 5 | 25 | Unlimited |
| Team members, you included | 1 | 3 | Unlimited | Unlimited |
| Activity log | No | No | Yes | Yes |
| Custom firewall rules | None | 20 | 100 | 1,000 |
| Rate limiting rules | None | None | 10 | 100 |
| Country rules | No | No | Yes | Yes |
| Cache settings | No | Yes | Yes | Yes |
| Your own certificates | No | Yes | Yes | Yes |
| Wildcard certificates | No | Yes | Yes | Yes |
| Query history | Last 24 hours | 30 days | 30 days | 30 days |
| Automatic backups for servers | No | Yes | Yes | Yes |
| Instances whose automatic backups the plan pays for | None | None | 3 | Every instance |
| Extra snapshot storage | None | 100 GB | 500 GB | Set in your agreement |
| Floating IPs the plan pays for | None | 1 | 2 | 10 |
| Shield Custom Profiles the plan pays for | None | None | 1 | 5 |
| Sharing a mailbox in webmail | No | No | Yes | Yes |
| Included Mail Hosting | 5 mailboxes of 1 GB on 1 domain | 10 mailboxes of 10 GB on 3 domains | 50 mailboxes of 25 GB on 10 domains | Mailboxes of 50 GB, with the number of mailboxes and domains set in your agreement |
| Included SMTP Relay | 3,000 emails a month | 25,000 emails a month | 100,000 emails a month | Set in your agreement |
| Included Object Storage | 10 GB | 250 GB | 1 TB | Set in your agreement |
| Support priority | Low | Medium | High | High |
| Target for our first support reply | 2 days | 1 day | 1 hour | 30 minutes |

Websites
: Each DNS zone on your account is a website, and so is each web proxy whose hostname is not under one of your zones. The `example.com` zone and a web proxy for `www.example.com` count as one website. A [coritan.gg name](/docs/proxies/coritan-gg-names/) is a DNS zone too. Coritan checks the limit when you [add a domain you already own](/docs/websites/add-an-existing-domain/), [claim a coritan.gg name](/docs/proxies/coritan-gg-names/) or [create a web proxy](/docs/proxies/web-proxies/create-a-web-proxy/).

Load balancers
: The DNS load balancers across all your zones. Coritan checks the limit when you [create a load balancer](/docs/websites/load-balancing/create-a-load-balancer/).

Team members
: The people who can sign in to your account, you included. Coritan checks the limit when you invite someone.

Activity log
: What you and your team members changed in your account, and who changed it, on the **Activity** tab of **Settings** ([Review your account's activity](/docs/account/activity-log/)).

Custom firewall rules, rate limiting rules and country rules
: The rules of your own that are switched on in the WAF, counted across all your websites. Each rate limiting rule also counts as one of your custom firewall rules. A country rule is a rule that matches a visitor's country ([Protect a website with the WAF](/docs/websites/waf/)).

Cache settings, your own certificates and wildcard certificates
: Changing how the edge caches a website's pages ([Cache pages at the edge](/docs/websites/proxy/#cache-pages-at-the-edge)), uploading a certificate of your own ([Upload your own certificate](/docs/websites/ssl/upload-a-certificate/)) and ordering a wildcard ([Issue a certificate with Coritan DNS](/docs/websites/ssl/issue-a-certificate/#issue-a-certificate-with-coritan-dns)).

Query history
: How far back the DNS query counts on a website's **Overview** tab go. Free shows the last 24 hours ([View DNS query statistics](/docs/websites/dns-query-statistics/)).

Automatic backups
: On Pro and up, a server takes automatic backups without an add-on ([Automatic backups](/docs/managed-containers/snapshots/#automatic-backups)). Business pays for the automatic backups add-on on up to three instances, and Enterprise on every instance ([Automatic backups](/docs/cloud-compute/backups/#automatic-backups)).

Extra snapshot storage
: Room for server snapshots, added to what your servers and snapshot storage services include ([How snapshot storage works](/docs/snapshots/storage-allowance/#where-the-allowance-comes-from)).

Floating IPs and Shield Custom Profiles the plan pays for
: Single IPv4 floating IPs and Shield Custom Profiles that cost $0 while the plan applies. You order them as usual, on their own or as add-ons to another order, and each one the plan has room for costs $0. A subnet, an IPv6 address and a larger custom profile bill at their own price on every plan. The plan pays for the oldest first ([Cancel a floating IP](/docs/floating-ips/billing/#when-your-account-plan-pays-for-it), [Order and use a custom profile](/docs/ddos-shield/custom-profiles/#when-your-account-plan-pays-for-it)).

Sharing a mailbox
: Inviting another Coritan account to a mailbox on Coritan's own mail. Invitations you sent earlier keep working on any plan ([Share a mailbox](/docs/mail/webmail/mailboxes-and-sharing/#share-a-mailbox)).

Included Mail Hosting, SMTP Relay and Object Storage
: One service of each at no charge, which you set up once and which follows your plan ([Set up the services your plan includes](/docs/billing/included-services/)). On Enterprise, your agreement sets their size. The included Mail Hosting holds up to 1,000 mailboxes on 100 domains.

Support priority and first reply target
: A support conversation you open starts at the plan's priority at least, even when you choose a lower one. We aim to send the first reply within the plan's target. Both come from the plan the account has when the conversation opens, and they stay with it after that ([Start a conversation](/docs/support/conversations/#start-a-conversation)).

Our sales team can set other figures for an Enterprise account in its agreement.

## When you reach a limit

What you already have keeps working. Coritan refuses only what would take the account past a limit, such as a fourth website on the Free plan. The refusal says what the limit is, how much of it the account uses, and what raises it: a larger plan, or an add-on where one exists. In the dashboard, it opens a dialog with those offers ([When your plan refuses something](/docs/get-started/dashboard/#when-your-plan-refuses-something)).

Over the API, the refusal is `402` with `entitlement_exceeded`:

```json
{
  "detail": {
    "code": "entitlement_exceeded",
    "entitlement": "websites_max",
    "limit": 3,
    "used": 3,
    "upgrade": {"plan": "plan-pro", "addon": "addon-websites-pack"},
    "message": "Your Free plan includes 3 websites, and this account has 3. To add more, upgrade to Pro or buy an add-on."
  }
}
```

`upgrade.plan` is the smallest plan that allows one more, and `upgrade.addon` is the catalogue slug of the add-on that raises the limit. Either is `null` when there is none. When only our sales team can raise the limit, the `message` ends with `Contact sales to raise it.`

## Moving to a smaller plan

Your account moves to a smaller plan when you change down, when a plan you cancelled ends, and when a trial ends. Coritan deletes nothing when the plan changes:

- Everything above the new limits keeps working. You cannot add more of it until the account is back within the limit, or on a larger plan.
- Your included services move to the new plan's size. A Mail Hosting or SMTP Relay service that already uses more than that stays at what it uses, and Coritan lowers it each day as you remove things.
- Object Storage keeps every file. Storage above the new allowance counts as it does on any Object Storage service ([When your buckets hold more than the allowance](/docs/object-storage/usage-and-billing/#when-your-buckets-hold-more-than-the-allowance)).
- Your snapshot allowance shrinks by the storage the new plan no longer adds. When your snapshots then take more than the allowance, a cleanup date is set, and Coritan deletes the oldest snapshots from that date unless the account fits again ([When the account is over](/docs/snapshots/storage-allowance/#when-the-account-is-over)).
- The plan keeps paying for your oldest floating IPs and custom profiles, up to what the new plan pays for. The newest beyond that keep working, and each one renews at its own price from its next renewal ([When your account plan pays for it](/docs/floating-ips/billing/#when-your-account-plan-pays-for-it)).

The same happens while a paid plan is suspended for an unpaid invoice, because the account then has the Free plan's limits.

Before you confirm a smaller plan, its dialog on the **Plan** tab lists what the plan would leave above its limits, under a title such as `Over the Free plan's limits`. It lists the floating IPs and custom profiles that would renew at their own price under a title such as `What the Free plan pays for` ([Choose or change your account plan](/docs/billing/change-account-plan/)). Over the API, [`POST /account/plan/preview`](/docs/api/reference/client/account-plan/#op-post-api-v1-account-plan-preview) lists the first in `over_limit` and the second in `renew_at_own_price`, each as `{entitlement, limit, used}` ([Preview a plan](/docs/billing/change-account-plan/#preview-a-plan)).

## The Plan tab

Once plans open on your account, select **Plan and billing** in the sidebar of the [dashboard](https://www.coritan.com/dashboard/billing/plan), then the **Plan** tab. From the top, it shows:

**Your plan**
: The plan's name and a line on what it costs and when that changes, such as `Renews on Oct 12, 2026 at $12/mo.` A **Free trial** badge marks a trial, and a **Cancelling** badge a plan you cancelled. Its buttons start or end your trial, and cancel or keep a paid plan ([Start a free trial](/docs/billing/free-trial/), [Choose or change your account plan](/docs/billing/change-account-plan/)).

**What your account uses**
: A meter for each count your plan limits, against its limit: **Websites**, **Load balancers**, **Mailboxes**, **Mail domains**, **Emails sent this month** and **Object Storage**. A count above its limit reads `Over your plan's limit`. Until you set up an included service, its counts read a line such as `Counted once you set up the email your plan includes.` ([Set up the services your plan includes](/docs/billing/included-services/)).

**Plans**
: Free, Pro, Business and Enterprise side by side, each with its price and what it includes. **Monthly** and **Yearly** switch the prices between billing periods. Your plan has the **Your plan** badge, or **On trial** during a trial. The button under another plan chooses it, such as `Choose Pro…`, and **Move to Free…** cancels your plan. Enterprise reads `By quote`, and its **Contact sales** opens the contact page.

**Referrals**
: Your referral link and the credit it has earned, while Coritan gives credit for referrals ([Earn credit with referrals](/docs/account/referrals/)).

An order or a change that waits for payment shows **Waiting for payment** at the top of the tab, with **Pay invoice**. While a paid plan is suspended for an unpaid invoice, the top of the tab reads `Your Pro plan is on hold`, with **Pay invoice**.

Home shows the same **Your plan** card, with fewer meters and the next plan's price. Its **Change plan…** opens the **Plan** tab ([Home](/docs/get-started/dashboard/#home)).

## With the API

### Read your plan

[`GET /account/plan`](/docs/api/reference/client/account-plan/#op-get-api-v1-account-plan) returns your plan, the plans you can choose and your free trial:

```bash
curl https://api.coritan.com/api/v1/account/plan \
  -H "Authorization: Bearer $CORITAN_TOKEN"
```

This account is on Free, plans are open on it, and it has not had a trial:

```json
{
  "plan": {
    "key": "free",
    "name": "Free",
    "source": "free",
    "status": "active",
    "renews_at": null,
    "ends_at": null,
    "trial_ends_at": null,
    "service_id": null,
    "billing_cycle": null
  },
  "available": [
    {
      "key": "free",
      "name": "Free",
      "prices": {"monthly": 0.0, "annually": 0.0},
      "popular": false,
      "orderable": false,
      "product_id": null,
      "pricing_ids": {"monthly": null, "annually": null}
    },
    {
      "key": "plan-pro",
      "name": "Pro",
      "prices": {"monthly": 12.0, "annually": 120.0},
      "popular": true,
      "orderable": true,
      "product_id": 212,
      "pricing_ids": {"monthly": 540, "annually": 541}
    },
    {
      "key": "plan-business",
      "name": "Business",
      "prices": {"monthly": 39.0, "annually": 384.0},
      "popular": false,
      "orderable": true,
      "product_id": 213,
      "pricing_ids": {"monthly": 542, "annually": 543}
    },
    {
      "key": "plan-enterprise",
      "name": "Enterprise",
      "prices": {"monthly": null, "annually": null},
      "popular": false,
      "orderable": false,
      "product_id": 214,
      "pricing_ids": {"monthly": null, "annually": null}
    }
  ],
  "trial": {"available": true, "plan": null, "ends_at": null, "status": null},
  "enabled": true,
  "pending": null,
  "suspended": null
}
```

`plan.key`
: `free`, `plan-pro`, `plan-business` or `plan-enterprise`.

`plan.source`
: `paid`, `trial` or `free`.

`plan.status`
: `active`, `cancelling` (the plan ends at `ends_at`) or `trialing`. A paid plan has its `service_id`, its `billing_cycle` and the date it `renews_at`.

`available`
: Free and each plan on sale, with its prices in US dollars for each billing cycle. The prices in this example may differ from today's. A plan our sales team sells has no prices, and `orderable` is `false`. The dashboard marks the plan whose `popular` is `true` with a **Popular** badge. Each plan also carries its `limits`, shaped like the `limits` below, before any add-on. On Enterprise, the allowances its agreement sets are `null`: `mailboxes`, `mail_domains`, `sending_monthly`, `object_storage_gb` and `snapshot_storage_gb`. This example leaves `limits` out.

`trial`
: Whether the account can start its one free trial now (`available`), and the trial it had: its `plan`, when it `ends_at` and its `status`.

`enabled`
: Whether account plans are open on your account ([Plans open in stages](#plans-open-in-stages)).

`pending`
: An order or a plan change waiting for payment: `kind` (`order` or `change`), `service_id`, `plan`, `name`, `billing_cycle`, `invoice_id` and `amount_due`. `null` when there is none.

`suspended`
: A plan suspended for an unpaid invoice: `service_id`, `plan`, `name`, `invoice_id` and `amount_due`. `null` when there is none.

### Read your limits and usage

[`GET /account/entitlements`](/docs/api/reference/client/account-plan/#op-get-api-v1-account-entitlements) returns what your plan and add-ons allow, and what the account uses:

```bash
curl https://api.coritan.com/api/v1/account/entitlements \
  -H "Authorization: Bearer $CORITAN_TOKEN"
```

This answer is shortened: `limits` holds every entitlement.

```json
{
  "plan": {"key": "free", "name": "Free", "source": "free", "status": "active", "renews_at": null, "ends_at": null, "trial_ends_at": null, "service_id": null, "billing_cycle": null},
  "limits": {
    "websites_max": 3,
    "load_balancers_max": 1,
    "team_members": 1,
    "mail_domains": 1,
    "mailboxes": 5,
    "mailbox_gb": 1,
    "sending_monthly": 3000,
    "object_storage_gb": 10,
    "trial_available": true
  },
  "usage": {
    "websites_max": 3,
    "load_balancers_max": 0,
    "mailboxes": 2,
    "mail_domains": 1,
    "sending_monthly": 412,
    "object_storage_gb": 1.5
  },
  "over_limit": [],
  "enforced": true
}
```

`limits`
: Every entitlement: a number, where `-1` means unlimited; `true` or `false` for a feature; or a word for `support_level`. An add-on you have adds to its entitlement. On Enterprise, your agreement sets `mailboxes`, `mail_domains`, `sending_monthly`, `object_storage_gb` and `snapshot_storage_gb`, within what the included services can hold ([What each plan includes](#what-each-plan-includes)).

`usage`
: The counts Coritan measures: websites and load balancers; the mailboxes and mail domains of your included Mail Hosting; the emails your included SMTP Relay sent this month; and the GB your included Object Storage holds. A count for an included service you have not set up is left out.

`over_limit`
: Each count above its limit, as `{entitlement, limit, used}`.

`enforced`
: Whether the limits apply to your account ([Plans open in stages](#plans-open-in-stages)).

`audit_log` says whether your plan includes the [activity log](/docs/account/activity-log/). `limits` also names `uptime_sla`, a feature that no product reads yet, which changes nothing on your account. [What each plan includes](#what-each-plan-includes) lists every limit Coritan applies.

### Check whether plans apply

[`GET /features`](/docs/api/reference/client/features/#op-get-api-v1-features) needs no authentication. `plans_v2` says whether account plans apply to the account whose token you send, or, without a token, to an account created now. `flags` says which areas the dashboard shows.

```bash
curl https://api.coritan.com/api/v1/features
```

This answer is shortened:

```json
{
  "flags": {"vps": true, "mail": true, "storage": true, "dedicated": false},
  "plans_v2": true
}
```

## API

- `GET /api/v1/account/plan`: Your plan, the plans you can choose and your free trial (https://www.coritan.com/docs/api/reference/client/account-plan/#op-get-api-v1-account-plan)
- `GET /api/v1/account/entitlements`: What your plan and add-ons let your account have, and what it uses (https://www.coritan.com/docs/api/reference/client/account-plan/#op-get-api-v1-account-entitlements)
- `GET /api/v1/features`: The dashboard areas this storefront shows, and whether account plans apply (https://www.coritan.com/docs/api/reference/client/features/#op-get-api-v1-features)
