<?xml version="1.0" encoding="UTF-8"?>
<s:schema xmlns:s="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <s:element name="ediMessage" minOccurs="0" maxOccurs="unbounded">
    <s:complexType>
      <s:sequence>
        <s:element name="messageHeader" minOccurs="0" maxOccurs="unbounded">
          <s:complexType>
            <s:sequence>
              <s:element name="messageId" type="s:string" minOccurs="0" maxOccurs="1"/>
              <s:element name="messageDate" type="s:string" minOccurs="0" maxOccurs="1"/>
              <s:element name="messageTime" type="s:string" minOccurs="0" maxOccurs="1"/>
              <s:element name="messageType" type="s:string" minOccurs="0" maxOccurs="1"/>
              <s:element name="messageVersion" type="s:string" minOccurs="0" maxOccurs="1"/>
              <s:element name="messageScope" type="s:string" minOccurs="0" maxOccurs="1"/>
            </s:sequence>
          </s:complexType>
        </s:element>
        <s:element name="importCustomsDeclaration" minOccurs="0" maxOccurs="unbounded">
          <s:complexType>
            <s:sequence>
              <s:element name="accountId" type="s:string" minOccurs="0" maxOccurs="1"/>
              <s:element name="orderId" type="s:string" minOccurs="0" maxOccurs="1"/>
              <s:element name="deliveryTerm" minOccurs="0" maxOccurs="unbounded">
                <s:complexType>
                  <s:sequence>
                    <s:element name="deliveryTermCode" type="s:string" minOccurs="0" maxOccurs="1"/>
                    <s:element name="deliveryTermLocation" type="s:string" minOccurs="0" maxOccurs="1"/>
                  </s:sequence>
                </s:complexType>
              </s:element>
              <s:element name="customsBorder" type="s:string" minOccurs="0" maxOccurs="1"/>
              <s:element name="eoriNumber" type="s:string" minOccurs="0" maxOccurs="1"/>
              <s:element name="invoice" minOccurs="0" maxOccurs="unbounded">
                <s:complexType>
                  <s:sequence>
                    <s:element name="invoiceHeader" minOccurs="0" maxOccurs="unbounded">
                      <s:complexType>
                        <s:sequence>
                          <s:element name="clientCustomerNumber" type="s:string" minOccurs="0" maxOccurs="1"/>
                          <s:element name="clientEmailAddresses" minOccurs="0" maxOccurs="unbounded">
                            <s:complexType>
                              <s:sequence>
                                <s:element name="clientEmailAddress" type="s:string" minOccurs="0" maxOccurs="unbounded"/>
                              </s:sequence>
                            </s:complexType>
                          </s:element>
                          <s:element name="invoiceDate" minOccurs="0" maxOccurs="unbounded">
                            <s:complexType>
                              <s:sequence>
                                <s:element name="date" type="s:string" minOccurs="0" maxOccurs="1"/>
                              </s:sequence>
                            </s:complexType>
                          </s:element>
                          <s:element name="invoiceNumber" type="s:string" minOccurs="0" maxOccurs="1"/>
                          <s:element name="receiver" minOccurs="0" maxOccurs="unbounded">
                            <s:complexType>
                              <s:sequence>
                                <s:element name="partyCode" type="s:string" minOccurs="0" maxOccurs="1"/>
                                <s:element name="name" type="s:string" minOccurs="0" maxOccurs="1"/>
                                <s:element name="address" type="s:string" minOccurs="0" maxOccurs="1"/>
                                <s:element name="city" type="s:string" minOccurs="0" maxOccurs="1"/>
                                <s:element name="zipCode" type="s:string" minOccurs="0" maxOccurs="1"/>
                                <s:element name="countryCode" type="s:string" minOccurs="0" maxOccurs="1"/>
                              </s:sequence>
                            </s:complexType>
                          </s:element>
                          <s:element name="sender" minOccurs="0" maxOccurs="unbounded">
                            <s:complexType>
                              <s:sequence>
                                <s:element name="partyCode" type="s:string" minOccurs="0" maxOccurs="1"/>
                                <s:element name="name" type="s:string" minOccurs="0" maxOccurs="1"/>
                                <s:element name="address" type="s:string" minOccurs="0" maxOccurs="1"/>
                                <s:element name="city" type="s:string" minOccurs="0" maxOccurs="1"/>
                                <s:element name="zipCode" type="s:string" minOccurs="0" maxOccurs="1"/>
                                <s:element name="countryCode" type="s:string" minOccurs="0" maxOccurs="1"/>
                              </s:sequence>
                            </s:complexType>
                          </s:element>
                          <s:element name="documents" minOccurs="0" maxOccurs="unbounded">
                            <s:complexType>
                              <s:sequence>
                                <s:element name="document" minOccurs="0" maxOccurs="unbounded">
                                  <s:complexType>
                                    <s:sequence>
                                      <s:element name="documentType" type="s:string" minOccurs="0" maxOccurs="1"/>
                                      <s:element name="referenceNumber" type="s:string" minOccurs="0" maxOccurs="1"/>
                                    </s:sequence>
                                  </s:complexType>
                                </s:element>
                              </s:sequence>
                            </s:complexType>
                          </s:element>
                        </s:sequence>
                      </s:complexType>
                    </s:element>
                    <s:element name="invoicePositions" minOccurs="0" maxOccurs="unbounded">
                      <s:complexType>
                        <s:sequence>
                          <s:element name="invoicePosition" minOccurs="0" maxOccurs="unbounded">
                            <s:complexType>
                              <s:sequence>
                                <s:element name="articleNumber" type="s:string" minOccurs="0" maxOccurs="1"/>
                                <s:element name="articleDescription" type="s:string" minOccurs="0" maxOccurs="1"/>
                                <s:element name="customsTariffNumber" type="s:string" minOccurs="0" maxOccurs="1"/>
                                <s:element name="deliveryNoteNumber" type="s:string" minOccurs="0" maxOccurs="1"/>
                                <s:element name="quantity" type="s:string" minOccurs="0" maxOccurs="1"/>
                                <s:element name="totalPrice" type="s:string" minOccurs="0" maxOccurs="1"/>
                                <s:element name="netWeight" type="s:string" minOccurs="0" maxOccurs="1"/>
                                <s:element name="procedureCode" type="s:string" minOccurs="0" maxOccurs="1"/>
                                <s:element name="additionalProcedureCode" type="s:string" minOccurs="0" maxOccurs="1"/>
                                <s:element name="countryOfOrigin" type="s:string" minOccurs="0" maxOccurs="1"/>
                              </s:sequence>
                            </s:complexType>
                          </s:element>
                        </s:sequence>
                      </s:complexType>
                    </s:element>
                    <s:element name="invoiceFooter" minOccurs="0" maxOccurs="unbounded">
                      <s:complexType>
                        <s:sequence>
                          <s:element name="freightCosts" type="s:string" minOccurs="0" maxOccurs="1"/>
                          <s:element name="currencyCode" type="s:string" minOccurs="0" maxOccurs="1"/>
                          <s:element name="invoiceTotal" type="s:string" minOccurs="0" maxOccurs="1"/>
                        </s:sequence>
                      </s:complexType>
                    </s:element>
                  </s:sequence>
                </s:complexType>
              </s:element>
              <s:element name="packaging" minOccurs="0" maxOccurs="unbounded">
                <s:complexType>
                  <s:sequence>
                    <s:element name="packageType" type="s:string" minOccurs="0" maxOccurs="1"/>
                    <s:element name="grossWeight" type="s:string" minOccurs="0" maxOccurs="1"/>
                    <s:element name="packagesTotal" type="s:string" minOccurs="0" maxOccurs="1"/>
                    <s:element name="packagingReference" type="s:string" minOccurs="0" maxOccurs="1"/>
                  </s:sequence>
                </s:complexType>
              </s:element>
            </s:sequence>
          </s:complexType>
        </s:element>
      </s:sequence>
    </s:complexType>
  </s:element>
</s:schema>
