---
title: "Create Transfer"
method: POST
path: "/core/v1/transfers"
tags: ["Transfers"]
---

# Create Transfer

`POST /core/v1/transfers`

Initiates a domain transfer into your name.com account from another registrar. You must provide the domain name and its valid transfer authorization code (EPP code). The domain must not be locked or under any transfer restrictions (e.g. clientTransferProhibited). If successful, the transfer is submitted and tracked through the ICANN transfer process. Once a transfer has been created, you can track its progress via the [GetTransfer](/api/v1/reference/transfers/get-transfer) endpoint.
**Transfer pricing:** Omit `purchasePrice` for standard (non-premium) transfers. For premium transfers, pass `transferPrice` from [Get Pricing For Domain](/api/v1/reference/domains/get-pricing-for-domain) as `purchasePrice`. If sent, it must match Get Pricing `transferPrice` exactly or the request will fail. Premium transfers without `purchasePrice` will fail. See the [Domain pricing guide](/guides/domain-pricing) for how [Get Pricing](/api/v1/reference/domains/get-pricing-for-domain) `transferPrice` relates to the `years` query parameter.

## Request body

- CreateTransferRequest — CreateTransferRequest passes the required transfer info to the CreateTransfer function. See the [Domain pricing guide](/guides/domain-pricing) for how `purchasePrice` relates to [Get Pricing](/api/v1/reference/domains/get-pricing-for-domain) `transferPrice`.
  - `authCode` string, required — AuthCode is the authorization code for the transfer. Not all TLDs require authorization codes, but most do.
  - `domainName` string, required — DomainName is the domain you want to transfer to name.com.
  - `privacyEnabled` boolean — PrivacyEnabled is a flag on whether to purchase Whois Privacy with the transfer. If this flag is omitted from the request, the system will check the account's Whois Privacy auto-add settings. If auto-add is enabled in your account settings, Whois Privacy will be added by default, provided the TLD supports it.
  - `purchasePrice` number, double — PurchasePrice is the USD inbound transfer fee, before VAT. VAT is applied when applicable and must not be included here. If sent, must match Get Pricing `transferPrice` exactly or the request will fail.. **Omit** for standard (non-premium) transfers. **Required** for premium transfers — use `transferPrice` from [Get Pricing](/api/v1/reference/domains/get-pricing-for-domain).

## Response `200`

A successful response.

- CreateTransferResponse — CreateTransferResponse returns the newly created transfer resource as well as the order information.
  - `order` integer, required — Order is an identifier for this purchase.
  - `totalPaid` number, double, required — TotalPaid is the total amount paid, including VAT and Whois Privacy.
  - `transfer` Transfer, required — Transfer contains all relevant data for a domain transfer to name.com.
    - `domainName` string, required — DomainName is the domain to be transfered to name.com.
    - `email` string, email — Email is the email address that the approval email was sent to. Not every TLD requries an approval email. This is usually pulled from Whois.
    - `status` 'canceled' | 'canceled_pending_refund' | 'completed' | 'failed' | 'pending' | 'pending_insert' | 'pending_new_auth_code' | 'pending_registry_unlock' | 'pending_transfer' | 'pending_unlock' | 'rejected' | 'submitting_transfer', required — Terminal (finished; will not change): - **completed**: Completed. - **failed**: Failed. - **canceled**: Canceled by the user. - **canceled_pending_refund**: Canceled; refund processing. Non-terminal (in progress; may change): - **pending**: Requested. - **submitting_transfer**: Being submitted to the registry. - **pending_new_auth_code**: New auth code required. - **pending_unlock**: Waiting for losing registrar unlock. - **pending_registry_unlock**: Waiting for registry unlock. - **pending_transfer**: Pending at the registry. - **pending_insert**: Transfer complete; domain will be added to the account. - **rejected**: Rejected at the losing registrar.
  - `warnings` object — Optional transfer warnings surfaced by the API when non-blocking registry statuses are detected.
    - `message` string — Brief guidance for resolving potential transfer issues.
    - `statuses` string[] — Registry status values that triggered the warning.

## Other responses

- `400` — There was an invalid or missing argument in the request. The response messages will indicate which fields are invalid.
- `401` — Unauthorized.
- `402` — The account placing the order has insufficient account credit to process this transfer order.
- `403` — Forbidden - you do not have permission to perform this action.
- `405` — Method not allowed.
- `409` — The status of the domain indicates that we are unable to process a transfer for it.
- `415` — All POST, PUT, PATCH requests for this API must include the `Content-Type: application/json` header in the requests.
- `422` — Pricing information unavailable.
- `429` — Rate limit has been exceeded.
- `500` — Internal server error.
- `502` — Bad Gateway
- `504` — Unable to retrieve domain status due to blocked-hostname.

---

[API](https://skmtc.dev/name/apis/name-com-core-api.md) · [All operations](https://skmtc.dev/name/apis/name-com-core-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/name/name-com-core-api/revisions/a37d4cbd3991/schema)
