<?xml version="1.0" encoding="US-ASCII"?>
<!--
  GPS Transaction XML Schema for non-Wirecard clients V1.11
  Changes in V1.11:
    Removed reference to ResponseFinancial element (DEV_MT_API-537)
  Changes in v1.18:
    DEV_MT_API-1520
    Removed Programid attribute
    Changed MarchCode to 30 length
    Changed Desc to 500 length
   Changes in V1.22
    DEV_REPORTING-142
      Updated inputcapability, authcapability, cardholderpresent, 
      cardpresent, cardinputmethod, cardauthmethod and cardauthentity.
   Changes in V1.23
    DEV_REPORTING-319
     Updated cardholderpresent and cardpresent
   Changes in V1.24
    DEV_REPORTING-318
     Updated CardFinancial AuthId
   Changes in V1.25
    DEV_REPORTING-154
      Added SettlementIndicator.
   Changes in V1.27
    DEV_REPORTING-343
      Added SettlementCycle,ReconciliationDate, ReconciliationCycle,Usage and Pending_Billing_Amount.
   Changes in V1.28
    DEV_REPORTING-350
      Corrected SettlementIndicator in Fin and Chargeback.
      Corrected MerchCode in Auth and Chargeback
      Added recon in Cardfee
      Added CardChrgBackRepRes Account type 02
      Added Currency 928
      Added Nullable AuthID in CardFinancial
      Made CardChrgBackRepRes FIID and RIID optional
      Changed sequence location of CardChrgBackRepRes SettlementIndicator
      Corrected CardBalAdjust AdjustId sequence and removed Rectype
   Changes in V1.29
    DEV_REPORTING-350
      Included ProductID in MastercardFee
      Increased length of Additional_Data_048 in MastercardFee
      Settlementdate can be blank in Mastercardfee
      Recon Date can be blank in Mastercardfee
      Settlement Date can be blank in Mastercardfee
   Changes in V1.30
    DEV_REPORTING-327
      Added Additional_Amt_DE54 in Financial and Chargebacks.
    DEV_WEBSERVICES-302
      Multiple patterns in a Restriction was found not to validate when checking online XML validators. Substituted with \s*| in regular expression.
  Changes in V1.31
    DEV_REPORTING-396
      Added one more ISOCurrencyCode - 929
      Added two new ABDeclineReason - 00,9
      AbId changed from Int to Long.
      Removing ProductID from MastercardFee
  Changes in V1.32
    DEV_REPORTING-413
       Added value2 atttribute
  Changes in V1.33
    DEV_REPORTING-422
       Added IssuerReferenceNumber element
  Changes in V1.33.1
    Banking File element not mandatory
  Changes in V1.34
    Removed IssuerReferenceNumber element
    Added ChargebackRefNum element
  Changes in V1.35
    ProductID can be 5 digits long
  Changes in V1.36
    Updated cardauthmethod and cardauthentity
    Added new element : BSA
  Changes in V1.37
    Added new element : RecordType
    Increased length of affected MastercardFee elements
  Changes in V1.38
    Added new elements : Sender and Reciever.
  Changes in V1.39
    Added new element : FXConv in CardAuthorisation and CardFinancial primary elements.
  Changes in V1.40
    Changed CardFinancial/BillAmt@Rate to support 9 decimal places.
    Updated Aug 2021 to change CardFinancial/SettlementAmt/@Rate to also support 9 decimal places by adding ConversionSettlementAmt.
    N.B. This is an update to the XSD only. Live code already supports 9 dp.
  Changes in V1.41
    Added new element : PaymentToken in CardAuthorisation and CardFinancial primary elements.
    Updated list of ISO currency codes.    
  Changes in v1.42
    Added new element LocalDateUTC to CardAuthorisation and CardFinancial
  Changes in v1.43 
    Added new attribute in the CardEvent/Event element - ?transactionid? - DEV_REPORTING-632	
 Changes in v1.43.1 
   Change type of AuthTxnID in XSD from unsignedint to unsignedlong PMINCIDENT-1652	
  Changes as per REPORTING-943
  Change nillable to true for type "Desc" in ApprovedAgencyBanking, DeclinedAgencyBanking, AgencyBankingFee 
    Changes as per CURRENCY-475
    Added new element : WalletTransaction
Changes in REPORTING-985 -  Removed digit restriction for the sortcode and accountno attributes of the AgencyBanking elements, to allow alphanumeric characters of 6 and 8 lengths respectively.

  PMRELEASE-2204 - v1.45
  Changes in REPORTING-586 - Changed CardChrgBackRepRes/BillAmt/@Rate & CardChrgBackRepRes/SettlementAmt/@Rate to support 9 decimal places.   
  Changes in REPORTING-944  - Add CHAPS to Cashtype   
  Changes in REPORTING-1214 - Add Currency Code 925 (SLE) to XSD
  Changes in REPORTING-1285 - xsi nill true to CardAuthorisation - Apprcode
  Removed REPORTING-725
 
 PMRELEASE-2257 - v1.46
 Changes in REPORTING-670 - Max length of DE94_Txn_Orig_ID to 16   
 
 REPORTING-1586 - v1.46.1
 Updated PresentmentID type to unsignedLong

PMRELEASE-2443 - v1.47
 Changes in Reporting 1510 - Changed Trace/auditno attribute from required to optional
 Changes in REPORTING-1581 - Added a new currency code value of 157 to the ISOCurrencyCode type
 
 PMRELEASE-2484 - v1.48
 Changes in REPORTING-1543 - Adding new attribute of Txn element, TTI

