Domain registrars

OVHcloud Domains — setup and reference

Configure OVHcloud Domains credentials, contacts, domain actions, confirmation and registry limitations.

Platform
Laravel / PHP
Laravel
13
PHP
8.4
Database
Dedicated MySQL-compatible production database

Module and release scope

This guide covers OVHcloud Domains 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
region — API region select Yes Default: "eu" Choices: eu = Europe, ca = Canada
application_key — Application key secret Yes Use the account-specific value described below.
application_secret — Application secret secret Yes Use the account-specific value described below.
consumer_key — Consumer key secret Yes Use the account-specific value described below.
subsidiary — Billing subsidiary code text Yes Your OVHcloud account subsidiary, for example FR or GB.
allow_writes — Allow domain purchases and changes boolean No Default: false
allow_automated_renewals — Allow automated renewals boolean No Default: false

Standalone EmailaBiller 1.3.6 registrar module, installed disabled and without an account. Remote writes and automated renewals are disabled by default. Existing OVHcloud connections are not changed.

Configure API access

Create an OVHcloud application key, application secret and consumer key for your own account. Select Europe (https://eu.api.ovh.com/1.0) or Canada (https://ca.api.ovh.com/1.0), and enter the account's billing subsidiary code. The real Domains API has no sandbox switch in this module. Start with read permissions; Test only reads /me and server time. It never creates a cart or purchases a service.

Scope the consumer key to /me GET, /auth/time GET, /domain/* GET and the relevant order/cart, contact and renewal endpoints below. Add write permissions only for the exact operations you intend to enable. Consumer keys must belong to the same account as the domain/contacts. Requests are signed with the application secret, consumer key, exact HTTP method/URL/body and provider time. Secrets never belong in source code. No webhook is needed.

Ordering flow

Availability uses a temporary, unassigned cart and reads offers. This creates no domain, purchase order or charge. Standard available offers are distinct from premium, aftermarket and transfer offers.

Register/transfer uses the documented cart API: obtain standard offer and duration, assign cart, add domain, read required configurations, apply per-order values, validate checkout, then submit checkout with preferred-payment autopay enabled. A withdrawal waiver is sent only if waive_retractation_period: true was explicitly supplied after obtaining the applicable consent; its default is false. Some domain orders require this waiver before the provider accepts them. The account must have an approved payment method. Premium and aftermarket offers are excluded.

For every register/transfer supply owner_contact referencing an existing customer's /me/contact/123 or /domain/contact/123 resource and agree_to_terms: true. The module checks the contact through the authenticated API and never silently uses the operator's account profile. Supply registry-required values under configuration; for example OWNER_LEGAL_AGE requires the operator's truthful, explicit declaration. Missing legal declarations are not guessed.

{"owner_contact":"/me/contact/123","agree_to_terms":true,"waive_retractation_period":true,"configuration":{"OWNER_LEGAL_AGE":true}}

Registration also needs years and nameservers. Transfer requires auth_code, uses AUTH_INFO, and retains existing DNS. Custom required configuration differs by TLD: inspect the provider response and complete it before dispatch.

Renewal and registry completion

Registration/transfer returns pending after purchase-order creation. Verify payment, customer ownership, registry task completion and nameservers, then synchronize. Synchronization retains the selected owner contact and compares it with the domain's documented contactOwner/whoisOwner resource using authenticated /me/contact/{id} reads. OVHcloud may clone a source contact during registration, so both contact records are compared by identity, address and phone rather than requiring equal IDs. Missing contact-read permissions or mismatched identity keep activation pending with an actionable message. The module never marks a checkout acknowledgement active.

Renewal selects only the exact domain service ID, excluding associated hosting/options. It validates the requested duration and performs the renewal dry run before creating the purchase order. This renewal order must be paid in the OVHcloud console. The module does not make an implicit second payment with an arbitrary stored payment method. A paid renewal may reach the registry later; synchronize once its registry expiration date advances. No local expiry is extended from an unpaid order.

Supports domain sync, nameserver changes, transfer lock/unlock and EPP retrieval from an unlocked domain. State and nameservers are confirmed by account-owned readback. Unknown registry states require operator review. Responses are bounded, credentials are redacted, and requests have timeouts with no redirects or retries. After an ambiguous purchase response, inspect and synchronize rather than automatically buying again.

Provider documentation

  • Domain ordering flow: https://docs.ovhcloud.com/en/guides/web-cloud/domains/api-domain-order
  • Domain API schema: https://eu.api.ovh.com/1.0/domain.json
  • Order API schema: https://eu.api.ovh.com/1.0/order.json
  • Renewal strategy and purchase orders: https://docs.ovhcloud.com/en/guides/account-and-service-management/managing-billing-payments-and-services/renewing-service-via-api
  • Contacts: https://docs.ovhcloud.com/en/guides/web-cloud/domains/api-domain-contacts
  • API key and signature guide: https://docs.ovhcloud.com/en/guides/web-cloud/domains/api-intro
← All EmailaBiller guidesGet help →

Need help with EmailaBiller?

Tell us the product version and what you are trying to do. Keep passwords and private keys out of your message.

Contact Emaila