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.

Blesta

Test before you sell

Follows Blesta's documented registrar-module pattern but has not been run against a live Blesta install. Blesta's module API changed shape between 4.x and 5.x.

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 components/modules/ so you end up with components/modules/dbanidomains/dbanidomains.php.

  2. 2

    Install it

    Settings → Company → Modules → Available → Dbani Domains → Install.

  3. 3

    Add an account

    Click Add Account and paste the API URL, key and secret. Blesta checks the credentials as you save — a wrong secret is refused there and then.

  4. 4

    Create a domain package

    Packages → Add Package, module Dbani Domains, and pick the account you just added.

  5. 5

    Import prices

    Blesta reads the TLD list and all three prices from the same endpoint. Add your margin on top.

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.