# How domain registration works

> What happens when you register or transfer a domain with Coritan, how prices are set, and what each registration status means.

Source: https://www.coritan.com/docs/websites/domains/

Coritan registers domains for you with each extension's registry, renews them and hands them over when you move them elsewhere. A domain you register or transfer here is a *registration* on your account. Its DNS can be hosted on Coritan or anywhere else, because the registration only says which *nameservers* answer for the domain.

## Terms

Registration
: Your right to a domain for the period you pay for, 1–10 years at a time, held through Coritan.

Registry
: The organisation that runs a domain extension, such as `.com`. Coritan passes your changes to it.

Nameservers
: The servers the registry sends resolvers to for the domain. A domain registered here starts on Coritan's nameservers, `ns1.coritan.com` to `ns8.coritan.com`.

EPP code
: A secret the current registrar gives you so another registrar can take the domain over. It is also called an auth code.

Transfer lock
: A registry setting that refuses transfer requests while it is on.

## Prices

The dashboard shows a domain's price per year when you search for it. A *premium* domain has a price that its registry sets. **View domain prices**, in the Websites list's **More website actions** menu, lists what each extension costs per year to register, renew and transfer. A registration takes the price for the whole period from your [account credit](/docs/billing/add-credit/) before Coritan registers the domain, and gives it back when the registration fails.

## What registering sets up

A new registration starts with the transfer lock and auto-renew on, and with WHOIS privacy on when you ask for it. The dashboard also offers to issue a certificate and to set up a web proxy for the domain. When either of those is on, Coritan creates the domain's DNS zone too. [Register a domain](/docs/websites/domains/register-a-domain/) describes each option.

## Statuses

The status appears beside the domain in the Websites list and on its **Settings** tab. The API sends these words:

| Status | Meaning |
| --- | --- |
| `active` | The domain is registered and you can change its settings. |
| `expiring_soon` | The domain expires in fewer than 30 days. |
| `expired` | The registry reports the domain as expired. |
| `pending_transfer` | You started a transfer to Coritan and it has not completed. |

Coritan reads each registration back from its registry regularly, and updates its status, expiry date, nameservers and switches from what the registry holds. A change made at the registry shows in the dashboard after that read.

> [!IMPORTANT]
> Renewing, the switches, the nameservers and the EPP code all need the registration to be `active`. While it is `expiring_soon`, `expired` or `pending_transfer`, the dashboard cannot change them; contact [support](/docs/support/) if you need to.

## Renewal and expiry

With auto-renew on, Coritan renews the domain for one year when it is within 14 days of its expiry date. With auto-renew off, Coritan emails you 30, 14, 7, 3 and 1 day before the domain expires. [Renew a domain](/docs/websites/domains/renew-a-domain/) covers both.

## Read registrations with the API

List your registrations, newest first, with an access token ([Authentication](/docs/api/authentication/)). The list takes `page`, `per_page` (25 by default, up to 100) and `status`, which keeps only registrations with that status word:

```bash
curl "https://api.coritan.com/api/v1/domains/registrations?status=active" \
  -H "Authorization: Bearer $CORITAN_TOKEN"
```

```json
{
  "registrations": [
    {
      "id": 7,
      "domain": "example.com",
      "status": "active",
      "registered_at": "2026-09-16T10:04:00Z",
      "expires_at": "2027-09-16T10:04:00Z",
      "nameservers": ["ns1.coritan.com", "ns2.coritan.com"],
      "whois_privacy": true,
      "locked": true,
      "auto_renew": true,
      "dns_zone_id": 42,
      "proxy_route_id": null,
      "ssl_certificate_id": null
    }
  ],
  "total": 1
}
```

`GET /api/v1/domains/registrations/{reg_id}` returns one registration in the same shape, or `404` with `Registration not found`. `GET /api/v1/domains/pricing` returns the price list, one entry per extension, sorted by extension:

```json
[
  {"tld": "com", "register_price": "14.99", "renew_price": "16.99", "transfer_price": "14.99", "currency": "USD"}
]
```

The figures in this example only show the shape. The endpoint returns the current prices, as strings, and `transfer_price` is `null` for an extension that has none.

## Related

- [Register a domain](/docs/websites/domains/register-a-domain/)
- [Transfer a domain to Coritan](/docs/websites/domains/transfer-a-domain-to-coritan/)
- [Website settings](/docs/websites/settings/)

## API

- `GET /api/v1/domains/pricing`: Get available TLD pricing (https://www.coritan.com/docs/api/reference/client/domains/#op-get-api-v1-domains-pricing)
- `GET /api/v1/domains/registrations`: List user's domain registrations (https://www.coritan.com/docs/api/reference/client/domains/#op-get-api-v1-domains-registrations)
- `GET /api/v1/domains/registrations/{reg_id}`: Get details of a specific domain registration (https://www.coritan.com/docs/api/reference/client/domains/#op-get-api-v1-domains-registrations-reg-id)
