WHMCS domain registrar setup takes four steps: activate and configure the registrar module at Configuration > System Settings > Domain Registrars, add each TLD with its prices at Domain Pricing, select that registrar in the TLD's Auto Registration menu, and enable Domain Sync in Automation Settings. WHMCS then sends each registration to the registrar after the client has paid.
How do you activate a WHMCS domain registrar module?
Go to Configuration > System Settings > Domain Registrars, click Activate next to the registrar, fill in the settings that appear and click Save Changes. The Domain Registrars page lists the modules that ship with WHMCS, including Enom, ResellerClub, Namecheap, OpenSRS, GoDaddy, HEXONET and Nominet.
The documentation says to expect three things in those settings:
- Credentials. Usually the registrar account login or its API details.
- IP whitelisting. Some registrars only accept API calls from a server IP address you have approved in their control panel.
- Test mode. Many modules have one for validating the configuration.
Then open the Domains tab at Configuration > System Settings > General Settings. Default Nameservers are used for domain orders without hosting. Use Client Details decides whether the billing, admin and technical contacts are the client's or yours. The registrant is always the client. My WHMCS setup guide covers the other first-day settings.
Where do you set WHMCS domain pricing?
You set it at Configuration > System Settings > Domain Pricing. Type a new extension into the last row of the TLD list, then click Pricing to open its price matrix. The Domain Pricing page documents these settings:
| Setting | Where | What it controls |
|---|---|---|
| Registration, transfer and renewal price | Pricing matrix of the TLD | One price each per term, from 1 to 10 years, and per currency. Tick Enable for every term and currency you offer. Entering -1.00 switches off transfers or renewals for that term. |
| Pricing Slab for | Pricing matrix | A separate set of prices for one client group. |
| Auto Registration | TLD row | Which registrar module receives paid orders for this TLD. |
| EPP Code | TLD row | Whether a transfer order for this TLD must include an EPP code. |
| Grace Period, Redemption Period | Gear icon on the TLD row | Length and fee for renewals after expiry. A length of 0 disables the period. |
The documentation notes that most registrars and TLDs do not support multi-year transfers. Price changes apply to new registrations and transfers only. A domain a client already owns keeps its recurring amount, and the documentation points to the Bulk Pricing Updater addon for those.
Which tools set WHMCS domain prices in bulk?
WHMCS documents two: Bulk Management and Registrar TLD Sync.
Bulk Management, on the Domain Pricing page, writes registration, transfer and renewal amounts for the 1 to 10 year terms across your configured TLDs. Ticking Set 2-10 years based on 1 year price multiplies the one-year amount for the longer terms.
Registrar TLD Sync, at Utilities > Registrar TLD Sync, imports TLDs and cost prices from a registrar whose module supports it. The documentation names Enom, ResellerClub, ResellerCamp, NetEarthOne and StarGate/UK2 as examples. Choose a Margin Type (Percentage or Fixed), a Profit Margin and a Round to Nearest value, tick the extensions and click Import TLDs. TLDs you sell below cost show on a red background.
Which domain lookup provider should you choose?
Stay on Standard WHOIS unless you want to sell premium domains or use your registrar's own search, as the documentation advises. To switch, click Change under Lookup Provider on the Domain Pricing page.
- Standard WHOIS is the default. It queries WHOIS servers directly and switches namespinning off.
- WHMCS Namespinning returns ranked name suggestions, and checks the WHOIS servers if a lookup fails.
- Domain Registrar uses the API or suggestion engine of a registrar you have already configured.
Configure sets the extra TLDs checked next to the one the customer typed.
How does WHMCS register a domain automatically on payment?
When a TLD has a registrar selected under Auto Registration, WHMCS submits the registration or transfer to that registrar as soon as the client pays. The documentation states that WHMCS never submits a registration before payment is received. A payment you apply by hand counts.
With Auto Registration off, the paid order waits until an admin accepts it and chooses Send to Registrar. Because the registrar is set per TLD, you can use different suppliers for different extensions. Renewals have their own switch, Auto Renew on Payment, in the Domains tab of General Settings.
A failed attempt is reported by email to the admins and at Utilities > Module Queue. If Create To-Do List Entries is ticked, it also appears at Utilities > To-Do List. Fix the cause, then retry from the Module Queue.
What does WHMCS domain sync update?
WHMCS domain sync updates the expiry date, the status and, if you allow it, the next due date of Active, Pending Registration and Pending Transfer domains whose registrar module supports syncing. It runs inside the system cron, so it depends on the setup in my WHMCS cron jobs guide.
The switches are under Domain Sync Settings at Configuration > System Settings > Automation Settings:
- Domain Sync Enabled turns the task on.
- Sync Next Due Date sets the next due date a chosen number of days before the expiry date.
- Domain Sync Notify Only makes no changes. It only emails the changes it would have made.
- Domain Expiry Sync Frequency and Pending Transfer Sync Frequency:
0means every four hours and1means every hour.
The Domain Sync Task page says each run checks every Pending Transfer domain and 50 each of the Active and Pending Registration domains, oldest first. A Pending Registration domain becomes Active once the registrar reports it registered. A completed transfer becomes Active and the client receives the Domain Transfer Completed email.
How do domain transfers and EPP codes work in WHMCS?
A transfer in is an order, and WHMCS asks for the EPP code on it when the TLD has EPP Code ticked in Domain Pricing. Clients order at Store > Transfer Domains to Us, which appears when Allow clients to transfer a domain to you is ticked in the Domains tab of General Settings. Any TLD with pricing can be transferred in, and WHMCS bills the shortest term configured for it.
After payment WHMCS starts the transfer and sends the Domain Transfer Initiated email. The code the client typed is on the order, under Orders > List All Orders. The domain stays in Pending Transfer until domain sync sees it finish.
For a transfer out, the client opens the domain under Domains > My Domains, switches off Registrar Lock and clicks Get EPP Code, if the registrar module supports both. The Enom, ResellerClub and HEXONET modules then set the status to Transferred Away, which stops renewal invoices. With any other module I check the status myself.
Can WHMCS sell premium domains?
Yes, if the lookup provider is a registrar that supports them. The documentation lists Enom, the Logicboxes modules (ResellerClub, ResellerCamp, NetEarthOne and UK2 Group/StarGate) and HEXONET. Switch Premium Domains to ON at Domain Pricing, click Configure and enter each markup level as a Price < ceiling with a Markup %.
WHMCS fetches the premium price from the registrar in real time, in the currency of your registrar account, so that currency must exist at Configuration > System Settings > Currencies. Premium registrations and renewals are for one year only. Two hooks, PremiumPriceOverride and PremiumPriceRecalculationOverride, let custom code change the price.
Which WHMCS domain registrar errors are most common?
Most are the registrar refusing a request. The Troubleshooting Domains page says Registrar Error messages come from the registrar module and not from WHMCS, and it sends you to Configuration > System Logs first.
| What you see | Documented cause |
|---|---|
Invalid TLD/Registration Period Supplied for Domain Registration | The TLD or the registration period is not configured in the TLD pricing. |
| Domain pricing will not save | The page submits more fields than PHP's max_input_vars setting allows. |
Unable to display TLD cost pricing as currency ... is not defined with an exchange rate | The registrar's currency is missing from WHMCS or has no valid exchange rate. |
Sync not supported by module | The registrar module does not support domain syncing. |
User not permitted from this IP address (Enom), Registrar Error Invalid Request IP (Namecheap), You must authorize your IP address to use this API (ResellerClub) | The server's IP address is not whitelisted in the registrar account. |
Purchase price is greater than available balance (Enom), Locked in Processing (ResellerClub) | The registrar account does not hold enough funds. |
What are the limits and risks of selling domains in WHMCS?
The main risk is taking a client's money for a domain that then fails at the registrar.
- Registrar account funding. The client pays you first, then WHMCS orders from the registrar. If your registrar account is short of funds, the order fails. The documentation warns that one premium domain can cost more than the account holds.
- Test mode. Use it to validate the module, then switch it off and place one real order.
- Pricing in multiple currencies. Each TLD needs a price for every term and currency you enable. Registrar TLD Sync converts cost prices with the rates on the Currencies page. The registrar bills you in one currency, so a multi-year price in another carries exchange risk.
- Sync is not universal. A module without sync support leaves expiry dates and transfer statuses to you.
- No module for your registrar. The Email Notifications module lets WHMCS take the order and invoice the client while you register the domain by hand. The alternative is a custom module. The developer documentation places registrar modules in
/modules/registrars/and provides a sample module on GitHub. I build these as custom WHMCS modules.
Registrar, pricing and sync configuration is part of my WHMCS installation and setup work, which starts with a free scoping call of about 30 minutes and a written quote within one business day.
Last reviewed 10 October 2026. Disclosure: I am a freelance WHMCS developer and I sell WHMCS setup work and custom registrar modules, so I am not neutral. I am CTO at ElySpace, a developer at Marmaids LLC, and founder of WHMCSPilot and MagizAI. Menu paths, settings and error messages are from the WHMCS 9.0 documentation as I read it on that date.