Integrations
Domain renewal failures, and how to reconcile them
What happens when a domain renewal does not come back cleanly, how the gTLD expiry timeline works, and the reconciliation that keeps a customer online.
15 min read · Reviewed 2026-09-21
Registration and renewal are purchases: treat them as irreversible, and do not assume the response is the final state, because a registrar can accept an order and complete it later. A transfer is a multi-day protocol involving two registrars and the registry, which can be rejected, cancelled or auto-approved by timeout. Treating a transfer like a purchase — expecting a synchronous yes or no — is a mistake that breaks registrar integrations.
Registrar APIs come in two broad families: HTTP APIs specific to a registrar, and EPP, the protocol registries themselves speak, defined for domains in RFC 5731 and for contacts in RFC 5733. Whichever you are talking to, the three core operations behave very differently, and an integration that treats them uniformly will get transfers wrong.
A registration takes money and creates something that exists for the term you bought. There is no undo — a deletion inside the grace window is a registrar-specific courtesy, not a right, and it does not exist everywhere. Two consequences for an integration:
Renewal extends a registration by a term and charges for it. The failure mode that costs money is the double renewal: a lost answer, a retry, and a domain now paid for two extra terms. EPP's renew command carries the current expiry date so that a repeat is refused once the date has moved (RFC 5731, §3.2.3), and some registrar HTTP APIs offer the same guard. Where your registrar documents it, use it — but it only protects once the first renewal has moved the date. While that one is still pending, nothing has moved and the guard cannot tell a repeat from a first attempt.
Nor does the expiry date settle a lost answer by itself: an unchanged date can hide a renewal still in progress, and a changed one can be an automatic renewal or somebody else's. Domain renewal failures and reconciliation covers what to check instead.
Do not treat a rate-limit response to a renewal as retryable unless the registrar documents that a rate-limited request is rejected before any processing. Without that, the request reached the registrar and may have been accepted before the limit applied: treat it as an unknown outcome and reconcile.
A transfer is the one that breaks naive integrations. It is a conversation between the gaining registrar, the losing registrar and the registry, and it unfolds over days. ICANN's Transfer Policy governs the process for gTLDs, including the authorisation code, the losing registrar's opportunity to respond, and the conditions under which a transfer may be refused.
| Property | Registration / renewal | Transfer |
|---|---|---|
| Duration | Typically seconds, though a registrar may accept now and complete later | Days |
| Outcome known | Usually in the response — check whether the registrar documents a pending state | Later, by polling or notification |
| Can be rejected by a third party | No | Yes, by the losing registrar or the registrant |
| Can complete without further action | N/A | Yes — by timeout |
| Prerequisites | Availability, funds | Auth code, unlocked, not recently transferred or registered |
Model a transfer as a long-running request with its own states, and show the customer where it is. "Submitted", "awaiting the current registrar", "rejected — reason", "completed" are all things a customer will ask about, and a single boolean cannot answer.
Registrant, administrative, technical and billing contacts are modelled separately in EPP and in most HTTP APIs. Changing a registrant is not the same as editing a field: for gTLDs it can trigger a change-of-registrant process with its own confirmations, and it can lock the domain against transfer for a period. Do not expose "edit contact" as a simple form without knowing which fields trigger that.
GENV ships adapters for several registrars — including Namecheap, NameSilo, Netistrar, Moniker, ResellerClub, Resell.biz, OpusDNS, Nominet and CoCCA — built from each provider's published documentation. The domain portfolio records what a business manages; the registrar operations are not routed in the shipped build, so GENV records domains and does not currently register, renew or transfer them. The adapters exist, are exercised against stand-ins, and await certification against real accounts.
It is more uniform, because the registry defines it, and it is more work to operate — certificates, persistent connections, per-registry extensions. If your registrar offers both, the HTTP API is usually the faster path and EPP is the one to reach for when you need registry-level behaviour.
Poll, or consume the registrar's notifications where they exist. Do not assume completion from the absence of a rejection, and show the customer the last time you checked.
Treat a premium price as a separate confirmation step. A registration flow that silently charges a premium fee because the API reported one is a flow that will produce a refund request.
Official documentation, each requested on 21 September 2026. Provider behaviour changes; check the source before relying on a detail.