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

# Create Internal Transfer In

`POST /core/v1/transfers/internal/in`

Pulls a domain from another [name.com](https://www.name.com) account into your reseller (gaining) account using a valid authorization code. This is an **internal** name.com-to-name.com move; it is separate from [Create Transfer](/api/v1/reference/transfers/create-transfer), which brings domains in from **external** registrars.
Check if a TLD is eligible for internal transfer in by calling [Tld Requirements](/api/v1/reference/domaininfo/requirementsV2) for the TLD and checking property `supportsInternalTransfer`.
This API is only available to approved reseller accounts. Contact name.com support to request access.
#### Losing account (dashboard only)
The party that holds the domain today must use the name.com dashboard on the **losing** account to **unlock** the domain (remove registrar transfer lock) and to **copy the authorization code** to provide to your integration. This endpoint does not unlock the domain or retrieve the auth code for the losing account.
#### Gaining account (this API)
Call this endpoint with `domainName`, `authCode`, and optional `contacts` using the **gaining** reseller's API credentials.
#### Contacts and post-transfer lock
If `contacts` is omitted, the gaining account's default contacts are applied. If `contacts` is provided, any roles included in the request are applied and omitted roles use the gaining account's default contacts (same pattern as [Create Domain](/api/v1/reference/domains/create-domain) and [Set Contacts](/api/v1/reference/domains/set-contacts)). The 60-day contact-change transfer lock is enforced based on the **gaining** account's settings, consistent with Set Contacts.
#### Access
Restricted to approved enterprise resellers; other callers receive `403 Forbidden`.

## Request body

- CreateInternalTransferInRequest — Request body for transferring a domain from another name.com account into the authenticated reseller (gaining) account.
  - `domainName` string, required — Fully qualified domain name to transfer in. The domain must be registered in another name.com account (the losing account).
  - `authCode` string, required — Transfer authorization code (EPP/auth code) for the domain. The losing account holder must obtain this code from the [name.com](https://www.name.com) dashboard; it is not exposed by this API for the losing account.
  - `contacts` ContactsRequest — unresolved $ref

## Response `200`

The domain was accepted into the gaining account. The response body matches the domain resource representation used elsewhere in the API (same shape as Get Domain / Set Contacts).

- DomainResponsePayload — Domain contains all relevant data for a domain.
  - `domainName` string, required — The punycode-encoded value of the domain name.
  - `createDate` string, date-time, required — The date and time when the domain was created at the registry.
  - `expireDate` string, date-time, required — The date and time when the domain will expire.
  - `autorenewEnabled` boolean, required — Indicates whether the domain is set to renew automatically before expiration.
  - `locked` boolean, required — Indicates if the domain is **transfer locked**, preventing transfers to another registrar.
  - `locks` string[] — List of all registry locking statuses currently applied to the domain. Use this to see which locks are active (e.g. clientTransferProhibited, clientHold). Empty when the domain has no locks applied.
  - `transferLockExpiresAt` string, date-time — When present, the domain has an active ICANN-mandated transfer lock (new registration, transfer-in, or material registrant contact change) that blocks client unlock via the API until this time. When omitted, there is no active policy transfer lock with a known expiry — the domain may still be locked (`locked: true`) due to a voluntary user lock. Does not represent RegistrarLock, AccountLock, verification holds, trademark-claim locks, or admin TransferLock with no expiry date.
  - `privacyEnabled` boolean, required — Indicates if Whois Privacy is enabled for this domain.
  - `contacts` Contacts, required — Contacts stores the contact information for the roles related to domains.
    - `admin` Contact — Contact contains all relevant contact data for a domain registrant. This schema is used for API responses and may contain null values for legacy data. For creating or updating contacts, use ContactRequest which enforces all validation requirements.
      - `firstName` string, nullable — First name of the contact.
      - `lastName` string, nullable — Last name of the contact.
      - `companyName` string, nullable — Company name of the contact. Leave blank if the contact is an individual, as some registries may assume it is a corporate entity otherwise.
      - `address1` string, nullable — The first line of the contact's address.
      - `address2` string, nullable — The second line of the contact's address (optional).
      - `city` string, nullable — City of the contact's address.
      - `state` string, nullable — State or Province of the contact's address.
      - `zip` string, nullable — ZIP or Postal Code of the contact's address.
      - `country` string, nullable — Country code for the contact's address. Must be an ISO 3166-1 alpha-2 country code.
      - `email` string, nullable — Email address of the contact. Must be a valid email format. The validation is performed against the `addr-spec` syntax in [RFC 822](https://datatracker.ietf.org/doc/html/rfc822)
      - `phone` string, nullable — Phone number of the contact. Should follow the E.164 international format: "+[country code][number]".
      - `fax` string, nullable — Fax number of the contact. Should follow the E.164 international format: "+[country code][number]".
      - `isVerified` boolean — Indicates if the contact has been verified as per ICANN requirements. If the value is `false` it indicates that the contact has not completed the required verification process. This property is read-only and will be included in responses but should not be included in requests.
      - `verificationId` integer, nullable — When the contact is unverified, this is the ID of the pending verification record. Use this ID with the resend verification email and verify contact endpoints. Omitted or null when the contact is verified.
    - `billing` Contact — Contact contains all relevant contact data for a domain registrant. This schema is used for API responses and may contain null values for legacy data. For creating or updating contacts, use ContactRequest which enforces all validation requirements.
      - `firstName` string, nullable — First name of the contact.
      - `lastName` string, nullable — Last name of the contact.
      - `companyName` string, nullable — Company name of the contact. Leave blank if the contact is an individual, as some registries may assume it is a corporate entity otherwise.
      - `address1` string, nullable — The first line of the contact's address.
      - `address2` string, nullable — The second line of the contact's address (optional).
      - `city` string, nullable — City of the contact's address.
      - `state` string, nullable — State or Province of the contact's address.
      - `zip` string, nullable — ZIP or Postal Code of the contact's address.
      - `country` string, nullable — Country code for the contact's address. Must be an ISO 3166-1 alpha-2 country code.
      - `email` string, nullable — Email address of the contact. Must be a valid email format. The validation is performed against the `addr-spec` syntax in [RFC 822](https://datatracker.ietf.org/doc/html/rfc822)
      - `phone` string, nullable — Phone number of the contact. Should follow the E.164 international format: "+[country code][number]".
      - `fax` string, nullable — Fax number of the contact. Should follow the E.164 international format: "+[country code][number]".
      - `isVerified` boolean — Indicates if the contact has been verified as per ICANN requirements. If the value is `false` it indicates that the contact has not completed the required verification process. This property is read-only and will be included in responses but should not be included in requests.
      - `verificationId` integer, nullable — When the contact is unverified, this is the ID of the pending verification record. Use this ID with the resend verification email and verify contact endpoints. Omitted or null when the contact is verified.
    - `registrant` RegistrantContact — Contact contains all relevant contact data for a domain registrant. This schema is used for API responses and may contain null values for legacy data. For creating or updating contacts, use RegistrantContactRequest which enforces all validation requirements.
      - `firstName` string, nullable — First name of the contact.
      - `lastName` string, nullable — Last name of the contact.
      - `companyName` string, nullable — Company name of the contact. Leave blank if the contact is an individual. Please be advised that ICANN policy links the "Company Name" field (Organization) in your domain's contact details to its legal ownership. If this field contains information, the listed organization is considered the legal "Registered Name Holder" (domain owner).
      - `address1` string, nullable — The first line of the contact's address.
      - `address2` string, nullable — The second line of the contact's address (optional).
      - `city` string, nullable — City of the contact's address.
      - `state` string, nullable — State or Province of the contact's address.
      - `zip` string, nullable — ZIP or Postal Code of the contact's address.
      - `country` string, nullable — Country code for the contact's address. Must be an ISO 3166-1 alpha-2 country code.
      - `email` string, nullable — Email address of the contact. Must be a valid email format. The validation is performed against the `addr-spec` syntax in [RFC 822](https://datatracker.ietf.org/doc/html/rfc822)
      - `phone` string, nullable — Phone number of the contact. Should follow the E.164 international format: "+[country code][number]".
      - `fax` string, nullable — Fax number of the contact. Should follow the E.164 international format: "+[country code][number]".
      - `isVerified` boolean — Indicates if the contact has been verified as per ICANN requirements. If the value is `false` it indicates that the contact has not completed the required verification process. This property is read-only and will be included in responses but should not be included in requests.
      - `verificationId` integer, nullable — When the contact is unverified, this is the ID of the pending verification record. Use this ID with the resend verification email and verify contact endpoints. Omitted or null when the contact is verified.
    - `tech` Contact — Contact contains all relevant contact data for a domain registrant. This schema is used for API responses and may contain null values for legacy data. For creating or updating contacts, use ContactRequest which enforces all validation requirements.
      - `firstName` string, nullable — First name of the contact.
      - `lastName` string, nullable — Last name of the contact.
      - `companyName` string, nullable — Company name of the contact. Leave blank if the contact is an individual, as some registries may assume it is a corporate entity otherwise.
      - `address1` string, nullable — The first line of the contact's address.
      - `address2` string, nullable — The second line of the contact's address (optional).
      - `city` string, nullable — City of the contact's address.
      - `state` string, nullable — State or Province of the contact's address.
      - `zip` string, nullable — ZIP or Postal Code of the contact's address.
      - `country` string, nullable — Country code for the contact's address. Must be an ISO 3166-1 alpha-2 country code.
      - `email` string, nullable — Email address of the contact. Must be a valid email format. The validation is performed against the `addr-spec` syntax in [RFC 822](https://datatracker.ietf.org/doc/html/rfc822)
      - `phone` string, nullable — Phone number of the contact. Should follow the E.164 international format: "+[country code][number]".
      - `fax` string, nullable — Fax number of the contact. Should follow the E.164 international format: "+[country code][number]".
      - `isVerified` boolean — Indicates if the contact has been verified as per ICANN requirements. If the value is `false` it indicates that the contact has not completed the required verification process. This property is read-only and will be included in responses but should not be included in requests.
      - `verificationId` integer, nullable — When the contact is unverified, this is the ID of the pending verification record. Use this ID with the resend verification email and verify contact endpoints. Omitted or null when the contact is verified.
  - `nameservers` string[], required — The list of nameservers assigned to this domain. If unspecified, it defaults to the account's default nameservers.
  - `renewalPrice` number, double — The cost to renew the domain. This may be required for the RenewDomain operation.

## Other responses

- `400` — Validation failed (missing or invalid fields, invalid authorization code, or other bad input). The `message` and `details` fields describe what to correct.
- `401` — Unauthorized.
- `403` — Forbidden — for example, when the authenticated account is not allowlisted for internal transfers (enterprise-only; initial rollout is limited to designated partners), or when the caller otherwise lacks permission to use this operation.
- `404` — The domain could not be found for an internal transfer from another name.com account, or it is not eligible to be pulled into the gaining account.
- `405` — Method not allowed.
- `409` — The domain is in a state that blocks the operation — for example, **registrar transfer lock** is still active (`clientTransferProhibited` or equivalent). The losing account must remove transfer lock in the name.com dashboard before retrying.
- `415` — POST requests must include `Content-Type: application/json`.
- `429` — Rate limit has been exceeded.
- `500` — Internal server error.
- `502` — Bad Gateway
- `504` — Gateway Timeout

---

[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)
