Bulk transfer of domains in a Versio account


This article presents a ready-to-use script (written in PHP) that can be used to easily transfer domains from your Versio account to your Openprovider account.

As you are a Versio customer and we are Openprovider and not Versio, you will be much more experienced with Versio than we are. From your experience, feel free to add a comment to this article with your feedback, tips or tricks! Of course, you can send an e-mail as well.

Important disclaimer: this script is created as a courtesy to our customers. Running it is completely on your own responsibility. We strongly advise to run the script in test mode first, before actually ordering the domain transfers. Openprovider is not responsible for any unforeseen situation that is the result of running this script.

Configure the Versio API

If you already use the Versio API, you can probably skip this section.

If you do not already use the Versio API, please follow the next steps:

  • Enable API access
    • Log in to your Versio control panel
    • Navigate to Account > Versio API
    • Enter your control panel password and the IP address from where you run the script under the "IP addresses with access to API"

After having finished those steps, you're ready to use the Versio API and prepare and run the transfer script.

Download and install the Openprovider API

If you already use the Openprovider API, you can probably skip most instructions in this section.

If you do not already use the Openprovider API, please follow the next steps:

  • Enable API access
    • Log in to your Openprovider control panel
    • Navigate to the menu Account
    • Click the "Add contact person" button
    • Define the new user, ensure that you set the type to "technical" and enable API access
    • Add your IP address to the IP whitelist by clicking the "Edit" button under the "API access restrictions" section.
    • Click the link in the e-mail that you received and set your password
    • After setting the password, a hash value will be shown; copy this value as you cannot retrieve it again at a later moment
  • Download API
    • Download the API.php file from the Openprovider API documentation
    • In this article, I assume that the API.php file is stored in the same directory as the transfer-from-versio.php script

Prepare and run the transfer script

Download and customise

  • Download the script that is attached to this article.
  • Open the script and populate the $authVersio and $authOP variables with the Versio and Openprovider API credentials.

Define domain list
Create a file in which you put each domain to transfer on a separate line. IDNs must be written in punycode, so domain.онлайн must be written as domain.xn--80asehdb.

Run the script
The script accepts the following parameters:

  • -f (required): this is the file name that contains the domain list
  • -t: "test mode", can be "0" or "1". If test mode is enabled (default value), the script will behave as "read only" and output data, but it will not create DNS zones, unlock domains or transfer domains
  • -d: whether or not to copy the DNS zones. Allowed values:
    • 0: do not import DNS zones (default value)
    • 1: import DNS zones if no zone already exists
    • overwrite: import DNS zones; if a zone already exists, delete it first
  • -v: "verbose mode", can be "0" (default value) or "1", and defines whether or not to output debug and other information.
  • --help: send "transfer-from-versio.php --help" for command line information about the usage of the script.

By running the script, the following steps will be performed for each domain in the domain list:

  • Retrieve the domain details from Versio
  • If required, import the DNS zone
  • Create the contacts in Openprovider
  • If required, retrieve the authorisation code
  • If required, unlock the domain
  • Order the transfer in Openprovider

From here on, the normal transfer process commences. Some extensions will be transferred instantly (e.g. .nl), some extensions will send an e-mail to the domain holder (e.g. .fr), some extensions will start a transfer period (e.g. .com).

(Un)supported domains

The script is pretty simple: it just reads contact and nameserver information and the authorisation code, unlocks the domain and initiates the transfer. This should be fine for most extensions, but some cases are not supported because of this simplicity:

  • Additional data: as soon as additional information or actions are required, the transfer is not supported and should be initiated manually.
  • Authcode not retrievable: if a domain requires an authorisation code that is sent to the registrant only (for example .be, .pt or .ro), the domain cannot be transferred with this script.

Notes on a couple of specific TLDs:

  • (no info yet)

Known issues with the script:

  • Versio runs into API rate limits very soon; if you have information about the Versio API rate limits, please let us know in a comment.
  • DNS zone creation is not yet tested; if you have a domain that should migrate its zone from the Versio to the Openprovider nameservers, let us know in the comments your experience.
Was this article helpful?
Additional questions? Submit a request