# Transfer Domains (https://developer.godaddy.com/en/docs/references/rest/domains/v2/transfer-domains)

---
title: Transfer Domains
description: >-
  Initiate and manage inbound and outbound domain transfers and transfer
  lifecycle actions.
full: true
---

## POST /v2/customers/{customerId}/domains/{domain}/transfer

Initiate inbound transfer

Initiates an inbound domain transfer from another registrar. Requires an authcode and consent object. Returns 202 - poll GET .../actions/TRANSFER until COMPLETED, FAILED, or CANCELLED.

### Path parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `customerId` | string | yes | The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount customer identifier you're operating on behalf of. |
| `domain` | string | yes | Domain to transfer in |

### Header parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `X-Request-Id` | string | no | A client provided identifier for tracking this request. |

### Responses

**202** — Request Accepted. You may use GET /v2/customers/{customerId}/domains/{domain}/actions/TRANSFER to poll status

**400** — Request was malformed

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**401** — Authentication info not sent or invalid

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**403** — Authenticated user is not allowed access

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**404** — The domain does not exist

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**409** — There is already a similar action processing

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**422** — Based on restrictions declared in JSON schema returned by `./schema/{tld}`

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**429** — Too many requests received within interval

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/ErrorLimit`

**500** — Internal server error

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**Security:** requires `bearerAuth`.

## POST /v2/customers/{customerId}/domains/{domain}/transferInAccept

Accept the inbound transfer

Explicitly accepts an in-progress inbound transfer to expedite the process. Returns 202 - poll GET .../actions/TRANSFER_IN_ACCEPT until the action reaches a terminal state.

### Path parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `customerId` | string | yes | The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount customer identifier you're operating on behalf of. |
| `domain` | string | yes | Domain to accept the transfer in for |

### Header parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `X-Request-Id` | string | no | A client provided identifier for tracking this request. |

### Responses

**202** — Request Accepted. You may use GET /v2/customers/{customerId}/domains/{domain}/actions/TRANSFER_IN_ACCEPT to poll status

**400** — Request was malformed

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**401** — Authentication info not sent or invalid

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**403** — Authenticated user is not allowed access

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**404** — The domain does not exist

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**409** — The domain status does not allow performing the operation

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**422** — Request body doesn't fulfill schema, see details in `fields`

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**429** — Too many requests received within interval

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/ErrorLimit`

**500** — Internal server error

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**Security:** requires `bearerAuth`.

## POST /v2/customers/{customerId}/domains/{domain}/transferInCancel

Cancel the inbound transfer

Cancels an in-progress inbound transfer. Returns 202 - poll GET .../actions/TRANSFER_IN_CANCEL until the action reaches a terminal state.

### Path parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `customerId` | string | yes | The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount customer identifier you're operating on behalf of. |
| `domain` | string | yes | Domain to cancel the transfer in for |

### Header parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `X-Request-Id` | string | no | A client provided identifier for tracking this request. |

### Responses

**202** — Request Accepted. You may use GET /v2/customers/{customerId}/domains/{domain}/actions/TRANSFER_IN_CANCEL to poll status

**401** — Authentication info not sent or invalid

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**403** — Authenticated user is not allowed access

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**404** — The domain does not exist

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**409** — There is already a similar action processing

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**429** — Too many requests received within interval

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/ErrorLimit`

**500** — Internal server error

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**Security:** requires `bearerAuth`.

## POST /v2/customers/{customerId}/domains/{domain}/transferInRestart

Restart the inbound transfer from the beginning

Restarts a stalled inbound transfer from the beginning. Returns 202 - poll GET .../actions/TRANSFER_IN_RESTART until the action reaches a terminal state.

### Path parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `customerId` | string | yes | The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount customer identifier you're operating on behalf of. |
| `domain` | string | yes | Domain to restart the transfer in |

### Header parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `X-Request-Id` | string | no | A client provided identifier for tracking this request. |

### Responses

**202** — Request Accepted. You may use GET /v2/customers/{customerId}/domains/{domain}/actions/TRANSFER_IN_RESTART to poll status

**401** — Authentication info not sent or invalid

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**403** — Authenticated user is not allowed access

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**404** — Resource not found

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**409** — The domain status does not allow performing the operation

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**429** — Too many requests received within interval

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/ErrorLimit`

