EPP Test Server Platform

Testing environment for InternetNZ .nz domain names. This is not a real registry - just for fun and testing only.

EPP Test Server – .nz Integration

This documentation describes a test-only EPP interface for .nz domains, using standard RFC EPP objects (domain and contact). It is not a real registry and must not be used for live registrants.

Endpoint

epp.munsey.co.nz:700

TCP connection using EPP over port 700 (XML over TCP).

Protocol

Extensible Provisioning Protocol (EPP) 1.0
urn:ietf:params:xml:ns:epp-1.0

Standard RFC objects:
domain-1.0, contact-1.0.
Host objects are not implemented in this test server.

Notes

  • .nz-style usage, test only
  • Standard RFC EPP objects and commands
  • Poll queue for server notifications

Important notice

Behaviour may differ from the live InternetNZ registry. This environment is for registrar integration testing only and can be reset at any time. Data and object IDs may be wiped without notice.

Download Tools & SDKs

Connect to the EPP Test Server using official SDKs and example scripts. These downloads include ready-to-use templates for sending EPP commands, handling XML responses, managing TCP connections, and testing registrar integrations. PHP, NodeJS, Python, and raw socket examples are available.

<hello> and greeting

When you connect to epp.munsey.co.nz:700, the server sends an initial <greeting>. You can request the same greeting again at any time by sending a <hello/> command.

Request – <hello>

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <hello/>
</epp>

Response – greeting

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <greeting>
    <svID>EPP Test Server</svID>
    <svDate>2025-01-01T12:00:00.0Z</svDate>
    <svcMenu>
      <version>1.0</version>
      <lang>en</lang>
      <objURI>urn:ietf:params:xml:ns:domain-1.0</objURI>
      <objURI>urn:ietf:params:xml:ns:contact-1.0</objURI>
    </svcMenu>
  </greeting>
</epp>

login

Establishes an authenticated registrar session. The client ID and password must match credentials configured on the EPP test server.

Request – login

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
     xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
  <command>
    <login>
      <clID>REG-TEST</clID>
      <pw>your-password</pw>
      <options>
        <version>1.0</version>
        <lang>en</lang>
      </options>
      <services>
        <objURI>urn:ietf:params:xml:ns:domain-1.0</objURI>
        <objURI>urn:ietf:params:xml:ns:contact-1.0</objURI>
      </services>
    </login>
    <clTRID>LOGIN-20250101-0001</clTRID>
  </command>
</epp>

Response – login success

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <trID>
      <clTRID>LOGIN-20250101-0001</clTRID>
      <svTRID>SV-20250101-ABC123</svTRID>
    </trID>
  </response>
</epp>

logout

Ends the current EPP session. The server will usually close the TCP connection after a successful logout.

Request – logout

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <command>
    <logout/>
    <clTRID>LOGOUT-20250101-0001</clTRID>
  </command>
</epp>

Response – logout

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <response>
    <result code="1500">
      <msg>Command completed successfully; ending session</msg>
    </result>
    <trID>
      <clTRID>LOGOUT-20250101-0001</clTRID>
      <svTRID>SV-20250101-DEF456</svTRID>
    </trID>
  </response>
</epp>

contact:check

Checks whether one or more contact IDs are already in use. If avail="1", the ID can be used in a future contact:create.

Request – contact:check

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
  <command>
    <check>
      <contact:check>
        <contact:id>con1234</contact:id>
        <contact:id>con5678</contact:id>
      </contact:check>
    </check>
    <clTRID>CONTACT-CHECK-20250101-0001</clTRID>
  </command>
</epp>

Response – contact:chkData

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <resData>
      <contact:chkData>
        <contact:cd>
          <contact:id avail="1">con1234</contact:id>
        </contact:cd>
        <contact:cd>
          <contact:id avail="0">con5678</contact:id>
          <contact:reason>In use</contact:reason>
        </contact:cd>
      </contact:chkData>
    </resData>
    <trID>
      <clTRID>CONTACT-CHECK-20250101-0001</clTRID>
      <svTRID>SV-20250101-CON001</svTRID>
    </trID>
  </response>
