Support
Troubleshooting

Troubleshoot domain registration

View as Markdown

Common 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 until status reaches COMPLETED or FAILED.
  • Do not resubmit the registration while status is EXECUTING. Resubmitting can result in duplicate charges.
  • If status is FAILED, inspect the error field for the specific failure reason.
  • Use the Idempotency-Key header 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:

  1. Call POST /v3/domains/registration-quotes again with the same domain and contact details to get a fresh quoteToken.
  2. Resubmit POST /v3/domains/registrations with the new quoteToken.
  3. 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, or nameFirst/nameLast not 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 fields array — the path field identifies which request property failed and message explains 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:

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-Key header with a UUID that's stable for the lifetime of a single registration intent.
  • If a request returns a network error (not a 4xx or 5xx), retry with the same Idempotency-Key. The server returns the original response without charging again.
  • If a duplicate charge already occurred, contact GoDaddy support with the registrationId values.

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-availability immediately 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

Scopesdomains.domain:read, domains.domain:create
Rate limit60 req/min per credential
IdempotentNo
On failureRegistration charges the account. Do not resubmit while status is EXECUTING — use the Idempotency-Key header to prevent duplicate charges. If QUOTE_EXPIRED, re-quote and re-register.

Last updated on

How is this guide?

On this page