Reseller modules

Sell domains from
your own billing system.

One API, five modules. Your wallet, your prices, your brand — customers never see who we buy from. Plain PHP and curl, no Composer: a module that needs Composer is a module that won't install.

WiseCP

Starting point — needs verifying

WiseCP's registrar-module contract is not fully published, so the method names follow the patterns WiseCP's bundled modules use. Treat this as a working starting point that may need an hour against a real install.

What to do about it: install it, hit the connection test, then register one cheap domain — a .xyz or .top — end to end. Ten minutes, and it's the difference between finding a problem yourself and a customer finding it during checkout. If something's off, tell us and we'll fix it.

Setting it up

  1. 1

    Upload the module

    Unzip into coremio/modules/Registrars/ so you end up with coremio/modules/Registrars/Dbanidomains/Dbanidomains.php.

  2. 2

    Add the registrar

    Services → Registrars → Dbani Domains.

  3. 3

    Paste your credentials

    API URL, key and secret.

  4. 4

    Test the connection

    Prove the plumbing before you go further — especially with this one.

  5. 5

    Compare against a bundled module

    If a method never fires, open any registrar in coremio/modules/Registrars/ and match the naming. The API calls underneath are the tested part; the adapter is thin on purpose.

What it does

The same list for every platform — they all wrap the same API.

Feature Supported Notes
Availability search Yes
Register Yes Settles against your wallet
Transfer in Yes Adds a year, as the registry requires
Renew Yes
Nameservers Yes Read and write
Registrar lock Yes Read and write
Auth / EPP code Yes Some registries email it instead — the module says so
Expiry sync Yes
TLD + price import Yes Every extension, all three prices, one call
Contact (WHOIS) editing Yes Registrant only — every role points at it
Premium domains Yes Flagged, with the real price
ID protection (WHOIS privacy) Yes Where the registry permits it — see below
DNS host records Not yet Not yet
Email forwarding Not yet Not yet

When something goes wrong

"The API key or secret was rejected" (401)

Either the credentials are wrong, or your host strips the Authorization header before it reaches PHP — some shared hosts do. Ask them to let it through. The secret is only shown once when you create a token; if you have lost it, delete the token and make a new one.

"Your wallet does not have enough in it" (402)

Exactly what it says. Top up in the client area and retry — nothing was charged, and nothing was half-registered.

"Could not reach the registrar API"

Outbound HTTPS is blocked, or the URL is wrong. It should end in /api/v1 with no trailing slash.

"Returned something that was not JSON"

Almost always your host serving an error page. Open the API URL in a browser: you should see a JSON error, not HTML.

The auth code comes back empty

Not a bug. Some registries email the code to the registrant rather than returning it over the API. The module tells you which case you are in instead of showing an empty box.

ID protection is refused on a domain (422)

Also not a bug, and retrying will never help. A number of registries do not permit registrar-provided privacy at all: .us and .au prohibit it outright, while .eu, .de, .ca, .uk, .nl, .fr, .it and .br redact private individuals at the registry instead, so there is no toggle to sell. The API returns the specific reason rather than a generic failure. Leave ID Protection unticked for those extensions in your billing platform, or it will offer customers a switch that cannot work.

A method never fires (Blesta / HostBill / WiseCP)

Most likely a method-name mismatch with your version. Compare against a bundled registrar module on your platform and rename to match — the adapter is thin on purpose, and the API calls underneath are the part that is already tested.