</epp>

contact:create

Creates a new contact object. The contact ID is supplied by the registrar and must be unique.

Request – contact:create

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
  <command>
    <create>
      <contact:create>
        <contact:id>con1234</contact:id>
        <contact:postalInfo type="int">
          <contact:name>John Doe</contact:name>
          <contact:addr>
            <contact:street>123 Sample Street</contact:street>
            <contact:city>Wellington</contact:city>
            <contact:pc>6011</contact:pc>
            <contact:cc>NZ</contact:cc>
          </contact:addr>
        </contact:postalInfo>
        <contact:voice>+64.412345678</contact:voice>
        <contact:email>john@example.nz</contact:email>
        <contact:authInfo>
          <contact:pw>ContactAuth123</contact:pw>
        </contact:authInfo>
      </contact:create>
    </create>
    <clTRID>CONTACT-CREATE-20250101-0001</clTRID>
  </command>
</epp>

Response – contact created

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <resData>
      <contact:creData>
        <contact:id>con1234</contact:id>
        <contact:crDate>2025-01-01T12:00:00.0Z</contact:crDate>
      </contact:creData>
    </resData>
    <trID>
      <clTRID>CONTACT-CREATE-20250101-0001</clTRID>
      <svTRID>SV-20250101-CON002</svTRID>
    </trID>
  </response>
</epp>

contact:info

Retrieves information for a contact object, including postal address and status.

Request – contact:info

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
  <command>
    <info>
      <contact:info>
        <contact:id>con1234</contact:id>
      </contact:info>
    </info>
    <clTRID>CONTACT-INFO-20250101-0001</clTRID>
  </command>
</epp>

Response – contact:infData

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <resData>
      <contact:infData>
        <contact:id>con1234</contact:id>
        <contact:roid>CONTACT-EXAMPLE-1</contact:roid>
        <contact:status s="ok"/>
        <contact:postalInfo type="int">
          <contact:name>John Doe</contact:name>
          <contact:addr>
            <contact:street>123 Sample Street</contact:street>
            <contact:city>Wellington</contact:city>
            <contact:pc>6011</contact:pc>
            <contact:cc>NZ</contact:cc>
          </contact:addr>
        </contact:postalInfo>
        <contact:voice>+64.412345678</contact:voice>
        <contact:email>john@example.nz</contact:email>
      </contact:infData>
    </resData>
    <trID>
      <clTRID>CONTACT-INFO-20250101-0001</clTRID>
      <svTRID>SV-20250101-CON003</svTRID>
    </trID>
  </response>
</epp>

contact:update

Updates fields on an existing contact object. Only the attributes in <contact:chg> are modified.

Request – contact:update

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
  <command>
    <update>
      <contact:update>
        <contact:id>con1234</contact:id>
        <contact:chg>
          <contact:postalInfo type="int">
            <contact:name>John Example</contact:name>
            <contact:addr>
              <contact:street>456 New Street</contact:street>
              <contact:city>Auckland</contact:city>
              <contact:pc>1010</contact:pc>
              <contact:cc>NZ</contact:cc>
            </contact:addr>
          </contact:postalInfo>
          <contact:voice>+64.212345678</contact:voice>
          <contact:email>john.new@example.nz</contact:email>
        </contact:chg>
      </contact:update>
    </update>
    <clTRID>CONTACT-UPDATE-20250101-0001</clTRID>
  </command>
</epp>

Response – contact updated

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <trID>
      <clTRID>CONTACT-UPDATE-20250101-0001</clTRID>
      <svTRID>SV-20250101-CON004</svTRID>
    </trID>
  </response>
</epp>

contact:delete

Deletes a contact object. Standard EPP rules apply: a contact cannot be deleted if it is still linked to any domains.

