How to Automatically Sync TLD Pricing in WHMCS

Quick Answer — Instead of editing hundreds of TLD prices by hand in WHMCS, you can use the Domain Name API module's support for WHMCS's built-in Registrar TLD Sync tool: it pulls current cost pricing for every extension straight into WHMCS and bulk-calculates your sale price based on a markup rule you define. This runs on WHMCS 7.10+, using a core WHMCS feature called TLD & Pricing Sync, which the Domain Name API module supports.

30-Second Summary

Steps

1. Install the Domain Name API WHMCS module and activate it with your Reseller ID / API Key.

2. Go to Utilities > Registrar TLD Sync.

3. Select DomainNameApi from the list.

4. Define your markup, as a percentage or a fixed amount.

5. Select the extensions and import the pricing.

6. Confirm registration/renewal/transfer pricing with a test order.

Introduction: Why Manual Price Updates Stop Working

When you start out reselling domains with 5 or 10 extensions, entering prices by hand is fine. But once your catalog grows to 100, 300, or 800 extensions, the math changes. Registrar costs shift, exchange rates move, competitor pricing drifts — and every time, you're stuck updating hundreds of rows in WHMCS one at a time.

That creates three concrete problems:

Wasted time:

manually updating hundreds of TLDs takes hours you could be spending on sales instead.

Risk of selling below cost:

if a registrar's cost rises and you don't catch it, you start losing money on every sale of that extension.

Inconsistent margins:

some extensions end up at a 40% margin, others at 5%, simply because updates happen irregularly and by chance.

In this guide, you'll see how to use the TLD & Pricing Sync tool that ships in WHMCS's core, alongside the Domain Name API module; exactly how much of this is genuinely “automatic”; the full setup; the most common mistakes; and the best practices worth building into your workflow.

This guide is for you if you're a WHMCS administrator, a domain reseller, a hosting company, a system administrator, or a developer integrating the Domain Name API module into WHMCS.

How Domain Pricing Works in WHMCS

WHMCS tracks several distinct pieces when it calculates the price for an extension. Understanding them makes the sync logic much easier to follow.

Component What It Means
Cost Price What the registrar (Domain Name API) charges you — your actual cost
Retail Price What you charge your customer, including your margin
Registration Period Ranges from 1 to 10 years, varying by extension
Renewal The price applied once the term expires; can differ from the registration price
Transfer The price applied when a domain is transferred in from another registrar
Redemption The (usually much higher) price applied to recover a domain after it's expired and passed the grace period
Currency The currency your cost price is defined in; must exist in your WHMCS installation
Premium Domains Domains priced outside standard rules by the registry itself

Every one of these is a standard field defined in WHMCS's own domain registrar module development documentation (registration/renewal/transfer price, grace fee, redemption fee, currency, EPP requirement, and so on). The Domain Name API module uses this exact structure to bring pricing data into WHMCS.

How TLD Pricing Sync Works with Domain Name API

WHMCS 7.10 introduced a core tool called TLD & Pricing Sync (also labeled Registrar TLD Sync in the menu). It gives any registrar module that supports it a shared, standardized sync screen. Domain Name API's own official WHMCS setup guide describes exactly how this works with the module:

From the Official Setup Guide — Go to “Utilities” → “Registrar TLD Sync.” Select “DomainNameApi” on the screen that opens, and wait a moment. In the next step, all TLDs in our system are matched against the TLDs in WHMCS; profit and loss margins are calculated and displayed collectively, allowing you to import them.

During this process, the table on screen shows the cost price, your current retail price, and the margin between them (as a percentage or an amount) side by side for every extension. Any extension being sold below cost is visually flagged, so you don't miss where you're losing money.

What “Automatic” Actually Covers (An Important Clarification)

Even though this guide is titled around “automatic” syncing, it's worth being precise here: WHMCS's TLD & Pricing Sync tool is triggered manually from the Utilities menu. When you open the Registrar TLD Sync screen and select DomainNameApi, the system pulls current cost data for every extension and recalculates hundreds of rows at once based on your markup rule — that part is genuinely automatic and bulk. But there's no official documentation showing WHMCS re-running this on its own, on a recurring schedule (say, every night).

What's Automatic vs. What's Manually Triggered

Automatic: pulling cost data for hundreds of TLDs in one pass and calculating + applying your retail price according to a markup rule you've defined.

Manually triggered: the moment that process starts. You need to open Utilities > Registrar TLD Sync and trigger it yourself; WHMCS doesn't repeat this on its own on any schedule.