**500** — Internal server error

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**Security:** requires `bearerAuth`.

## POST /v2/customers/{customerId}/domains/{domain}/transferInRetry

Retry the inbound transfer with a new authorization code

Retries a failed inbound transfer with a new authorization code. Returns 202 - poll GET .../actions/TRANSFER_IN_RETRY until the action reaches a terminal state.

### Path parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `customerId` | string | yes | The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount customer identifier you're operating on behalf of. |
| `domain` | string | yes | Domain to retry the transfer in |

### Header parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `X-Request-Id` | string | no | A client provided identifier for tracking this request. |

### Responses

**202** — Request Accepted. You may use GET /v2/customers/{customerId}/domains/{domain}/actions/TRANSFER_IN_RETRY to poll status

**400** — Request was malformed

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**401** — Authentication info not sent or invalid

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**403** — Authenticated user is not allowed access

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**404** — Resource not found

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**409** — The domain status does not allow performing the operation

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**422** — Request body doesn't fulfill schema, see details in `fields`

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**429** — Too many requests received within interval

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/ErrorLimit`

**500** — Internal server error

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**Security:** requires `bearerAuth`.

## POST /v2/customers/{customerId}/domains/{domain}/transferOut

Initiate an outbound transfer

Initiates an outbound transfer for .uk domains. Returns 202 - poll the actions endpoint for completion.

### Path parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `customerId` | string | yes | The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount customer identifier you're operating on behalf of. |
| `domain` | string | yes | Domain to initiate the transfer out for |

### Query parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `registrar` | string | yes | Registrar tag to push transfer to |

### Header parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `X-Request-Id` | string | no | A client provided identifier for tracking this request. |

### Responses

**202** — Request Accepted. You may use GET /v2/customers/{customerId}/domains/{domain}/actions/TRANSFER_OUT_REQUESTED to poll status

**401** — Authentication info not sent or invalid

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**403** — Authenticated user is not allowed access

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**404** — The domain does not exist

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**409** — There is already a similar action processing

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**422** — Domain invalid. TLD must be .uk

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**429** — Too many requests received within interval

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/ErrorLimit`

**500** — Internal server error

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**Security:** requires `bearerAuth`.

## POST /v2/customers/{customerId}/domains/{domain}/transferOutAccept

Accept the outbound transfer

Accepts a pending outbound transfer request. Returns 202 - poll GET .../actions/TRANSFER_OUT_ACCEPT until the action reaches a terminal state.

### Path parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `customerId` | string | yes | The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount customer identifier you're operating on behalf of. |
| `domain` | string | yes | Domain to accept the transfer out for |

### Header parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `X-Request-Id` | string | no | A client provided identifier for tracking this request. |

### Responses

**202** — Request Accepted. You may use GET /v2/customers/{customerId}/domains/{domain}/actions/TRANSFER_OUT_ACCEPT to poll status

**401** — Authentication info not sent or invalid

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**403** — Authenticated user is not allowed access

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**404** — The domain does not exist

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**409** — There is already a similar action processing

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**429** — Too many requests received within interval

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/ErrorLimit`

**500** — Internal server error

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**Security:** requires `bearerAuth`.

## POST /v2/customers/{customerId}/domains/{domain}/transferOutReject

Reject the outbound transfer

Rejects a pending outbound transfer request, keeping the domain at GoDaddy. Returns 202 - poll GET .../actions/TRANSFER_OUT_REJECT until the action reaches a terminal state.

### Path parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `customerId` | string | yes | The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount customer identifier you're operating on behalf of. |
| `domain` | string | yes | Domain to reject the transfer out for |

### Query parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `reason` | string | no | Transfer out reject reason |

### Header parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `X-Request-Id` | string | no | A client provided identifier for tracking this request. |

### Responses

**202** — Request Accepted. You may use GET /v2/customers/{customerId}/domains/{domain}/actions/TRANSFER_OUT_REJECT to poll status

**401** — Authentication info not sent or invalid

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**403** — Authenticated user is not allowed access

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**404** — The domain does not exist

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**409** — There is already a similar action processing

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**429** — Too many requests received within interval

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/ErrorLimit`

**500** — Internal server error

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/Error`

**Security:** requires `bearerAuth`.