Request – contact:delete

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
  <command>
    <delete>
      <contact:delete>
        <contact:id>con1234</contact:id>
      </contact:delete>
    </delete>
    <clTRID>CONTACT-DELETE-20250101-0001</clTRID>
  </command>
</epp>

Response – delete acknowledged

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <trID>
      <clTRID>CONTACT-DELETE-20250101-0001</clTRID>
      <svTRID>SV-20250101-CON005</svTRID>
    </trID>
  </response>
</epp>

domain:check

Checks whether one or more .nz domain names are available for registration or already in use.

Request – domain:check

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
  <command>
    <check>
      <domain:check>
        <domain:name>example.nz</domain:name>
        <domain:name>example.co.nz</domain:name>
      </domain:check>
    </check>
    <clTRID>DOMAIN-CHECK-20250101-0001</clTRID>
  </command>
</epp>

Response – domain:chkData

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <resData>
      <domain:chkData>
        <domain:cd>
          <domain:name avail="1">example.nz</domain:name>
        </domain:cd>
        <domain:cd>
          <domain:name avail="0">example.co.nz</domain:name>
          <domain:reason>In use</domain:reason>
        </domain:cd>
      </domain:chkData>
    </resData>
    <trID>
      <clTRID>DOMAIN-CHECK-20250101-0001</clTRID>
      <svTRID>SV-20250101-DOM001</svTRID>
    </trID>
  </response>
</epp>

domain:create

Creates a new .nz domain name. Contacts used as registrant/admin/tech must already exist.

Request – domain:create

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
     xmlns:nz="urn:ietf:params:xml:ns:nz-domain-1.0">

  <command>
    <create>
      <domain:create>

        <domain:name>example.nz</domain:name>
        <domain:period unit="y">1</domain:period>

        <domain:ns>
          <domain:hostAttr>
            <domain:hostName>ns1.example.net</domain:hostName>
            <domain:hostAddr ip="v4">192.0.2.1</domain:hostAddr>
          </domain:hostAttr>

          <domain:hostAttr>
            <domain:hostName>ns2.example.net</domain:hostName>
            <domain:hostAddr ip="v4">192.0.2.2</domain:hostAddr>
          </domain:hostAttr>
        </domain:ns>

        <domain:registrant>con1234</domain:registrant>
        <domain:contact type="admin">con1234</domain:contact>
        <domain:contact type="tech">con1234</domain:contact>

        <domain:authInfo>
          <domain:pw>DomainAuth123</domain:pw>
        </domain:authInfo>

      </domain:create>
    </create>

    <extension>
      <nz:create>
        <nz:registrantAgreement>true</nz:registrantAgreement>
      </nz:create>
    </extension>

    <clTRID>DOMAIN-CREATE-20250101-0001</clTRID>
  </command>
</epp>

Response – domain created

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <resData>
      <domain:creData>
        <domain:name>example.nz</domain:name>
        <domain:crDate>2025-01-01T12:00:00.0Z</domain:crDate>
        <domain:exDate>2026-01-01T12:00:00.0Z</domain:exDate>
      </domain:creData>
    </resData>
    <trID>
      <clTRID>DOMAIN-CREATE-20250101-0001</clTRID>
      <svTRID>SV-20250101-DOM002</svTRID>
    </trID>
  </response>
</epp>

domain:info

Retrieves full information about a domain name, including contacts, nameservers, and dates.

Request – domain:info

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
  <command>
    <info>
      <domain:info>
        <domain:name>example.nz</domain:name>
      </domain:info>
    </info>
    <clTRID>DOMAIN-INFO-20250101-0001</clTRID>
  </command>
</epp>

