# Installing the Ruachost Domain Reseller Module for WHMCS

> Connect your WHMCS to Ruachost to sell domain names under your own brand. Install the registrar module, import your prices, fund your account and test it.

Source: https://helpcenter.ruachost.com/domains/guides/installing-the-ruachost-domain-reseller-module-for-whmcs/

The Ruachost Domain Reseller Module connects your **WHMCS** to Ruachost so you can sell domain names under your own brand. Installation takes about 15 minutes.

Once it's installed, your customers order domains from your WHMCS as usual. Your WHMCS then sends each registration, transfer and renewal to Ruachost, which charges it to your prepaid Ruachost credit balance. Your customers never see Ruachost, and you keep the margin between your selling price and your Ruachost cost.

## Before you begin

Check that you have everything below. Most failed installs trace back to one of these.

| You need | Why | How to check |
| --- | --- | --- |
| WHMCS 8.0 or later | TLD price import and the credential check on save need WHMCS 8 | **Help → About** in your WHMCS admin |
| PHP with the cURL extension | The module talks to Ruachost over HTTPS | Ask your host, or check **Utilities → System → PHP Info** |
| Outgoing HTTPS (port 443) from your server | Every request goes to Ruachost's API | Ask your host if your firewall blocks outbound connections |
| An accurate server clock | Requests more than 5 minutes off are rejected for security | Ask your host to confirm NTP time sync is on |
| A Ruachost partner account | Your domains and credit live on this account | Log in to your [Ruachost client area](https://dashboard.ruachost.com/clientarea.php) |
| Your API key and API secret | They identify and sign every request | Sent by Ruachost when your partner account is approved, or created yourself under **Account → API Credentials** in your Ruachost client area |
| Your server's public IP address (optional) | Ruachost can lock your key to this IP for extra security | Send it to Ruachost before you start |

> **Caution:**
Keep your API secret private. Anyone holding it can order domains against your credit. If it leaks, revoke it straight away (see [Manage your API credentials](#manage-your-api-credentials)). The old key stops working at once.

## Install the module

1. **Download** the latest release of the module, for example `ruachost-registrar-1.1.0.zip`, and unzip it on your computer. You'll get one folder named `ruachost`.

   > **Note:**
   The module will soon be available to download from Ruachost on GitHub. Until then, [contact support](https://helpcenter.ruachost.com/getting-started/guides/contact-support/) to get it.

2. **Upload** the `ruachost` folder to `modules/registrars/` inside your WHMCS installation, using your hosting file manager or SFTP. The finished path must be `modules/registrars/ruachost/ruachost.php`.
   - Upload the folder itself, not just the files inside it.
   - Don't rename the folder. WHMCS looks for it by name.
   - Upgrading from 1.0? Upload the new folder over the old one. Your settings are kept.
3. **Activate** the module. In your WHMCS admin, go to **Configuration (wrench icon) → System Settings → Domain Registrars**. Find **Ruachost** in the list and click **Activate**.
4. **Enter your credentials** in the settings that open:
   - **API key:** starts with `rh_`.
   - **API secret:** paste it exactly, with no spaces before or after.
   - **API endpoint:** leave blank unless Ruachost asks you to change it.
   - **Timeout:** leave at 90 seconds.
   - **Debug logging:** leave off. Turn it on only while troubleshooting. Errors are logged either way.
5. Click **Save Changes**. Saving is the connection test: WHMCS immediately checks your key and secret with Ruachost. If the test fails, an error appears at the top of the page and nothing is saved. See [Troubleshooting](#troubleshooting).

When the settings save without an error, your WHMCS is connected to Ruachost.

## Set up your extensions and prices

You can only sell extensions (TLDs) that Ruachost offers to your account. The fastest way to set them up is to import them.

1. **Import your Ruachost costs.** Go to **Utilities → Registrar TLD Sync** and choose **Ruachost**. WHMCS lists every extension available to you with your Ruachost cost for registration, renewal and transfer.
2. **Set your margin.** Choose a margin (a percentage or a fixed amount) and tick the extensions you want to sell. Then click **Import**. WHMCS creates the selling prices for you.
3. **Set Ruachost as the registrar.** Go to **Configuration → System Settings → Domain Pricing**. For each extension, set **Auto Registration** to **Ruachost**. Without this, paid orders wait in WHMCS for you to send them manually.
4. **Check your currency.** Imported costs come in the currency of your Ruachost account. If you sell in a different currency, check the converted prices before you go live.

To update prices later, run **Registrar TLD Sync** again. It only changes the extensions you tick.

## Fund your account and test it

Every domain is paid from your Ruachost credit balance at the moment it's ordered. If your balance is too low, the order is refused and nothing is charged.

1. **Add funds.** Log in to your Ruachost client area and add funds to your account. Keep enough credit to cover a few days of orders; renewals draw on the same balance. See [Account credit and paying in advance](https://helpcenter.ruachost.com/billing/guides/can-i-make-payment-in-advance-for-hosting-or-domain/).
2. **Register a test domain.** In your WHMCS admin, place an order for a cheap domain you actually want, either as a test client or from **Orders → Add New Order**. Pay the invoice, or mark it paid.
3. **Confirm it went through.** Open the domain under the client's **Domains** tab. Within a minute its status should change to **Active**, or to **Pending Transfer** for a transfer.
4. **Check your balance.** Your Ruachost credit should have dropped by your cost for that domain, and a matching paid invoice appears in your Ruachost client area.
5. **Try the management features.** Reload the domain page. The nameservers and registrar lock are read live from Ruachost, so seeing real values there confirms that day-to-day management works.

If all five steps work, you're ready to sell.

## What you and your customers can do

Everything below runs through Ruachost automatically once the module is active.

| Action | Where | Charged to your credit? |
| --- | --- | --- |
| Search for available domains | Your order form's domain search | No |
| Register a domain | New order, once the invoice is paid | Yes, at your registration cost |
| Transfer a domain in | New transfer order with the EPP code | Yes, at your transfer cost |
| Renew a domain | Renewal invoice paid, or **Renew** in admin | Yes, at your renewal cost |
| Change nameservers | Client area or admin domain page | No |
| Lock or unlock a domain | Client area or admin domain page | No |
| Update registrant contacts | Client area or admin domain page | No |
| Get the EPP / transfer code | Client area or admin domain page | No |
| Turn ID protection on or off | Admin domain page | No |

WHMCS's daily **Domain Sync** cron job also checks each domain's status and expiry date with Ruachost, so your records stay correct. Make sure it's enabled under **Configuration → System Settings → Automation Settings**.

Renewals only happen when your WHMCS asks for them, so you stay in control of which domains renew.

## Manage your API credentials

You manage your own keys from your Ruachost client area, under **Account → API Credentials**. Only the account owner can open this page, and every change asks for your password. Ruachost emails you whenever a key is created or revoked.

To **rotate** a key without any downtime:

1. Click **Create credential** and copy the new key and secret. The secret is shown only once.
2. In your WHMCS, paste them into **Domain Registrars → Ruachost** and save. Saving tests the new key.
3. Back on the API Credentials page, check the new key shows a **Last used** time. Then **Revoke** the old key.

You can hold two active keys at a time. If a key is lost or exposed, revoke it at once; requests signed with it are refused immediately.

The same page shows your available credit, your account status and your recent API activity, each with a reference you can quote to support.

## Troubleshooting

When something fails, WHMCS shows the message Ruachost sent back. For the full request and response, turn on logging under **Configuration → System Logs → Module Log**, repeat the action, then open the newest **ruachost** entry. Your key and secret are hidden in that log.

| Message contains | What it means | What to do |
| --- | --- | --- |
| API endpoint is not configured | The module has no Ruachost address | Download the latest release of the module, or enter the endpoint Ruachost gave you |
| Enter your Ruachost API key and secret | A field is empty | Fill in both in **Domain Registrars → Ruachost** |
| Invalid or revoked API credentials | The key or secret is wrong, or the key was revoked | Paste them again with no spaces, or create a new key under **Account → API Credentials** |
| timestamp is outside the allowed window | Your server clock is off by more than 5 minutes | Ask your host to enable NTP time sync |
| are not allowed for this account | Your server's IP isn't on your allowlist | Send Ruachost your server's current public IP |
| Could not reach Ruachost | Your server can't connect out over HTTPS | Ask your host to allow outbound port 443 and check that cURL works |
| limiting requests from your account | Too many requests in a minute | Wait a minute and try again |
| credit balance is too low | Not enough available Ruachost credit for this order | Add funds, then retry. You aren't charged for the failed attempt |
| are paused on this account | New orders and renewals are paused; your domains still work | Contact Ruachost support |
| account is suspended | All API access is paused | Contact Ruachost support |
| is not offered | Ruachost doesn't offer that extension or term to you | Remove it from your pricing, or ask Ruachost to add it |
| not available through this account | Someone else already holds the domain | Offer the customer a different name |
| registrant … is missing / not valid | The customer's contact details are incomplete | Fix the client's details, then retry. Nothing was sent or charged |
| Payment received, but the registry rejected | You were charged, but the registry refused the request | Fix the cause (often contact details or EPP code), then retry. You won't be charged again |
| still being processed | An earlier attempt for the same action is running | Wait a minute and check the domain status before retrying |

A registration the registry is still processing shows as **Pending Registration**. WHMCS's daily domain sync turns it Active once the registry confirms; you don't need to retry.

Retrying a failed registration, transfer or renewal is always safe: the module recognises a repeat of the same action and never charges twice. Error messages end with a reference such as `(Ref: rr-1a2b…)`; keep it for support.

## Getting help

[Open a support ticket](https://dashboard.ruachost.com/submitticket.php) from your Ruachost client area, or call or WhatsApp us on **+234 702 500 0200**. We're available 24/7. To get a fast answer, include:

- the domain name and the action that failed (register, transfer, renew or another);
- the date and time it happened;
- the error message WHMCS showed, including its reference (`Ref: …`);
- for orders, the order reference (`RO-…`) if WHMCS showed one.

> **Important:**
Never send your API secret in a ticket or email. Ruachost will never ask for it.

## Related articles

- [All about .ng domains](https://helpcenter.ruachost.com/domains/guides/ng-domains/)
- [Domain life cycle for .com and other international domains](https://helpcenter.ruachost.com/domains/guides/domain-life-cycle-for-com-and-other-international-domains/)
- [Official Ruachost emails and websites](https://helpcenter.ruachost.com/getting-started/guides/official-ruachost-emails-and-websites/)