A separate feature worth not confusing this with: “Enable Domain Sync” (General Settings > Domains) and the related “Domain Sync Settings” (Automation Settings) keep already-registered domains' status and expiry dates in sync — that's a completely different mechanism from TLD pricing sync, and it does run automatically via cron.

The practical takeaway: treat price syncing as a recurring habit (for example, once a month, or whenever you know registrar costs have changed). If you want to wire this into a fully automated cron job, that goes beyond WHMCS's standard, documented behavior and would require custom development — we're not presenting that as a guaranteed built-in feature.

Manual Updates vs. Registrar TLD Sync

Criteria Manual Updates Registrar TLD Sync (with Domain Name API)
How it's done Every extension edited by hand, one at a time Bulk, rule-based application (markup)
Time required (hundreds of TLDs) Can take hours Done in minutes
Error risk High (typos, calculation mistakes) Low (systematic calculation)
Risk of selling below cost Can go unnoticed for a long time Below-cost rows are visually flagged
How it's triggered Always manual Manually triggered, but the calculation/application is bulk and automatic
Scalability Doesn't hold up as your catalog grows Works the same regardless of catalog size

Benefits of Pricing Sync

As WHMCS's own product team has pointed out, this tool delivers value in several concrete ways:

Faster setup for new users:

import hundreds of TLDs in one pass, with pricing rules already applied.

Discover extensions you're not selling yet:

see what's available from your registrar that you haven't added to WHMCS.

Verify your margins:

see the real percentage or amount you're making on each extension; below-cost pricing is flagged.

Handle price increases gracefully:

when registrar costs rise, update your retail pricing by the same proportion easily.

Bulk operations:

update hundreds of rows in a single rule-based pass instead of opening and saving each one.

Percentage or fixed-amount markup:

define your margin however makes sense for your business.

Rounding options:

round calculated prices to a friendly, memorable ending like .50 or .95.

Fewer manual-entry errors:

eliminates typos and calculation mistakes from manual data entry.

Fewer support tickets:

incorrect pricing causes fewer customer disputes and internal errors.

Scales with you:

your pricing operation doesn't need to grow at the same pace as your catalog.

Step-by-Step Setup

1) Prerequisites

Before you start, confirm:

WHMCS 7.8 or later (the TLD & Pricing Sync tool itself requires WHMCS 7.10+)

PHP 7.4 or later (PHP 8.1 recommended)

The PHP SOAPClient extension is enabled

Your Reseller ID and API Key from your Domain Name API account

If You're Upgrading — Back up your existing module files before installing a new version.

2) Uploading the Module Files

Copy the “modules” folder from the downloaded package into your WHMCS installation directory (for example: /home/whmcs/public_html). Don't delete the .gitignore, README.md, or LICENSE files.

Common Mistake — If the files end up in the wrong directory, WHMCS won't detect the module at all, and “Domain Name API” simply won't appear in the Domain Registrars list. Double-check the path.

3) Module Configuration

PANEL PATH
System Settings > Domain Registrars

In the WHMCS admin area, go to System Settings > Domain Registrars.

If the files were uploaded correctly, “Domain Name API” appears here; click it and activate it.

Enter the Reseller ID and API Key you were issued.

Once saved, your username and current balance are displayed.

If needed, map the Turkish ID Number / Tax Number custom fields used for .tr domain registrations.

4) Domain Pricing Settings

PANEL PATH
System Settings > Domain Pricing

Go to System Settings > Domain Pricing.

Select the extensions you want to sell (for example, .com.tr).

Select “Domain Name API” for automatic registration.

Enable the EPP Code option.

You can enter prices manually here, or use the bulk sync covered in the next step.

Tip: WHOIS Lookup Provider — If you'd rather use Domain Name API as your lookup source instead of public WHOIS servers, click “Change” under “Lookup Provider,” select “DomainNameApi,” and choose which extensions it should apply to.

5) Bulk Pricing Sync (TLD & Pricing Sync)

PANEL PATH
Utilities > Registrar TLD Sync

Go to Utilities > Registrar TLD Sync.

Select “DomainNameApi” from the list and wait for the data to load.

Every extension in our system gets matched against the extensions in WHMCS; cost, current retail price, and margin are displayed for each.

Define your markup rule (percentage or fixed amount), and a rounding preference if you want one.

Select which extensions to import or update, then confirm.

WHMCS TLD Pricing Sync

