details: https://code.tryton.org/tryton/commit/58df8e393370
branch: default
user: Cédric Krier <[email protected]>
date: Mon Aug 24 15:08:28 2026 +0200
description:
Add pain.008.001.08 flavor to SEPA payment
diffstat:
modules/account_payment_sepa/CHANGELOG | 1 +
modules/account_payment_sepa/payment.py | 1 +
modules/account_payment_sepa/template/pain.008.001.08.xml | 112 +
modules/account_payment_sepa/tests/pain.008.001.08.xsd | 1106 +++++++++++++
modules/account_payment_sepa/tests/test_module.py | 5 +
5 files changed, 1225 insertions(+), 0 deletions(-)
diffs (1260 lines):
diff -r cb7a86de735b -r 58df8e393370 modules/account_payment_sepa/CHANGELOG
--- a/modules/account_payment_sepa/CHANGELOG Mon Aug 24 11:50:30 2026 +0200
+++ b/modules/account_payment_sepa/CHANGELOG Mon Aug 24 15:08:28 2026 +0200
@@ -1,3 +1,4 @@
+* Add pain.008.001.08 flavor
* Add pain.001.001.09 flavor
Version 8.0.0 - 2026-04-20
diff -r cb7a86de735b -r 58df8e393370 modules/account_payment_sepa/payment.py
--- a/modules/account_payment_sepa/payment.py Mon Aug 24 11:50:30 2026 +0200
+++ b/modules/account_payment_sepa/payment.py Mon Aug 24 15:08:28 2026 +0200
@@ -96,6 +96,7 @@
(None, ''),
('pain.008.001.02', 'pain.008.001.02'),
('pain.008.001.04', 'pain.008.001.04'),
+ ('pain.008.001.08', 'pain.008.001.08'),
('pain.008.003.02', 'pain.008.003.02'),
], 'Receivable Flavor', states={
'required': Eval('process_method') == 'sepa',
diff -r cb7a86de735b -r 58df8e393370
modules/account_payment_sepa/template/pain.008.001.08.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/modules/account_payment_sepa/template/pain.008.001.08.xml Mon Aug 24
15:08:28 2026 +0200
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
+this repository contains the full copyright notices and license terms. -->
+<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.008.001.08"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:py="http://genshi.edgewall.org/">
+ <xi:include href="base.xml"/>
+ <xi:include href="base-postal-address-structured.xml"/>
+ <CstmrDrctDbtInitn>
+ <GrpHdr>
+ <MsgId>${group.sepa_message_id[:35]}</MsgId>
+
<CreDtTm>${datetime.datetime.now().replace(microsecond=0).isoformat()}</CreDtTm>
+ <!-- Authstn -->
+ <NbOfTxs>${len(group.payments)}</NbOfTxs>
+ <CtrlSum>${format(sum(p.amount for p in
group.payments).normalize(), 'f')}</CtrlSum>
+ <InitgPty>
+ ${PartyIdentification(group.sepa_initiating_party,
id=group.journal.sepa_receivable_initiator_id)}
+ </InitgPty>
+ <!-- FwdgAgt -->
+ </GrpHdr>
+ <PmtInf py:for="key, payments in group.sepa_payments">
+ <PmtInfId>${key['payment_info'][:35]}</PmtInfId>
+ <PmtMtd>DD</PmtMtd>
+ <BtchBookg>${'true' if group.journal.sepa_batch_booking else
'false'}</BtchBookg>
+ <NbOfTxs>${len(payments)}</NbOfTxs>
+ <CtrlSum>${format(sum(p.amount for p in payments).normalize(),
'f')}</CtrlSum>
+ <PmtTpInf>
+ <!-- InstrPrty -->
+ <SvcLvl>
+ <Cd>SEPA</Cd>
+ <!-- Prtry -->
+ </SvcLvl>
+ <LclInstrm>
+ <Cd>${key['scheme']}</Cd>
+ <!-- Prtry -->
+ </LclInstrm>
+ <SeqTp>${key['sequence_type']}</SeqTp>
+ <!-- CtgyPurp -->
+ </PmtTpInf>
+ <ReqdColltnDt>${key['date'].isoformat()}</ReqdColltnDt>
+ <Cdtr>
+ ${PartyIdentification(group.company.party)}
+ </Cdtr>
+ <CdtrAcct>
+ ${Account(group.journal.sepa_bank_account_number)}
+ </CdtrAcct>
+ <CdtrAgt>
+
${FinancialInstitution(group.journal.sepa_bank_account_number.account.bank,
only_bic=True)}
+ </CdtrAgt>
+ <!-- CdtrAgtAcct -->
+ <!-- UltmtCdtr -->
+ <ChrgBr>${group.journal.sepa_charge_bearer}</ChrgBr>
+ <!-- ChrgsAcct -->
+ <!-- ChrgsAcctAgt -->
+ <CdtrSchmeId>
+ ${PartyIdentification(group.company.party, id='eu_at_02')}
+ </CdtrSchmeId>
+ <DrctDbtTxInf py:for="payment in payments">
+ <PmtId>
+ <InstrId>${payment.sepa_instruction_id}</InstrId>
+ <EndToEndId>${payment.sepa_end_to_end_id}</EndToEndId>
+ <!-- UETR -->
+ </PmtId>
+ <!-- PmtTpInf -->
+ <InstdAmt py:attrs="{'Ccy':
payment.currency.code}">${format(payment.amount.normalize(), 'f')}</InstdAmt>
+ <!-- ChrgBr --> <!-- EPC only at payment information level -->
+ <DrctDbtTx>
+ <MndtRltdInf py:with="mandate = payment.sepa_mandate">
+ <MndtId>${mandate.identification}</MndtId>
+
<DtOfSgntr>${mandate.signature_date.isoformat()}</DtOfSgntr>
+ <!-- AmdmntInd -->
+ <!-- AmdmntInfDtls -->
+ <!-- ElctrncSgntr -->
+ <!-- FrstColltnDt -->
+ <!-- FnlColltnDt -->
+ <!-- Frqcy -->
+ <!-- Rsn -->
+ <!-- TrckgDays -->
+ </MndtRltdInf>
+ <!-- CdtrSchmeId -->
+ <!-- PreNtfctnId -->
+ <!-- PreNtfctnDt -->
+ </DrctDbtTx>
+ <!-- UltmtCdtr -->
+ <DbtrAgt>
+
${FinancialInstitution(payment.sepa_bank_account_number.account.bank,
only_bic=True)}
+ </DbtrAgt>
+ <!-- DbtrAgtAcct -->
+ <Dbtr>
+ ${PartyIdentification(payment.party)}
+ </Dbtr>
+ <DbtrAcct>
+ ${Account(payment.sepa_bank_account_number,
currency=False)}
+ </DbtrAcct>
+ <!-- UltmtDbtr -->
+ <!-- InstrForCdtrAgt -->
+ <!-- Purp -->
+ <!-- RgltryRptg -->
+ <!-- Tax -->
+ <!-- RltdRmtInf -->
+ <RmtInf py:if="payment.sepa_remittance_information">
+ <Ustrd>${payment.sepa_remittance_information[:140]}</Ustrd>
+ <!-- Strd -->
+ </RmtInf>
+ <!-- SplmtryData -->
+ </DrctDbtTxInf>
+ </PmtInf>
+ <!-- SplmtryData -->
+ </CstmrDrctDbtInitn>
+</Document>
diff -r cb7a86de735b -r 58df8e393370
modules/account_payment_sepa/tests/pain.008.001.08.xsd
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/modules/account_payment_sepa/tests/pain.008.001.08.xsd Mon Aug 24
15:08:28 2026 +0200
@@ -0,0 +1,1106 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--Generated by Standards Editor (build:R1.6.15) on 2019 Feb 14 11:57:59, ISO
20022 version : 2013-->
+<xs:schema xmlns="urn:iso:std:iso:20022:tech:xsd:pain.008.001.08"
xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
targetNamespace="urn:iso:std:iso:20022:tech:xsd:pain.008.001.08">
+ <xs:element name="Document" type="Document"/>
+ <xs:complexType name="AccountIdentification4Choice">
+ <xs:choice>
+ <xs:element name="IBAN" type="IBAN2007Identifier"/>
+ <xs:element name="Othr" type="GenericAccountIdentification1"/>
+ </xs:choice>
+ </xs:complexType>
+ <xs:complexType name="AccountSchemeName1Choice">
+ <xs:choice>
+ <xs:element name="Cd" type="ExternalAccountIdentification1Code"/>
+ <xs:element name="Prtry" type="Max35Text"/>
+ </xs:choice>
+ </xs:complexType>
+ <xs:simpleType name="ActiveOrHistoricCurrencyAndAmount_SimpleType">
+ <xs:restriction base="xs:decimal">
+ <xs:fractionDigits value="5"/>
+ <xs:totalDigits value="18"/>
+ <xs:minInclusive value="0"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="ActiveOrHistoricCurrencyAndAmount">
+ <xs:simpleContent>
+ <xs:extension base="ActiveOrHistoricCurrencyAndAmount_SimpleType">
+ <xs:attribute name="Ccy" type="ActiveOrHistoricCurrencyCode"
use="required"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ <xs:simpleType name="ActiveOrHistoricCurrencyCode">
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[A-Z]{3,3}"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="AddressType2Code">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="ADDR"/>
+ <xs:enumeration value="PBOX"/>
+ <xs:enumeration value="HOME"/>
+ <xs:enumeration value="BIZZ"/>
+ <xs:enumeration value="MLTO"/>
+ <xs:enumeration value="DLVY"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="AddressType3Choice">
+ <xs:choice>
+ <xs:element name="Cd" type="AddressType2Code"/>
+ <xs:element name="Prtry" type="GenericIdentification30"/>
+ </xs:choice>
+ </xs:complexType>
+ <xs:complexType name="AmendmentInformationDetails13">
+ <xs:sequence>
+ <xs:element maxOccurs="1" minOccurs="0" name="OrgnlMndtId"
type="Max35Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="OrgnlCdtrSchmeId"
type="PartyIdentification135"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="OrgnlCdtrAgt"
type="BranchAndFinancialInstitutionIdentification6"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="OrgnlCdtrAgtAcct"
type="CashAccount38"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="OrgnlDbtr"
type="PartyIdentification135"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="OrgnlDbtrAcct"
type="CashAccount38"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="OrgnlDbtrAgt"
type="BranchAndFinancialInstitutionIdentification6"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="OrgnlDbtrAgtAcct"
type="CashAccount38"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="OrgnlFnlColltnDt"
type="ISODate"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="OrgnlFrqcy"
type="Frequency36Choice"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="OrgnlRsn"
type="MandateSetupReason1Choice"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="OrgnlTrckgDays"
type="Exact2NumericText"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:simpleType name="AnyBICDec2014Identifier">
+ <xs:restriction base="xs:string">
+ <xs:pattern
value="[A-Z0-9]{4,4}[A-Z]{2,2}[A-Z0-9]{2,2}([A-Z0-9]{3,3}){0,1}"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Authorisation1Choice">
+ <xs:choice>
+ <xs:element name="Cd" type="Authorisation1Code"/>
+ <xs:element name="Prtry" type="Max128Text"/>
+ </xs:choice>
+ </xs:complexType>
+ <xs:simpleType name="Authorisation1Code">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="AUTH"/>
+ <xs:enumeration value="FDET"/>
+ <xs:enumeration value="FSUM"/>
+ <xs:enumeration value="ILEV"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="BICFIDec2014Identifier">
+ <xs:restriction base="xs:string">
+ <xs:pattern
value="[A-Z0-9]{4,4}[A-Z]{2,2}[A-Z0-9]{2,2}([A-Z0-9]{3,3}){0,1}"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="BatchBookingIndicator">
+ <xs:restriction base="xs:boolean"/>
+ </xs:simpleType>
+ <xs:complexType name="BranchAndFinancialInstitutionIdentification6">
+ <xs:sequence>
+ <xs:element name="FinInstnId"
type="FinancialInstitutionIdentification18"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="BrnchId"
type="BranchData3"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="BranchData3">
+ <xs:sequence>
+ <xs:element maxOccurs="1" minOccurs="0" name="Id"
type="Max35Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="LEI"
type="LEIIdentifier"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Nm"
type="Max140Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="PstlAdr"
type="PostalAddress24"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="CashAccount38">
+ <xs:sequence>
+ <xs:element name="Id" type="AccountIdentification4Choice"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Tp"
type="CashAccountType2Choice"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Ccy"
type="ActiveOrHistoricCurrencyCode"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Nm"
type="Max70Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Prxy"
type="ProxyAccountIdentification1"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="CashAccountType2Choice">
+ <xs:choice>
+ <xs:element name="Cd" type="ExternalCashAccountType1Code"/>
+ <xs:element name="Prtry" type="Max35Text"/>
+ </xs:choice>
+ </xs:complexType>
+ <xs:complexType name="CategoryPurpose1Choice">
+ <xs:choice>
+ <xs:element name="Cd" type="ExternalCategoryPurpose1Code"/>
+ <xs:element name="Prtry" type="Max35Text"/>
+ </xs:choice>
+ </xs:complexType>
+ <xs:simpleType name="ChargeBearerType1Code">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="DEBT"/>
+ <xs:enumeration value="CRED"/>
+ <xs:enumeration value="SHAR"/>
+ <xs:enumeration value="SLEV"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="ClearingSystemIdentification2Choice">
+ <xs:choice>
+ <xs:element name="Cd"
type="ExternalClearingSystemIdentification1Code"/>
+ <xs:element name="Prtry" type="Max35Text"/>
+ </xs:choice>
+ </xs:complexType>
+ <xs:complexType name="ClearingSystemMemberIdentification2">
+ <xs:sequence>
+ <xs:element maxOccurs="1" minOccurs="0" name="ClrSysId"
type="ClearingSystemIdentification2Choice"/>
+ <xs:element name="MmbId" type="Max35Text"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="Contact4">
+ <xs:sequence>
+ <xs:element maxOccurs="1" minOccurs="0" name="NmPrfx"
type="NamePrefix2Code"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Nm"
type="Max140Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="PhneNb"
type="PhoneNumber"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="MobNb"
type="PhoneNumber"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="FaxNb"
type="PhoneNumber"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="EmailAdr"
type="Max2048Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="EmailPurp"
type="Max35Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="JobTitl"
type="Max35Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Rspnsblty"
type="Max35Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Dept"
type="Max70Text"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="Othr"
type="OtherContact1"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="PrefrdMtd"
type="PreferredContactMethod1Code"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:simpleType name="CountryCode">
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[A-Z]{2,2}"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="CreditDebitCode">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="CRDT"/>
+ <xs:enumeration value="DBIT"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="CreditorReferenceInformation2">
+ <xs:sequence>
+ <xs:element maxOccurs="1" minOccurs="0" name="Tp"
type="CreditorReferenceType2"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Ref"
type="Max35Text"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="CreditorReferenceType1Choice">
+ <xs:choice>
+ <xs:element name="Cd" type="DocumentType3Code"/>
+ <xs:element name="Prtry" type="Max35Text"/>
+ </xs:choice>
+ </xs:complexType>
+ <xs:complexType name="CreditorReferenceType2">
+ <xs:sequence>
+ <xs:element name="CdOrPrtry" type="CreditorReferenceType1Choice"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Issr"
type="Max35Text"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="CustomerDirectDebitInitiationV08">
+ <xs:sequence>
+ <xs:element name="GrpHdr" type="GroupHeader83"/>
+ <xs:element maxOccurs="unbounded" minOccurs="1" name="PmtInf"
type="PaymentInstruction29"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="SplmtryData"
type="SupplementaryData1"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="DateAndPlaceOfBirth1">
+ <xs:sequence>
+ <xs:element name="BirthDt" type="ISODate"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="PrvcOfBirth"
type="Max35Text"/>
+ <xs:element name="CityOfBirth" type="Max35Text"/>
+ <xs:element name="CtryOfBirth" type="CountryCode"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="DatePeriod2">
+ <xs:sequence>
+ <xs:element name="FrDt" type="ISODate"/>
+ <xs:element name="ToDt" type="ISODate"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:simpleType name="DecimalNumber">
+ <xs:restriction base="xs:decimal">
+ <xs:fractionDigits value="17"/>
+ <xs:totalDigits value="18"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="DirectDebitTransaction10">
+ <xs:sequence>
+ <xs:element maxOccurs="1" minOccurs="0" name="MndtRltdInf"
type="MandateRelatedInformation14"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="CdtrSchmeId"
type="PartyIdentification135"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="PreNtfctnId"
type="Max35Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="PreNtfctnDt"
type="ISODate"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="DirectDebitTransactionInformation23">
+ <xs:sequence>
+ <xs:element name="PmtId" type="PaymentIdentification6"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="PmtTpInf"
type="PaymentTypeInformation29"/>
+ <xs:element name="InstdAmt"
type="ActiveOrHistoricCurrencyAndAmount"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="ChrgBr"
type="ChargeBearerType1Code"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="DrctDbtTx"
type="DirectDebitTransaction10"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="UltmtCdtr"
type="PartyIdentification135"/>
+ <xs:element name="DbtrAgt"
type="BranchAndFinancialInstitutionIdentification6"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="DbtrAgtAcct"
type="CashAccount38"/>
+ <xs:element name="Dbtr" type="PartyIdentification135"/>
+ <xs:element name="DbtrAcct" type="CashAccount38"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="UltmtDbtr"
type="PartyIdentification135"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="InstrForCdtrAgt"
type="Max140Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Purp"
type="Purpose2Choice"/>
+ <xs:element maxOccurs="10" minOccurs="0" name="RgltryRptg"
type="RegulatoryReporting3"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Tax"
type="TaxInformation8"/>
+ <xs:element maxOccurs="10" minOccurs="0" name="RltdRmtInf"
type="RemittanceLocation7"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="RmtInf"
type="RemittanceInformation16"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="SplmtryData"
type="SupplementaryData1"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="DiscountAmountAndType1">
+ <xs:sequence>
+ <xs:element maxOccurs="1" minOccurs="0" name="Tp"
type="DiscountAmountType1Choice"/>
+ <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="DiscountAmountType1Choice">
+ <xs:choice>
+ <xs:element name="Cd" type="ExternalDiscountAmountType1Code"/>
+ <xs:element name="Prtry" type="Max35Text"/>
+ </xs:choice>
+ </xs:complexType>
+ <xs:complexType name="Document">
+ <xs:sequence>
+ <xs:element name="CstmrDrctDbtInitn"
type="CustomerDirectDebitInitiationV08"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="DocumentAdjustment1">
+ <xs:sequence>
+ <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="CdtDbtInd"
type="CreditDebitCode"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Rsn"
type="Max4Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="AddtlInf"
type="Max140Text"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="DocumentLineIdentification1">
+ <xs:sequence>
+ <xs:element maxOccurs="1" minOccurs="0" name="Tp"
type="DocumentLineType1"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Nb"
type="Max35Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="RltdDt"
type="ISODate"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="DocumentLineInformation1">
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" minOccurs="1" name="Id"
type="DocumentLineIdentification1"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Desc"
type="Max2048Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Amt"
type="RemittanceAmount3"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="DocumentLineType1">
+ <xs:sequence>
+ <xs:element name="CdOrPrtry" type="DocumentLineType1Choice"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Issr"
type="Max35Text"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="DocumentLineType1Choice">
+ <xs:choice>
+ <xs:element name="Cd" type="ExternalDocumentLineType1Code"/>
+ <xs:element name="Prtry" type="Max35Text"/>
+ </xs:choice>
+ </xs:complexType>
+ <xs:simpleType name="DocumentType3Code">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="RADM"/>
+ <xs:enumeration value="RPIN"/>
+ <xs:enumeration value="FXDR"/>
+ <xs:enumeration value="DISP"/>
+ <xs:enumeration value="PUOR"/>
+ <xs:enumeration value="SCOR"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="DocumentType6Code">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="MSIN"/>
+ <xs:enumeration value="CNFA"/>
+ <xs:enumeration value="DNFA"/>
+ <xs:enumeration value="CINV"/>
+ <xs:enumeration value="CREN"/>
+ <xs:enumeration value="DEBN"/>
+ <xs:enumeration value="HIRI"/>
+ <xs:enumeration value="SBIN"/>
+ <xs:enumeration value="CMCN"/>
+ <xs:enumeration value="SOAC"/>
+ <xs:enumeration value="DISP"/>
+ <xs:enumeration value="BOLD"/>
+ <xs:enumeration value="VCHR"/>
+ <xs:enumeration value="AROI"/>
+ <xs:enumeration value="TSUT"/>
+ <xs:enumeration value="PUOR"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="Exact2NumericText">
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[0-9]{2}"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="Exact4AlphaNumericText">
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[a-zA-Z0-9]{4}"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ExternalAccountIdentification1Code">
+ <xs:restriction base="xs:string">
+ <xs:minLength value="1"/>
+ <xs:maxLength value="4"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ExternalCashAccountType1Code">
+ <xs:restriction base="xs:string">
+ <xs:minLength value="1"/>
+ <xs:maxLength value="4"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ExternalCategoryPurpose1Code">
+ <xs:restriction base="xs:string">
+ <xs:minLength value="1"/>
+ <xs:maxLength value="4"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ExternalClearingSystemIdentification1Code">
+ <xs:restriction base="xs:string">
+ <xs:minLength value="1"/>
+ <xs:maxLength value="5"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ExternalDiscountAmountType1Code">
+ <xs:restriction base="xs:string">
+ <xs:minLength value="1"/>
+ <xs:maxLength value="4"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ExternalDocumentLineType1Code">
+ <xs:restriction base="xs:string">
+ <xs:minLength value="1"/>
+ <xs:maxLength value="4"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ExternalFinancialInstitutionIdentification1Code">
+ <xs:restriction base="xs:string">
+ <xs:minLength value="1"/>
+ <xs:maxLength value="4"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ExternalGarnishmentType1Code">
+ <xs:restriction base="xs:string">
+ <xs:minLength value="1"/>
+ <xs:maxLength value="4"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ExternalLocalInstrument1Code">
+ <xs:restriction base="xs:string">
+ <xs:minLength value="1"/>
+ <xs:maxLength value="35"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ExternalMandateSetupReason1Code">
+ <xs:restriction base="xs:string">
+ <xs:minLength value="1"/>
+ <xs:maxLength value="4"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ExternalOrganisationIdentification1Code">
+ <xs:restriction base="xs:string">
+ <xs:minLength value="1"/>
+ <xs:maxLength value="4"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ExternalPersonIdentification1Code">
+ <xs:restriction base="xs:string">
+ <xs:minLength value="1"/>
+ <xs:maxLength value="4"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ExternalProxyAccountType1Code">
+ <xs:restriction base="xs:string">
+ <xs:minLength value="1"/>
+ <xs:maxLength value="4"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ExternalPurpose1Code">
+ <xs:restriction base="xs:string">
+ <xs:minLength value="1"/>
+ <xs:maxLength value="4"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ExternalServiceLevel1Code">
+ <xs:restriction base="xs:string">
+ <xs:minLength value="1"/>
+ <xs:maxLength value="4"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ExternalTaxAmountType1Code">
+ <xs:restriction base="xs:string">
+ <xs:minLength value="1"/>
+ <xs:maxLength value="4"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="FinancialIdentificationSchemeName1Choice">
+ <xs:choice>
+ <xs:element name="Cd"
type="ExternalFinancialInstitutionIdentification1Code"/>
+ <xs:element name="Prtry" type="Max35Text"/>
+ </xs:choice>
+ </xs:complexType>
+ <xs:complexType name="FinancialInstitutionIdentification18">
+ <xs:sequence>
+ <xs:element maxOccurs="1" minOccurs="0" name="BICFI"
type="BICFIDec2014Identifier"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="ClrSysMmbId"
type="ClearingSystemMemberIdentification2"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="LEI"
type="LEIIdentifier"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Nm"
type="Max140Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="PstlAdr"
type="PostalAddress24"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Othr"
type="GenericFinancialIdentification1"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="Frequency36Choice">
+ <xs:choice>
+ <xs:element name="Tp" type="Frequency6Code"/>
+ <xs:element name="Prd" type="FrequencyPeriod1"/>
+ <xs:element name="PtInTm" type="FrequencyAndMoment1"/>
+ </xs:choice>
+ </xs:complexType>
+ <xs:simpleType name="Frequency6Code">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="YEAR"/>
+ <xs:enumeration value="MNTH"/>
+ <xs:enumeration value="QURT"/>
+ <xs:enumeration value="MIAN"/>
+ <xs:enumeration value="WEEK"/>
+ <xs:enumeration value="DAIL"/>
+ <xs:enumeration value="ADHO"/>
+ <xs:enumeration value="INDA"/>
+ <xs:enumeration value="FRTN"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="FrequencyAndMoment1">
+ <xs:sequence>
+ <xs:element name="Tp" type="Frequency6Code"/>
+ <xs:element name="PtInTm" type="Exact2NumericText"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="FrequencyPeriod1">
+ <xs:sequence>
+ <xs:element name="Tp" type="Frequency6Code"/>
+ <xs:element name="CntPerPrd" type="DecimalNumber"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="Garnishment3">
+ <xs:sequence>
+ <xs:element name="Tp" type="GarnishmentType1"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Grnshee"
type="PartyIdentification135"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="GrnshmtAdmstr"
type="PartyIdentification135"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="RefNb"
type="Max140Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Dt" type="ISODate"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="RmtdAmt"
type="ActiveOrHistoricCurrencyAndAmount"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="FmlyMdclInsrncInd"
type="TrueFalseIndicator"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="MplyeeTermntnInd"
type="TrueFalseIndicator"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="GarnishmentType1">
+ <xs:sequence>
+ <xs:element name="CdOrPrtry" type="GarnishmentType1Choice"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Issr"
type="Max35Text"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="GarnishmentType1Choice">
+ <xs:choice>
+ <xs:element name="Cd" type="ExternalGarnishmentType1Code"/>
+ <xs:element name="Prtry" type="Max35Text"/>
+ </xs:choice>
+ </xs:complexType>
+ <xs:complexType name="GenericAccountIdentification1">
+ <xs:sequence>
+ <xs:element name="Id" type="Max34Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="SchmeNm"
type="AccountSchemeName1Choice"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Issr"
type="Max35Text"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="GenericFinancialIdentification1">
+ <xs:sequence>
+ <xs:element name="Id" type="Max35Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="SchmeNm"
type="FinancialIdentificationSchemeName1Choice"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Issr"
type="Max35Text"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="GenericIdentification30">
+ <xs:sequence>
+ <xs:element name="Id" type="Exact4AlphaNumericText"/>
+ <xs:element name="Issr" type="Max35Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="SchmeNm"
type="Max35Text"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="GenericOrganisationIdentification1">
+ <xs:sequence>
+ <xs:element name="Id" type="Max35Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="SchmeNm"
type="OrganisationIdentificationSchemeName1Choice"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Issr"
type="Max35Text"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="GenericPersonIdentification1">
+ <xs:sequence>
+ <xs:element name="Id" type="Max35Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="SchmeNm"
type="PersonIdentificationSchemeName1Choice"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Issr"
type="Max35Text"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="GroupHeader83">
+ <xs:sequence>
+ <xs:element name="MsgId" type="Max35Text"/>
+ <xs:element name="CreDtTm" type="ISODateTime"/>
+ <xs:element maxOccurs="2" minOccurs="0" name="Authstn"
type="Authorisation1Choice"/>
+ <xs:element name="NbOfTxs" type="Max15NumericText"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="CtrlSum"
type="DecimalNumber"/>
+ <xs:element name="InitgPty" type="PartyIdentification135"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="FwdgAgt"
type="BranchAndFinancialInstitutionIdentification6"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:simpleType name="IBAN2007Identifier">
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[A-Z]{2,2}[0-9]{2,2}[a-zA-Z0-9]{1,30}"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ISODate">
+ <xs:restriction base="xs:date"/>
+ </xs:simpleType>
+ <xs:simpleType name="ISODateTime">
+ <xs:restriction base="xs:dateTime"/>
+ </xs:simpleType>
+ <xs:simpleType name="LEIIdentifier">
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[A-Z0-9]{18,18}[0-9]{2,2}"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="LocalInstrument2Choice">
+ <xs:choice>
+ <xs:element name="Cd" type="ExternalLocalInstrument1Code"/>
+ <xs:element name="Prtry" type="Max35Text"/>
+ </xs:choice>
+ </xs:complexType>
+ <xs:complexType name="MandateRelatedInformation14">
+ <xs:sequence>
+ <xs:element maxOccurs="1" minOccurs="0" name="MndtId"
type="Max35Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="DtOfSgntr"
type="ISODate"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="AmdmntInd"
type="TrueFalseIndicator"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="AmdmntInfDtls"
type="AmendmentInformationDetails13"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="ElctrncSgntr"
type="Max1025Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="FrstColltnDt"
type="ISODate"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="FnlColltnDt"
type="ISODate"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Frqcy"
type="Frequency36Choice"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Rsn"
type="MandateSetupReason1Choice"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="TrckgDays"
type="Exact2NumericText"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="MandateSetupReason1Choice">
+ <xs:choice>
+ <xs:element name="Cd" type="ExternalMandateSetupReason1Code"/>
+ <xs:element name="Prtry" type="Max70Text"/>
+ </xs:choice>
+ </xs:complexType>
+ <xs:simpleType name="Max1025Text">
+ <xs:restriction base="xs:string">
+ <xs:minLength value="1"/>
+ <xs:maxLength value="1025"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="Max10Text">
+ <xs:restriction base="xs:string">
+ <xs:minLength value="1"/>
+ <xs:maxLength value="10"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="Max128Text">
+ <xs:restriction base="xs:string">
+ <xs:minLength value="1"/>
+ <xs:maxLength value="128"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="Max140Text">
+ <xs:restriction base="xs:string">
+ <xs:minLength value="1"/>
+ <xs:maxLength value="140"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="Max15NumericText">
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[0-9]{1,15}"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="Max16Text">
+ <xs:restriction base="xs:string">
+ <xs:minLength value="1"/>
+ <xs:maxLength value="16"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="Max2048Text">
+ <xs:restriction base="xs:string">
+ <xs:minLength value="1"/>
+ <xs:maxLength value="2048"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="Max34Text">
+ <xs:restriction base="xs:string">
+ <xs:minLength value="1"/>
+ <xs:maxLength value="34"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="Max350Text">
+ <xs:restriction base="xs:string">
+ <xs:minLength value="1"/>
+ <xs:maxLength value="350"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="Max35Text">
+ <xs:restriction base="xs:string">
+ <xs:minLength value="1"/>
+ <xs:maxLength value="35"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="Max4Text">
+ <xs:restriction base="xs:string">
+ <xs:minLength value="1"/>
+ <xs:maxLength value="4"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="Max70Text">
+ <xs:restriction base="xs:string">
+ <xs:minLength value="1"/>
+ <xs:maxLength value="70"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="NameAndAddress16">
+ <xs:sequence>
+ <xs:element name="Nm" type="Max140Text"/>
+ <xs:element name="Adr" type="PostalAddress24"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:simpleType name="NamePrefix2Code">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="DOCT"/>
+ <xs:enumeration value="MADM"/>
+ <xs:enumeration value="MISS"/>
+ <xs:enumeration value="MIST"/>
+ <xs:enumeration value="MIKS"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="Number">
+ <xs:restriction base="xs:decimal">
+ <xs:fractionDigits value="0"/>
+ <xs:totalDigits value="18"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="OrganisationIdentification29">
+ <xs:sequence>
+ <xs:element maxOccurs="1" minOccurs="0" name="AnyBIC"
type="AnyBICDec2014Identifier"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="LEI"
type="LEIIdentifier"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="Othr"
type="GenericOrganisationIdentification1"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="OrganisationIdentificationSchemeName1Choice">
+ <xs:choice>
+ <xs:element name="Cd"
type="ExternalOrganisationIdentification1Code"/>
+ <xs:element name="Prtry" type="Max35Text"/>
+ </xs:choice>
+ </xs:complexType>
+ <xs:complexType name="OtherContact1">
+ <xs:sequence>
+ <xs:element name="ChanlTp" type="Max4Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Id"
type="Max128Text"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="Party38Choice">
+ <xs:choice>
+ <xs:element name="OrgId" type="OrganisationIdentification29"/>
+ <xs:element name="PrvtId" type="PersonIdentification13"/>
+ </xs:choice>
+ </xs:complexType>
+ <xs:complexType name="PartyIdentification135">
+ <xs:sequence>
+ <xs:element maxOccurs="1" minOccurs="0" name="Nm"
type="Max140Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="PstlAdr"
type="PostalAddress24"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Id"
type="Party38Choice"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="CtryOfRes"
type="CountryCode"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="CtctDtls"
type="Contact4"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="PaymentIdentification6">
+ <xs:sequence>
+ <xs:element maxOccurs="1" minOccurs="0" name="InstrId"
type="Max35Text"/>
+ <xs:element name="EndToEndId" type="Max35Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="UETR"
type="UUIDv4Identifier"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="PaymentInstruction29">
+ <xs:sequence>
+ <xs:element name="PmtInfId" type="Max35Text"/>
+ <xs:element name="PmtMtd" type="PaymentMethod2Code"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="BtchBookg"
type="BatchBookingIndicator"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="NbOfTxs"
type="Max15NumericText"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="CtrlSum"
type="DecimalNumber"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="PmtTpInf"
type="PaymentTypeInformation29"/>
+ <xs:element name="ReqdColltnDt" type="ISODate"/>
+ <xs:element name="Cdtr" type="PartyIdentification135"/>
+ <xs:element name="CdtrAcct" type="CashAccount38"/>
+ <xs:element name="CdtrAgt"
type="BranchAndFinancialInstitutionIdentification6"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="CdtrAgtAcct"
type="CashAccount38"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="UltmtCdtr"
type="PartyIdentification135"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="ChrgBr"
type="ChargeBearerType1Code"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="ChrgsAcct"
type="CashAccount38"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="ChrgsAcctAgt"
type="BranchAndFinancialInstitutionIdentification6"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="CdtrSchmeId"
type="PartyIdentification135"/>
+ <xs:element maxOccurs="unbounded" minOccurs="1"
name="DrctDbtTxInf" type="DirectDebitTransactionInformation23"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:simpleType name="PaymentMethod2Code">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="DD"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="PaymentTypeInformation29">
+ <xs:sequence>
+ <xs:element maxOccurs="1" minOccurs="0" name="InstrPrty"
type="Priority2Code"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="SvcLvl"
type="ServiceLevel8Choice"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="LclInstrm"
type="LocalInstrument2Choice"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="SeqTp"
type="SequenceType3Code"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="CtgyPurp"
type="CategoryPurpose1Choice"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:simpleType name="PercentageRate">
+ <xs:restriction base="xs:decimal">
+ <xs:fractionDigits value="10"/>
+ <xs:totalDigits value="11"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="PersonIdentification13">
+ <xs:sequence>
+ <xs:element maxOccurs="1" minOccurs="0" name="DtAndPlcOfBirth"
type="DateAndPlaceOfBirth1"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="Othr"
type="GenericPersonIdentification1"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="PersonIdentificationSchemeName1Choice">
+ <xs:choice>
+ <xs:element name="Cd" type="ExternalPersonIdentification1Code"/>
+ <xs:element name="Prtry" type="Max35Text"/>
+ </xs:choice>
+ </xs:complexType>
+ <xs:simpleType name="PhoneNumber">
+ <xs:restriction base="xs:string">
+ <xs:pattern value="\+[0-9]{1,3}-[0-9()+\-]{1,30}"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="PostalAddress24">
+ <xs:sequence>
+ <xs:element maxOccurs="1" minOccurs="0" name="AdrTp"
type="AddressType3Choice"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Dept"
type="Max70Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="SubDept"
type="Max70Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="StrtNm"
type="Max70Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="BldgNb"
type="Max16Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="BldgNm"
type="Max35Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Flr"
type="Max70Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="PstBx"
type="Max16Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Room"
type="Max70Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="PstCd"
type="Max16Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="TwnNm"
type="Max35Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="TwnLctnNm"
type="Max35Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="DstrctNm"
type="Max35Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="CtrySubDvsn"
type="Max35Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Ctry"
type="CountryCode"/>
+ <xs:element maxOccurs="7" minOccurs="0" name="AdrLine"
type="Max70Text"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:simpleType name="PreferredContactMethod1Code">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="LETT"/>
+ <xs:enumeration value="MAIL"/>
+ <xs:enumeration value="PHON"/>
+ <xs:enumeration value="FAXX"/>
+ <xs:enumeration value="CELL"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="Priority2Code">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="HIGH"/>
+ <xs:enumeration value="NORM"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="ProxyAccountIdentification1">
+ <xs:sequence>
+ <xs:element maxOccurs="1" minOccurs="0" name="Tp"
type="ProxyAccountType1Choice"/>
+ <xs:element name="Id" type="Max2048Text"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="ProxyAccountType1Choice">
+ <xs:choice>
+ <xs:element name="Cd" type="ExternalProxyAccountType1Code"/>
+ <xs:element name="Prtry" type="Max35Text"/>
+ </xs:choice>
+ </xs:complexType>
+ <xs:complexType name="Purpose2Choice">
+ <xs:choice>
+ <xs:element name="Cd" type="ExternalPurpose1Code"/>
+ <xs:element name="Prtry" type="Max35Text"/>
+ </xs:choice>
+ </xs:complexType>
+ <xs:complexType name="ReferredDocumentInformation7">
+ <xs:sequence>
+ <xs:element maxOccurs="1" minOccurs="0" name="Tp"
type="ReferredDocumentType4"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Nb"
type="Max35Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="RltdDt"
type="ISODate"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="LineDtls"
type="DocumentLineInformation1"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="ReferredDocumentType3Choice">
+ <xs:choice>
+ <xs:element name="Cd" type="DocumentType6Code"/>
+ <xs:element name="Prtry" type="Max35Text"/>
+ </xs:choice>
+ </xs:complexType>
+ <xs:complexType name="ReferredDocumentType4">
+ <xs:sequence>
+ <xs:element name="CdOrPrtry" type="ReferredDocumentType3Choice"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Issr"
type="Max35Text"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="RegulatoryAuthority2">
+ <xs:sequence>
+ <xs:element maxOccurs="1" minOccurs="0" name="Nm"
type="Max140Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Ctry"
type="CountryCode"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="RegulatoryReporting3">
+ <xs:sequence>
+ <xs:element maxOccurs="1" minOccurs="0" name="DbtCdtRptgInd"
type="RegulatoryReportingType1Code"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Authrty"
type="RegulatoryAuthority2"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="Dtls"
type="StructuredRegulatoryReporting3"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:simpleType name="RegulatoryReportingType1Code">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="CRED"/>
+ <xs:enumeration value="DEBT"/>
+ <xs:enumeration value="BOTH"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="RemittanceAmount2">
+ <xs:sequence>
+ <xs:element maxOccurs="1" minOccurs="0" name="DuePyblAmt"
type="ActiveOrHistoricCurrencyAndAmount"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0"
name="DscntApldAmt" type="DiscountAmountAndType1"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="CdtNoteAmt"
type="ActiveOrHistoricCurrencyAndAmount"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="TaxAmt"
type="TaxAmountAndType1"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0"
name="AdjstmntAmtAndRsn" type="DocumentAdjustment1"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="RmtdAmt"
type="ActiveOrHistoricCurrencyAndAmount"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="RemittanceAmount3">
+ <xs:sequence>
+ <xs:element maxOccurs="1" minOccurs="0" name="DuePyblAmt"
type="ActiveOrHistoricCurrencyAndAmount"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0"
name="DscntApldAmt" type="DiscountAmountAndType1"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="CdtNoteAmt"
type="ActiveOrHistoricCurrencyAndAmount"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="TaxAmt"
type="TaxAmountAndType1"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0"
name="AdjstmntAmtAndRsn" type="DocumentAdjustment1"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="RmtdAmt"
type="ActiveOrHistoricCurrencyAndAmount"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="RemittanceInformation16">
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="Ustrd"
type="Max140Text"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="Strd"
type="StructuredRemittanceInformation16"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="RemittanceLocation7">
+ <xs:sequence>
+ <xs:element maxOccurs="1" minOccurs="0" name="RmtId"
type="Max35Text"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="RmtLctnDtls"
type="RemittanceLocationData1"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="RemittanceLocationData1">
+ <xs:sequence>
+ <xs:element name="Mtd" type="RemittanceLocationMethod2Code"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="ElctrncAdr"
type="Max2048Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="PstlAdr"
type="NameAndAddress16"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:simpleType name="RemittanceLocationMethod2Code">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="FAXI"/>
+ <xs:enumeration value="EDIC"/>
+ <xs:enumeration value="URID"/>
+ <xs:enumeration value="EMAL"/>
+ <xs:enumeration value="POST"/>
+ <xs:enumeration value="SMSM"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="SequenceType3Code">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="FRST"/>
+ <xs:enumeration value="RCUR"/>
+ <xs:enumeration value="FNAL"/>
+ <xs:enumeration value="OOFF"/>
+ <xs:enumeration value="RPRE"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="ServiceLevel8Choice">
+ <xs:choice>
+ <xs:element name="Cd" type="ExternalServiceLevel1Code"/>
+ <xs:element name="Prtry" type="Max35Text"/>
+ </xs:choice>
+ </xs:complexType>
+ <xs:complexType name="StructuredRegulatoryReporting3">
+ <xs:sequence>
+ <xs:element maxOccurs="1" minOccurs="0" name="Tp"
type="Max35Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Dt" type="ISODate"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Ctry"
type="CountryCode"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Cd"
type="Max10Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Amt"
type="ActiveOrHistoricCurrencyAndAmount"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="Inf"
type="Max35Text"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="StructuredRemittanceInformation16">
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="RfrdDocInf"
type="ReferredDocumentInformation7"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="RfrdDocAmt"
type="RemittanceAmount2"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="CdtrRefInf"
type="CreditorReferenceInformation2"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Invcr"
type="PartyIdentification135"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Invcee"
type="PartyIdentification135"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="TaxRmt"
type="TaxInformation7"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="GrnshmtRmt"
type="Garnishment3"/>
+ <xs:element maxOccurs="3" minOccurs="0" name="AddtlRmtInf"
type="Max140Text"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="SupplementaryData1">
+ <xs:sequence>
+ <xs:element maxOccurs="1" minOccurs="0" name="PlcAndNm"
type="Max350Text"/>
+ <xs:element name="Envlp" type="SupplementaryDataEnvelope1"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="SupplementaryDataEnvelope1">
+ <xs:sequence>
+ <xs:any namespace="##any" processContents="lax"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TaxAmount2">
+ <xs:sequence>
+ <xs:element maxOccurs="1" minOccurs="0" name="Rate"
type="PercentageRate"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="TaxblBaseAmt"
type="ActiveOrHistoricCurrencyAndAmount"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="TtlAmt"
type="ActiveOrHistoricCurrencyAndAmount"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="Dtls"
type="TaxRecordDetails2"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TaxAmountAndType1">
+ <xs:sequence>
+ <xs:element maxOccurs="1" minOccurs="0" name="Tp"
type="TaxAmountType1Choice"/>
+ <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TaxAmountType1Choice">
+ <xs:choice>
+ <xs:element name="Cd" type="ExternalTaxAmountType1Code"/>
+ <xs:element name="Prtry" type="Max35Text"/>
+ </xs:choice>
+ </xs:complexType>
+ <xs:complexType name="TaxAuthorisation1">
+ <xs:sequence>
+ <xs:element maxOccurs="1" minOccurs="0" name="Titl"
type="Max35Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Nm"
type="Max140Text"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TaxInformation7">
+ <xs:sequence>
+ <xs:element maxOccurs="1" minOccurs="0" name="Cdtr"
type="TaxParty1"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Dbtr"
type="TaxParty2"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="UltmtDbtr"
type="TaxParty2"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="AdmstnZone"
type="Max35Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="RefNb"
type="Max140Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Mtd"
type="Max35Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="TtlTaxblBaseAmt"
type="ActiveOrHistoricCurrencyAndAmount"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="TtlTaxAmt"
type="ActiveOrHistoricCurrencyAndAmount"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Dt" type="ISODate"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="SeqNb"
type="Number"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="Rcrd"
type="TaxRecord2"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TaxInformation8">
+ <xs:sequence>
+ <xs:element maxOccurs="1" minOccurs="0" name="Cdtr"
type="TaxParty1"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Dbtr"
type="TaxParty2"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="AdmstnZone"
type="Max35Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="RefNb"
type="Max140Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Mtd"
type="Max35Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="TtlTaxblBaseAmt"
type="ActiveOrHistoricCurrencyAndAmount"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="TtlTaxAmt"
type="ActiveOrHistoricCurrencyAndAmount"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Dt" type="ISODate"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="SeqNb"
type="Number"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="Rcrd"
type="TaxRecord2"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TaxParty1">
+ <xs:sequence>
+ <xs:element maxOccurs="1" minOccurs="0" name="TaxId"
type="Max35Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="RegnId"
type="Max35Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="TaxTp"
type="Max35Text"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TaxParty2">
+ <xs:sequence>
+ <xs:element maxOccurs="1" minOccurs="0" name="TaxId"
type="Max35Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="RegnId"
type="Max35Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="TaxTp"
type="Max35Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Authstn"
type="TaxAuthorisation1"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TaxPeriod2">
+ <xs:sequence>
+ <xs:element maxOccurs="1" minOccurs="0" name="Yr" type="ISODate"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Tp"
type="TaxRecordPeriod1Code"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="FrToDt"
type="DatePeriod2"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TaxRecord2">
+ <xs:sequence>
+ <xs:element maxOccurs="1" minOccurs="0" name="Tp"
type="Max35Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Ctgy"
type="Max35Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="CtgyDtls"
type="Max35Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="DbtrSts"
type="Max35Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="CertId"
type="Max35Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="FrmsCd"
type="Max35Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Prd"
type="TaxPeriod2"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="TaxAmt"
type="TaxAmount2"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="AddtlInf"
type="Max140Text"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TaxRecordDetails2">
+ <xs:sequence>
+ <xs:element maxOccurs="1" minOccurs="0" name="Prd"
type="TaxPeriod2"/>
+ <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:simpleType name="TaxRecordPeriod1Code">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="MM01"/>
+ <xs:enumeration value="MM02"/>
+ <xs:enumeration value="MM03"/>
+ <xs:enumeration value="MM04"/>
+ <xs:enumeration value="MM05"/>
+ <xs:enumeration value="MM06"/>
+ <xs:enumeration value="MM07"/>
+ <xs:enumeration value="MM08"/>
+ <xs:enumeration value="MM09"/>
+ <xs:enumeration value="MM10"/>
+ <xs:enumeration value="MM11"/>
+ <xs:enumeration value="MM12"/>
+ <xs:enumeration value="QTR1"/>
+ <xs:enumeration value="QTR2"/>
+ <xs:enumeration value="QTR3"/>
+ <xs:enumeration value="QTR4"/>
+ <xs:enumeration value="HLF1"/>
+ <xs:enumeration value="HLF2"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="TrueFalseIndicator">
+ <xs:restriction base="xs:boolean"/>
+ </xs:simpleType>
+ <xs:simpleType name="UUIDv4Identifier">
+ <xs:restriction base="xs:string">
+ <xs:pattern
value="[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}"/>
+ </xs:restriction>
+ </xs:simpleType>
+</xs:schema>
diff -r cb7a86de735b -r 58df8e393370
modules/account_payment_sepa/tests/test_module.py
--- a/modules/account_payment_sepa/tests/test_module.py Mon Aug 24 11:50:30
2026 +0200
+++ b/modules/account_payment_sepa/tests/test_module.py Mon Aug 24 15:08:28
2026 +0200
@@ -187,6 +187,11 @@
validate_file('pain.008.001.04', 'receivable')
@with_transaction()
+ def test_pain008_001_08(self):
+ 'Test pain008.001.08 xsd validation'
+ validate_file('pain.008.001.08', 'receivable')
+
+ @with_transaction()
def test_pain008_003_02(self):
'Test pain008.003.02 xsd validation'
validate_file('pain.008.003.02', 'receivable')