Troubleshoot domain registration
View as MarkdownCommon errors when registering a domain with the GoDaddy Domains API, with causes and resolutions.
Overview
This page covers errors you're likely to encounter when registering a domain through the GoDaddy Domains API. Registration is asynchronous and charges the account — read the full registration guide before troubleshooting.
Registration stays in EXECUTING status
Symptom: POST /v3/domains/registrations returns 202 Accepted and the status field shows EXECUTING. The status never changes to COMPLETED.
Cause: Registration is asynchronous. EXECUTING is the normal initial state — the operation is in progress on GoDaddy's side. It is not an error.
Resolution:
- Poll
GET /v3/domains/registrations/{registrationId}every few seconds untilstatusreachesCOMPLETEDorFAILED. - Do not resubmit the registration while
statusisEXECUTING. Resubmitting can result in duplicate charges. - If
statusisFAILED, inspect theerrorfield for the specific failure reason. - Use the
Idempotency-Keyheader on the original request — if your client retries due to a network error, the server returns the original response without charging again.
422 with QUOTE_EXPIRED
Symptom: POST /v3/domains/registrations returns 422 with code: "QUOTE_EXPIRED".
Cause: The quoteToken from POST /v3/domains/registration-quotes has expired. Quote tokens are short-lived and must be used promptly.
Resolution:
- Call
POST /v3/domains/registration-quotesagain with the same domain and contact details to get a freshquoteToken. - Resubmit
POST /v3/domains/registrationswith the newquoteToken. - If you're seeing this frequently, reduce the time between quoting and registering — keep it under a minute in production flows.
422 with a fields validation error
Symptom: POST /v3/domains/registrations returns 422 with a fields array listing specific field errors.
Cause: The request body failed field-level validation. Common causes:
- Missing or invalid registrant contact:
email,phone,addressMailing, ornameFirst/nameLastnot provided or malformed. - Domain name format error: unsupported characters, missing TLD, or invalid punycode.
- TLD-specific requirements not met: some TLDs require additional contact fields or eligibility verification.
Resolution:
- Inspect each object in the
fieldsarray — thepathfield identifies which request property failed andmessageexplains why. - Verify all required registrant contact fields are present. Go to Register a domain — contacts for the required schema.
- For IDN (internationalized) domains, the domain name must be in punycode A-label form.
403 with ACCOUNT_NOT_ELIGIBLE
Symptom: POST /v3/domains/registrations or POST /v3/domains/registration-quotes returns 403 with code: "ACCOUNT_NOT_ELIGIBLE".
Cause: The account lacks a funded billing method, or is not eligible to register the specific TLD.
Resolution:
- Add a payment method at account.godaddy.com/payment-methods. Go to Set up a payment profile.
- Some TLDs (country-code TLDs, restricted TLDs) require additional account eligibility. Check the TLD-specific agreements returned by
GET /v3/domains/agreements?tlds={tld}.
Duplicate charge on retry
Symptom: A network failure caused the client to retry the registration, and the account was charged twice.
Cause: The first request succeeded server-side but the response was lost in transit. The retry created a second registration.
Resolution:
- Always include an
Idempotency-Keyheader with a UUID that's stable for the lifetime of a single registration intent. - If a request returns a network error (not a
4xxor5xx), retry with the sameIdempotency-Key. The server returns the original response without charging again. - If a duplicate charge already occurred, contact GoDaddy support with the
registrationIdvalues.
Domain not available
Symptom: POST /v3/domains/registrations returns 422 with a code indicating the domain isn't available.
Cause: The domain was registered or reserved by someone else between your availability check and the registration attempt, or the domain is in a status that prevents registration (for example, redemption period).
Resolution:
- Call
GET /v3/domains/check-availabilityimmediately before registering — don't cache availability results. - If the exact domain is unavailable, use the suggestions endpoint to find alternatives.
- Go to Search domain availability for the availability check workflow.
422 with NO_PAYMENT_PROFILE
Symptom: API returns 422 with code: "NO_PAYMENT_PROFILE".
Cause: The account has no payment method on file. Registration charges the billing method and cannot proceed without one.
Resolution:
- Add a payment method. Go to Set up a payment profile.
- Once a payment method is on file, retry the registration with a fresh
quoteToken.
Agent & Automation Notes
domains.domain:read, domains.domain:createRelated
Last updated on
How is this guide?