WHMCS's core TLD & Pricing Sync screen: cost and margin are shown per extension across Register, Renew, Transfer, and Redemption; rows priced below cost (the .net renew row in this view) are highlighted in red.

6) General Settings (Domains)

PANEL PATH
System Settings > General Settings > Domains

Under System Settings > General Settings > Domains tab:

“Allow clients to register domains”:

lets customers register domains on their own.

“Allow clients to transfer domains to you”:

lets customers initiate a domain transfer.

“Enable renewal orders”:

allows renewal orders to be created before expiry.

“Automatic renewal on payment”:

processes the renewal automatically once payment is received.

“Enable Domain Sync” (recommended):

regularly checks and syncs the status of existing domains — separate from pricing sync, this is domain status synchronization.

“Allow IDN Domains”:

enables support for Turkish, Arabic, Russian, and other IDN domains.

Enter your default nameserver information.

7) Domain Sync Settings

PANEL PATH
System Settings > Automation Settings > Domain Sync Settings

Go to System Settings > Automation Settings > Domain Sync Settings. Enable domain synchronization; turn on “Sync Next Due Date” if you also want expiry dates updated. Adjust the remaining settings based on your server load.

Reminder — This is the second mechanism from our earlier clarification: syncing the status/expiry of domains you already have registered runs automatically via cron. TLD pricing sync (Utilities > Registrar TLD Sync) is a separate, manually-triggered tool.

Post-Sync Checks

Before going live, run through these checks after completing a sync:

Domain search:

confirm pricing displays correctly on the customer-facing domain search.

Registration:

place a test order to confirm the registration price calculates correctly.

Transfer:

confirm the transfer price displays separately and correctly.

Renewal:

confirm renewal pricing, keeping in mind it can differ from registration pricing.

Redemption:

confirm the redemption price for an expired domain looks reasonable (usually well above standard pricing).

Premium domains:

confirm premium pricing wasn't affected by the standard sync and is managed separately.

Common Mistakes

1) Prices don't update after syncing

Symptom: The sync “completes,” but retail prices stay the same

Cause: The relevant extensions weren't selected or confirmed during import

Fix: Reopen Registrar TLD Sync and explicitly select and confirm the changes

2) Currency mismatch

Symptom: Prices look absurdly high or low

Cause: The currency your cost price is defined in doesn't match your WHMCS currency setup

Fix: Compare the module's and WHMCS's currency settings; configure currency conversion correctly if needed

3) No markup applied at all

Symptom: Retail price equals or falls below cost

Cause: Pricing was imported without defining a markup rule during sync

Fix: Enter your markup percentage/amount in the TLD Sync screen and reapply

4) Registrar not assigned

Symptom: Auto-registration doesn't work for a given extension

Cause: “Domain Name API” wasn't selected as Auto Registration in Domain Pricing for that extension

Fix: Edit the extension in Domain Pricing and assign the registrar

5) Module not detected

Symptom: “Domain Name API” doesn't appear under System Settings > Domain Registrars

Cause: Module files were uploaded to the wrong directory

Fix: Check the file path (e.g., /home/whmcs/public_html/modules/registrars/...)

6) Unauthorized / Authentication Failed

Symptom: Authentication error during sync or domain operations

Cause: Wrong Reseller ID/API Key, or the server's IP isn't on the IP Whitelist

Fix: Verify your credentials and IP Whitelist — see our dedicated guide below

7) Invalid API Key error

Symptom: The API Key is rejected as invalid

Cause: The key is outdated, was copied incorrectly, or was rotated without updating the module

Fix: Re-enter the current key from your Integration Details page

8) Reseller Not Found error

Symptom: The system doesn't recognize the Reseller ID

Cause: An email address was typed into the username field, or the Reseller ID is outdated

Fix: Enter the correct Reseller ID instead of an email — see our dedicated guide below

9) Selling below cost (negative margin)

Symptom: Some rows appear flagged/highlighted in the TLD Sync screen

Cause: Registrar cost increased but retail price wasn't updated

Fix: Re-sync the affected extensions and reapply your markup

10) Forgetting renewal pricing differs from registration pricing

Symptom: Customers hit unexpected pricing at renewal

Cause: Registration and renewal prices are separate fields, and that wasn't accounted for

Fix: Check both prices separately in the sync screen

11) Premium domain pricing gets mixed up

Symptom: A premium domain sells at standard pricing (loss risk)

Cause: Premium domain pricing was confused with standard TLD sync

Fix: Manage premium domains under their own pricing logic; don't rely on bulk sync for them

12) Rounding produces unexpected results