Response – domain:infData

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <resData>
      <domain:infData>
        <domain:name>example.nz</domain:name>
        <domain:roid>EXAMPLE-NZ</domain:roid>
        <domain:status s="ok"/>
        <domain:registrant>con1234</domain:registrant>
        <domain:contact type="admin">con1234</domain:contact>
        <domain:contact type="tech">con1234</domain:contact>
        <domain:ns>
          <domain:hostObj>ns1.example.net</domain:hostObj>
          <domain:hostObj>ns2.example.net</domain:hostObj>
        </domain:ns>
        <domain:clID>REG-TEST</domain:clID>
        <domain:crDate>2025-01-01T12:00:00.0Z</domain:crDate>
        <domain:exDate>2026-01-01T12:00:00.0Z</domain:exDate>
      </domain:infData>
    </resData>
    <trID>
      <clTRID>DOMAIN-INFO-20250101-0001</clTRID>
      <svTRID>SV-20250101-DOM003</svTRID>
    </trID>
  </response>
</epp>

domain:update

Updates selected attributes of a domain, such as contacts and nameservers.

Request – update contacts and nameservers

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
     xmlns:nz="urn:ietf:params:xml:ns:nz-domain-1.0">

  <command>
    <update>
      <domain:update>

        <domain:name>example.nz</domain:name>

        <domain:chg>
          <domain:registrant>con5678</domain:registrant>
        </domain:chg>

        <domain:add>
          <domain:contact type="admin">con5678</domain:contact>

          <domain:ns>
            <domain:hostAttr>
              <domain:hostName>ns3.example.net</domain:hostName>
              <domain:hostAddr ip="v4">192.0.2.3</domain:hostAddr>
            </domain:hostAttr>
          </domain:ns>
        </domain:add>

        <domain:rem>
          <domain:contact type="tech">con1234</domain:contact>

          <domain:ns>
            <domain:hostAttr>
              <domain:hostName>ns1.example.net</domain:hostName>
              <domain:hostAddr ip="v4">192.0.2.1</domain:hostAddr>
            </domain:hostAttr>
          </domain:ns>
        </domain:rem>

      </domain:update>
    </update>

    <extension>
      <nz:update>
        <nz:registrantAgreement>true</nz:registrantAgreement>
      </nz:update>
    </extension>

    <clTRID>DOMAIN-UPDATE-20250101-0001</clTRID>
  </command>
</epp>

Response – update success

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <trID>
      <clTRID>DOMAIN-UPDATE-20250101-0001</clTRID>
      <svTRID>SV-20250101-DOM004</svTRID>
    </trID>
  </response>
</epp>

domain:delete

Deletes a domain name. The exact lifecycle behaviour is implementation-specific in this test server (e.g. immediate delete vs. pending delete).

Request – domain:delete

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
  <command>
    <delete>
      <domain:delete>
        <domain:name>example.nz</domain:name>
      </domain:delete>
    </delete>
    <clTRID>DOMAIN-DELETE-20250101-0001</clTRID>
  </command>
</epp>

Response – delete acknowledged

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <trID>
      <clTRID>DOMAIN-DELETE-20250101-0001</clTRID>
      <svTRID>SV-20250101-DOM005</svTRID>
    </trID>
  </response>
</epp>

domain:renew

Extends the registration period of an existing domain name. The curExpDate must match the current expiry date.

Request – domain:renew

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
  <command>
    <renew>
      <domain:renew>
        <domain:name>example.nz</domain:name>
        <domain:curExpDate>2026-01-01</domain:curExpDate>
        <domain:period unit="y">1</domain:period>
      </domain:renew>
    </renew>
    <clTRID>DOMAIN-RENEW-20250101-0001</clTRID>
  </command>
</epp>

Response – renewed

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <resData>
      <domain:renData>
        <domain:name>example.nz</domain:name>
        <domain:exDate>2027-01-01T12:00:00.0Z</domain:exDate>
      </domain:renData>
    </resData>
    <trID>
      <clTRID>DOMAIN-RENEW-20250101-0001</clTRID>
      <svTRID>SV-20250101-DOM006</svTRID>
    </trID>
  </response>
</epp>

domain:transfer

Transfers a domain between registrars using an authInfo password (similar to UDAI-style transfer codes).

