Module and release scope
This guide covers OpenSRS 1.0.0, Extension API 1, from the reviewed product source. Its declared core range is 1.3.6–1.3.99. Use the matching released core and signed provider package; a version label alone does not install the required contracts. Source availability does not mean the module is bundled in every currently downloadable product, installed on your server, enabled or certified for your merchant/server account. Nothing in this guide enables a provider or changes your existing connections.
Open System → Domain registrars (newer source may group these as Payments, Domain services or Hosting services). Install the reviewed signed package through Modules & addons or the integration workspace's Install tab, enable the module separately, add an account/connection, save its own credentials, run its stated Test and explicitly enable the connection. Saving or retesting disables the connection until you enable it again. Start with the provider's test environment where supported; otherwise use an isolated account or server.
Exact connection fields
These are the fields declared by this module. Secret values are entered privately and encrypted by the application. Defaults are configuration hints, not approved live merchant settings. Internal fields are populated by the module and are not operator-editable.
| Key / label | Type | Required | Default / guidance |
|---|---|---|---|
environment — Environment |
select | Yes | Default: "sandbox" Choices: sandbox = Horizon test, live = Live |
username — Reseller username |
text | Yes | Use the account-specific value described below. |
api_key — Reseller API key |
secret | Yes | Use the account-specific value described below. |
allow_writes — Allow domain purchases and changes |
boolean | No | Default: false |
allow_automated_renewals — Allow paid-invoice automated renewals |
boolean | No | Default: false |
OpenSRS reseller registrar module. Installation leaves it disabled; remote purchases and automated renewals also default off. No customer/business data or credentials are bundled.
Configure
- Open/fund an OpenSRS reseller account. In the reseller Control Panel's API Settings, generate an API key and allowlist the application's outbound IP for live requests. Obtain separate Horizon test credentials.
- Enable this module, create a registrar connection, select Horizon test, and enter reseller username and API key. Test calls
get_balance; it cannot register or alter a domain. - Validate the complete flow using your permitted test domains before choosing Live and replacing the credentials. Explicitly enable remote purchases/changes, and separately enable automated paid-invoice renewals if wanted.
Uses fixed HTTPS endpoints https://horizon.opensrs.net:55443/ and https://rr-n1-tor.opensrs.net:55443/. Your firewall must permit TCP 55443 outbound. XML is signed with OpenSRS's documented double-MD5 signature and sent with X-Username/X-Signature. There is no webhook URL. Responses are bounded; the parser strips only the protocol's literal inert ops.dtd declaration and rejects all other DTD/entity declarations without loading external resources.
Supported operations
Availability, new registration, transfer-in, explicit renewal, owned-domain synchronization and nameserver replacement. Registrant data comes from the owning customer's profile for all four contact roles. Each purchase creates a cryptographically random OpenSRS end-user profile; its login/password are not shown or written to logs. Use the OpenSRS reseller panel to manage/reset end-user access when needed.
New registration uses sw_register, reg_type=new, handle=process, explicit years and nameservers; auto-renew and parking are off. Transfer uses reg_type=transfer and the supplied authorization code. Accepted registration/transfer orders stay pending; a subsequent owned-domain sync checks the sponsoring reseller and active contact. When an expected registrant or nameservers are supplied, mismatches keep activation pending for review. Renewal includes the freshly confirmed expiration year and must advance expiry before success is reported.
Premium/claims names, registry-specific eligibility, paid privacy products, locks and EPP code operations that require separate end-user credentials are handled in the reseller panel in this version. There is no pricing import. Some nameserver changes are asynchronous at the registry; fresh unchanged nameservers are shown as unconfirmed. Review the account and synchronize before retrying any uncertain purchase; the module never retries submissions automatically.
Official references:
- Authentication, environments and IP rules
- Domain registration and transfer
- Domain renewal
- Owned domain information
- Nameserver changes
Incoming transfers preserve the domain’s existing delegation. The core must confirm the current public nameservers (or an administrator must supply the confirmed current set) before submitting a transfer; this module never invents reseller nameservers during transfer.