Symptom: Prices round to unexpected endings

Cause: The rounding rule is misconfigured or was set without realizing it

Fix: Review your rounding preference and adjust or disable it as needed

13) Sync appears stuck or takes a long time

Symptom: The Registrar TLD Sync screen takes a long time to load

Cause: A large number of extensions are being processed at once, or the API response is slow

Fix: Wait without reloading; if it persists, check API response time in the Module Log

14) Running an outdated module version

Symptom: Sync behavior doesn't match the documentation

Cause: The module hasn't been updated

Fix: Download the current version from the domainreseller organization on GitHub

15) Module Log shows nothing because logging is disabled

Symptom: There's clearly an issue, but you can't see any detail

Cause: Debug logging is off (the recommended default for performance)

Fix: Temporarily enable debug logging while diagnosing, then turn it back off

For step-by-step fixes to the authentication errors above (Unauthorized, Invalid API Key, Reseller Not Found):

Troubleshooting Flow

If Pricing Looks Wrong, Check in This Order

1. Did the sync actually complete, or did it error out? → Check the Module Log.

2. Does the currency match your WHMCS setup? → If not, fix it and re-sync.

3. Is a markup rule defined? → If not, add one and reapply.

4. Is the correct registrar assigned to the extension (Domain Pricing screen)? → If not, assign it.

5. Is there an authentication error (Unauthorized/Invalid API Key/Reseller Not Found)? → Verify your credentials using our dedicated guides.

6. Still stuck? Enable debug logging in the Module Log, inspect the request/response, and contact support with the log attached if needed.

Best Practices

How Should You Set Your Markup?

There's no single correct percentage — it depends on your competitive landscape, target market, and cost structure. Two things are worth building in regardless: a buffer that absorbs normal currency volatility, and a different margin strategy for premium/competitive extensions (for example, a thinner margin on .com, a wider one on niche extensions).

How Often Should You Sync Pricing?

There's no fixed rule, but a practical baseline: at least once a month during periods of high currency volatility, and immediately whenever you're notified of a registrar cost change. Make this a defined responsibility on your team rather than a task that's easy to forget.

How Should You Handle Exchange Rates?

If your cost pricing is USD-based and your WHMCS installation runs in a different currency, make sure currency conversion is configured correctly. The same logic we cover in our WiseCP multi-currency and exchange rate guide applies here: general currency settings shape the customer experience, while registrar cost synchronization protects your profitability — both need to work together.

Managing Premium Domains

Premium domains are priced by the registry well outside standard rules, and they aren't managed by the same logic as bulk TLD sync — WHMCS's premium domain support is a separate mechanism. Don't assume bulk sync will also “fix” premium pricing for you; check it separately.

“Premium domain” gets used as if it's one category, but in practice it can mean three different things:

Type What It Means
Registry Premium The registry that runs the TLD (for example, Verisign for .com) prices certain short/valuable names above standard rates. Set at the registry level, at the time of registration.
Aftermarket A domain already registered by someone else and listed for sale. This has nothing to do with the registrar's primary registration pricing; it requires a separate purchase/transfer process.
Registry Reserved Names withheld entirely by the registry, not available to anyone for registration (often for legal/corporate reasons).

The TLD & Pricing Sync process in this guide only covers standard registration/renewal/transfer/redemption pricing. Registry Premium pricing is typically managed through WHMCS's separate Premium Domain Pricing mechanism; aftermarket domains fall outside this process entirely.

Security

Store your API Key in environment variables; never hard-code it into source code.

Use IP Whitelisting where possible to restrict API calls to trusted servers.

Rotate your API Key on a regular basis.

Keep debug logging in the Module Log turned off in production; it affects performance and can accumulate unnecessary sensitive data.

Make sure only authorized admin accounts can trigger sync and domain operations.

Checklists

Pre-Setup Checklist

WHMCS version is 7.8+ (7.10+ recommended for the TLD Sync tool)

PHP 7.4+ (8.1 recommended) with the SOAPClient extension enabled

Your Reseller ID and API Key are on hand

Existing module files are backed up, if upgrading

Post-Setup Checklist

Module files are in the correct directory and visible in WHMCS

Reseller ID/API Key entered, balance displays correctly

Registrar assigned to the relevant extensions in Domain Pricing

Pricing imported via Registrar TLD Sync, with markup applied

Registration/renewal/transfer pricing confirmed with a test order

General Settings (Domains) and Domain Sync Settings configured

Maintenance Checklist