Request – transfer op="request"

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
  <command>
    <transfer op="request">
      <domain:transfer>
        <domain:name>example.nz</domain:name>
        <domain:authInfo>
          <domain:pw>ABCD1234</domain:pw>
        </domain:authInfo>
      </domain:transfer>
    </transfer>
    <clTRID>DOMAIN-TRANSFER-20250101-0001</clTRID>
  </command>
</epp>

Response – transfer pending

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
  <response>
    <result code="1001">
      <msg>Command completed successfully; action pending</msg>
    </result>
    <resData>
      <domain:trnData>
        <domain:name>example.nz</domain:name>
        <domain:reID>REG-NEW</domain:reID>
        <domain:reDate>2025-01-01T12:00:00.0Z</domain:reDate>
        <domain:exDate>2026-01-01T12:00:00.0Z</domain:exDate>
      </domain:trnData>
    </resData>
    <trID>
      <clTRID>DOMAIN-TRANSFER-20250101-0001</clTRID>
      <svTRID>SV-20250101-DOM007</svTRID>
    </trID>
  </response>
</epp>

poll (op="req")

Retrieves the next message from the poll queue, such as transfer results or server notices.

Request – poll next message

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <command>
    <poll op="req"/>
    <clTRID>POLL-20250101-0001</clTRID>
  </command>
</epp>

Response – example poll message

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
>
  <response>
    <result code="1300">
      <msg>Command completed successfully; message exists</msg>
    </result>
    <msgQ count="3" id="12345">
      <qDate>2025-01-01T12:05:00.0Z</qDate>
      <msg>Domain example.nz created</msg>
    </msgQ>
    <trID>
      <clTRID>POLL-20250101-0001</clTRID>
      <svTRID>SV-20250101-POLL001</svTRID>
    </trID>
  </response>
</epp>

poll (op="ack")

Acknowledges and removes a specific message from the poll queue, using the message ID from the previous <msgQ>.

Request – acknowledge message

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <command>
    <poll op="ack" msgID="12345"/>
    <clTRID>POLLACK-20250101-0001</clTRID>
  </command>
</epp>

Response – poll ack

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <msgQ count="2"></msgQ>
    <trID>
      <clTRID>POLLACK-20250101-0001</clTRID>
      <svTRID>SV-20250101-POLL002</svTRID>
    </trID>
  </response>
</epp>

Error examples

The test server returns standard EPP result codes. Below are some example responses that may occur during integration.

Invalid authInfo (domain transfer)

<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <response>
    <result code="2202">
      <msg>Invalid authorization information</msg>
    </result>
    <trID>
      <clTRID>DOMAIN-TRANSFER-20250101-0002</clTRID>
      <svTRID>SV-20250101-ERR001</svTRID>
    </trID>
  </response>
</epp>

Object exists (domain:create)

<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <response>
    <result code="2302">
      <msg>Object exists: example.nz</msg>
    </result>
    <trID>
      <clTRID>DOMAIN-CREATE-20250101-0002</clTRID>
      <svTRID>SV-20250101-ERR002</svTRID>
    </trID>
  </response>
</epp>

Object does not exist (contact:info)

<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <response>
    <result code="2303">
      <msg>Object does not exist: con9999</msg>
    </result>
    <trID>
      <clTRID>CONTACT-INFO-20250101-0002</clTRID>
      <svTRID>SV-20250101-ERR003</svTRID>
    </trID>
  </response>
</epp>

Not authorised (wrong sponsoring registrar)

<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <response>
    <result code="2201">
      <msg>Authorization error: not sponsoring registrar</msg>
    </result>
    <trID>
      <clTRID>DOMAIN-UPDATE-20250101-0002</clTRID>
      <svTRID>SV-20250101-ERR004</svTRID>
    </trID>
  </response>
</epp>

Result codes follow RFC 5730 conventions: 1xxx success, 2xxx client/server errors and security errors, and 23xx object state or existence errors. Exact wording and codes are determined by this test implementation.