4.4 Balance Report XML Schema

Below is a copy of the latest Balance Report XML schema.

Copy
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
           id="Balances">
    <xs:complexType name="CARD">
        <xs:sequence>
            <xs:element name="PAN" minOccurs="1" maxOccurs="1" nillable="false">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:minLength value="14"/>
                        <xs:maxLength value="19"/>
                        <xs:pattern value="^\d+$"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="MaskedPAN" minOccurs="0" maxOccurs="1" nillable="true">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:maxLength value="16"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="VIRTUAL" minOccurs="1" maxOccurs="1" nillable="false">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="Y"/>
                        <xs:enumeration value="N"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="PRIMARY" minOccurs="1" maxOccurs="1" nillable="false">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="Y"/>
                        <xs:enumeration value="N"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="MVC" minOccurs="0" maxOccurs="1" nillable="true">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="Y"/>
                        <xs:enumeration value="N"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>            
            <xs:element name="CRDPRODUCT" minOccurs="1" maxOccurs="1" nillable="false">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:maxLength value="4"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="PROGRAMID" minOccurs="1" maxOccurs="1" nillable="false">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:maxLength value="6"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="CUSTCODE" minOccurs="1" maxOccurs="1" nillable="false">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:maxLength value="8"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="STATCODE" type="STATCODE" minOccurs="1" maxOccurs="1" nillable="false"/>
            <xs:element name="EXPDATE" minOccurs="1" maxOccurs="1" nillable="false">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:maxLength value="10"/>
                        <xs:pattern value="^(20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="GPSEXPDATE" minOccurs="0" maxOccurs="1" nillable="false">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:maxLength value="10"/>
                        <xs:pattern value="^$|^(20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="CRDACCNO" type="ACCNO" minOccurs="1" maxOccurs="1" nillable="false"/>
            <xs:element name="PRIMARYTOKEN" minOccurs="0" maxOccurs="1" nillable="false">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:minLength value="15"/>
                        <xs:maxLength value="19"/>
                        <xs:pattern value="^\d+$"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="CRDCURRCODE" type="CRDCURRCODE" minOccurs="1" maxOccurs="1" nillable="false"/>
            <xs:element name="LINKEDTOKEN" type="xs:decimal" minOccurs="0" maxOccurs="1" nillable="false"/>
            <xs:element name="PRODUCTID" minOccurs="0" maxOccurs="1" nillable="false">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:maxLength value="5"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="LASTUPDATED" minOccurs="1" maxOccurs="1" nillable="false">
                <xs:simpleType>
                    <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:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ACCOUNT">
        <xs:sequence>
            <xs:element name="ACCNO" type="ACCNO" minOccurs="1" maxOccurs="1" nillable="false"/>
            <xs:element name="CURRCODE" type="CRDCURRCODE" minOccurs="1" maxOccurs="1" nillable="false"/>
            <xs:element name="ACCTYPE" minOccurs="1" maxOccurs="1" nillable="false">
                <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:element>
            <xs:element name="SORTCODE" type="SORTCODE" minOccurs="0" maxOccurs="1" nillable="false"/>
            <xs:element name="BANKACC" type="BANKACC" minOccurs="0" maxOccurs="1" nillable="false"/>
            <xs:element name="FEEBAND" minOccurs="0" maxOccurs="1" nillable="false">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:maxLength value="10"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="PAYMENT" type="PAYMENT" minOccurs="0" maxOccurs="1" nillable="false"/>
            <xs:element name="FINAMT" type="xs:decimal" minOccurs="1" maxOccurs="1" nillable="false"/>
            <xs:element name="BLKAMT" type="xs:decimal" minOccurs="1" maxOccurs="1" nillable="false"/>
            <xs:element name="AMTAVL" type="xs:decimal" minOccurs="1" maxOccurs="1" nillable="false"/>
            <xs:element name="LINKEDTOKEN" type="xs:decimal" minOccurs="0" maxOccurs="1" nillable="false"/>
            <xs:sequence minOccurs="0" maxOccurs="unbounded">
                <xs:element name="CARD" type="CARD"/>
            </xs:sequence>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="SCHEME">
        <xs:sequence maxOccurs="unbounded">
            <xs:element name="ACCOUNT" type="ACCOUNT"/>
        </xs:sequence>
        <xs:attribute name="ID" use="optional">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:maxLength value="3"/>
                    <xs:pattern value="^(([A-Za-z0-9]|\s){3})$"/>

                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:simpleType name="ACCNO">
        <xs:restriction base="xs:string">
            <xs:maxLength value="28"/>
        </xs:restriction>

    </xs:simpleType>
    <xs:simpleType name="STATCODE">
        <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="08"/>
            <xs:enumeration value="10"/>
            <xs:enumeration value="12"/>
            <xs:enumeration value="13"/>
            <xs:enumeration value="14"/>
            <xs:enumeration value="15"/>
            <xs:enumeration value="17"/>
            <xs:enumeration value="30"/>
            <xs:enumeration value="31"/>
            <xs:enumeration value="32"/>
            <xs:enumeration value="33"/>
            <xs:enumeration value="36"/>
            <xs:enumeration value="37"/>
            <xs:enumeration value="38"/>
            <xs:enumeration value="41"/>
            <xs:enumeration value="43"/>
            <xs:enumeration value="46"/>
            <xs:enumeration value="51"/>
            <xs:enumeration value="54"/>
            <xs:enumeration value="55"/>
            <xs:enumeration value="57"/>
            <xs:enumeration value="58"/>
            <xs:enumeration value="59"/>
            <xs:enumeration value="61"/>
            <xs:enumeration value="62"/>
            <xs:enumeration value="63"/>
            <xs:enumeration value="64"/>
            <xs:enumeration value="65"/>
            <xs:enumeration value="66"/>
            <xs:enumeration value="67"/>
            <xs:enumeration value="68"/>
            <xs:enumeration value="6P"/>
            <xs:enumeration value="70"/>
            <xs:enumeration value="71"/>
            <xs:enumeration value="75"/>
            <xs:enumeration value="76"/>
            <xs:enumeration value="77"/>
            <xs:enumeration value="78"/>
            <xs:enumeration value="79"/>
            <xs:enumeration value="80"/>
            <xs:enumeration value="81"/>
            <xs:enumeration value="82"/>
            <xs:enumeration value="83"/>
            <xs:enumeration value="85"/>
            <xs:enumeration value="86"/>
            <xs:enumeration value="87"/>
            <xs:enumeration value="88"/>
            <xs:enumeration value="89"/>
            <xs:enumeration value="90"/>
            <xs:enumeration value="91"/>
            <xs:enumeration value="92"/>
            <xs:enumeration value="93"/>
            <xs:enumeration value="94"/>
            <xs:enumeration value="95"/>
            <xs:enumeration value="96"/>
            <xs:enumeration value="98"/>
            <xs:enumeration value="99"/>
            <xs:enumeration value="C0"/>
            <xs:enumeration value="C1"/>
            <xs:enumeration value="N0"/>
            <xs:enumeration value="N7"/>
            <xs:enumeration value="P5"/>
            <xs:enumeration value="P6"/>
            <xs:enumeration value="G1"/>
            <xs:enumeration value="G2"/>
            <xs:enumeration value="G3"/>
            <xs:enumeration value="G4"/>
            <xs:enumeration value="G5"/>
            <xs:enumeration value="G6"/>
            <xs:enumeration value="G7"/>
            <xs:enumeration value="G8"/>
            <xs:enumeration value="G9"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="CRDCURRCODE">
        <xs:restriction base="xs:string">
            <xs:maxLength value="3"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="SORTCODE">
        <xs:restriction base="xs:string">
            <xs:minLength value="6"/>
            <xs:maxLength value="6"/>
            <xs:pattern value="^(\d){6}$"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="BANKACC">
        <xs:restriction base="xs:string">
            <xs:minLength value="8"/>
            <xs:maxLength value="8"/>
            <xs:pattern value="^(\d){8}$"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="PAYMENT">
        <xs:restriction base="xs:string">
            <xs:maxLength value="4"/>
            <xs:pattern value="(R0|R1|R2|R5)?(P0|P1|P2|P5)?"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:element name="SCHEME" type="SCHEME"/>
</xs:schema>

 

 

4.4.1 Schema Changes for Balance XML Reporting

Refer to the list of changes below.

Version

Description

V1.14

ISO currency codes and ISO country codes removed.

V1.13

Added the following codes to the schema: CUW, SXM, XCG.

V1.12

Added Discover card type to the ACCTYPE element.

Updated minimum length requirement of PAN in <Card> to 14 digits.

Added new ISO currency code: 924

V1.11

Added missing STATCODE values: G1,G2,G3,G4,G5,G6,G7,G8,G9,93,6P,59 & 46.

V1.10

Added the ability to accept empty strings in the GPSEXPDATE.

V1.09

Added a new field PRIMARYTOKEN.

V1.08

Added a new field GPSEXPDATE.

V1.07

Spaces added as SchemeID are allowed.

V1.06

Thredd Balance XML Schema for normal balance file