-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="qualified" version="0.4">
  <xs:complexType name="BasicAmount">
    <xs:attribute name="value" type="xs:decimal" use="required"/>
    <xs:attribute name="value2" type="xs:decimal" use="optional"/>
    <xs:attribute name="currency" type="ISOCurrencyCode" use="required"/>
  </xs:complexType>
  <xs:complexType name="RateAmount">
    <xs:complexContent>
      <xs:extension base="BasicAmount">
        <xs:attribute name="rate" type="Rate" use="required"/>
        <xs:attribute name="clientfxrate" type="Rate" use="optional"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="ConversionRateAmount">
    <xs:complexContent>
      <xs:extension base="BasicAmount">
        <xs:attribute name="rate" type="ConversionRate" use="required"/>
        <xs:attribute name="clientfxrate" type="Rate" use="optional"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="DirectionAmount">
    <xs:complexContent>
      <xs:extension base="BasicAmount">
        <xs:attribute name="direction" type="Direction" use="required"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="PartialAmount">
    <xs:complexContent>
      <xs:extension base="BasicAmount">
        <xs:attribute name="partial" type="YesNoString" use="optional"/>
        <xs:attribute name="origItemId" type="xs:unsignedInt" use="optional"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="SettlementAmt">
    <xs:attribute name="value" type="xs:decimal" use="required"/>
    <xs:attribute name="currency" type="ISOCurrencyCode" use="required"/>
    <xs:attribute name="rate" type="Rate" use="required"/>
    <xs:attribute name="date" use="optional">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="8"/>
          <xs:pattern value="([2-9]\d{3}((0[1-9]|1[012])(0[1-9]|1\d|2[0-8])|(0[13456789]|1[012])(29|30)|(0[13578]|1[02])31)|(([2-9]\d)(0[48]|[2468][048]|[13579][26])|(([2468][048]|[3579][26])00))0229)"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="ConversionSettlementAmt">
    <xs:attribute name="value" type="xs:decimal" use="required"/>
    <xs:attribute name="currency" type="ISOCurrencyCode" use="required"/>
    <xs:attribute name="rate" type="ConversionRate" use="required"/>
    <xs:attribute name="date" use="optional">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="8"/>
          <xs:pattern value="([2-9]\d{3}((0[1-9]|1[012])(0[1-9]|1\d|2[0-8])|(0[13456789]|1[012])(29|30)|(0[13578]|1[02])31)|(([2-9]\d)(0[48]|[2468][048]|[13579][26])|(([2468][048]|[3579][26])00))0229)"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="CCAAmount">
    <xs:complexContent>
      <xs:extension base="BasicAmount">
        <xs:attribute name="included" type="YesNoString" use="required"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="FeeClass">
    <xs:attribute name="interchangeTransaction" type="YesNoString" use="required"/>
    <xs:attribute name="type" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="0"/>
          <xs:enumeration value="1"/>
          <xs:enumeration value="2"/>
          <xs:enumeration value="4"/>
          <xs:enumeration value="5"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="code" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="0"/>
          <xs:enumeration value="1"/>
          <xs:enumeration value="1000"/>
          <xs:enumeration value="1010"/>
          <xs:enumeration value="1020"/>
          <xs:enumeration value="1030"/>
          <xs:enumeration value="1040"/>
          <xs:enumeration value="1060"/>
          <xs:enumeration value="1061"/>
          <xs:enumeration value="1062"/>
          <xs:enumeration value="1063"/>
          <xs:enumeration value="1100"/>
          <xs:enumeration value="2010"/>
          <xs:enumeration value="2011"/>
          <xs:enumeration value="2012"/>
          <xs:enumeration value="2013"/>
          <xs:enumeration value="2014"/>
          <xs:enumeration value="2015"/>
          <xs:enumeration value="2016"/>
          <xs:enumeration value="2110"/>
          <xs:enumeration value="2111"/>
          <xs:enumeration value="2112"/>
          <xs:enumeration value="2300"/>
          <xs:enumeration value="2301"/>
          <xs:enumeration value="2302"/>
          <xs:enumeration value="2303"/>
          <xs:enumeration value="2304"/>
          <xs:enumeration value="2306"/>
          <xs:enumeration value="2307"/>
          <xs:enumeration value="2308"/>
          <xs:enumeration value="2309"/>
          <xs:enumeration value="2310"/>
          <xs:enumeration value="2311"/>
          <xs:enumeration value="2312"/>
          <xs:enumeration value="2313"/>
          <xs:enumeration value="2314"/>
          <xs:enumeration value="2320"/>
          <xs:enumeration value="2401"/>
          <xs:enumeration value="2402"/>
          <xs:enumeration value="2441"/>
          <xs:enumeration value="2442"/>
          <xs:enumeration value="2443"/>
          <xs:enumeration value="6000"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="MasterCardFeeClass">
    <xs:attribute name="interchangeTransaction" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="no"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="type" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="0"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="code" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="0"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="memberID" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="11"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="Response">
    <xs:attribute name="approved" type="YesNoString" use="required"/>
    <xs:attribute name="actioncode" type="xs:string" use="optional"/>
    <xs:attribute name="responsecode" type="xs:string" use="optional"/>
    <xs:attribute name="additionaldesc" use="optional">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="500"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="Classification">
    <xs:attribute name="MCC" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="4"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="MsgSource">
    <xs:attribute name="value" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:decimal">
          <xs:enumeration value="12"/>
          <xs:enumeration value="17"/>
          <xs:enumeration value="54"/>
          <xs:enumeration value="66"/>
          <xs:enumeration value="67"/>
          <xs:enumeration value="70"/>
          <xs:enumeration value="74"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="domesticMaestro" type="YesNoString" use="required"/>
  </xs:complexType>
  <xs:complexType name="MsgSourceCardAuthorisation">
    <xs:attribute name="value" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:decimal">
          <xs:enumeration value="12"/>
          <xs:enumeration value="17"/>
          <xs:enumeration value="54"/>
          <xs:enumeration value="62"/>
          <xs:enumeration value="66"/>
          <xs:enumeration value="67"/>
          <xs:enumeration value="70"/>
          <xs:enumeration value="74"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="domesticMaestro" type="YesNoString" use="required"/>
  </xs:complexType>
  <xs:complexType name="Txn">
    <xs:attribute name="cardholderpresent" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value=""/>
          <xs:enumeration value="0"/>
          <xs:enumeration value="1"/>
          <xs:enumeration value="2"/>
          <xs:enumeration value="3"/>
          <xs:enumeration value="4"/>
          <xs:enumeration value="5"/>
          <xs:enumeration value="6"/>
          <xs:enumeration value="9"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="cardpresent" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value=""/>
          <xs:enumeration value="0"/>
          <xs:enumeration value="1"/>
          <xs:enumeration value="9"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="cardinputmethod" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value=""/>
          <xs:enumeration value="0"/>
          <xs:enumeration value="1"/>
          <xs:enumeration value="2"/>
          <xs:enumeration value="3"/>
          <xs:enumeration value="4"/>
          <xs:enumeration value="5"/>
          <xs:enumeration value="6"/>
          <xs:enumeration value="7"/>
          <xs:enumeration value="C"/>
          <xs:enumeration value="E"/>
          <xs:enumeration value="F"/>
          <xs:enumeration value="G"/>
          <xs:enumeration value="M"/>
          <xs:enumeration value="P"/>
          <xs:enumeration value="Q"/>
          <xs:enumeration value="V"/>
          <xs:enumeration value="W"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="cardauthmethod" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value=""/>
          <xs:enumeration value="0"/>
          <xs:enumeration value="1"/>
          <xs:enumeration value="2"/>
          <xs:enumeration value="3"/>
          <xs:enumeration value="4"/>
          <xs:enumeration value="5"/>
          <xs:enumeration value="6"/>
          <xs:enumeration value="7"/>
          <xs:enumeration value="8"/>
          <xs:enumeration value="9"/>
          <xs:enumeration value="A"/>
          <xs:enumeration value="B"/>
          <xs:enumeration value="C"/>
          <xs:enumeration value="D"/>
          <xs:enumeration value="E"/>
          <xs:enumeration value="S"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="cardauthentity" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value=""/>
          <xs:enumeration value="0"/>
          <xs:enumeration value="1"/>
          <xs:enumeration value="2"/>
          <xs:enumeration value="3"/>
          <xs:enumeration value="4"/>
          <xs:enumeration value="5"/>
          <xs:enumeration value="6"/>
          <xs:enumeration value="7"/>
          <xs:enumeration value="8"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="TVR" type="xs:unsignedLong" use="optional"/>
	<xs:attribute name="TTI" use="optional">
      <xs:simpleType>
		<xs:restriction base="xs:string">
         <xs:maxLength value="3"/>
		</xs:restriction>
	  </xs:simpleType>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="Term">
    <xs:attribute name="code" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="8"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="location" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="128"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="street" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="64"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="city" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="64"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="country" type="ISOCountryCode" use="optional"/>
    <xs:attribute name="inputcapability" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value=" "/>
          <xs:enumeration value="0"/>
          <xs:enumeration value="1"/>
          <xs:enumeration value="2"/>
          <xs:enumeration value="3"/>
          <xs:enumeration value="4"/>
          <xs:enumeration value="5"/>
          <xs:enumeration value="6"/>
          <xs:enumeration value="7"/>
          <xs:enumeration value="8"/>
          <xs:enumeration value="9"/>
          <xs:enumeration value="10"/>
          <xs:enumeration value="11"/>
          <xs:enumeration value="12"/>
          <xs:enumeration value="13"/>
          <xs:enumeration value="14"/>
          <xs:enumeration value="15"/>
          <xs:enumeration value="16"/>
          <xs:enumeration value="17"/>
          <xs:enumeration value="18"/>
          <xs:enumeration value="19"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="authcapability" use="optional">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value=""/>
          <xs:enumeration value="0"/>
          <xs:enumeration value="1"/>
          <xs:enumeration value="2"/>
          <xs:enumeration value="3"/>
          <xs:enumeration value="4"/>
          <xs:enumeration value="5"/>
          <xs:enumeration value="6"/>
          <xs:enumeration value="7"/>
          <xs:enumeration value="8"/>
          <xs:enumeration value="9"/>
          <xs:enumeration value="10"/>
          <xs:enumeration value="11"/>
          <xs:enumeration value="12"/>
          <xs:enumeration value="13"/>
          <xs:enumeration value="14"/>
          <xs:enumeration value="15"/>
          <xs:enumeration value="16"/>
          <xs:enumeration value="17"/>
          <xs:enumeration value="18"/>
          <xs:enumeration value="19"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="Trace">
    <xs:attribute name="auditno" use="optional">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="6"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="origauditno" use="optional">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="6"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="Retrefno" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="12"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="TxnCode">
    <xs:attribute name="direction" type="Direction" use="required"/>
    <xs:attribute name="Type" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="6"/>
          <xs:enumeration value="pos"/>
          <xs:enumeration value="atm"/>
          <xs:enumeration value="pos_cb"/>
          <xs:enumeration value="pos_re"/>
          <xs:enumeration value="fee"/>
          <xs:enumeration value="tfr"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="Group" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="pos"/>
          <xs:enumeration value="atm"/>
          <xs:enumeration value="fee"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="ProcCode" use="optional">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="6"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="Partial" use="optional">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="3"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="FeeWaivedOff" type="xs:decimal" use="optional"/>
  </xs:complexType>
  <xs:complexType name="Card">
    <xs:attribute name="PAN" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:minLength value="14"/>
          <xs:maxLength value="19"/>
          <xs:pattern value="\d+"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="product" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="4"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="programid" use="optional">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="50"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="branchcode" use="optional">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="8"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name = "productid" use = "optional">
      <xs:simpleType>
        <xs:restriction base = "xs:string">
          <xs:maxLength value = "5"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="Account">
    <xs:attribute name="no" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="28"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="type" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="00"/>
          <xs:enumeration value="01"/>
          <xs:enumeration value="02"/>
          <xs:enumeration value="07"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="AccountChrgBack">
    <xs:attribute name="no" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="28"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="type" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="00"/>
          <xs:enumeration value="01"/>
          <xs:enumeration value="02"/>
          <xs:enumeration value="07"/>          
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>
  <xs:simpleType name="Rate">
    <xs:restriction base="xs:decimal">
      <xs:fractionDigits value="6"/>
      <xs:minInclusive value="0"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="ConversionRate">
    <xs:restriction base="xs:decimal">
      <xs:fractionDigits value="9"/>
      <xs:minInclusive value="0"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="MerchCode">
    <xs:restriction base="xs:string">
      <xs:maxLength value="30"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="RecType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="ADV"/>
      <xs:enumeration value="REV"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="ReversalReason">
    <xs:restriction base="xs:string">
      <xs:enumeration value=""/>
      <xs:enumeration value="0"/>
      <xs:enumeration value="1"/>
      <xs:enumeration value="2"/>
      <xs:enumeration value="3"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="Direction">
    <xs:restriction base="xs:string">
      <xs:enumeration value="debit"/>
      <xs:enumeration value="credit"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="LocalDate">
    <xs:restriction base="xs:string">
      <xs:pattern value=""/>
      <xs:maxLength value="14"/>
      <xs:pattern value="([2-9]\d{3}((0[1-9]|1[012])(0[1-9]|1\d|2[0-8])|(0[13456789]|1[012])(29|30)|(0[13578]|1[02])31)|(([2-9]\d)(0[48]|[2468][048]|[13579][26])|(([2468][048]|[3579][26])00))0229)([0-1][0-9]|[2][0-3])([0-5][0-9])([0-5][0-9])"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="LocalDateUTC">
    <xs:restriction base="xs:string">
      <xs:pattern value=""/>
      <xs:maxLength value="10"/>
      <xs:pattern value="[0-9]{10}"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="SettlementDate">
    <xs:restriction base="xs:string">
      <xs:pattern value="\s*|([2-9]\d{3}((0[1-9]|1[012])(0[1-9]|1\d|2[0-8])|(0[13456789]|1[012])(29|30)|(0[13578]|1[02])31)|(([2-9]\d)(0[48]|[2468][048]|[13579][26])|(([2468][048]|[3579][26])00))0229)"/>
      <xs:maxLength value="8"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="ApprCode">
    <xs:restriction base="xs:string">
      <xs:maxLength value="6"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="Schema">
    <xs:restriction base="xs:string">
      <xs:minLength value="3"/>
      <xs:maxLength value="4"/>
      <xs:enumeration value="CIRR"/>
      <xs:enumeration value="ECRD"/>
      <xs:enumeration value="MAES"/>
      <xs:enumeration value="CIMA"/>
      <xs:enumeration value="MCRD"/>
      <xs:enumeration value="VISA"/>
      <xs:enumeration value="PLUS"/>
      <xs:enumeration value="DGN"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="ARN">
    <xs:restriction base="xs:string">
      <xs:maxLength value="23"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="FIID">
    <xs:restriction base="xs:string">
      <xs:maxLength value="11"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="RIID">
    <xs:restriction base="xs:string">
      <xs:maxLength value="11"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="Desc">
    <xs:restriction base="xs:string">
      <xs:maxLength value="500"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="AdjustType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Actual"/>
      <xs:enumeration value="Block"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="LoadSource">
    <xs:attribute name="Source">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="3"/>
          <!-- <xs:pattern value="([0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|6[0-9]|7[0-9]|8[0-9]|9[0-9]|100|102|209|210)"/> -->
          <xs:pattern value="[0-9]{1,3}"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="Type">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="2"/>
          <xs:enumeration value="0"/>
          <xs:enumeration value="1"/>
          <xs:enumeration value="2"/>
          <xs:enumeration value="3"/>
          <xs:enumeration value="4"/>
          <xs:enumeration value="5"/>
          <xs:enumeration value="6"/>
          <xs:enumeration value="7"/>
          <xs:enumeration value="8"/>
          <xs:enumeration value="9"/>
          <xs:enumeration value="10"/>
          <xs:enumeration value="11"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="FixedFee" type="xs:decimal" use="optional"/>
    <xs:attribute name="Rate_Fee" type="xs:decimal" use="optional"/>
  </xs:complexType>
  <xs:simpleType name="ISOCurrencyCode">
    <xs:restriction base="xs:string">
      <xs:pattern value="\d{3}"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="ISOCountryCode">
    <xs:restriction base="xs:string">
      <xs:maxLength value="2"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="YesNoString">
    <xs:restriction base="xs:string">
      <xs:enumeration value="yes"/>
      <xs:enumeration value="no"/>
      <xs:enumeration value="YES"/>
      <xs:enumeration value="NO"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="CycleNumber">
    <xs:restriction base="xs:string">
      <xs:maxLength value="2"/>
      <xs:enumeration value="01"/>
      <xs:enumeration value="02"/>
      <xs:enumeration value="03"/>
      <xs:enumeration value="04"/>
      <xs:enumeration value="05"/>
      <xs:enumeration value="06"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="EventType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Upgraded"/>
      <xs:enumeration value="Renewed"/>
      <xs:enumeration value="ReportedToSAFE"/>
      <xs:enumeration value="Lost"/>
      <xs:enumeration value="Stolen"/>
      <xs:enumeration value="Cancelled"/>
      <xs:enumeration value="PINTriesExceeded"/>
      <xs:enumeration value="Voided"/>
      <xs:enumeration value="Expired"/>
      <xs:enumeration value="Activation"/>
      <xs:enumeration value="UnBlocked"/>
      <xs:enumeration value="StatusChange"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="MTID">
    <xs:restriction base="xs:string">
      <xs:maxLength value="4"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="Function_Code_024">
    <xs:restriction base="xs:string">
      <xs:maxLength value="3"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="Conversion_Rate_Reconciliation_009">
    <xs:restriction base="xs:decimal">
      <xs:totalDigits value="15"/>
      <xs:fractionDigits value="6"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="Additional_Data_048">
    <xs:restriction base="xs:string">
      <xs:maxLength value="8000"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="Data_Record_072">
    <xs:restriction base="xs:string">
      <xs:maxLength value="200"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="DE93_Txn_Dest_ID">
    <xs:restriction base="xs:string">
      <xs:maxLength value="11"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="DE94_Txn_Orig_ID">
    <xs:restriction base="xs:string">
      <xs:maxLength value="16"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="File_ID_PDS0105">
    <xs:restriction base="xs:string">
      <xs:maxLength value="50"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="FileProcessDate">
    <xs:restriction base="xs:string">
      <xs:pattern value=""/>
      <xs:maxLength value="14"/>
      <xs:pattern value="([2-9]\d{3}((0[1-9]|1[012])(0[1-9]|1\d|2[0-8])|(0[13456789]|1[012])(29|30)|(0[13578]|1[02])31)|(([2-9]\d)(0[48]|[2468][048]|[13579][26])|(([2468][048]|[3579][26])00))0229)([0-1][0-9]|[2][0-3])([0-5][0-9])([0-5][0-9])"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="Recon">
    <xs:attribute name="date" use="optional">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="\s*|([2-9]\d{3}((0[1-9]|1[012])(0[1-9]|1\d|2[0-8])|(0[13456789]|1[012])(29|30)|(0[13578]|1[02])31)|(([2-9]\d)(0[48]|[2468][048]|[13579][26])|(([2468][048]|[3579][26])00))0229)"/>
          <xs:maxLength value="8"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="cycle" use="optional">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="2"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="Settlement">
    <xs:attribute name="date" use="optional">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="\s*|([2-9]\d{3}((0[1-9]|1[012])(0[1-9]|1\d|2[0-8])|(0[13456789]|1[012])(29|30)|(0[13578]|1[02])31)|(([2-9]\d)(0[48]|[2468][048]|[13579][26])|(([2468][048]|[3579][26])00))0229)"/>
          <xs:maxLength value="8"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="cycle" use="optional">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="2"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>
  <xs:simpleType name="sortcode">
    <xs:restriction base="xs:string">
      <xs:maxLength value="6"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="accountno">
    <xs:restriction base="xs:string">
      <xs:maxLength value="8"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="ABFile">
    <xs:attribute name="filedate" type="LocalDate" use="required"/>
    <xs:attribute name="filename" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="500"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="ABAccount">
    <xs:attribute name="no" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="28"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="type" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="00"/>
          <xs:enumeration value="01"/>
          <xs:enumeration value="02"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="sortcode" type="sortcode" use="required"/>
    <xs:attribute name="bankacc" type="accountno" use="required"/>
    <xs:attribute name="name" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="50"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="ABExternal">
    <xs:attribute name="sortcode" type="sortcode" use="required"/>
    <xs:attribute name="bankacc" type="accountno" use="required"/>
    <xs:attribute name="name" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="50"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="ABCashCode">
    <xs:attribute name="direction" type="Direction" use="required"/>
    <xs:attribute name="CashType" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="CashGroup" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="rcp"/>
          <xs:enumeration value="pay"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>
  <xs:simpleType name="ABDeclineReason">
    <xs:restriction base="xs:string">
      <xs:enumeration value="00"/>
      <xs:enumeration value="01"/>
      <xs:enumeration value="02"/>
      <xs:enumeration value="03"/>
      <xs:enumeration value="04"/>
      <xs:enumeration value="05"/>
      <xs:enumeration value="06"/>
      <xs:enumeration value="07"/>
      <xs:enumeration value="08"/>
      <xs:enumeration value="9"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="ABDirection">
    <xs:restriction base="xs:string">
      <xs:enumeration value="debit"/>
      <xs:enumeration value="credit"/>
      <xs:enumeration value="shared"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="ABDirectionAmount">
    <xs:complexContent>
      <xs:extension base="BasicAmount">
        <xs:attribute name="direction" type="ABDirection" use="required"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="NullOrULong">
    <xs:restriction base="xs:string">
      <xs:pattern value="\d*|\s{0}" />
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="SenderReceiver">
    <xs:attribute name="firstname" type="xs:string" use="optional"/>
    <xs:attribute name="middlename" type="xs:string" use="optional"/>
    <xs:attribute name="lastname" type="xs:string" use="optional"/>
    <xs:attribute name="streetaddress" type="xs:string" use="optional"/>
    <xs:attribute name="city" type="xs:string" use="optional"/>
    <xs:attribute name="provincecode" type="xs:string" use="optional"/>
    <xs:attribute name="country" type="xs:string" use="optional"/>
    <xs:attribute name="postcode" type="xs:string" use="optional"/>
    <xs:attribute name="phonenumber" type="xs:string" use="optional"/>
    <xs:attribute name="dateofbirth" type="xs:string" use="optional"/>
    <xs:attribute name="accountnumber" type="xs:string" use="optional"/>
    <xs:attribute name="idtype" type="xs:string" use="optional"/>
    <xs:attribute name="idnbr" type="xs:string" use="optional"/>
    <xs:attribute name="idctrycode" type="xs:string" use="optional"/>
    <xs:attribute name="idexpdate" type="xs:string" use="optional"/>
    <xs:attribute name="nationality" type="xs:string" use="optional"/>
    <xs:attribute name="birthctry" type="xs:string" use="optional"/>
    <xs:attribute name="acctnbrtype" type="xs:string" use="optional"/>
    <xs:attribute name="fundssource" type="xs:string" use="optional"/>
    <xs:attribute name="claimcode" type="xs:string" use="optional"/>
  </xs:complexType>
  <xs:complexType name="FXConv">
	<xs:attribute name="bookingstatus" type="xs:string" use="optional"/>
	<xs:attribute name="fxratebooked" type="xs:decimal" use="required"/>
	<xs:attribute name="providercode" type="xs:string" use="required"/>
	<xs:attribute name="fixedamountflag" type="xs:string" use="required"/>
	<xs:attribute name="settlementdate" type="SettlementDate" use="optional"/>
  </xs:complexType>
  <xs:complexType name="PaymentToken">
	<xs:attribute name = "id" type = "xs:string" use="required"/>
    <xs:attribute name = "creator" type = "xs:string" use="required"/>
    <xs:attribute name = "expdate" type = "xs:string" use="optional"/>
    <xs:attribute name = "type" type = "xs:string" use="required"/>
    <xs:attribute name = "status" type = "xs:string" use="required"/>
    <xs:attribute name = "creatorstatus" type = "xs:string" use="required"/>
    <xs:attribute name = "wallet" type = "xs:string" use="required"/>
    <xs:attribute name = "devicetype" type = "xs:string" use="required"/>
    <xs:attribute name = "lang" type = "xs:string" use="optional"/>
    <xs:attribute name = "activationexpiry" type = "xs:string" use="optional"/>
    <xs:attribute name = "activationmethod" type = "xs:string" use="optional"/>
  </xs:complexType>
	<xs:complexType name="WalletTransactionSource">
		<xs:attribute name = "walletid" type = "xs:string"/>
		<xs:attribute name = "basecurrency" type = "xs:string"/>
		<xs:attribute name = "balancechange" type = "xs:string"/>
		<xs:attribute name = "blockchange" type = "xs:string"/>
		<xs:attribute name = "newbalance" type = "xs:string"/>
		<xs:attribute name = "newblock" type = "xs:string"/>
	</xs:complexType>
	<xs:complexType name="WalletTransactionDestination">
		<xs:attribute name = "walletid" type = "xs:string"/>
		<xs:attribute name = "balancechange" type = "xs:string"/>
		<xs:attribute name = "blockchange" type = "xs:string"/>
		<xs:attribute name = "newbalance" type = "xs:string"/>
		<xs:attribute name = "newblock" type = "xs:string"/>
	</xs:complexType>
	<xs:complexType name="WalletTransactionOther">
		<xs:attribute name = "amount" type = "xs:string"/>
		<xs:attribute name = "currency" type = "xs:string"/>
	</xs:complexType>	
  <xs:element name="Transactions">
    <xs:complexType>
      <xs:sequence>
        <xs:choice maxOccurs="unbounded">
          <xs:element minOccurs="0" maxOccurs="unbounded" name="CardAuthorisation">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="RecType" type="RecType" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="AuthId" type="xs:unsignedLong" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="AuthTxnID" type="xs:unsignedLong" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="LocalDate" type="LocalDate" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="LocalDateUTC" type="LocalDateUTC" minOccurs="0" maxOccurs="1" nillable="true"/>
                <xs:element name="SettlementDate" type="SettlementDate" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Card" type="Card" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Account" type="Account" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="TxnCode" type="TxnCode" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="TxnAmt" type="BasicAmount" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="CashbackAmt" type="BasicAmount" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="BillAmt" type="RateAmount" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="ApprCode" type="ApprCode" minOccurs="1" maxOccurs="1" nillable="true"/>
                <xs:element name="Trace" type="Trace" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="MerchCode" type="MerchCode" minOccurs="1" maxOccurs="1" nillable="true"/>
                <xs:element name="Term" type="Term" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Schema" type="Schema" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Txn" type="Txn" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="MsgSource" type="MsgSourceCardAuthorisation" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="PaddingAmt" type="BasicAmount" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Rate_Fee">
                  <xs:complexType>
                    <xs:attribute name="value" type="xs:decimal" use="required"/>
                  </xs:complexType>
                </xs:element>
                <xs:element name="Fixed_Fee">
                  <xs:complexType>
                    <xs:attribute name="value" type="xs:decimal" use="required"/>
                  </xs:complexType>
                </xs:element>
                <xs:element name="CommissionAmt" type="BasicAmount" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Classification" type="Classification" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Response" type="Response" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="OrigTxnAmt" type="PartialAmount" minOccurs="0" maxOccurs="1" nillable="true"/>
                <xs:element name="ReversalReason" type="ReversalReason" minOccurs="0" maxOccurs="1" nillable="true"/>
                <xs:element name="Sender" type="SenderReceiver" minOccurs="0" maxOccurs="1" nillable="true"/>
                <xs:element name="Receiver" type="SenderReceiver" minOccurs="0" maxOccurs="1" nillable="true"/>
                <xs:element name="FXConv" type="FXConv" minOccurs="0" maxOccurs="1" nillable="true"/>
                <xs:element name="PaymentToken" type="PaymentToken" minOccurs="0" maxOccurs="1" nillable="true"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element minOccurs="0" maxOccurs="unbounded" name="CardFinancial">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="RecordType" minOccurs="1" maxOccurs="1" nillable="false">
                  <xs:simpleType>
                    <xs:restriction base="xs:string">
                      <xs:enumeration value="ADV"/>
                      <xs:enumeration value="REV"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
                <xs:element name="FinId" type="xs:unsignedLong" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="AuthId" type="NullOrULong" minOccurs="0" maxOccurs="1" nillable="true"/>
                <xs:element name="PresentmentID" type="xs:unsignedLong" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="LocalDate" type="LocalDate" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="LocalDateUTC" type="LocalDateUTC" minOccurs="0" maxOccurs="1" nillable="true"/>
                <xs:element name="SettlementDate" type="SettlementDate" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="SchemeSettlementDate" type="SettlementDate" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="SchemeReconciliationDate" type="SettlementDate" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="CycleNumber" type="CycleNumber" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Card" type="Card" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Account" type="Account" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="TxnCode" type="TxnCode" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="TxnAmt" type="BasicAmount" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="CashbackAmt" type="BasicAmount" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="BillAmt" type="ConversionRateAmount" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="ApprCode" type="ApprCode" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Trace" type="Trace" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="MerchCode" type="MerchCode" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Term" type="Term" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Schema" type="Schema" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Txn" type="Txn" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="MsgSource" type="MsgSource" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Fee" type="DirectionAmount" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="FeeAmt" type="DirectionAmount" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="FeeClass" type="FeeClass" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="SettlementAmt" type="ConversionSettlementAmt" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="ARN" type="ARN" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="FIID" type="FIID" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="RIID" type="RIID" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="ReasonCode" type="xs:string" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Classification" type="Classification" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Response" type="Response" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="OrigTxnAmt" type="PartialAmount" minOccurs="0" maxOccurs="1" nillable="true"/>
                <xs:element name="CCAAmount" type="CCAAmount" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="SettlementIndicator" type="xs:string" minOccurs="0" maxOccurs="1" nillable="false"/>
                <xs:element name="Additional_Amt_DE54" type="xs:string" minOccurs="0" maxOccurs="1" nillable="true"/>
                <xs:element name="BSA" type="xs:string" minOccurs="0" maxOccurs="1" nillable="true"/>
                <xs:element name="FXConv" type="FXConv" minOccurs="0" maxOccurs="1" nillable="true"/>
                <xs:element name="PaymentToken" type="PaymentToken" minOccurs="0" maxOccurs="1" nillable="true"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element minOccurs="0" maxOccurs="unbounded" name="CardChrgBackRepRes">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="RecordType" minOccurs="1" maxOccurs="1" nillable="false">
                  <xs:simpleType>
                    <xs:restriction base="xs:string">
                      <xs:enumeration value="CB"/>
                      <xs:enumeration value="CBREV"/>
                      <xs:enumeration value="REPRES"/>
                      <xs:enumeration value="REPRESREV"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
                <xs:element name="ChgbackRepresId" type="xs:unsignedLong" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="LocalDate" type="LocalDate" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="SettlementDate" type="SettlementDate" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Card" type="Card" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Account" type="AccountChrgBack" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="TxnCode" type="TxnCode" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="TxnAmt" type="BasicAmount" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="CashbackAmt" type="BasicAmount" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="BillAmt" type="ConversionRateAmount" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="ApprCode" type="ApprCode" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Trace" type="Trace" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="MerchCode" type="MerchCode" minOccurs="1" maxOccurs="1" nillable="true"/>
                <xs:element name="Term" type="Term" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Schema" type="Schema" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Txn" type="Txn" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="MsgSource" type="MsgSource" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Repeat" minOccurs="1" maxOccurs="1" nillable="false">
                  <xs:simpleType>
                    <xs:restriction base="xs:unsignedByte">
                      <xs:enumeration value="1"/>
                      <xs:enumeration value="2"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
                <xs:element name="SettlementAmt" type="ConversionSettlementAmt" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Fee" type="DirectionAmount" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="ARN" type="ARN" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="FIID" type="FIID" minOccurs="0" maxOccurs="1" nillable="false"/>
                <xs:element name="RIID" type="RIID" minOccurs="0" maxOccurs="1" nillable="false"/>
                <xs:element name="ReasonCode" type="xs:string" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Classification" type="Classification" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="OrigTxnAmt" type="PartialAmount" minOccurs="0" maxOccurs="1" nillable="true"/>
                <xs:element name="PartialReversal" type="xs:boolean" minOccurs="0" maxOccurs="1" nillable="true"/>
                <xs:element name="SettlementCycle" type="xs:string" minOccurs="0" maxOccurs="1" nillable="true"/>
                <xs:element name="ReconciliationDate" type="xs:string" minOccurs="0" maxOccurs="1" nillable="true"/>
                <xs:element name="ReconciliationCycle" type="xs:string" minOccurs="0" maxOccurs="1" nillable="true"/>
                <xs:element name="Usage" type="xs:string" minOccurs="0" maxOccurs="1" nillable="true"/>
                <xs:element name="Pending_Billing_Amount" type="xs:decimal" minOccurs="0" maxOccurs="1" nillable="true"/>
                <xs:element name="SettlementIndicator" type="xs:string" minOccurs="0" maxOccurs="1" nillable="false"/>
                <xs:element name="Additional_Amt_DE54" type="xs:string" minOccurs="0" maxOccurs="1" nillable="true"/>
                <xs:element name="ChargebackRefNum" type="xs:string" minOccurs="0" maxOccurs="1" nillable="true"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element minOccurs="0" maxOccurs="unbounded" name="CardFee">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="CardFeeId" type="xs:unsignedLong" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="LocalDate" type="LocalDate" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="SettlementDate" type="SettlementDate" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Card" type="Card" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Account" type="Account" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="TxId" type="xs:unsignedLong" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="TxnCode" type="TxnCode" minOccurs="0" maxOccurs="1" nillable="false"/>
                <xs:element name="MerchCode" type="MerchCode" minOccurs="0" maxOccurs="1" nillable="false"/>
                <xs:element name="MsgSource" type="MsgSourceCardAuthorisation" minOccurs="0" maxOccurs="1" nillable="true"/>
                <xs:element name="FeeClass" type="FeeClass" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="LoadUnloadId" type="xs:unsignedLong" minOccurs="0" maxOccurs="1" nillable="true"/>
                <xs:element name="Desc" type="Desc" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="FeeAmt" type="DirectionAmount" minOccurs="0" maxOccurs="1" nillable="true"/>
                <xs:element name="Amt" type="DirectionAmount" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="FIID" type="FIID" minOccurs="0" maxOccurs="1" nillable="true"/>
                <xs:element name="ReasonCode" type="xs:string" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Recon" type="Recon" minOccurs="0" maxOccurs="1" nillable="false"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element minOccurs="0" maxOccurs="unbounded" name="MasterCardFee">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="RecordType" type="xs:string" minOccurs="1" maxOccurs="1" nillable="true"/>
                <xs:element name="MastercardFeeId" type="xs:unsignedLong" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="MTID" type="MTID" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Function_Code_024" type="Function_Code_024" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Conversion_Rate_Reconciliation_009" type="Conversion_Rate_Reconciliation_009" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Additional_Data_048" type="Additional_Data_048" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="LocalDate" type="LocalDate" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="SettlementDate" type="SettlementDate" minOccurs="1" maxOccurs="1" nillable="true"/>
                <xs:element name="FeeClass" type="MasterCardFeeClass" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Desc" type="Desc" minOccurs="1" maxOccurs="1" nillable="true"/>
                <xs:element name="FeeAmt" type="DirectionAmount" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Amt" type="DirectionAmount" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="ReasonCode" type="xs:string" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Data_Record_072" type="Data_Record_072" minOccurs="1" maxOccurs="1" nillable="true"/>
                <xs:element name="DE93_Txn_Dest_ID" type="DE93_Txn_Dest_ID" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="DE94_Txn_Orig_ID" type="DE94_Txn_Orig_ID" minOccurs="1" maxOccurs="1" nillable="true"/>
                <xs:element name="File_ID_PDS0105" type="File_ID_PDS0105" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="FileProcessDate" type="FileProcessDate" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Recon" type="Recon" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Settlement" type="Settlement" minOccurs="1" maxOccurs="1" nillable="false"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element minOccurs="0" maxOccurs="unbounded" name="CardLoadUnload">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="RecordType" minOccurs="1" maxOccurs="1" nillable="false">
                  <xs:simpleType>
                    <xs:restriction base="xs:string">
                      <xs:enumeration value="LOAD"/>
                      <xs:enumeration value="LOADREV"/>
                      <xs:enumeration value="UNLOAD"/>
                      <xs:enumeration value="UNLOADREV"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
                <xs:element name="LoadUnloadId" type="xs:unsignedLong" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="LocalDate" type="LocalDate" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="SettlementDate" type="SettlementDate" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Card" type="Card" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Account" type="Account" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="MerchCode" type="MerchCode" minOccurs="0" maxOccurs="1" nillable="true"/>
                <xs:element name="Amount" type="DirectionAmount" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Desc" type="Desc" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Load" type="LoadSource" minOccurs="1" maxOccurs="1" nillable="false"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element minOccurs="0" maxOccurs="unbounded" name="ApprovedAgencyBanking">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="CashType" minOccurs="1" maxOccurs="1" nillable="true">
                  <xs:simpleType>
                    <xs:restriction base="xs:string">					
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
                <xs:element name="BankingId" type="xs:unsignedLong" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="File" type="ABFile" minOccurs="0" maxOccurs="1" nillable="true"/>
                <xs:element name="SettlementDate" type="SettlementDate" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Card" type="Card" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="AgencyAccount" type="ABAccount" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="External" type="ABExternal" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="CashCode" type="ABCashCode" minOccurs="1" maxOccurs="1" nillable="true"/>
                <xs:element name="Desc" type="Desc" minOccurs="1" maxOccurs="1" nillable="true"/>
                <xs:element name="CashAmt" type="BasicAmount" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Fee" type="DirectionAmount" minOccurs="1" maxOccurs="1" nillable="true"/>
                <xs:element name="BillAmt" type="RateAmount" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="OrigTxnAmt" type="PartialAmount" minOccurs="0" maxOccurs="1" nillable="true"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element minOccurs="0" maxOccurs="unbounded" name="DeclinedAgencyBanking">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="CashType" minOccurs="1" maxOccurs="1" nillable="true">
                  <xs:simpleType>
                    <xs:restriction base="xs:string">				
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
                <xs:element name="BankingId" type="xs:unsignedLong" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="File" type="ABFile" minOccurs="0" maxOccurs="1" nillable="true"/>
                <xs:element name="SettlementDate" type="SettlementDate" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Card" type="Card" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="AgencyAccount" type="ABAccount" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="External" type="ABExternal" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="CashCode" type="ABCashCode" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Desc" type="Desc" minOccurs="1" maxOccurs="1" nillable="true"/>
                <xs:element name="CashAmt" type="BasicAmount" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="DeclineReason" type="ABDeclineReason" minOccurs="1" maxOccurs="1" nillable="true"/>
                <xs:element name="OrigTxnAmt" type="PartialAmount" minOccurs="0" maxOccurs="1" nillable="true"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element minOccurs="0" maxOccurs="unbounded" name="AgencyBankingFee">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="BankingFeeId" type="xs:unsignedLong" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="SettlementDate" type="SettlementDate" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Card" type="Card" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="AgencyAccount" type="ABAccount" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="AbId" type="xs:unsignedLong" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Desc" type="Desc" minOccurs="1" maxOccurs="1" nillable="true"/>
                <xs:element name="Amt" type="ABDirectionAmount" minOccurs="1" maxOccurs="1" nillable="false"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element minOccurs="0" maxOccurs="unbounded" name="CardBalAdjust">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="LocalDate" type="LocalDate" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="AdjustId" type="xs:unsignedLong" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="SettlementDate" type="SettlementDate" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Card" type="Card" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Account" type="Account" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="Amount" type="DirectionAmount" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="MerchCode" type="MerchCode" minOccurs="0" maxOccurs="1" nillable="true"/>
                <xs:element name="Desc" type="Desc" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xs:element name="AdjustType" type="AdjustType" minOccurs="1" maxOccurs="1" nillable="false"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element minOccurs="0" maxOccurs="unbounded" name="CardEvent">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="Card">
                  <xs:complexType>
                    <xs:attribute name="PAN" type="xs:unsignedLong" use="required"/>
                    <xs:attribute name = "productid" use = "optional">
                      <xs:simpleType>
                        <xs:restriction base = "xs:string">
                          <xs:maxLength value = "5"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:attribute>
                  </xs:complexType>
                </xs:element>
                <xs:element name="Event">
                  <xs:complexType>
                    <xs:attribute name="Type" type="EventType" use="required"/>
                    <xs:attribute name="Source" type="xs:unsignedByte" use="required"/>
                    <xs:attribute name="ActivationDate" type="xs:string" use="required"/>
                    <xs:attribute name="ConvertedDate" type="xs:string" use="optional"/>
                    <xs:attribute name="StatCode" type="xs:string" use="required"/>
                    <xs:attribute name="OldStatCode" type="xs:string" use="required"/>
                    <xs:attribute name="Date" type="xs:string" use="required"/>
                    <xs:attribute name="transactionid" type="xs:string" use="required"/>
                  </xs:complexType>
                </xs:element>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
	      <xs:element minOccurs="0" maxOccurs="unbounded" name="WalletTransaction">
				<xs:complexType>
					<xs:sequence>
						<xs:element name = "Id" type = "xs:string" minOccurs="1" maxOccurs="1" nillable="false"/>
						<xs:element name = "TransactionId" type = "xs:string" minOccurs="1" maxOccurs="1" nillable="false"/>
						<xs:element name = "SequenceNumber" type = "xs:string" minOccurs="1" maxOccurs="1" nillable="false"/>
						<xs:element name = "OperationType" type = "xs:string" minOccurs="0" maxOccurs="1" nillable="true"/>
						<xs:element name = "Source" type = "WalletTransactionSource" minOccurs="0" maxOccurs="1" nillable="true"/>
						<xs:element name = "Destination" type = "WalletTransactionDestination" minOccurs="0" maxOccurs="1" nillable="true"/>
						<xs:element name = "Other" type = "WalletTransactionOther" minOccurs="0" maxOccurs="1" nillable="true"/>
						<xs:element name = "FxRate" type = "xs:string" minOccurs="1" maxOccurs="1" nillable="false"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>			
        </xs:choice>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
