---
title: "Transfer a domain"
method: POST
path: "/{account}/registrar/domains/{domain}/transfers"
tags: ["registrar"]
---

# Transfer a domain

`POST /{account}/registrar/domains/{domain}/transfers`

Transfers a domain name from another registrar.

Your account must be active for this command to complete successfully. You will be automatically charged the 1-year transfer fee upon successful transfer, so please be careful with this command. The transfer may take anywhere from a few minutes up to 7 days.

When transfering a domain using Solo or Teams subscription, the DNS services
for the zone will be automatically enabled and this will be charged on your
following subscription renewal invoices.

## Path parameters

- `account` integer, required
- `domain` string, required

## Request body

- object
  - `registrant_id` integer, required — The ID of an existing contact in your account.
  - `auth_code` string, required — Required for TLDS that require authorization-based transfer (the vast majority of TLDs).
  - `whois_privacy` boolean — Set to true will attempt to purchase/enable the whois privacy as part of the transfer. An extra cost may apply. Default: false.
  - `auto_renew` boolean — Set to true to enable the auto-renewal of the domain. Default: false.
  - `trustee` boolean — Set to true to use a trustee service for the transfer. An extra cost may apply. Default: false.
  - `extended_attributes` object — Required for TLDs that require extended attributes.
  - `premium_price` string — Required as confirmation of the price, only if the domain is premium.

## Response `201`

Domain transfer created.

- object
  - `data` DomainTransfer, required
    - `id` integer, required
    - `domain_id` integer, required
    - `registrant_id` integer, required
    - `state` 'cancelled' | 'new' | 'transferring' | 'transferred' | 'failed', required
    - `auto_renew` boolean, required
    - `whois_privacy` boolean, required
    - `trustee` boolean, required
    - `status_description` string
    - `created_at` string, date-time, required — A date-time value, representing when the entry was created, formatted as ISO 8601.
    - `updated_at` string, date-time, required — A date-time value, representing when the entry was last updated, formatted as ISO 8601.

## Other responses

- `400` — A required parameter is missing or the request is invalid.

## Changes

- **2026-04-28** (v2) `53dd09c3a139` — 1 breaking, 1 warning, 2 info
  - removed the required property `data/trustee_service` from the response with the `201` status
  - removed the request property `trustee_service`
  - added the new optional request property `trustee`
  - added the required property `data/trustee` to the response with the `201` status
- **2026-04-09** (v2) `0b270ad88a60` — 2 info
  - added the new optional request property `trustee_service`
  - added the required property `data/trustee_service` to the response with the `201` status
- **2025-07-11** (v2) `06780be0ef17` — 2 breaking, 11 info
  - the request property `auth_code` became required
  - the request property `registrant_id` became required
  - the response property `data` became required for the status `201`
  - the response property `data/auto_renew` became required for the status `201`
  - …9 more
- **2023-07-18** (v2) `c8591dcf8c29` — 12 breaking, 1 warning, 2 info
  - the response property `data` became optional for the status `201`
  - the response property `data/auto_renew` became optional for the status `201`
  - the response property `data/created_at` became optional for the status `201`
  - the response property `data/domain_id` became optional for the status `201`
  - …11 more

[Change history](https://skmtc.dev/dnsimple/apis/dnsimple-api/changes/:account/registrar/domains/:domain/transfers/post.md)

---

[API](https://skmtc.dev/dnsimple/apis/dnsimple-api.md) · [All operations](https://skmtc.dev/dnsimple/apis/dnsimple-api/llms.txt) · [OpenAPI document](https://skmtc.dev/dnsimple/apis/dnsimple-api/revisions/faec8b49cc03?raw)