Pricing sync is on a recurring schedule (e.g., monthly)

Extra checks happen during periods of high currency volatility

Module Log is checked periodically when issues are suspected

The module is kept on its current version

Premium domain pricing is reviewed separately

Frequently Asked Questions

What is TLD pricing sync in WHMCS?

It's a core WHMCS tool (Utilities > Registrar TLD Sync) that pulls current cost pricing from your registrar module (like Domain Name API) and bulk-calculates your retail price based on a markup rule you define.

Is this feature really automatic?

The calculation and bulk application are automatic. Starting the process — opening Utilities and triggering the sync — is a manual step. WHMCS doesn't repeat it on its own on a schedule.

Is TLD Sync the same as Domain Sync?

No. TLD Sync handles pricing; Domain Sync keeps the status/expiry of domains you've already registered up to date. Domain Sync runs automatically via cron; TLD Sync is manually triggered.

Which WHMCS version do I need?

The TLD & Pricing Sync tool requires WHMCS 7.10 or later; WHMCS 7.8+ is the minimum recommended for the Domain Name API module overall.

Does the Domain Name API module support this feature?

Yes. Domain Name API's official WHMCS setup guide explicitly describes using Utilities > Registrar TLD Sync with “DomainNameApi” selected to bulk-sync pricing.

How do I define my markup?

In the sync screen, define your markup rule as a percentage or a fixed amount, and optionally round the calculated price to a specific ending (like .95).

How do I know if I'm selling below cost?

The TLD & Pricing Sync screen visually flags rows priced below cost, so you can spot the extensions losing you money quickly.

Can renewal pricing differ from registration pricing?

Yes, WHMCS treats them as separate fields; check both during sync.

Are premium domains affected by this sync?

Premium domain pricing is set by the registry outside standard rules and is managed by a separate mechanism; don't rely on bulk TLD sync for it, check it separately.

What currency should I price in?

Whatever currency your registrar's cost pricing is defined in needs to match your WHMCS currency setup; if it doesn't, you'll need to configure currency conversion correctly.

I'm getting an Unauthorized error during sync — what's wrong?

That's an authentication issue, not a pricing issue. Check your Reseller ID, API Key, and IP Whitelist configuration; see our dedicated guide for the full walkthrough.

Does Invalid API Key block pricing sync?

Yes — sync requires the same valid Reseller ID and API Key as every other API call.

I'm getting Reseller Not Found — is that pricing-related?

No, that's also an authentication error, usually caused by an email address ending up in the username field instead of the Reseller ID.

Can I wire this sync into an automated cron job?

That's not part of WHMCS's standard, documented behavior. Doing so would require custom development, independent of whether your module or the API itself supports it.

Where do I upload the module files?

Into your WHMCS installation directory, for example under /home/whmcs/public_html, without deleting the .gitignore, README.md, or LICENSE files.

The module doesn't show up in System Settings — what now?

Confirm the files were uploaded to the correct directory; modules placed in the wrong location simply won't appear in WHMCS.

Can I use Domain Name API for WHOIS lookups too?

Yes, select “DomainNameApi” under the “Lookup Provider” setting in Domain Pricing and choose which extensions it should apply to.

How long does a sync take?

It depends on the number of extensions and the API's response time; large catalogs can take a few minutes.

Will this work with an outdated module version?

It might not, or it might behave unpredictably; we'd recommend using the current version from the domainreseller organization on GitHub.

How do I diagnose a sync error?

Go to System Logs > Module Log and click into the relevant entry to see the request/response detail; you can temporarily enable debug logging if needed.

Related Resources

Conclusion

WHMCS's TLD & Pricing Sync tool, used together with the Domain Name API module, lets you update pricing for hundreds of extensions through rules instead of editing each one by hand. Starting the process is a manual step, but the calculation and bulk application genuinely are automatic and fast. Make it a regular habit, and you'll save time while eliminating the risk of selling below cost.

If you run into anything during setup, the detailed records in the Module Log and our support team are both here to help.

Automate Your Domain Sales with WHMCS

You can create your free reseller account today, configure pricing sync with Domain Name API's WHMCS module in minutes, and start managing hundreds of extensions from a single panel.

Free reseller account, with no activation fee and no minimum deposit

The WHMCS module is free and ready to go, with setup that takes minutes

A sandbox (Test/OT&E) environment to test risk-free

850+ TLDs, manageable from a single panel

Infrastructure trusted by 40,000+ resellers in 200+ countries

24/7 technical support via ticket, phone, and live chat