Overview
Commerce handles two types of domain transfers:
- Transfer in — a client brings an existing domain from another registrar into Commerce's management.
- Transfer out — a client moves their domain to a registrar outside of Commerce.
Transfer In
Prerequisites
Before starting a transfer, the client must ensure:
- The domain is at least 60 days old (ICANN rule).
- The domain is unlocked at the current registrar (transfer lock off).
- They have the EPP/auth code from the current registrar.
- The domain has not been transferred or renewed in the last 60 days.
Transfer Order Flow
- Client goes to domain search or directly to
/client/order/domain?action=transfer. - Client enters the domain name, selects Transfer, and provides the EPP code.
- An order and invoice are created for the transfer fee.
- Client pays the invoice.
TransferDomainJobis dispatched.
TransferDomainJob
- Calls
transfer(domain, eppCode, contacts)on the active registrar module. - Creates a
domainsrecord withstatus = pending. - The registrar initiates the transfer with the current registrar — this typically takes 5–7 days.
- During the wait:
commerce:sync-domain-statuses(daily 05:00) polls the registrar for transfer progress. - When the transfer completes: status updates to
active,expiry_dateis set.
The transfer period cannot be accelerated from Commerce. The current registrar controls the timeline.
Transfer Failure
If the registrar rejects the transfer (wrong EPP code, domain locked, etc.):
TransferDomainJoblogs the failure in the provisioning log.- Domain status stays
pending. - Admin receives a notification.
To retry: Admin → Services → [domain service] → Actions → Transfer (dispatches a new job). Ensure the client has corrected the EPP code or removed the lock first.
Transfer Out
Commerce does not programmatically initiate transfer-out at the registrar. The process is manual from the client's perspective:
Steps for Transfer Out
- Unlock the domain — Client or admin toggles the transfer lock off at Admin → Domains → [domain] or
/client/domains/{domain}. - Get the EPP code — Click Get EPP Code. The code is fetched from the registrar via
getEppCode()and shown once. - Client takes the code to their new registrar and initiates the transfer there.
- The current registrar (Commerce's registrar) approves the outgoing transfer (usually automatic or via email confirmation to the registrant contact).
- Once the transfer completes at the registrar,
commerce:sync-domain-statuseswill detect the domain as gone and update the status totransferred_away.
Important Notes
- EPP codes are not stored in Commerce — they are fetched fresh from the registrar each time.
- EPP codes expire — typically within 3–14 days depending on the registrar. If the code expires before the client uses it, they need to request a new one.
- Unlock and EPP code request should happen in the same session, just before initiating the transfer at the new registrar.
Transfer Status Reference
| Status | Meaning |
|---|---|
pending |
Transfer initiated, waiting for completion |
active |
Transfer completed successfully |
transferred_away |
Domain successfully left this registrar |
cancelled |
Transfer was cancelled or rejected |