<?xml version="1.0" encoding="utf-8"?>
<xsd:schema
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:tns="urn:schemas-cybersource-com:transaction-data-1.4"
  targetNamespace="urn:schemas-cybersource-com:transaction-data-1.4"
  elementFormDefault="qualified"
  attributeFormDefault="unqualified">

  <xsd:simpleType name="amount">
    <xsd:restriction base="xsd:string"/>
  </xsd:simpleType>

  <xsd:simpleType name="boolean">
    <xsd:restriction base="xsd:string"/>
  </xsd:simpleType>

  <xsd:simpleType name="dateTime">
    <xsd:restriction base="xsd:string"/>
  </xsd:simpleType>

  <xsd:complexType name="Item">
    <xsd:sequence>
      <xsd:element name="unitPrice" type="tns:amount" minOccurs="0"/>
      <xsd:element name="quantity" type="xsd:integer" minOccurs="0"/>
      <xsd:element name="productCode" type="xsd:string" minOccurs="0"/>
      <xsd:element name="productName" type="xsd:string" minOccurs="0"/>
      <xsd:element name="productSKU" type="xsd:string" minOccurs="0"/>
      <xsd:element name="productRisk" type="xsd:string" minOccurs="0"/>
      <xsd:element name="taxAmount" type="tns:amount" minOccurs="0"/>
      <xsd:element name="cityOverrideAmount" type="tns:amount" minOccurs="0"/>
      <xsd:element name="cityOverrideRate" type="tns:amount" minOccurs="0"/>
      <xsd:element name="countyOverrideAmount" type="tns:amount" minOccurs="0"/>
      <xsd:element name="countyOverrideRate" type="tns:amount" minOccurs="0"/>
      <xsd:element name="districtOverrideAmount" type="tns:amount" minOccurs="0"/>
      <xsd:element name="districtOverrideRate" type="tns:amount" minOccurs="0"/>
      <xsd:element name="stateOverrideAmount" type="tns:amount" minOccurs="0"/>
      <xsd:element name="stateOverrideRate" type="tns:amount" minOccurs="0"/>
      <xsd:element name="countryOverrideAmount" type="tns:amount" minOccurs="0"/>
      <xsd:element name="countryOverrideRate" type="tns:amount" minOccurs="0"/>
      <xsd:element name="orderAcceptanceCity" type="xsd:string" minOccurs="0"/>
      <xsd:element name="orderAcceptanceCounty" type="xsd:string" minOccurs="0"/>
      <xsd:element name="orderAcceptanceCountry" type="xsd:string" minOccurs="0"/>
      <xsd:element name="orderAcceptanceState" type="xsd:string" minOccurs="0"/>
      <xsd:element name="orderAcceptancePostalCode" type="xsd:string" minOccurs="0"/>
      <xsd:element name="orderOriginCity" type="xsd:string" minOccurs="0"/>
      <xsd:element name="orderOriginCounty" type="xsd:string" minOccurs="0"/>
      <xsd:element name="orderOriginCountry" type="xsd:string" minOccurs="0"/>
      <xsd:element name="orderOriginState" type="xsd:string" minOccurs="0"/>
      <xsd:element name="orderOriginPostalCode" type="xsd:string" minOccurs="0"/>
      <xsd:element name="shipFromCity" type="xsd:string" minOccurs="0"/>
      <xsd:element name="shipFromCounty" type="xsd:string" minOccurs="0"/>
      <xsd:element name="shipFromCountry" type="xsd:string" minOccurs="0"/>
      <xsd:element name="shipFromState" type="xsd:string" minOccurs="0"/>
      <xsd:element name="shipFromPostalCode" type="xsd:string" minOccurs="0"/>
      <xsd:element name="export" type="xsd:string" minOccurs="0"/>
      <xsd:element name="noExport" type="xsd:string" minOccurs="0"/>
      <xsd:element name="nationalTax" type="tns:amount" minOccurs="0"/>
      <xsd:element name="vatRate" type="tns:amount" minOccurs="0"/>
      <xsd:element name="sellerRegistration" type="xsd:string" minOccurs="0"/>
      <xsd:element name="giftCategory" type="tns:boolean" minOccurs="0"/>
      <xsd:element name="timeCategory" type="xsd:string" minOccurs="0"/>
      <xsd:element name="hostHedge" type="xsd:string" minOccurs="0"/>
      <xsd:element name="timeHedge" type="xsd:string" minOccurs="0"/>
      <xsd:element name="velocityHedge" type="xsd:string" minOccurs="0"/>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:integer" use="optional"/>
  </xsd:complexType>

  <xsd:complexType name="CCAuthService">
    <xsd:sequence>
      <xsd:element name="cavv" type="xsd:string" minOccurs="0"/>
      <xsd:element name="commerceIndicator" type="xsd:string" minOccurs="0"/>
      <xsd:element name="xid" type="xsd:string" minOccurs="0"/>
      <xsd:element name="reconciliationID" type="xsd:string" minOccurs="0"/>
      <xsd:element name="avsLevel" type="xsd:string" minOccurs="0"/>
      <xsd:element name="fxQuoteID" type="xsd:string" minOccurs="0"/>
      <xsd:element name="returnAuthRecord" type="tns:boolean" minOccurs="0"/>
    </xsd:sequence>
    <xsd:attribute name="run" type="tns:boolean" use="required"/>
  </xsd:complexType>

  <xsd:complexType name="CCCaptureService">
    <xsd:sequence>
      <xsd:element name="authType" type="xsd:string" minOccurs="0"/>
      <xsd:element name="verbalAuthCode" type="xsd:string" minOccurs="0"/>
      <xsd:element name="authRequestID" type="xsd:string" minOccurs="0"/>
      <xsd:element name="transactionToken" type="xsd:string" minOccurs="0"/>
      <xsd:element name="reconciliationID" type="xsd:string" minOccurs="0"/>
    </xsd:sequence>
    <xsd:attribute name="run" type="tns:boolean" use="required"/>
  </xsd:complexType>

  <xsd:complexType name="CCCreditService">
    <xsd:sequence>
      <xsd:element name="captureRequestID" type="xsd:string" minOccurs="0"/>
      <xsd:element name="transactionToken" type="xsd:string" minOccurs="0"/>
      <xsd:element name="reconciliationID" type="xsd:string" minOccurs="0"/>
    </xsd:sequence>
    <xsd:attribute name="run" type="tns:boolean" use="required"/>
  </xsd:complexType>

  <xsd:complexType name="CCAuthReversalService">
    <xsd:sequence>
      <xsd:element name="authRequestID" type="xsd:string"/>
      <xsd:element name="transactionToken" type="xsd:string" minOccurs="0"/>
    </xsd:sequence>
    <xsd:attribute name="run" type="tns:boolean" use="required"/>
  </xsd:complexType>

  <xsd:complexType name="ECDebitService">
    <xsd:sequence>
      <xsd:element name="paymentMode" type="xsd:integer" minOccurs="0"/>
      <xsd:element name="referenceNumber" type="xsd:string" minOccurs="0"/>
      <xsd:element name="settlementMethod" type="xsd:string" minOccurs="0"/>
      <xsd:element name="transactionToken" type="xsd:string" minOccurs="0"/>
      <xsd:element name="verificationLevel" type="xsd:integer" minOccurs="0"/>
    </xsd:sequence>
    <xsd:attribute name="run" type="tns:boolean" use="required"/>
  </xsd:complexType>

  <xsd:complexType name="ECCreditService">
    <xsd:sequence>
      <xsd:element name="referenceNumber" type="xsd:string" minOccurs="0"/>
      <xsd:element name="settlementMethod" type="xsd:string" minOccurs="0"/>
      <xsd:element name="transactionToken" type="xsd:string" minOccurs="0"/>
      <xsd:element name="debitRequestID" type="xsd:string" minOccurs="0"/>
    </xsd:sequence>
    <xsd:attribute name="run" type="tns:boolean" use="required"/>
  </xsd:complexType>

  <xsd:complexType name="PayerAuthEnrollService">
    <xsd:sequence>
      <xsd:element name="httpAccept" type="xsd:string" minOccurs="0"/>
      <xsd:element name="httpUserAgent" type="xsd:string" minOccurs="0"/>
      <xsd:element name="merchantName" type="xsd:string" minOccurs="0"/>
      <xsd:element name="merchantURL" type="xsd:string" minOccurs="0"/>
      <xsd:element name="purchaseDescription" type="xsd:string" minOccurs="0"/>
      <xsd:element name="purchaseTime" type="tns:dateTime" minOccurs="0"/>
    </xsd:sequence>
    <xsd:attribute name="run" type="tns:boolean" use="required"/>
  </xsd:complexType>

  <xsd:complexType name="PayerAuthValidateService">
    <xsd:sequence>
      <xsd:element name="signedPARes" type="xsd:string" minOccurs="0"/>
    </xsd:sequence>
    <xsd:attribute name="run" type="tns:boolean" use="required"/>
  </xsd:complexType>

  <xsd:complexType name="TaxService">
    <xsd:sequence>
      <xsd:element name="nexus" type="xsd:string" minOccurs="0"/>
      <xsd:element name="noNexus" type="xsd:string" minOccurs="0"/>
      <xsd:element name="orderAcceptanceCity" type="xsd:string" minOccurs="0"/>
      <xsd:element name="orderAcceptanceCounty" type="xsd:string" minOccurs="0"/>
      <xsd:element name="orderAcceptanceCountry" type="xsd:string" minOccurs="0"/>
      <xsd:element name="orderAcceptanceState" type="xsd:string" minOccurs="0"/>
      <xsd:element name="orderAcceptancePostalCode" type="xsd:string" minOccurs="0"/>
      <xsd:element name="orderOriginCity" type="xsd:string" minOccurs="0"/>
      <xsd:element name="orderOriginCounty" type="xsd:string" minOccurs="0"/>
      <xsd:element name="orderOriginCountry" type="xsd:string" minOccurs="0"/>
      <xsd:element name="orderOriginState" type="xsd:string" minOccurs="0"/>
      <xsd:element name="orderOriginPostalCode" type="xsd:string" minOccurs="0"/>
      <xsd:element name="sellerRegistration" type="xsd:string" minOccurs="0"/>
    </xsd:sequence>
    <xsd:attribute name="run" type="tns:boolean" use="required"/>
  </xsd:complexType>

  <xsd:complexType name="AFSService">
    <xsd:sequence>
      <xsd:element name="avsCode" type="xsd:string" minOccurs="0"/>
      <xsd:element name="cvCode" type="xsd:string" minOccurs="0"/>
      <xsd:element name="disableAVSScoring" type="tns:boolean" minOccurs="0"/>
    </xsd:sequence>
    <xsd:attribute name="run" type="tns:boolean" use="required"/>
  </xsd:complexType>

  <xsd:complexType name="DAVService">
    <xsd:attribute name="run" type="tns:boolean" use="required"/>
  </xsd:complexType>

  <xsd:complexType name="ExportService">
    <xsd:sequence>
      <xsd:element name="addressOperator" type="xsd:string" minOccurs="0"/>
      <xsd:element name="addressWeight" type="xsd:string" minOccurs="0"/>
      <xsd:element name="companyWeight" type="xsd:string" minOccurs="0"/>
      <xsd:element name="nameWeight" type="xsd:string" minOccurs="0"/>
    </xsd:sequence>
    <xsd:attribute name="run" type="tns:boolean" use="required"/>
  </xsd:complexType>

  <xsd:complexType name="FXRatesService">
    <xsd:attribute name="run" type="tns:boolean" use="required"/>
  </xsd:complexType>

  <xsd:complexType name="BankTransferService">
    <xsd:attribute name="run" type="tns:boolean" use="required"/>
  </xsd:complexType>

  <xsd:complexType name="BankTransferRefundService">
    <xsd:sequence>
      <xsd:element name="bankTransferRequestID" type="xsd:string" minOccurs="0"/>
    </xsd:sequence>
    <xsd:attribute name="run" type="tns:boolean" use="required"/>
  </xsd:complexType>

  <xsd:complexType name="DirectDebitService">
    <xsd:sequence>
      <xsd:element name="dateCollect" type="xsd:string" minOccurs="0"/>
      <xsd:element name="directDebitText" type="xsd:string" minOccurs="0"/>
      <xsd:element name="authorizationID" type="xsd:string" minOccurs="0"/>
      <xsd:element name="transactionType" type="xsd:string" minOccurs="0"/>
      <xsd:element name="directDebitType" type="xsd:string" minOccurs="0"/>
    </xsd:sequence>
    <xsd:attribute name="run" type="tns:boolean" use="required"/>
  </xsd:complexType>

  <xsd:complexType name="DirectDebitRefundService">
    <xsd:sequence>
      <xsd:element name="directDebitRequestID" type="xsd:string" minOccurs="0"/>
    </xsd:sequence>
    <xsd:attribute name="run" type="tns:boolean" use="required"/>
  </xsd:complexType>

  <xsd:complexType name="PaySubscriptionCreateService">
    <xsd:sequence>
      <xsd:element name="paymentRequestID" type="xsd:string" minOccurs="0"/>
    </xsd:sequence>
    <xsd:attribute name="run" type="tns:boolean" use="required"/>
  </xsd:complexType>

  <xsd:complexType name="PaySubscriptionUpdateService">
    <xsd:attribute name="run" type="tns:boolean" use="required"/>
  </xsd:complexType>

  <xsd:complexType name="InvoiceHeader">
    <xsd:sequence>
      <xsd:element name="merchantDescriptor" type="xsd:string" minOccurs="0"/>
      <xsd:element name="merchantDescriptorContact" type="xsd:string" minOccurs="0"/>
      <xsd:element name="isGift" type="tns:boolean" minOccurs="0"/>
      <xsd:element name="returnsAccepted" type="tns:boolean" minOccurs="0"/>
      <xsd:element name="tenderType" type="xsd:string" minOccurs="0"/>
      <xsd:element name="merchantVATRegistrationNumber" type="xsd:string" minOccurs="0"/>
      <xsd:element name="purchaserOrderDate" type="xsd:string" minOccurs="0"/> <!-- xsd:date -->
      <xsd:element name="purchaserVATRegistrationNumber" type="xsd:string" minOccurs="0"/>
      <xsd:element name="summaryCommodityCode" type="xsd:string" minOccurs="0"/>
      <xsd:element name="supplierOrderReference" type="xsd:string" minOccurs="0"/>
      <xsd:element name="userPO" type="xsd:string" minOccurs="0"/>
      <xsd:element name="costCenter" type="xsd:string" minOccurs="0"/>
      <xsd:element name="purchaserCode" type="xsd:string" minOccurs="0"/>
      <xsd:element name="taxable" type="tns:boolean" minOccurs="0"/>
      <xsd:element name="amexDataTAA1" type="xsd:string" minOccurs="0"/>
      <xsd:element name="amexDataTAA2" type="xsd:string" minOccurs="0"/>
      <xsd:element name="amexDataTAA3" type="xsd:string" minOccurs="0"/>
      <xsd:element name="amexDataTAA4" type="xsd:string" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="BusinessRules">
    <xsd:sequence>
      <xsd:element name="ignoreAVSResult" type="tns:boolean" minOccurs="0"/>
      <xsd:element name="ignoreCVResult" type="tns:boolean" minOccurs="0"/>
      <xsd:element name="ignoreDAVResult" type="tns:boolean" minOccurs="0"/>
      <xsd:element name="ignoreExportResult" type="tns:boolean" minOccurs="0"/>
      <xsd:element name="ignoreValidateResult" type="tns:boolean" minOccurs="0"/>
      <xsd:element name="declineAVSFlags" type="xsd:string" minOccurs="0"/>
      <xsd:element name="scoreThreshold" type="xsd:integer" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="BillTo">
    <xsd:sequence>
      <xsd:element name="title" type="xsd:string" minOccurs="0"/>
      <xsd:element name="firstName" type="xsd:string" minOccurs="0"/>
      <xsd:element name="middleName" type="xsd:string" minOccurs="0"/>
      <xsd:element name="lastName" type="xsd:string" minOccurs="0"/>
      <xsd:element name="suffix" type="xsd:string" minOccurs="0"/>
      <xsd:element name="street1" type="xsd:string" minOccurs="0"/>
      <xsd:element name="street2" type="xsd:string" minOccurs="0"/>
      <xsd:element name="street3" type="xsd:string" minOccurs="0"/>
      <xsd:element name="street4" type="xsd:string" minOccurs="0"/>
      <xsd:element name="city" type="xsd:string" minOccurs="0"/>
      <xsd:element name="county" type="xsd:string" minOccurs="0"/>
      <xsd:element name="state" type="xsd:string" minOccurs="0"/>
      <xsd:element name="postalCode" type="xsd:string" minOccurs="0"/>
      <xsd:element name="country" type="xsd:string" minOccurs="0"/>
      <xsd:element name="company" type="xsd:string" minOccurs="0"/>
      <xsd:element name="companyTaxID" type="xsd:string" minOccurs="0"/>
      <xsd:element name="phoneNumber" type="xsd:string" minOccurs="0"/>
      <xsd:element name="email" type="xsd:string" minOccurs="0"/>
      <xsd:element name="ipAddress" type="xsd:string" minOccurs="0"/>
      <xsd:element name="hostname" type="xsd:string" minOccurs="0"/>
      <xsd:element name="dateOfBirth" type="xsd:string" minOccurs="0"/> <!-- xsd:date -->
      <xsd:element name="driversLicenseNumber" type="xsd:string" minOccurs="0"/>
      <xsd:element name="driversLicenseState" type="xsd:string" minOccurs="0"/>
      <xsd:element name="ssn" type="xsd:string" minOccurs="0"/>
      <xsd:element name="userID" type="xsd:string" minOccurs="0"/>
      <xsd:element name="httpBrowserType" type="xsd:string" minOccurs="0"/>
      <xsd:element name="httpBrowserEmail" type="xsd:string" minOccurs="0"/>
      <xsd:element name="httpBrowserCookiesAccepted" type="tns:boolean" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="ShipTo">
    <xsd:sequence>
      <xsd:element name="title" type="xsd:string" minOccurs="0"/>
      <xsd:element name="firstName" type="xsd:string" minOccurs="0"/>
      <xsd:element name="middleName" type="xsd:string" minOccurs="0"/>
      <xsd:element name="lastName" type="xsd:string" minOccurs="0"/>
      <xsd:element name="suffix" type="xsd:string" minOccurs="0"/>
      <xsd:element name="street1" type="xsd:string" minOccurs="0"/>
      <xsd:element name="street2" type="xsd:string" minOccurs="0"/>
      <xsd:element name="street3" type="xsd:string" minOccurs="0"/>
      <xsd:element name="street4" type="xsd:string" minOccurs="0"/>
      <xsd:element name="city" type="xsd:string" minOccurs="0"/>
      <xsd:element name="county" type="xsd:string" minOccurs="0"/>
      <xsd:element name="state" type="xsd:string" minOccurs="0"/>
      <xsd:element name="postalCode" type="xsd:string" minOccurs="0"/>
      <xsd:element name="country" type="xsd:string" minOccurs="0"/>
      <xsd:element name="company" type="xsd:string" minOccurs="0"/>
      <xsd:element name="phoneNumber" type="xsd:string" minOccurs="0"/>
      <xsd:element name="email" type="xsd:string" minOccurs="0"/>
      <xsd:element name="shippingMethod" type="xsd:string" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="ShipFrom">
    <xsd:sequence>
      <xsd:element name="title" type="xsd:string" minOccurs="0"/>
      <xsd:element name="firstName" type="xsd:string" minOccurs="0"/>
      <xsd:element name="middleName" type="xsd:string" minOccurs="0"/>
      <xsd:element name="lastName" type="xsd:string" minOccurs="0"/>
      <xsd:element name="suffix" type="xsd:string" minOccurs="0"/>
      <xsd:element name="street1" type="xsd:string" minOccurs="0"/>
      <xsd:element name="street2" type="xsd:string" minOccurs="0"/>
      <xsd:element name="street3" type="xsd:string" minOccurs="0"/>
      <xsd:element name="street4" type="xsd:string" minOccurs="0"/>
      <xsd:element name="city" type="xsd:string" minOccurs="0"/>
      <xsd:element name="county" type="xsd:string" minOccurs="0"/>
      <xsd:element name="state" type="xsd:string" minOccurs="0"/>
      <xsd:element name="postalCode" type="xsd:string" minOccurs="0"/>
      <xsd:element name="country" type="xsd:string" minOccurs="0"/>
      <xsd:element name="company" type="xsd:string" minOccurs="0"/>
      <xsd:element name="phoneNumber" type="xsd:string" minOccurs="0"/>
      <xsd:element name="email" type="xsd:string" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="Card">
    <xsd:sequence>
      <xsd:element name="fullName" type="xsd:string" minOccurs="0"/>
      <xsd:element name="accountNumber" type="xsd:string" minOccurs="0"/>
      <xsd:element name="expirationMonth" type="xsd:integer" minOccurs="0"/>
      <xsd:element name="expirationYear" type="xsd:integer" minOccurs="0"/>
      <xsd:element name="cvIndicator" type="xsd:string" minOccurs="0"/>
      <xsd:element name="cvNumber" type="xsd:string" minOccurs="0"/>
      <xsd:element name="cardType" type="xsd:string" minOccurs="0"/>
      <xsd:element name="issueNumber" type="xsd:string" minOccurs="0"/>
      <xsd:element name="startMonth" type="xsd:integer" minOccurs="0"/>
      <xsd:element name="startYear" type="xsd:integer" minOccurs="0"/>
      <xsd:element name="pin" type="xsd:string" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="Check">
    <xsd:sequence>
      <xsd:element name="fullName" type="xsd:string" minOccurs="0"/>
      <xsd:element name="accountNumber" type="xsd:string" minOccurs="0"/>
      <xsd:element name="accountType" type="xsd:string" minOccurs="0"/>
      <xsd:element name="bankTransitNumber" type="xsd:string" minOccurs="0"/>
      <xsd:element name="checkNumber" type="xsd:string" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="BML">
    <xsd:sequence>
      <xsd:element name="customerBillingAddressChange" type="tns:boolean" minOccurs="0"/>
      <xsd:element name="customerEmailChange" type="tns:boolean" minOccurs="0"/>
      <xsd:element name="customerHasCheckingAccount" type="tns:boolean" minOccurs="0"/>
      <xsd:element name="customerHasSavingsAccount" type="tns:boolean" minOccurs="0"/>
      <xsd:element name="customerPasswordChange" type="tns:boolean" minOccurs="0"/>
      <xsd:element name="customerPhoneChange" type="tns:boolean" minOccurs="0"/>
      <xsd:element name="customerRegistrationDate" type="xsd:string" minOccurs="0"/> <!-- xsd:date -->
      <xsd:element name="customerTypeFlag" type="xsd:string" minOccurs="0"/>
      <xsd:element name="grossHouseholdIncome" type="tns:amount" minOccurs="0"/>
      <xsd:element name="householdIncomeCurrency" type="xsd:string" minOccurs="0"/>
      <xsd:element name="itemCategory" type="xsd:string" minOccurs="0"/>
      <xsd:element name="merchantPromotionCode" type="xsd:string" minOccurs="0"/>
      <xsd:element name="preapprovalNumber" type="xsd:string" minOccurs="0"/>
      <xsd:element name="productDeliveryTypeIndicator" type="xsd:string" minOccurs="0"/>
      <xsd:element name="residenceStatus" type="xsd:string" minOccurs="0"/>
      <xsd:element name="tcVersion" type="xsd:string" minOccurs="0"/>
      <xsd:element name="yearsAtCurrentResidence" type="xsd:integer" minOccurs="0"/>
      <xsd:element name="yearsWithCurrentEmployer" type="xsd:integer" minOccurs="0"/>
      <xsd:element name="employerStreet1" type="xsd:string" minOccurs="0"/>
      <xsd:element name="employerStreet2" type="xsd:string" minOccurs="0"/>
      <xsd:element name="employerCity" type="xsd:string" minOccurs="0"/>
      <xsd:element name="employerCompanyName" type="xsd:string" minOccurs="0"/>
      <xsd:element name="employerCountry" type="xsd:string" minOccurs="0"/>
      <xsd:element name="employerPhoneNumber" type="xsd:string" minOccurs="0"/>
      <xsd:element name="employerPhoneType" type="xsd:string" minOccurs="0"/>
      <xsd:element name="employerState" type="xsd:string" minOccurs="0"/>
      <xsd:element name="employerPostalCode" type="xsd:string" minOccurs="0"/>
      <xsd:element name="shipToPhoneType" type="xsd:string" minOccurs="0"/>
      <xsd:element name="billToPhoneType" type="xsd:string" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="PurchaseTotals">
    <xsd:sequence>
      <xsd:element name="currency" type="xsd:string" minOccurs="0"/>
      <xsd:element name="discountAmount" type="tns:amount" minOccurs="0"/>
      <xsd:element name="taxAmount" type="tns:amount" minOccurs="0"/>
      <xsd:element name="dutyAmount" type="tns:amount" minOccurs="0"/>
      <xsd:element name="grandTotalAmount" type="tns:amount" minOccurs="0"/>
      <xsd:element name="subtotalAmount" type="tns:amount" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="FundingTotals">
    <xsd:sequence>
      <xsd:element name="currency" type="xsd:string" minOccurs="0"/>
      <xsd:element name="grandTotalAmount" type="tns:amount" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="GECC">
    <xsd:sequence>
      <xsd:element name="saleType" type="xsd:string" minOccurs="0"/>
      <xsd:element name="planNumber" type="xsd:string" minOccurs="0"/>
      <xsd:element name="sequenceNumber" type="xsd:string" minOccurs="0"/>
      <xsd:element name="promotionEndDate" type="xsd:string" minOccurs="0"/>
      <xsd:element name="promotionPlan" type="xsd:string" minOccurs="0"/>
      <xsd:element name="line" type="xsd:string" minOccurs="0" maxOccurs="7"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="UCAF">
    <xsd:sequence>
      <xsd:element name="authenticationData" type="xsd:string" minOccurs="0"/>
      <xsd:element name="collectionIndicator" type="xsd:string" minOccurs="0"/>
      <xsd:element name="merchantName" type="xsd:string" minOccurs="0"/>
      <xsd:element name="mts" type="xsd:string" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="FundTransfer">
    <xsd:sequence>
      <xsd:element name="accountNumber" type="xsd:string" minOccurs="0"/>
      <xsd:element name="accountName" type="xsd:string" minOccurs="0"/>
      <xsd:element name="bankCheckDigit" type="xsd:string" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="BankInfo">
    <xsd:sequence>
      <xsd:element name="bankCode" type="xsd:string" minOccurs="0"/>
      <xsd:element name="name" type="xsd:string" minOccurs="0"/>
      <xsd:element name="address" type="xsd:string" minOccurs="0"/>
      <xsd:element name="city" type="xsd:string" minOccurs="0"/>
      <xsd:element name="country" type="xsd:string" minOccurs="0"/>
      <xsd:element name="branchCode" type="xsd:string" minOccurs="0"/>
      <xsd:element name="swiftCode" type="xsd:string" minOccurs="0"/>
      <xsd:element name="sortCode" type="xsd:string" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="RecurringSubscriptionInfo">
    <xsd:sequence>
      <xsd:element name="subscriptionID" type="xsd:string" minOccurs="0"/>
      <xsd:element name="status" type="xsd:string" minOccurs="0"/>
      <xsd:element name="amount" type="tns:amount" minOccurs="0"/>
      <xsd:element name="numberOfPayments" type="xsd:integer" minOccurs="0"/>
      <xsd:element name="automaticRenew" type="tns:boolean" minOccurs="0"/>
      <xsd:element name="frequency" type="xsd:string" minOccurs="0"/>
      <xsd:element name="startDate" type="xsd:string" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="Subscription">
    <xsd:sequence>
      <xsd:element name="title" type="xsd:string" minOccurs="0"/>
      <xsd:element name="paymentMethod" type="xsd:string" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="RequestMessage">
    <xsd:sequence>
      <xsd:element name="merchantID" type="xsd:string" minOccurs="0"/>
      <xsd:element name="merchantReferenceCode" type="xsd:string" minOccurs="0"/>
      <xsd:element name="clientLibrary" type="xsd:string" minOccurs="0"/>
      <xsd:element name="clientLibraryVersion" type="xsd:string" minOccurs="0"/>
      <xsd:element name="clientEnvironment" type="xsd:string" minOccurs="0"/>
      <xsd:element name="clientSecurityLibraryVersion" type="xsd:string" minOccurs="0"/>
      <xsd:element name="clientApplication" type="xsd:string" minOccurs="0"/>
      <xsd:element name="clientApplicationVersion" type="xsd:string" minOccurs="0"/>
      <xsd:element name="clientApplicationUser" type="xsd:string" minOccurs="0"/>
      <xsd:element name="invoiceHeader" type="tns:InvoiceHeader" minOccurs="0"/>
      <xsd:element name="billTo" type="tns:BillTo" minOccurs="0"/>
      <xsd:element name="shipTo" type="tns:ShipTo" minOccurs="0"/>
      <xsd:element name="shipFrom" type="tns:ShipFrom" minOccurs="0"/>
      <xsd:element name="item" type="tns:Item" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="purchaseTotals" type="tns:PurchaseTotals" minOccurs="0"/>
      <xsd:element name="fundingTotals" type="tns:FundingTotals" minOccurs="0"/>
      <xsd:element name="card" type="tns:Card" minOccurs="0"/>
      <xsd:element name="check" type="tns:Check" minOccurs="0"/>
      <xsd:element name="bml" type="tns:BML" minOccurs="0"/>
      <xsd:element name="gecc" type="tns:GECC" minOccurs="0"/>
      <xsd:element name="ucaf" type="tns:UCAF" minOccurs="0"/>
      <xsd:element name="fundTransfer" type="tns:FundTransfer" minOccurs="0"/>
      <xsd:element name="bankInfo" type="tns:BankInfo" minOccurs="0"/>
      <xsd:element name="subscription" type="tns:Subscription" minOccurs="0"/>
      <xsd:element name="recurringSubscriptionInfo" type="tns:RecurringSubscriptionInfo" minOccurs="0"/>
      <xsd:element name="ccAuthService" type="tns:CCAuthService" minOccurs="0"/>
      <xsd:element name="ccCaptureService" type="tns:CCCaptureService" minOccurs="0"/>
      <xsd:element name="ccCreditService" type="tns:CCCreditService" minOccurs="0"/>
      <xsd:element name="ccAuthReversalService" type="tns:CCAuthReversalService" minOccurs="0"/>
      <xsd:element name="ecDebitService" type="tns:ECDebitService" minOccurs="0"/>
      <xsd:element name="ecCreditService" type="tns:ECCreditService" minOccurs="0"/>
      <xsd:element name="payerAuthEnrollService" type="tns:PayerAuthEnrollService" minOccurs="0"/>
      <xsd:element name="payerAuthValidateService" type="tns:PayerAuthValidateService" minOccurs="0"/>
      <xsd:element name="taxService" type="tns:TaxService" minOccurs="0"/>
      <xsd:element name="afsService" type="tns:AFSService" minOccurs="0"/>
      <xsd:element name="davService" type="tns:DAVService" minOccurs="0"/>
      <xsd:element name="exportService" type="tns:ExportService" minOccurs="0"/>
      <xsd:element name="fxRatesService" type="tns:FXRatesService" minOccurs="0"/>
      <xsd:element name="bankTransferService" type="tns:BankTransferService" minOccurs="0"/>
      <xsd:element name="bankTransferRefundService" type="tns:BankTransferRefundService" minOccurs="0"/>
      <xsd:element name="directDebitService" type="tns:DirectDebitService" minOccurs="0"/>
      <xsd:element name="directDebitRefundService" type="tns:DirectDebitRefundService" minOccurs="0"/>
      <xsd:element name="paySubscriptionCreateService" type="tns:PaySubscriptionCreateService" minOccurs="0"/>
      <xsd:element name="paySubscriptionUpdateService" type="tns:PaySubscriptionUpdateService" minOccurs="0"/>
      <xsd:element name="businessRules" type="tns:BusinessRules" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="CCAuthReply">
    <xsd:sequence>
      <xsd:element name="reasonCode" type="xsd:integer"/>
      <xsd:element name="amount" type="tns:amount" minOccurs="0"/>
      <xsd:element name="authorizationCode" type="xsd:string" minOccurs="0"/>
      <xsd:element name="avsCode" type="xsd:string" minOccurs="0"/>
      <xsd:element name="avsCodeRaw" type="xsd:string" minOccurs="0"/>
      <xsd:element name="cvCode" type="xsd:string" minOccurs="0"/>
      <xsd:element name="cvCodeRaw" type="xsd:string" minOccurs="0"/>
      <xsd:element name="authorizedDateTime" type="tns:dateTime" minOccurs="0"/> <!-- dateTime -->
      <xsd:element name="processorResponse" type="xsd:string" minOccurs="0"/>
      <xsd:element name="bmlAccountNumber" type="xsd:string" minOccurs="0"/>
      <xsd:element name="authFactorCode" type="xsd:string" minOccurs="0"/>
      <xsd:element name="reconciliationID" type="xsd:string" minOccurs="0"/>
      <xsd:element name="transactionToken" type="xsd:string" minOccurs="0"/>
      <xsd:element name="fundingTotals" type="tns:FundingTotals" minOccurs="0"/>
      <xsd:element name="fxQuoteID" type="xsd:string" minOccurs="0"/>
      <xsd:element name="fxQuoteRate" type="tns:dateTime" minOccurs="0"/>
      <xsd:element name="fxQuoteType" type="xsd:string" minOccurs="0"/>
      <xsd:element name="fxQuoteExpirationDateTime" type="tns:dateTime" minOccurs="0"/>
      <xsd:element name="authRecord" type="xsd:string" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="CCCaptureReply">
    <xsd:sequence>
      <xsd:element name="reasonCode" type="xsd:integer"/>
      <xsd:element name="requestDateTime" type="tns:dateTime" minOccurs="0"/>
      <xsd:element name="amount" type="tns:amount" minOccurs="0"/>
      <xsd:element name="reconciliationID" type="xsd:string" minOccurs="0"/>
      <xsd:element name="transactionToken" type="xsd:string" minOccurs="0"/>
      <xsd:element name="fundingTotals" type="tns:FundingTotals" minOccurs="0"/>
      <xsd:element name="fxQuoteID" type="xsd:string" minOccurs="0"/>
      <xsd:element name="fxQuoteRate" type="tns:dateTime" minOccurs="0"/>
      <xsd:element name="fxQuoteType" type="xsd:string" minOccurs="0"/>
      <xsd:element name="fxQuoteExpirationDateTime" type="tns:dateTime" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="CCCreditReply">
    <xsd:sequence>
      <xsd:element name="reasonCode" type="xsd:integer"/>
      <xsd:element name="requestDateTime" type="tns:dateTime" minOccurs="0"/>
      <xsd:element name="amount" type="tns:amount" minOccurs="0"/>
      <xsd:element name="reconciliationID" type="xsd:string" minOccurs="0"/>
      <xsd:element name="transactionToken" type="xsd:string" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="CCAuthReversalReply">
    <xsd:sequence>
      <xsd:element name="reasonCode" type="xsd:integer"/>
      <xsd:element name="amount" type="tns:amount" minOccurs="0"/>
      <xsd:element name="authorizationCode" type="xsd:string" minOccurs="0"/>
      <xsd:element name="processorResponse" type="xsd:string" minOccurs="0"/>
      <xsd:element name="requestDateTime" type="tns:dateTime" minOccurs="0"/>
      <xsd:element name="transactionToken" type="xsd:string" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="ECDebitReply">
    <xsd:sequence>
      <xsd:element name="reasonCode" type="xsd:integer"/>
      <xsd:element name="settlementMethod" type="xsd:string" minOccurs="0"/>
      <xsd:element name="requestDateTime" type="tns:dateTime" minOccurs="0"/>
      <xsd:element name="amount" type="tns:amount" minOccurs="0"/>
      <xsd:element name="verificationLevel" type="xsd:integer" minOccurs="0"/>
      <xsd:element name="processorTransactionID" type="xsd:string" minOccurs="0"/>
      <xsd:element name="reconciliationID" type="xsd:string" minOccurs="0"/>
      <xsd:element name="processorResponse" type="xsd:string" minOccurs="0"/>
      <xsd:element name="transactionToken" type="xsd:string" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="ECCreditReply">
    <xsd:sequence>
      <xsd:element name="reasonCode" type="xsd:integer"/>
      <xsd:element name="settlementMethod" type="xsd:string" minOccurs="0"/>
      <xsd:element name="requestDateTime" type="tns:dateTime" minOccurs="0"/>
      <xsd:element name="amount" type="tns:amount" minOccurs="0"/>
      <xsd:element name="processorTransactionID" type="xsd:string" minOccurs="0"/>
      <xsd:element name="reconciliationID" type="xsd:string" minOccurs="0"/>
      <xsd:element name="processorResponse" type="xsd:string" minOccurs="0"/>
      <xsd:element name="transactionToken" type="xsd:string" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="PayerAuthEnrollReply">
    <xsd:sequence>
      <xsd:element name="reasonCode" type="xsd:integer"/>
      <xsd:element name="acsURL" type="xsd:string" minOccurs="0"/>
      <xsd:element name="commerceIndicator" type="xsd:string" minOccurs="0"/>
      <xsd:element name="paReq" type="xsd:string" minOccurs="0"/>
      <xsd:element name="proxyPAN" type="xsd:string" minOccurs="0"/>
      <xsd:element name="xid" type="xsd:string" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="PayerAuthValidateReply">
    <xsd:sequence>
      <xsd:element name="reasonCode" type="xsd:integer"/>
      <xsd:element name="authenticationResult" type="xsd:string" minOccurs="0"/>
      <xsd:element name="authenticationStatusMessage" type="xsd:string" minOccurs="0"/>
      <xsd:element name="cavv" type="xsd:string" minOccurs="0"/>
      <xsd:element name="commerceIndicator" type="xsd:string" minOccurs="0"/>
      <xsd:element name="eci" type="xsd:string" minOccurs="0"/>
      <xsd:element name="xid" type="xsd:string" minOccurs="0"/>
      <xsd:element name="ucafAuthenticationData" type="xsd:string" minOccurs="0"/>
      <xsd:element name="ucafCollectionIndicator" type="xsd:string" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="TaxReplyItem">
    <xsd:sequence>
      <xsd:element name="cityTaxAmount" type="tns:amount" minOccurs="0"/>
      <xsd:element name="countyTaxAmount" type="tns:amount" minOccurs="0"/>
      <xsd:element name="districtTaxAmount" type="tns:amount" minOccurs="0"/>
      <xsd:element name="stateTaxAmount" type="tns:amount" minOccurs="0"/>
      <xsd:element name="totalTaxAmount" type="tns:amount"/>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:integer" use="required"/>
  </xsd:complexType>

  <xsd:complexType name="TaxReply">
    <xsd:sequence>
      <xsd:element name="reasonCode" type="xsd:integer"/>
      <xsd:element name="currency" type="xsd:string" minOccurs="0"/>
      <xsd:element name="grandTotalAmount" type="tns:amount" minOccurs="0"/>
      <xsd:element name="totalCityTaxAmount" type="tns:amount" minOccurs="0"/>
      <xsd:element name="city" type="xsd:string" minOccurs="0"/>
      <xsd:element name="totalCountyTaxAmount" type="tns:amount" minOccurs="0"/>
      <xsd:element name="county" type="xsd:string" minOccurs="0"/>
      <xsd:element name="totalDistrictTaxAmount" type="tns:amount" minOccurs="0"/>
      <xsd:element name="totalStateTaxAmount" type="tns:amount" minOccurs="0"/>
      <xsd:element name="state" type="xsd:string" minOccurs="0"/>
      <xsd:element name="totalTaxAmount" type="tns:amount" minOccurs="0"/>
      <xsd:element name="postalCode" type="xsd:string" minOccurs="0"/>
      <xsd:element name="geocode" type="xsd:string" minOccurs="0"/>
      <xsd:element name="item" type="tns:TaxReplyItem" minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="AFSReply">
    <xsd:sequence>
      <xsd:element name="reasonCode" type="xsd:integer"/>
      <xsd:element name="afsResult" type="xsd:integer" minOccurs="0"/>
      <xsd:element name="hostSeverity" type="xsd:integer"/>
      <xsd:element name="consumerLocalTime" type="xsd:string" minOccurs="0"/>	<!-- xsd:time -->
      <xsd:element name="afsFactorCode" type="xsd:string" minOccurs="0"/>
      <xsd:element name="addressInfoCode" type="xsd:string" minOccurs="0"/>
      <xsd:element name="hotlistInfoCode" type="xsd:string" minOccurs="0"/>
      <xsd:element name="internetInfoCode" type="xsd:string" minOccurs="0"/>
      <xsd:element name="phoneInfoCode" type="xsd:string" minOccurs="0"/>
      <xsd:element name="suspiciousInfoCode" type="xsd:string" minOccurs="0"/>
      <xsd:element name="velocityInfoCode" type="xsd:string" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="DAVReply">
    <xsd:sequence>
      <xsd:element name="reasonCode" type="xsd:integer"/>
      <xsd:element name="addressType" type="xsd:string" minOccurs="0"/>
      <xsd:element name="apartmentInfo" type="xsd:string" minOccurs="0"/>
      <xsd:element name="barCode" type="xsd:string" minOccurs="0"/>
      <xsd:element name="barCodeCheckDigit" type="xsd:string" minOccurs="0"/>
      <xsd:element name="careOf" type="xsd:string" minOccurs="0"/>
      <xsd:element name="cityInfo" type="xsd:string" minOccurs="0"/>
      <xsd:element name="countryInfo" type="xsd:string" minOccurs="0"/>
      <xsd:element name="directionalInfo" type="xsd:string" minOccurs="0"/>
      <xsd:element name="lvrInfo" type="xsd:string" minOccurs="0"/>
      <xsd:element name="matchScore" type="xsd:integer" minOccurs="0"/>
      <xsd:element name="standardizedAddress1" type="xsd:string" minOccurs="0"/>
      <xsd:element name="standardizedAddress2" type="xsd:string" minOccurs="0"/>
      <xsd:element name="standardizedAddress3" type="xsd:string" minOccurs="0"/>
      <xsd:element name="standardizedAddress4" type="xsd:string" minOccurs="0"/>
      <xsd:element name="standardizedAddressNoApt" type="xsd:string" minOccurs="0"/>
      <xsd:element name="standardizedCity" type="xsd:string" minOccurs="0"/>
      <xsd:element name="standardizedCounty" type="xsd:string" minOccurs="0"/>
      <xsd:element name="standardizedCSP" type="xsd:string" minOccurs="0"/>
      <xsd:element name="standardizedState" type="xsd:string" minOccurs="0"/>
      <xsd:element name="standardizedPostalCode" type="xsd:string" minOccurs="0"/>
      <xsd:element name="standardizedCountry" type="xsd:string" minOccurs="0"/>
      <xsd:element name="standardizedISOCountry" type="xsd:string" minOccurs="0"/>
      <xsd:element name="stateInfo" type="xsd:string" minOccurs="0"/>
      <xsd:element name="streetInfo" type="xsd:string" minOccurs="0"/>
      <xsd:element name="suffixInfo" type="xsd:string" minOccurs="0"/>
      <xsd:element name="postalCodeInfo" type="xsd:string" minOccurs="0"/>
      <xsd:element name="overallInfo" type="xsd:string" minOccurs="0"/>
      <xsd:element name="usInfo" type="xsd:string" minOccurs="0"/>
      <xsd:element name="caInfo" type="xsd:string" minOccurs="0"/>
      <xsd:element name="intlInfo" type="xsd:string" minOccurs="0"/>
      <xsd:element name="usErrorInfo" type="xsd:string" minOccurs="0"/>
      <xsd:element name="caErrorInfo" type="xsd:string" minOccurs="0"/>
      <xsd:element name="intlErrorInfo" type="xsd:string" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="DeniedPartiesMatch">
    <xsd:sequence>
      <xsd:element name="list" type="xsd:string"/>
      <xsd:element name="name" type="xsd:string" maxOccurs="2"/>
      <xsd:element name="address" type="xsd:string" maxOccurs="3"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="ExportReply">
    <xsd:sequence>
      <xsd:element name="reasonCode" type="xsd:integer"/>
      <xsd:element name="ipCountryConfidence" type="xsd:integer" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="FXQuote">
    <xsd:sequence>
      <xsd:element name="id" type="xsd:string" minOccurs="0"/>
      <xsd:element name="rate" type="xsd:string" minOccurs="0"/>
      <xsd:element name="type" type="xsd:string" minOccurs="0"/>
      <xsd:element name="expirationDateTime" type="tns:dateTime" minOccurs="0"/>
      <xsd:element name="currency" type="xsd:string" minOccurs="0"/>
      <xsd:element name="fundingCurrency" type="xsd:string" minOccurs="0"/>
      <xsd:element name="receivedDateTime" type="tns:dateTime" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="FXRatesReply">
    <xsd:sequence>
      <xsd:element name="reasonCode" type="xsd:integer"/>
      <xsd:element name="quote" type="tns:FXQuote" minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="BankTransferReply">
    <xsd:sequence>
      <xsd:element name="reasonCode" type="xsd:integer"/>
      <xsd:element name="accountHolder" type="xsd:string" minOccurs="0"/>
      <xsd:element name="accountNumber" type="xsd:string" minOccurs="0"/>
      <xsd:element name="amount" type="tns:amount" minOccurs="0"/>
      <xsd:element name="bankName" type="xsd:string" minOccurs="0"/>
      <xsd:element name="bankCity" type="xsd:string" minOccurs="0"/>
      <xsd:element name="bankCountry" type="xsd:string" minOccurs="0"/>
      <xsd:element name="paymentReference" type="xsd:string" minOccurs="0"/>
      <xsd:element name="processorResponse" type="xsd:string" minOccurs="0"/>
      <xsd:element name="bankSwiftCode" type="xsd:string" minOccurs="0"/>
      <xsd:element name="bankSpecialID" type="xsd:string" minOccurs="0"/>
      <xsd:element name="requestDateTime" type="tns:dateTime" minOccurs="0"/>
      <xsd:element name="reconciliationID" type="xsd:string" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="BankTransferRefundReply">
    <xsd:sequence>
      <xsd:element name="reasonCode" type="xsd:integer"/>
      <xsd:element name="amount" type="tns:amount" minOccurs="0"/>
      <xsd:element name="requestDateTime" type="tns:dateTime" minOccurs="0"/>
      <xsd:element name="reconciliationID" type="xsd:string" minOccurs="0"/>
      <xsd:element name="processorResponse" type="xsd:string" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="DirectDebitReply">
    <xsd:sequence>
      <xsd:element name="reasonCode" type="xsd:integer"/>
      <xsd:element name="amount" type="tns:amount" minOccurs="0"/>
      <xsd:element name="requestDateTime" type="tns:dateTime" minOccurs="0"/>
      <xsd:element name="reconciliationID" type="xsd:string" minOccurs="0"/>
      <xsd:element name="processorResponse" type="xsd:string" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="DirectDebitRefundReply">
    <xsd:sequence>
      <xsd:element name="reasonCode" type="xsd:integer"/>
      <xsd:element name="amount" type="tns:amount" minOccurs="0"/>
      <xsd:element name="requestDateTime" type="tns:dateTime" minOccurs="0"/>
      <xsd:element name="reconciliationID" type="xsd:string" minOccurs="0"/>
      <xsd:element name="processorResponse" type="xsd:string" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="PaySubscriptionCreateReply">
    <xsd:sequence>
      <xsd:element name="reasonCode" type="xsd:integer"/>
      <xsd:element name="subscriptionID" type="xsd:string"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="PaySubscriptionUpdateReply">
    <xsd:sequence>
      <xsd:element name="reasonCode" type="xsd:integer"/>
      <xsd:element name="subscriptionID" type="xsd:string"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="ReplyMessage">
    <xsd:sequence>
      <xsd:element name="requestID" type="xsd:string"/>
      <xsd:element name="decision" type="xsd:string"/>
      <xsd:element name="reasonCode" type="xsd:integer"/>
      <xsd:element name="missingField" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="invalidField" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="deniedPartiesMatch" type="tns:DeniedPartiesMatch" minOccurs="0" maxOccurs="3"/>
      <xsd:element name="ccAuthReply" type="tns:CCAuthReply" minOccurs="0"/>
      <xsd:element name="ccCaptureReply" type="tns:CCCaptureReply" minOccurs="0"/>
      <xsd:element name="ccCreditReply" type="tns:CCCreditReply" minOccurs="0"/>
      <xsd:element name="ccAuthReversalReply" type="tns:CCAuthReversalReply" minOccurs="0"/>
      <xsd:element name="ecDebitReply" type="tns:ECDebitReply" minOccurs="0"/>
      <xsd:element name="ecCreditReply" type="tns:ECCreditReply" minOccurs="0"/>
      <xsd:element name="payerAuthEnrollReply" type="tns:PayerAuthEnrollReply" minOccurs="0"/>
      <xsd:element name="payerAuthValidateReply" type="tns:PayerAuthValidateReply" minOccurs="0"/>
      <xsd:element name="taxReply" type="tns:TaxReply" minOccurs="0"/>
      <xsd:element name="afsReply" type="tns:AFSReply" minOccurs="0"/>
      <xsd:element name="davReply" type="tns:DAVReply" minOccurs="0"/>
      <xsd:element name="exportReply" type="tns:ExportReply" minOccurs="0"/>
      <xsd:element name="fxRatesReply" type="tns:FXRatesReply" minOccurs="0"/>
      <xsd:element name="bankTransferReply" type="tns:BankTransferReply" minOccurs="0"/>
      <xsd:element name="bankTransferRefundReply" type="tns:BankTransferRefundReply" minOccurs="0"/>
      <xsd:element name="directDebitReply" type="tns:DirectDebitReply" minOccurs="0"/>
      <xsd:element name="directDebitRefundReply" type="tns:DirectDebitRefundReply" minOccurs="0"/>
      <xsd:element name="paySubscriptionCreateReply" type="tns:PaySubscriptionCreateReply" minOccurs="0"/>
      <xsd:element name="paySubscriptionUpdateReply" type="tns:PaySubscriptionUpdateReply" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:element name="requestMessage" type="tns:RequestMessage">
    <xsd:unique name="unique-item-id">
      <xsd:selector xpath="tns:item"/>
      <xsd:field xpath="@id"/>
    </xsd:unique>
  </xsd:element>

  <xsd:element name="replyMessage" type="tns:ReplyMessage">
    <xsd:unique name="unique-tax-item-id">
      <xsd:selector xpath="tns:taxReplyItem"/>
      <xsd:field xpath="@id"/>
    </xsd:unique>
  </xsd:element>

  <xsd:element name="nvpRequest" type="xsd:string"/>
  <xsd:element name="nvpReply" type="xsd:string"/>

  <!-- used in SOAP faults -->
  <xsd:complexType name="FaultDetails">
    <xsd:sequence>
      <xsd:element name="requestID" type="xsd:string"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:element name="faultDetails" type="tns:FaultDetails"/>

</xsd:schema>
