AiVikings Blog

WHMCS domain sync: reading the mismatches between WHMCS and the registrar

When WHMCS and the registrar disagree about an expiry date or a status, who is right? A triage table for the mismatches hosting companies see most.

When WHMCS and your registrar disagree about a domain, the registrar is usually right about the domain, and WHMCS is right about the customer and the invoice. Expiry date and status belong to the registry and the registrar. Billing and the relationship belong to you.

That one rule settles most of the arguments. The rest of this post is the triage table.

Two clocks in the house

Imagine two clocks in a house. One is a radio-controlled clock that sets itself. The other is an old kitchen clock that somebody winds when they remember. When they show different times, you do not guess. You trust the radio one, and you find out why the kitchen clock drifted.

The registrar is the radio clock. WHMCS is the kitchen clock: very useful, but only as accurate as the last time somebody updated it.

What sync does

WHMCS can update a domain's expiry date and status from the registrar, if the registrar module supports it and domain sync is enabled in the automation settings. It runs as a scheduled task, so it is only as current as its last run. Check your own module's page for what it supports, because modules differ. For the AiVikings.ai module, the module page lists the features.

Sync is not magic. It copies what the registrar says into WHMCS. If something looks wrong after a sync, the registrar is the place to check first.

The mismatches you will see

What you see Most likely cause Who is right What to do
Expiry date in WHMCS is earlier than at the registrar The domain was renewed outside WHMCS, or a renewal was not recorded The registrar Run sync, check the invoice history, and make sure the customer is not billed twice
Expiry date in WHMCS is later than at the registrar A renewal was recorded in WHMCS but never reached the registrar The registrar Check the module log, then renew at the registrar before the real expiry date
WHMCS says active, registrar says expired or in redemption The sync has not run, or the renewal failed The registrar Treat it as urgent: renew now if the domain is still in grace, and tell the customer
WHMCS says pending transfer, registrar says the transfer is complete The sync has not run, or the transfer finished after the last run The registrar Run sync, then check the registrar field on the domain
Domain exists at the registrar but not in WHMCS A domain was registered outside WHMCS Neither: it is a gap Add it to WHMCS only after you know who the customer is

A triage routine

  1. Get the registrar's view first. Look up the domain at the registrar, or through the API. Write down the expiry date and status.
  2. Compare it with WHMCS. Expiry date, status, nameservers and registrar field.
  3. Decide the direction. For expiry and status, copy from the registrar into WHMCS. For billing, copy from WHMCS to your records.
  4. Fix it the clean way. Run sync if the module supports it. If you edit a date by hand, do it once, and write down why.
  5. Check the money. If you changed an expiry date, check the next due date and any open invoice. Never move a due date just to make an invoice look right.
  6. Find the cause. A mismatch that happens once is a glitch. A mismatch that happens every month is a process problem.

Do not fix it by hand if you can avoid it

It is tempting to type the right date into WHMCS and move on. But a hand-edited date hides the problem, and the next sync may change it back or hide a failed renewal. Fix the cause, then let sync do its job.

The post on separating billing from registrar results covers the exception queue for renewals that fail, and the post on switching registrar modules explains why the registrar field must match where the domain lives. For the whole picture, start with the domain resale guide. The page for hosting companies and agencies has more.

Questions people ask

Which is right, WHMCS or the registrar?

For expiry date and status, the registrar. For billing and customer data, WHMCS.

How often should sync run?

Often enough that a failed renewal shows up while the domain is still in grace. Daily is common, but check what your module and your setup allow.

Why does a transferred domain have a new expiry date?

Many generic TLD transfers add a year to the expiry date. WHMCS should show the new date after a sync.

Should I edit the expiry date by hand?

Only when you must, once, and with a note about why.

Sources

If you see a mismatch I have not described, tell me in the chat on the website.

/Thomas

Building agents?

Point your MCP client at mcp.aivikings.ai, or read the docs at docs.aivikings.ai.