details: https://code.tryton.org/tryton/commit/cb7a86de735b
branch: default
user: Cédric Krier <[email protected]>
date: Mon Aug 24 11:50:30 2026 +0200
description:
Add pain.001.001.09 flavor to SEPA payment
diffstat:
modules/account_payment_sepa/CHANGELOG |
1 +
modules/account_payment_sepa/payment.py |
1 +
modules/account_payment_sepa/template/base-postal-address-structured.xml |
27 +
modules/account_payment_sepa/template/base.xml |
2 +
modules/account_payment_sepa/template/pain.001.001.09.xml |
102 +
modules/account_payment_sepa/tests/pain.001.001.09.xsd |
1114 ++++++++++
modules/account_payment_sepa/tests/test_module.py |
5 +
7 files changed, 1252 insertions(+), 0 deletions(-)
diffs (1301 lines):
diff -r e0c9a52cfdd1 -r cb7a86de735b modules/account_payment_sepa/CHANGELOG
--- a/modules/account_payment_sepa/CHANGELOG Fri Sep 18 13:30:12 2026 +0200
+++ b/modules/account_payment_sepa/CHANGELOG Mon Aug 24 11:50:30 2026 +0200
@@ -1,3 +1,4 @@
+* Add pain.001.001.09 flavor
Version 8.0.0 - 2026-04-20
--------------------------
diff -r e0c9a52cfdd1 -r cb7a86de735b modules/account_payment_sepa/payment.py
--- a/modules/account_payment_sepa/payment.py Fri Sep 18 13:30:12 2026 +0200
+++ b/modules/account_payment_sepa/payment.py Mon Aug 24 11:50:30 2026 +0200
@@ -85,6 +85,7 @@
(None, ''),
('pain.001.001.03', 'pain.001.001.03'),
('pain.001.001.05', 'pain.001.001.05'),
+ ('pain.001.001.09', 'pain.001.001.09'),
('pain.001.003.03', 'pain.001.003.03'),
], 'Payable Flavor', states={
'required': Eval('process_method') == 'sepa',
diff -r e0c9a52cfdd1 -r cb7a86de735b
modules/account_payment_sepa/template/base-postal-address-structured.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/modules/account_payment_sepa/template/base-postal-address-structured.xml
Mon Aug 24 11:50:30 2026 +0200
@@ -0,0 +1,27 @@
+<?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. -->
+<py:strip xmlns:py="http://genshi.edgewall.org/">
+ <py:def function="PostalAddress(address)">
+ <!-- AdrTp -->
+ <!-- Dept -->
+ <!-- SubDept -->
+ <StrtNm
py:if="address.street_name">${address.street_name[:70]}</StrtNm>
+ <BldgNb
py:if="address.building_number">${address.building_number[:16]}</BldgNb>
+ <BldgNm
py:if="address.building_name">${address.building_name[:35]}</BldgNm>
+ <Flr py:if="address.floor_number">${address.floor_number[70:]}</Flr>
+ <PstBx py:if="address.post_box">${address.post_box[:16]}</PstBx>
+ <Room py:if="address.room_number">${address.room_number[:70]}</Room>
+ <PstCd py:if="address.postal_code">${address.postal_code[:16]}</PstCd>
+ <TwnNm py:if="address.city">${address.city[:35]}</TwnNm>
+ <!-- TwnLctnNm -->
+ <!-- DstrctNm -->
+ <CtrySubDvsn
py:if="address.subdivision">${address.subdivision.rec_name[:35]}</CtrySubDvsn>
+ <Ctry py:if="address.country">${address.country.code}</Ctry>
+ <py:if test="address.street_unstructured">
+ <py:for each="line in
address.street_unstructured.splitlines()[:8]">
+ <AdrLine py:if="line">${line[:70]}</AdrLine>
+ </py:for>
+ </py:if>
+ </py:def>
+</py:strip>
diff -r e0c9a52cfdd1 -r cb7a86de735b
modules/account_payment_sepa/template/base.xml
--- a/modules/account_payment_sepa/template/base.xml Fri Sep 18 13:30:12
2026 +0200
+++ b/modules/account_payment_sepa/template/base.xml Mon Aug 24 11:50:30
2026 +0200
@@ -14,6 +14,8 @@
<py:with vars="identifier = party.get_sepa_identifier(id)">
<OrgId py:if="identifier['Type'] == 'OrgId'">
<BICOrBEI
py:if="identifier.get('BICOrBEI')">${identifier['BICOrBEI']}</BICOrBEI>
+ <AnyBIC
py:if="identifier.get('AnyBIC')">${identifier['AnyBIC']}</AnyBIC>
+ <LEI
py:if="identifier.get('LEI')">${identifier['LEI']}</LEI>
<Othr py:if="identifier.get('Id')">
<Id>${identifier['Id']}</Id>
<SchmeNm py:if="identifier.get('SchmeNm')">
diff -r e0c9a52cfdd1 -r cb7a86de735b
modules/account_payment_sepa/template/pain.001.001.09.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/modules/account_payment_sepa/template/pain.001.001.09.xml Mon Aug 24
11:50:30 2026 +0200
@@ -0,0 +1,102 @@
+<?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.001.001.09"
+ 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"/>
+ <CstmrCdtTrfInitn>
+ <GrpHdr>
+ <MsgId>${group.sepa_message_id[:35]}</MsgId>
+
<CreDtTm>${datetime.datetime.now().replace(microsecond=0).isoformat()}</CreDtTm>
+ <!-- Authstn -->
+ <NbOfTxs>${sum(len(payments) for _, payments in
group.sepa_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_payable_initiator_id)}
+ </InitgPty>
+ <!-- FwdgAgt-->
+ </GrpHdr>
+ <PmtInf py:for="key, payments in group.sepa_payments">
+ <PmtInfId>${key['payment_info'][:35]}</PmtInfId>
+ <PmtMtd>TRF</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>
+ </SvcLvl>
+ <!-- LclInstrm -->
+ <!-- CtgyPurp -->
+ </PmtTpInf>
+ <ReqdExctnDt>
+ <Dt>${key['date'].isoformat()}</Dt>
+ </ReqdExctnDt>
+ <!-- PoolgAdjstmntDt -->
+ <Dbtr>
+ ${PartyIdentification(group.company.party)}
+ </Dbtr>
+ <DbtrAcct>
+ ${Account(group.journal.sepa_bank_account_number)}
+ </DbtrAcct>
+ <DbtrAgt>
+
${FinancialInstitution(group.journal.sepa_bank_account_number.account.bank,
only_bic=True)}
+ </DbtrAgt>
+ <!-- DbtrAgtAcct -->
+ <!-- InstrForDbtrAgt -->
+ <!-- UltmtDbtr -->
+ <ChrgBr>${group.journal.sepa_charge_bearer}</ChrgBr>
+ <!-- ChrgsAcct -->
+ <!-- ChrgsAcctAgt -->
+ <CdtTrfTxInf py:for="payment in payments">
+ <PmtId>
+ <InstrId>${payment.sepa_instruction_id}</InstrId>
+ <EndToEndId>${payment.sepa_end_to_end_id}</EndToEndId>
+ <!-- UETR -->
+ </PmtId>
+ <!-- PmtTpInf --> <!-- EPC only at payment information level
-->
+ <Amt>
+ <InstdAmt py:attrs="{'Ccy':
payment.currency.code}">${format(payment.amount.normalize(), 'f')}</InstdAmt>
+ <!-- EqvtAmt -->
+ </Amt>
+ <!-- XchgRateInf -->
+ <!-- ChrgBr --> <!-- EPC only at payment information level -->
+ <!-- ChqInstr -->
+ <!-- UltmtDbtr -->
+ <!-- IntrmyAgt1 -->
+ <!-- IntrmyAgt1Acct -->
+ <!-- IntrmyAgt2 -->
+ <!-- IntrmyAgt2Acct -->
+ <!-- IntrmyAgt3 -->
+ <!-- IntrmyAgt3Acct -->
+ <CdtrAgt>
+
${FinancialInstitution(payment.sepa_bank_account_number.account.bank,
only_bic=True)}
+ </CdtrAgt>
+ <Cdtr>
+ ${PartyIdentification(payment.party)}
+ </Cdtr>
+ <CdtrAcct>
+ ${Account(payment.sepa_bank_account_number)}
+ </CdtrAcct>
+ <!-- UltmtCdtr -->
+ <!-- InstrForCdtrAgt -->
+ <!-- InstrForDbtrAgt -->
+ <!-- Purp -->
+ <!-- RgltryRptg -->
+ <!-- Tax -->
+ <!-- RltdRmtInf -->
+ <RmtInf py:if="payment.sepa_remittance_information">
+ <Ustrd>${payment.sepa_remittance_information[:140]}</Ustrd>
+ <!-- Strd -->
+ </RmtInf>
+ <!-- SplmtryData -->
+ </CdtTrfTxInf>
+ </PmtInf>
+ <!-- SplmtryData -->
+ </CstmrCdtTrfInitn>
+</Document>
diff -r e0c9a52cfdd1 -r cb7a86de735b
modules/account_payment_sepa/tests/pain.001.001.09.xsd
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/modules/account_payment_sepa/tests/pain.001.001.09.xsd Mon Aug 24
11:50:30 2026 +0200
@@ -0,0 +1,1114 @@
+<?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.001.001.09"
xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
targetNamespace="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09">
+ <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="AmountType4Choice">
+ <xs:choice>
+ <xs:element name="InstdAmt"
type="ActiveOrHistoricCurrencyAndAmount"/>
+ <xs:element name="EqvtAmt" type="EquivalentAmount2"/>
+ </xs:choice>
+ </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="BaseOneRate">
+ <xs:restriction base="xs:decimal">
+ <xs:fractionDigits value="10"/>
+ <xs:totalDigits value="11"/>
+ </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="Cheque11">
+ <xs:sequence>
+ <xs:element maxOccurs="1" minOccurs="0" name="ChqTp"
type="ChequeType2Code"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="ChqNb"
type="Max35Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="ChqFr"
type="NameAndAddress16"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="DlvryMtd"
type="ChequeDeliveryMethod1Choice"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="DlvrTo"
type="NameAndAddress16"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="InstrPrty"
type="Priority2Code"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="ChqMtrtyDt"
type="ISODate"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="FrmsCd"
type="Max35Text"/>
+ <xs:element maxOccurs="2" minOccurs="0" name="MemoFld"
type="Max35Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="RgnlClrZone"
type="Max35Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="PrtLctn"
type="Max35Text"/>
+ <xs:element maxOccurs="5" minOccurs="0" name="Sgntr"
type="Max70Text"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:simpleType name="ChequeDelivery1Code">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="MLDB"/>
+ <xs:enumeration value="MLCD"/>
+ <xs:enumeration value="MLFA"/>
+ <xs:enumeration value="CRDB"/>
+ <xs:enumeration value="CRCD"/>
+ <xs:enumeration value="CRFA"/>
+ <xs:enumeration value="PUDB"/>
+ <xs:enumeration value="PUCD"/>
+ <xs:enumeration value="PUFA"/>
+ <xs:enumeration value="RGDB"/>
+ <xs:enumeration value="RGCD"/>
+ <xs:enumeration value="RGFA"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="ChequeDeliveryMethod1Choice">
+ <xs:choice>
+ <xs:element name="Cd" type="ChequeDelivery1Code"/>
+ <xs:element name="Prtry" type="Max35Text"/>
+ </xs:choice>
+ </xs:complexType>
+ <xs:simpleType name="ChequeType2Code">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="CCHQ"/>
+ <xs:enumeration value="CCCH"/>
+ <xs:enumeration value="BCHQ"/>
+ <xs:enumeration value="DRFT"/>
+ <xs:enumeration value="ELDR"/>
+ </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="CreditTransferTransaction34">
+ <xs:sequence>
+ <xs:element name="PmtId" type="PaymentIdentification6"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="PmtTpInf"
type="PaymentTypeInformation26"/>
+ <xs:element name="Amt" type="AmountType4Choice"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="XchgRateInf"
type="ExchangeRate1"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="ChrgBr"
type="ChargeBearerType1Code"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="ChqInstr"
type="Cheque11"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="UltmtDbtr"
type="PartyIdentification135"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="IntrmyAgt1"
type="BranchAndFinancialInstitutionIdentification6"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="IntrmyAgt1Acct"
type="CashAccount38"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="IntrmyAgt2"
type="BranchAndFinancialInstitutionIdentification6"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="IntrmyAgt2Acct"
type="CashAccount38"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="IntrmyAgt3"
type="BranchAndFinancialInstitutionIdentification6"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="IntrmyAgt3Acct"
type="CashAccount38"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="CdtrAgt"
type="BranchAndFinancialInstitutionIdentification6"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="CdtrAgtAcct"
type="CashAccount38"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="Cdtr"
type="PartyIdentification135"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="CdtrAcct"
type="CashAccount38"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="UltmtCdtr"
type="PartyIdentification135"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0"
name="InstrForCdtrAgt" type="InstructionForCreditorAgent1"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="InstrForDbtrAgt"
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="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="CustomerCreditTransferInitiationV09">
+ <xs:sequence>
+ <xs:element name="GrpHdr" type="GroupHeader85"/>
+ <xs:element maxOccurs="unbounded" minOccurs="1" name="PmtInf"
type="PaymentInstruction30"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="SplmtryData"
type="SupplementaryData1"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="DateAndDateTime2Choice">
+ <xs:choice>
+ <xs:element name="Dt" type="ISODate"/>
+ <xs:element name="DtTm" type="ISODateTime"/>
+ </xs:choice>
+ </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="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="CstmrCdtTrfInitn"
type="CustomerCreditTransferInitiationV09"/>
+ </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:complexType name="EquivalentAmount2">
+ <xs:sequence>
+ <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/>
+ <xs:element name="CcyOfTrf" type="ActiveOrHistoricCurrencyCode"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:simpleType name="Exact4AlphaNumericText">
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[a-zA-Z0-9]{4}"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="ExchangeRate1">
+ <xs:sequence>
+ <xs:element maxOccurs="1" minOccurs="0" name="UnitCcy"
type="ActiveOrHistoricCurrencyCode"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="XchgRate"
type="BaseOneRate"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="RateTp"
type="ExchangeRateType1Code"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="CtrctId"
type="Max35Text"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:simpleType name="ExchangeRateType1Code">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="SPOT"/>
+ <xs:enumeration value="SALE"/>
+ <xs:enumeration value="AGRD"/>
+ </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="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="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="GroupHeader85">
+ <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="Instruction3Code">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="CHQB"/>
+ <xs:enumeration value="HOLD"/>
+ <xs:enumeration value="PHOB"/>
+ <xs:enumeration value="TELB"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="InstructionForCreditorAgent1">
+ <xs:sequence>
+ <xs:element maxOccurs="1" minOccurs="0" name="Cd"
type="Instruction3Code"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="InstrInf"
type="Max140Text"/>
+ </xs:sequence>
+ </xs:complexType>
+ <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: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="PaymentInstruction30">
+ <xs:sequence>
+ <xs:element name="PmtInfId" type="Max35Text"/>
+ <xs:element name="PmtMtd" type="PaymentMethod3Code"/>
+ <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="PaymentTypeInformation26"/>
+ <xs:element name="ReqdExctnDt" type="DateAndDateTime2Choice"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="PoolgAdjstmntDt"
type="ISODate"/>
+ <xs:element name="Dbtr" type="PartyIdentification135"/>
+ <xs:element name="DbtrAcct" type="CashAccount38"/>
+ <xs:element name="DbtrAgt"
type="BranchAndFinancialInstitutionIdentification6"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="DbtrAgtAcct"
type="CashAccount38"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="InstrForDbtrAgt"
type="Max140Text"/>
+ <xs:element maxOccurs="1" minOccurs="0" name="UltmtDbtr"
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="unbounded" minOccurs="1" name="CdtTrfTxInf"
type="CreditTransferTransaction34"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:simpleType name="PaymentMethod3Code">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="CHK"/>
+ <xs:enumeration value="TRF"/>
+ <xs:enumeration value="TRA"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="PaymentTypeInformation26">
+ <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="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: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 e0c9a52cfdd1 -r cb7a86de735b
modules/account_payment_sepa/tests/test_module.py
--- a/modules/account_payment_sepa/tests/test_module.py Fri Sep 18 13:30:12
2026 +0200
+++ b/modules/account_payment_sepa/tests/test_module.py Mon Aug 24 11:50:30
2026 +0200
@@ -167,6 +167,11 @@
validate_file('pain.001.001.05', 'payable')
@with_transaction()
+ def test_pain001_001_09(self):
+ 'Test pain001.001.09 xsd validation'
+ validate_file('pain.001.001.09', 'payable')
+
+ @with_transaction()
def test_pain001_003_03(self):
'Test pain001.003.03 xsd validation'
validate_file('pain.001.003.03', 'payable')