← Back to team overview

banking-addons-team team mailing list archive

[Merge] lp:~therp-nl/banking-addons/7.0-akretion-banking-addons-sepa into lp:banking-addons/banking-addons-70

 

Stefan Rijnhart (Therp) has proposed merging lp:~therp-nl/banking-addons/7.0-akretion-banking-addons-sepa into lp:banking-addons/banking-addons-70 with lp:~therp-nl/banking-addons/ba7.0-MIG-payment as a prerequisite.

Requested reviews:
  Banking Addons Core Editors (banking-addons-team)

For more details, see:
https://code.launchpad.net/~therp-nl/banking-addons/7.0-akretion-banking-addons-sepa/+merge/172138

This is a cherrypicking of the SEPA module by Alexis de Lattre that has already been merged in 6.1. I added some trivial API changes in an additional commit, so I think we can get away by just reviewing that one: http://bazaar.launchpad.net/~therp-nl/banking-addons/7.0-akretion-banking-addons-sepa/revision/232
-- 
https://code.launchpad.net/~therp-nl/banking-addons/7.0-akretion-banking-addons-sepa/+merge/172138
Your team Banking Addons Core Editors is requested to review the proposed merge of lp:~therp-nl/banking-addons/7.0-akretion-banking-addons-sepa into lp:banking-addons/banking-addons-70.
=== added directory 'account_banking_sepa_credit_transfer'
=== added file 'account_banking_sepa_credit_transfer/__init__.py'
--- account_banking_sepa_credit_transfer/__init__.py	1970-01-01 00:00:00 +0000
+++ account_banking_sepa_credit_transfer/__init__.py	2013-06-28 19:44:42 +0000
@@ -0,0 +1,25 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+#    SEPA Credit Transfer module for OpenERP
+#    Copyright (C) 2010-2013 Akretion (http://www.akretion.com)
+#    @author: Alexis de Lattre <alexis.delattre@xxxxxxxxxxxx>
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as
+#    published by the Free Software Foundation, either version 3 of the
+#    License, or (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+import wizard
+import account_banking_sepa
+

=== added file 'account_banking_sepa_credit_transfer/__openerp__.py'
--- account_banking_sepa_credit_transfer/__openerp__.py	1970-01-01 00:00:00 +0000
+++ account_banking_sepa_credit_transfer/__openerp__.py	2013-06-28 19:44:42 +0000
@@ -0,0 +1,48 @@
+##############################################################################
+#
+#    SEPA Credit Transfer module for OpenERP
+#    Copyright (C) 2010-2013 Akretion (http://www.akretion.com)
+#    @author: Alexis de Lattre <alexis.delattre@xxxxxxxxxxxx>
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as
+#    published by the Free Software Foundation, either version 3 of the
+#    License, or (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+{
+    'name': 'Account Banking SEPA Credit Transfer',
+    'version': '0.1',
+    'license': 'AGPL-3',
+    'author': 'Akretion',
+    'website': 'http://www.akretion.com',
+    'category': 'Banking addons',
+    'depends': ['account_banking_payment'],
+    'data': [
+        'account_banking_sepa_view.xml',
+        'wizard/export_sepa_view.xml',
+        'data/payment_type_sepa_sct.xml',
+        'security/ir.model.access.csv',
+    ],
+    'description': '''
+Module to export payment orders in SEPA XML file format.
+
+SEPA PAIN (PAyment INitiation) is the new european standard for Customer-to-Bank payment instructions. This module implements SEPA Credit Transfer (SCT), more specifically PAIN versions 001.001.02, 001.001.03 and 001.001.04. It is part of the ISO 20022 standard, available on http://www.iso20022.org.
+
+The Implementation Guidelines for SEPA Credit Transfer published by the European Payments Council (http://http://www.europeanpaymentscouncil.eu) use PAIN version 001.001.03, so it's probably the version of PAIN that you should try first.
+
+This module uses the framework provided by the banking addons, cf https://launchpad.net/banking-addons
+
+Please contact Alexis de Lattre from Akretion <alexis.delattre@xxxxxxxxxxxx> for any help or question about this module.
+    ''',
+    'active': False,
+    'installable': True,
+}

=== added file 'account_banking_sepa_credit_transfer/account_banking_sepa.py'
--- account_banking_sepa_credit_transfer/account_banking_sepa.py	1970-01-01 00:00:00 +0000
+++ account_banking_sepa_credit_transfer/account_banking_sepa.py	2013-06-28 19:44:42 +0000
@@ -0,0 +1,77 @@
+##############################################################################
+#
+#    SEPA Credit Transfer module for OpenERP
+#    Copyright (C) 2010-2013 Akretion (http://www.akretion.com)
+#    @author: Alexis de Lattre <alexis.delattre@xxxxxxxxxxxx>
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as
+#    published by the Free Software Foundation, either version 3 of the
+#    License, or (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+from openerp.osv import orm, fields
+import time
+from tools.translate import _
+import decimal_precision as dp
+
+
+class banking_export_sepa(orm.Model):
+    '''SEPA export'''
+    _name = 'banking.export.sepa'
+    _description = __doc__
+    _rec_name = 'msg_identification'
+
+    def _generate_filename(self, cr, uid, ids, name, arg, context=None):
+        res = {}
+        for sepa_file in self.browse(cr, uid, ids, context=context):
+            res[sepa_file.id] = 'sepa_' + (sepa_file.msg_identification or '') + '.xml'
+        return res
+
+    _columns = {
+        'payment_order_ids': fields.many2many(
+            'payment.order',
+            'account_payment_order_sepa_rel',
+            'banking_export_sepa_id', 'account_order_id',
+            'Payment orders',
+            readonly=True),
+        'prefered_exec_date': fields.date('Prefered execution date', readonly=True),
+        'nb_transactions': fields.integer('Number of transactions', readonly=True),
+        'total_amount': fields.float('Total amount',
+            digits_compute=dp.get_precision('Account'), readonly=True),
+        'msg_identification': fields.char('Message identification', size=35,
+            readonly=True),
+        'batch_booking': fields.boolean('Batch booking', readonly=True,
+            help="If true, the bank statement will display only one debit line for all the wire transfers of the SEPA XML file ; if false, the bank statement will display one debit line per wire transfer of the SEPA XML file."),
+        'charge_bearer': fields.selection([
+            ('SHAR', 'Shared'),
+            ('CRED', 'Borne by creditor'),
+            ('DEBT', 'Borne by debtor'),
+            ('SLEV', 'Following service level'),
+            ], 'Charge bearer', readonly=True,
+            help='Shared : transaction charges on the sender side are to be borne by the debtor, transaction charges on the receiver side are to be borne by the creditor (most transfers use this). Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor. Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme.'),
+        'generation_date': fields.datetime('Generation date',
+            readonly=True),
+        'file': fields.binary('SEPA XML file', readonly=True),
+        'filename': fields.function(_generate_filename, type='char', size=256,
+            method=True, string='Filename', readonly=True),
+        'state': fields.selection([
+                ('draft', 'Draft'),
+                ('sent', 'Sent'),
+                ('done', 'Reconciled'),
+            ], 'State', readonly=True),
+    }
+
+    _defaults = {
+        'generation_date': fields.date.context_today,
+        'state': 'draft',
+    }

=== added file 'account_banking_sepa_credit_transfer/account_banking_sepa_view.xml'
--- account_banking_sepa_credit_transfer/account_banking_sepa_view.xml	1970-01-01 00:00:00 +0000
+++ account_banking_sepa_credit_transfer/account_banking_sepa_view.xml	2013-06-28 19:44:42 +0000
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2010-2013 Akretion (http://www.akretion.com)
+  @author: Alexis de Lattre <alexis.delattre@xxxxxxxxxxxx>
+  The licence is in the file __openerp__.py
+-->
+<openerp>
+<data>
+
+<record id="view_banking_export_sepa_form" model="ir.ui.view">
+    <field name="name">account.banking.export.sepa.form</field>
+    <field name="model">banking.export.sepa</field>
+    <field name="arch" type="xml">
+        <form string="SEPA Credit Transfer">
+            <notebook>
+                <page string="General information">
+                    <field name="msg_identification" select="1" />
+                    <field name="total_amount" />
+                    <field name="nb_transactions" />
+                    <field name="prefered_exec_date" />
+                    <field name="batch_booking" />
+                    <field name="charge_bearer"/>
+                    <field name="generation_date" />
+                    <newline />
+                    <field name="file" filename="filename"/>
+                    <field name="filename" invisible="True"/>
+                </page>
+                <page string="Payment orders">
+                    <field name="payment_order_ids" colspan="4" nolabel="1">
+                        <tree colors="blue:state in ('draft');gray:state in ('cancel','done');black:state in ('open')" string="Payment order">
+                            <field name="reference"/>
+                            <field name="date_created"/>
+                            <field name="date_done"/>
+                            <field name="total"/>
+                            <field name="state"/>
+                        </tree>
+                    </field>
+                </page>
+            </notebook>
+        </form>
+    </field>
+</record>
+
+
+<record id="view_banking_export_sepa_tree" model="ir.ui.view">
+    <field name="name">account.banking.export.sepa.tree</field>
+    <field name="model">banking.export.sepa</field>
+    <field name="arch" type="xml">
+        <tree string="SEPA Credit Transfer">
+            <field name="msg_identification"/>
+            <field name="prefered_exec_date"/>
+            <field name="generation_date"/>
+            <field name="nb_transactions"/>
+        </tree>
+    </field>
+</record>
+
+
+<record id="action_account_banking_sepa" model="ir.actions.act_window">
+    <field name="name">Generated SEPA XML files</field>
+    <field name="res_model">banking.export.sepa</field>
+    <field name="view_type">form</field>
+    <field name="view_mode">tree,form</field>
+</record>
+
+
+<menuitem id="menu_account_banking_sepa"
+          parent="account_banking.menu_finance_banking_actions"
+          action="action_account_banking_sepa"
+          sequence="15"
+          />
+
+<act_window id="act_banking_export_sepa_payment_order"
+    name="Generated SEPA files"
+    domain="[('payment_order_ids', '=', active_id)]"
+    res_model="banking.export.sepa"
+    src_model="payment.order"
+    view_type="form"
+    view_mode="tree,form"
+/>
+
+</data>
+</openerp>

=== added directory 'account_banking_sepa_credit_transfer/data'
=== added file 'account_banking_sepa_credit_transfer/data/pain.001.001.02.xsd'
--- account_banking_sepa_credit_transfer/data/pain.001.001.02.xsd	1970-01-01 00:00:00 +0000
+++ account_banking_sepa_credit_transfer/data/pain.001.001.02.xsd	2013-06-28 19:44:42 +0000
@@ -0,0 +1,784 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--Generated by SWIFTStandards Workstation (build:R5.1.0.4) on 2006 Sep 08 11:58:39-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.02" elementFormDefault="qualified" targetNamespace="urn:iso:std:iso:20022:tech:xsd:pain.001.001.02">
+<xs:element name="Document" type="Document"/>
+<xs:complexType name="AccountIdentification3Choice">
+<xs:sequence>
+<xs:choice>
+<xs:element name="IBAN" type="IBANIdentifier"/>
+<xs:element name="BBAN" type="BBANIdentifier"/>
+<xs:element name="UPIC" type="UPICIdentifier"/>
+<xs:element name="PrtryAcct" type="SimpleIdentificationInformation2"/>
+</xs:choice>
+</xs:sequence>
+</xs:complexType>
+<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="AmountType2Choice">
+<xs:sequence>
+<xs:choice>
+<xs:element name="InstdAmt" type="CurrencyAndAmount"/>
+<xs:element name="EqvtAmt" type="EquivalentAmount"/>
+</xs:choice>
+</xs:sequence>
+</xs:complexType>
+<xs:simpleType name="BBANIdentifier">
+<xs:restriction base="xs:string">
+<xs:pattern value="[a-zA-Z0-9]{1,30}"/>
+</xs:restriction>
+</xs:simpleType>
+<xs:simpleType name="BEIIdentifier">
+<xs:restriction base="xs:string">
+<xs:pattern value="[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}"/>
+</xs:restriction>
+</xs:simpleType>
+<xs:simpleType name="BICIdentifier">
+<xs:restriction base="xs:string">
+<xs:pattern value="[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([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="BranchAndFinancialInstitutionIdentification3">
+<xs:sequence>
+<xs:element name="FinInstnId" type="FinancialInstitutionIdentification5Choice"/>
+<xs:element name="BrnchId" type="BranchData" minOccurs="0" maxOccurs="1"/>
+</xs:sequence>
+</xs:complexType>
+<xs:complexType name="BranchData">
+<xs:sequence>
+<xs:element name="Id" type="Max35Text" minOccurs="0" maxOccurs="1"/>
+<xs:element name="Nm" type="Max35Text" minOccurs="0" maxOccurs="1"/>
+<xs:element name="PstlAdr" type="PostalAddress1" minOccurs="0" maxOccurs="1"/>
+</xs:sequence>
+</xs:complexType>
+<xs:simpleType name="CHIPSUniversalIdentifier">
+<xs:restriction base="xs:string">
+<xs:pattern value="CH[0-9]{6,6}"/>
+</xs:restriction>
+</xs:simpleType>
+<xs:complexType name="CashAccount7">
+<xs:sequence>
+<xs:element name="Id" type="AccountIdentification3Choice"/>
+<xs:element name="Tp" type="CashAccountType2" minOccurs="0" maxOccurs="1"/>
+<xs:element name="Ccy" type="CurrencyCode" minOccurs="0" maxOccurs="1"/>
+<xs:element name="Nm" type="Max70Text" minOccurs="0" maxOccurs="1"/>
+</xs:sequence>
+</xs:complexType>
+<xs:complexType name="CashAccountType2">
+<xs:sequence>
+<xs:choice>
+<xs:element name="Cd" type="CashAccountType4Code"/>
+<xs:element name="Prtry" type="Max35Text"/>
+</xs:choice>
+</xs:sequence>
+</xs:complexType>
+<xs:simpleType name="CashAccountType4Code">
+<xs:restriction base="xs:string">
+<xs:enumeration value="CASH"/>
+<xs:enumeration value="CHAR"/>
+<xs:enumeration value="COMM"/>
+<xs:enumeration value="TAXE"/>
+<xs:enumeration value="CISH"/>
+<xs:enumeration value="TRAS"/>
+<xs:enumeration value="SACC"/>
+<xs:enumeration value="CACC"/>
+<xs:enumeration value="SVGS"/>
+<xs:enumeration value="ONDP"/>
+<xs:enumeration value="MGLD"/>
+<xs:enumeration value="NREX"/>
+<xs:enumeration value="MOMA"/>
+<xs:enumeration value="LOAN"/>
+<xs:enumeration value="SLRY"/>
+<xs:enumeration value="ODFT"/>
+</xs:restriction>
+</xs:simpleType>
+<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="Cheque5">
+<xs:sequence>
+<xs:element name="ChqTp" type="ChequeType2Code" minOccurs="0" maxOccurs="1"/>
+<xs:element name="ChqNb" type="Max35Text" minOccurs="0" maxOccurs="1"/>
+<xs:element name="ChqFr" type="NameAndAddress3" minOccurs="0" maxOccurs="1"/>
+<xs:element name="DlvryMtd" type="ChequeDeliveryMethod1Choice" minOccurs="0" maxOccurs="1"/>
+<xs:element name="DlvrTo" type="NameAndAddress3" minOccurs="0" maxOccurs="1"/>
+<xs:element name="InstrPrty" type="Priority2Code" minOccurs="0" maxOccurs="1"/>
+<xs:element name="ChqMtrtyDt" type="ISODate" minOccurs="0" maxOccurs="1"/>
+<xs:element name="FrmsCd" type="Max35Text" minOccurs="0" maxOccurs="1"/>
+<xs:element name="MemoFld" type="Max35Text" minOccurs="0" maxOccurs="1"/>
+<xs:element name="RgnlClrZone" type="Max35Text" minOccurs="0" maxOccurs="1"/>
+<xs:element name="PrtLctn" type="Max35Text" minOccurs="0" maxOccurs="1"/>
+</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:sequence>
+<xs:choice>
+<xs:element name="Cd" type="ChequeDelivery1Code"/>
+<xs:element name="Prtry" type="Max35Text"/>
+</xs:choice>
+</xs:sequence>
+</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:simpleType name="ClearingChannel2Code">
+<xs:restriction base="xs:string">
+<xs:enumeration value="RTGS"/>
+<xs:enumeration value="RTNS"/>
+<xs:enumeration value="MPNS"/>
+<xs:enumeration value="BOOK"/>
+</xs:restriction>
+</xs:simpleType>
+<xs:complexType name="ClearingSystemMemberIdentification3Choice">
+<xs:sequence>
+<xs:choice>
+<xs:element name="Id" type="ExternalClearingSystemMemberCode"/>
+<xs:element name="Prtry" type="Max35Text"/>
+</xs:choice>
+</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:complexType name="CreditTransferTransactionInformation1">
+<xs:sequence>
+<xs:element name="PmtId" type="PaymentIdentification1"/>
+<xs:element name="PmtTpInf" type="PaymentTypeInformation1" minOccurs="0" maxOccurs="1"/>
+<xs:element name="Amt" type="AmountType2Choice"/>
+<xs:element name="XchgRateInf" type="ExchangeRateInformation1" minOccurs="0" maxOccurs="1"/>
+<xs:element name="ChrgBr" type="ChargeBearerType1Code" minOccurs="0" maxOccurs="1"/>
+<xs:element name="ChqInstr" type="Cheque5" minOccurs="0" maxOccurs="1"/>
+<xs:element name="UltmtDbtr" type="PartyIdentification8" minOccurs="0" maxOccurs="1"/>
+<xs:element name="IntrmyAgt1" type="BranchAndFinancialInstitutionIdentification3" minOccurs="0" maxOccurs="1"/>
+<xs:element name="IntrmyAgt1Acct" type="CashAccount7" minOccurs="0" maxOccurs="1"/>
+<xs:element name="IntrmyAgt2" type="BranchAndFinancialInstitutionIdentification3" minOccurs="0" maxOccurs="1"/>
+<xs:element name="IntrmyAgt2Acct" type="CashAccount7" minOccurs="0" maxOccurs="1"/>
+<xs:element name="IntrmyAgt3" type="BranchAndFinancialInstitutionIdentification3" minOccurs="0" maxOccurs="1"/>
+<xs:element name="IntrmyAgt3Acct" type="CashAccount7" minOccurs="0" maxOccurs="1"/>
+<xs:element name="CdtrAgt" type="BranchAndFinancialInstitutionIdentification3" minOccurs="0" maxOccurs="1"/>
+<xs:element name="CdtrAgtAcct" type="CashAccount7" minOccurs="0" maxOccurs="1"/>
+<xs:element name="Cdtr" type="PartyIdentification8" minOccurs="0" maxOccurs="1"/>
+<xs:element name="CdtrAcct" type="CashAccount7" minOccurs="0" maxOccurs="1"/>
+<xs:element name="UltmtCdtr" type="PartyIdentification8" minOccurs="0" maxOccurs="1"/>
+<xs:element name="InstrForCdtrAgt" type="InstructionForCreditorAgent1" minOccurs="0" maxOccurs="unbounded"/>
+<xs:element name="InstrForDbtrAgt" type="Max140Text" minOccurs="0" maxOccurs="1"/>
+<xs:element name="Purp" type="Purpose1Choice" minOccurs="0" maxOccurs="1"/>
+<xs:element name="RgltryRptg" type="RegulatoryReporting2" minOccurs="0" maxOccurs="10"/>
+<xs:element name="Tax" type="TaxInformation2" minOccurs="0" maxOccurs="1"/>
+<xs:element name="RltdRmtInf" type="RemittanceLocation1" minOccurs="0" maxOccurs="10"/>
+<xs:element name="RmtInf" type="RemittanceInformation1" minOccurs="0" maxOccurs="1"/>
+</xs:sequence>
+</xs:complexType>
+<xs:complexType name="CreditorReferenceInformation1">
+<xs:sequence>
+<xs:element name="CdtrRefTp" type="CreditorReferenceType1" minOccurs="0" maxOccurs="1"/>
+<xs:element name="CdtrRef" type="Max35Text" minOccurs="0" maxOccurs="1"/>
+</xs:sequence>
+</xs:complexType>
+<xs:complexType name="CreditorReferenceType1">
+<xs:sequence>
+<xs:choice>
+<xs:element name="Cd" type="DocumentType3Code"/>
+<xs:element name="Prtry" type="Max35Text"/>
+</xs:choice>
+<xs:element name="Issr" type="Max35Text" minOccurs="0" maxOccurs="1"/>
+</xs:sequence>
+</xs:complexType>
+<xs:simpleType name="CurrencyAndAmount_SimpleType">
+<xs:restriction base="xs:decimal">
+<xs:minInclusive value="0"/>
+<xs:fractionDigits value="5"/>
+<xs:totalDigits value="18"/>
+</xs:restriction>
+</xs:simpleType>
+<xs:complexType name="CurrencyAndAmount">
+<xs:simpleContent>
+<xs:extension base="CurrencyAndAmount_SimpleType">
+<xs:attribute name="Ccy" type="CurrencyCode" use="required"/>
+</xs:extension>
+</xs:simpleContent>
+</xs:complexType>
+<xs:simpleType name="CurrencyCode">
+<xs:restriction base="xs:string">
+<xs:pattern value="[A-Z]{3,3}"/>
+</xs:restriction>
+</xs:simpleType>
+<xs:complexType name="DateAndPlaceOfBirth">
+<xs:sequence>
+<xs:element name="BirthDt" type="ISODate"/>
+<xs:element name="PrvcOfBirth" type="Max35Text" minOccurs="0" maxOccurs="1"/>
+<xs:element name="CityOfBirth" type="Max35Text"/>
+<xs:element name="CtryOfBirth" type="CountryCode"/>
+</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="Document">
+<xs:sequence>
+<xs:element name="pain.001.001.02" type="pain.001.001.02"/>
+</xs:sequence>
+</xs:complexType>
+<xs:simpleType name="DocumentType2Code">
+<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:restriction>
+</xs:simpleType>
+<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="DunsIdentifier">
+<xs:restriction base="xs:string">
+<xs:pattern value="[0-9]{9,9}"/>
+</xs:restriction>
+</xs:simpleType>
+<xs:simpleType name="EANGLNIdentifier">
+<xs:restriction base="xs:string">
+<xs:pattern value="[0-9]{13,13}"/>
+</xs:restriction>
+</xs:simpleType>
+<xs:complexType name="EquivalentAmount">
+<xs:sequence>
+<xs:element name="Amt" type="CurrencyAndAmount"/>
+<xs:element name="CcyOfTrf" type="CurrencyCode"/>
+</xs:sequence>
+</xs:complexType>
+<xs:complexType name="ExchangeRateInformation1">
+<xs:sequence>
+<xs:element name="XchgRate" type="BaseOneRate" minOccurs="0" maxOccurs="1"/>
+<xs:element name="RateTp" type="ExchangeRateType1Code" minOccurs="0" maxOccurs="1"/>
+<xs:element name="CtrctId" type="Max35Text" minOccurs="0" maxOccurs="1"/>
+</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="ExternalClearingSystemMemberCode">
+<xs:restriction base="xs:string">
+<xs:minLength value="1"/>
+<xs:maxLength value="35"/>
+</xs:restriction>
+</xs:simpleType>
+<xs:simpleType name="ExternalLocalInstrumentCode">
+<xs:restriction base="xs:string">
+<xs:minLength value="1"/>
+<xs:maxLength value="35"/>
+</xs:restriction>
+</xs:simpleType>
+<xs:simpleType name="ExternalPurposeCode">
+<xs:restriction base="xs:string">
+<xs:minLength value="1"/>
+<xs:maxLength value="35"/>
+</xs:restriction>
+</xs:simpleType>
+<xs:complexType name="FinancialInstitutionIdentification3">
+<xs:sequence>
+<xs:element name="BIC" type="BICIdentifier" minOccurs="0" maxOccurs="1"/>
+<xs:element name="ClrSysMmbId" type="ClearingSystemMemberIdentification3Choice" minOccurs="0" maxOccurs="1"/>
+<xs:element name="Nm" type="Max70Text" minOccurs="0" maxOccurs="1"/>
+<xs:element name="PstlAdr" type="PostalAddress1" minOccurs="0" maxOccurs="1"/>
+<xs:element name="PrtryId" type="GenericIdentification3" minOccurs="0" maxOccurs="1"/>
+</xs:sequence>
+</xs:complexType>
+<xs:complexType name="FinancialInstitutionIdentification5Choice">
+<xs:sequence>
+<xs:choice>
+<xs:element name="BIC" type="BICIdentifier"/>
+<xs:element name="ClrSysMmbId" type="ClearingSystemMemberIdentification3Choice"/>
+<xs:element name="NmAndAdr" type="NameAndAddress7"/>
+<xs:element name="PrtryId" type="GenericIdentification3"/>
+<xs:element name="CmbndId" type="FinancialInstitutionIdentification3"/>
+</xs:choice>
+</xs:sequence>
+</xs:complexType>
+<xs:complexType name="GenericIdentification3">
+<xs:sequence>
+<xs:element name="Id" type="Max35Text"/>
+<xs:element name="Issr" type="Max35Text" minOccurs="0" maxOccurs="1"/>
+</xs:sequence>
+</xs:complexType>
+<xs:complexType name="GenericIdentification4">
+<xs:sequence>
+<xs:element name="Id" type="Max35Text"/>
+<xs:element name="IdTp" type="Max35Text"/>
+</xs:sequence>
+</xs:complexType>
+<xs:complexType name="GroupHeader1">
+<xs:sequence>
+<xs:element name="MsgId" type="Max35Text"/>
+<xs:element name="CreDtTm" type="ISODateTime"/>
+<xs:element name="Authstn" type="Max128Text" minOccurs="0" maxOccurs="2"/>
+<xs:element name="BtchBookg" type="BatchBookingIndicator" minOccurs="0" maxOccurs="1"/>
+<xs:element name="NbOfTxs" type="Max15NumericText"/>
+<xs:element name="CtrlSum" type="DecimalNumber" minOccurs="0" maxOccurs="1"/>
+<xs:element name="Grpg" type="Grouping1Code"/>
+<xs:element name="InitgPty" type="PartyIdentification8"/>
+<xs:element name="FwdgAgt" type="BranchAndFinancialInstitutionIdentification3" minOccurs="0" maxOccurs="1"/>
+</xs:sequence>
+</xs:complexType>
+<xs:simpleType name="Grouping1Code">
+<xs:restriction base="xs:string">
+<xs:enumeration value="SNGL"/>
+<xs:enumeration value="GRPD"/>
+<xs:enumeration value="MIXD"/>
+</xs:restriction>
+</xs:simpleType>
+<xs:simpleType name="IBANIdentifier">
+<xs:restriction base="xs:string">
+<xs:pattern value="[a-zA-Z]{2,2}[0-9]{2,2}[a-zA-Z0-9]{1,30}"/>
+</xs:restriction>
+</xs:simpleType>
+<xs:simpleType name="IBEIIdentifier">
+<xs:restriction base="xs:string">
+<xs:pattern value="[A-Z]{2,2}[B-DF-HJ-NP-TV-XZ0-9]{7,7}[0-9]{1,1}"/>
+</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 name="Cd" type="Instruction3Code" minOccurs="0" maxOccurs="1"/>
+<xs:element name="InstrInf" type="Max140Text" minOccurs="0" maxOccurs="1"/>
+</xs:sequence>
+</xs:complexType>
+<xs:complexType name="LocalInstrument1Choice">
+<xs:sequence>
+<xs:choice>
+<xs:element name="Cd" type="ExternalLocalInstrumentCode"/>
+<xs:element name="Prtry" type="Max35Text"/>
+</xs:choice>
+</xs:sequence>
+</xs:complexType>
+<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="Max256Text">
+<xs:restriction base="xs:string">
+<xs:minLength value="1"/>
+<xs:maxLength value="256"/>
+</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="Max35Text">
+<xs:restriction base="xs:string">
+<xs:minLength value="1"/>
+<xs:maxLength value="35"/>
+</xs:restriction>
+</xs:simpleType>
+<xs:simpleType name="Max3Text">
+<xs:restriction base="xs:string">
+<xs:minLength value="1"/>
+<xs:maxLength value="3"/>
+</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="NameAndAddress3">
+<xs:sequence>
+<xs:element name="Nm" type="Max70Text"/>
+<xs:element name="Adr" type="PostalAddress1"/>
+</xs:sequence>
+</xs:complexType>
+<xs:complexType name="NameAndAddress7">
+<xs:sequence>
+<xs:element name="Nm" type="Max70Text"/>
+<xs:element name="PstlAdr" type="PostalAddress1"/>
+</xs:sequence>
+</xs:complexType>
+<xs:complexType name="OrganisationIdentification2">
+<xs:sequence>
+<xs:element name="BIC" type="BICIdentifier" minOccurs="0" maxOccurs="1"/>
+<xs:element name="IBEI" type="IBEIIdentifier" minOccurs="0" maxOccurs="1"/>
+<xs:element name="BEI" type="BEIIdentifier" minOccurs="0" maxOccurs="1"/>
+<xs:element name="EANGLN" type="EANGLNIdentifier" minOccurs="0" maxOccurs="1"/>
+<xs:element name="USCHU" type="CHIPSUniversalIdentifier" minOccurs="0" maxOccurs="1"/>
+<xs:element name="DUNS" type="DunsIdentifier" minOccurs="0" maxOccurs="1"/>
+<xs:element name="BkPtyId" type="Max35Text" minOccurs="0" maxOccurs="1"/>
+<xs:element name="TaxIdNb" type="Max35Text" minOccurs="0" maxOccurs="1"/>
+<xs:element name="PrtryId" type="GenericIdentification3" minOccurs="0" maxOccurs="1"/>
+</xs:sequence>
+</xs:complexType>
+<xs:complexType name="Party2Choice">
+<xs:sequence>
+<xs:choice>
+<xs:element name="OrgId" type="OrganisationIdentification2"/>
+<xs:element name="PrvtId" type="PersonIdentification3" minOccurs="1" maxOccurs="4"/>
+</xs:choice>
+</xs:sequence>
+</xs:complexType>
+<xs:complexType name="PartyIdentification8">
+<xs:sequence>
+<xs:element name="Nm" type="Max70Text" minOccurs="0" maxOccurs="1"/>
+<xs:element name="PstlAdr" type="PostalAddress1" minOccurs="0" maxOccurs="1"/>
+<xs:element name="Id" type="Party2Choice" minOccurs="0" maxOccurs="1"/>
+<xs:element name="CtryOfRes" type="CountryCode" minOccurs="0" maxOccurs="1"/>
+</xs:sequence>
+</xs:complexType>
+<xs:simpleType name="PaymentCategoryPurpose1Code">
+<xs:restriction base="xs:string">
+<xs:enumeration value="CORT"/>
+<xs:enumeration value="SALA"/>
+<xs:enumeration value="TREA"/>
+<xs:enumeration value="CASH"/>
+<xs:enumeration value="DIVI"/>
+<xs:enumeration value="GOVT"/>
+<xs:enumeration value="INTE"/>
+<xs:enumeration value="LOAN"/>
+<xs:enumeration value="PENS"/>
+<xs:enumeration value="SECU"/>
+<xs:enumeration value="SSBE"/>
+<xs:enumeration value="SUPP"/>
+<xs:enumeration value="TAXS"/>
+<xs:enumeration value="TRAD"/>
+<xs:enumeration value="VATX"/>
+<xs:enumeration value="HEDG"/>
+<xs:enumeration value="INTC"/>
+<xs:enumeration value="WHLD"/>
+</xs:restriction>
+</xs:simpleType>
+<xs:complexType name="PaymentIdentification1">
+<xs:sequence>
+<xs:element name="InstrId" type="Max35Text" minOccurs="0" maxOccurs="1"/>
+<xs:element name="EndToEndId" type="Max35Text"/>
+</xs:sequence>
+</xs:complexType>
+<xs:complexType name="PaymentInstructionInformation1">
+<xs:sequence>
+<xs:element name="PmtInfId" type="Max35Text" minOccurs="0" maxOccurs="1"/>
+<xs:element name="PmtMtd" type="PaymentMethod3Code"/>
+<xs:element name="PmtTpInf" type="PaymentTypeInformation1" minOccurs="0" maxOccurs="1"/>
+<xs:element name="ReqdExctnDt" type="ISODate"/>
+<xs:element name="PoolgAdjstmntDt" type="ISODate" minOccurs="0" maxOccurs="1"/>
+<xs:element name="Dbtr" type="PartyIdentification8"/>
+<xs:element name="DbtrAcct" type="CashAccount7"/>
+<xs:element name="DbtrAgt" type="BranchAndFinancialInstitutionIdentification3"/>
+<xs:element name="DbtrAgtAcct" type="CashAccount7" minOccurs="0" maxOccurs="1"/>
+<xs:element name="UltmtDbtr" type="PartyIdentification8" minOccurs="0" maxOccurs="1"/>
+<xs:element name="ChrgBr" type="ChargeBearerType1Code" minOccurs="0" maxOccurs="1"/>
+<xs:element name="ChrgsAcct" type="CashAccount7" minOccurs="0" maxOccurs="1"/>
+<xs:element name="ChrgsAcctAgt" type="BranchAndFinancialInstitutionIdentification3" minOccurs="0" maxOccurs="1"/>
+<xs:element name="CdtTrfTxInf" type="CreditTransferTransactionInformation1" minOccurs="1" maxOccurs="unbounded"/>
+</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="PaymentTypeInformation1">
+<xs:sequence>
+<xs:element name="InstrPrty" type="Priority2Code" minOccurs="0" maxOccurs="1"/>
+<xs:choice>
+<xs:element name="SvcLvl" type="ServiceLevel2Choice" minOccurs="0" maxOccurs="1"/>
+<xs:element name="ClrChanl" type="ClearingChannel2Code" minOccurs="0" maxOccurs="1"/>
+</xs:choice>
+<xs:element name="LclInstrm" type="LocalInstrument1Choice" minOccurs="0" maxOccurs="1"/>
+<xs:element name="CtgyPurp" type="PaymentCategoryPurpose1Code" minOccurs="0" maxOccurs="1"/>
+</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="PersonIdentification3">
+<xs:sequence>
+<xs:choice>
+<xs:element name="DrvrsLicNb" type="Max35Text"/>
+<xs:element name="CstmrNb" type="Max35Text"/>
+<xs:element name="SclSctyNb" type="Max35Text"/>
+<xs:element name="AlnRegnNb" type="Max35Text"/>
+<xs:element name="PsptNb" type="Max35Text"/>
+<xs:element name="TaxIdNb" type="Max35Text"/>
+<xs:element name="IdntyCardNb" type="Max35Text"/>
+<xs:element name="MplyrIdNb" type="Max35Text"/>
+<xs:element name="DtAndPlcOfBirth" type="DateAndPlaceOfBirth"/>
+<xs:element name="OthrId" type="GenericIdentification4"/>
+</xs:choice>
+<xs:element name="Issr" type="Max35Text" minOccurs="0" maxOccurs="1"/>
+</xs:sequence>
+</xs:complexType>
+<xs:complexType name="PostalAddress1">
+<xs:sequence>
+<xs:element name="AdrTp" type="AddressType2Code" minOccurs="0" maxOccurs="1"/>
+<xs:element name="AdrLine" type="Max70Text" minOccurs="0" maxOccurs="5"/>
+<xs:element name="StrtNm" type="Max70Text" minOccurs="0" maxOccurs="1"/>
+<xs:element name="BldgNb" type="Max16Text" minOccurs="0" maxOccurs="1"/>
+<xs:element name="PstCd" type="Max16Text" minOccurs="0" maxOccurs="1"/>
+<xs:element name="TwnNm" type="Max35Text" minOccurs="0" maxOccurs="1"/>
+<xs:element name="CtrySubDvsn" type="Max35Text" minOccurs="0" maxOccurs="1"/>
+<xs:element name="Ctry" type="CountryCode"/>
+</xs:sequence>
+</xs:complexType>
+<xs:simpleType name="Priority2Code">
+<xs:restriction base="xs:string">
+<xs:enumeration value="HIGH"/>
+<xs:enumeration value="NORM"/>
+</xs:restriction>
+</xs:simpleType>
+<xs:complexType name="Purpose1Choice">
+<xs:sequence>
+<xs:choice>
+<xs:element name="Cd" type="ExternalPurposeCode"/>
+<xs:element name="Prtry" type="Max35Text"/>
+</xs:choice>
+</xs:sequence>
+</xs:complexType>
+<xs:complexType name="ReferredDocumentAmount1Choice">
+<xs:sequence>
+<xs:choice>
+<xs:element name="DuePyblAmt" type="CurrencyAndAmount"/>
+<xs:element name="DscntApldAmt" type="CurrencyAndAmount"/>
+<xs:element name="RmtdAmt" type="CurrencyAndAmount"/>
+<xs:element name="CdtNoteAmt" type="CurrencyAndAmount"/>
+<xs:element name="TaxAmt" type="CurrencyAndAmount"/>
+</xs:choice>
+</xs:sequence>
+</xs:complexType>
+<xs:complexType name="ReferredDocumentInformation1">
+<xs:sequence>
+<xs:element name="RfrdDocTp" type="ReferredDocumentType1" minOccurs="0" maxOccurs="1"/>
+<xs:element name="RfrdDocNb" type="Max35Text" minOccurs="0" maxOccurs="1"/>
+</xs:sequence>
+</xs:complexType>
+<xs:complexType name="ReferredDocumentType1">
+<xs:sequence>
+<xs:choice>
+<xs:element name="Cd" type="DocumentType2Code"/>
+<xs:element name="Prtry" type="Max35Text"/>
+</xs:choice>
+<xs:element name="Issr" type="Max35Text" minOccurs="0" maxOccurs="1"/>
+</xs:sequence>
+</xs:complexType>
+<xs:complexType name="RegulatoryAuthority">
+<xs:sequence>
+<xs:element name="AuthrtyNm" type="Max70Text" minOccurs="0" maxOccurs="1"/>
+<xs:element name="AuthrtyCtry" type="CountryCode" minOccurs="0" maxOccurs="1"/>
+</xs:sequence>
+</xs:complexType>
+<xs:complexType name="RegulatoryReporting2">
+<xs:sequence>
+<xs:element name="DbtCdtRptgInd" type="RegulatoryReportingType1Code" minOccurs="0" maxOccurs="1"/>
+<xs:element name="Authrty" type="RegulatoryAuthority" minOccurs="0" maxOccurs="1"/>
+<xs:element name="RgltryDtls" type="StructuredRegulatoryReporting2" minOccurs="0" maxOccurs="1"/>
+</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="RemittanceInformation1">
+<xs:sequence>
+<xs:element name="Ustrd" type="Max140Text" minOccurs="0" maxOccurs="unbounded"/>
+<xs:element name="Strd" type="StructuredRemittanceInformation6" minOccurs="0" maxOccurs="unbounded"/>
+</xs:sequence>
+</xs:complexType>
+<xs:complexType name="RemittanceLocation1">
+<xs:sequence>
+<xs:element name="RmtId" type="Max35Text" minOccurs="0" maxOccurs="1"/>
+<xs:element name="RmtLctnMtd" type="RemittanceLocationMethod1Code" minOccurs="0" maxOccurs="1"/>
+<xs:element name="RmtLctnElctrncAdr" type="Max256Text" minOccurs="0" maxOccurs="1"/>
+<xs:element name="RmtLctnPstlAdr" type="NameAndAddress3" minOccurs="0" maxOccurs="1"/>
+</xs:sequence>
+</xs:complexType>
+<xs:simpleType name="RemittanceLocationMethod1Code">
+<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:restriction>
+</xs:simpleType>
+<xs:simpleType name="ServiceLevel1Code">
+<xs:restriction base="xs:string">
+<xs:enumeration value="SEPA"/>
+<xs:enumeration value="SDVA"/>
+<xs:enumeration value="PRPT"/>
+</xs:restriction>
+</xs:simpleType>
+<xs:complexType name="ServiceLevel2Choice">
+<xs:sequence>
+<xs:choice>
+<xs:element name="Cd" type="ServiceLevel1Code"/>
+<xs:element name="Prtry" type="Max35Text"/>
+</xs:choice>
+</xs:sequence>
+</xs:complexType>
+<xs:complexType name="SimpleIdentificationInformation2">
+<xs:sequence>
+<xs:element name="Id" type="Max34Text"/>
+</xs:sequence>
+</xs:complexType>
+<xs:complexType name="StructuredRegulatoryReporting2">
+<xs:sequence>
+<xs:element name="Cd" type="Max3Text" minOccurs="0" maxOccurs="1"/>
+<xs:element name="Amt" type="CurrencyAndAmount" minOccurs="0" maxOccurs="1"/>
+<xs:element name="Inf" type="Max35Text" minOccurs="0" maxOccurs="1"/>
+</xs:sequence>
+</xs:complexType>
+<xs:complexType name="StructuredRemittanceInformation6">
+<xs:sequence>
+<xs:element name="RfrdDocInf" type="ReferredDocumentInformation1" minOccurs="0" maxOccurs="1"/>
+<xs:element name="RfrdDocRltdDt" type="ISODate" minOccurs="0" maxOccurs="1"/>
+<xs:element name="RfrdDocAmt" type="ReferredDocumentAmount1Choice" minOccurs="0" maxOccurs="unbounded"/>
+<xs:element name="CdtrRefInf" type="CreditorReferenceInformation1" minOccurs="0" maxOccurs="1"/>
+<xs:element name="Invcr" type="PartyIdentification8" minOccurs="0" maxOccurs="1"/>
+<xs:element name="Invcee" type="PartyIdentification8" minOccurs="0" maxOccurs="1"/>
+<xs:element name="AddtlRmtInf" type="Max140Text" minOccurs="0" maxOccurs="1"/>
+</xs:sequence>
+</xs:complexType>
+<xs:complexType name="TaxDetails">
+<xs:sequence>
+<xs:element name="CertId" type="Max35Text" minOccurs="0" maxOccurs="1"/>
+<xs:element name="TaxTp" type="TaxType" minOccurs="0" maxOccurs="1"/>
+</xs:sequence>
+</xs:complexType>
+<xs:complexType name="TaxInformation2">
+<xs:sequence>
+<xs:element name="CdtrTaxId" type="Max35Text" minOccurs="0" maxOccurs="1"/>
+<xs:element name="CdtrTaxTp" type="Max35Text" minOccurs="0" maxOccurs="1"/>
+<xs:element name="DbtrTaxId" type="Max35Text" minOccurs="0" maxOccurs="1"/>
+<xs:element name="TaxRefNb" type="Max140Text" minOccurs="0" maxOccurs="1"/>
+<xs:element name="TtlTaxblBaseAmt" type="CurrencyAndAmount" minOccurs="0" maxOccurs="1"/>
+<xs:element name="TtlTaxAmt" type="CurrencyAndAmount" minOccurs="0" maxOccurs="1"/>
+<xs:element name="TaxDt" type="ISODate" minOccurs="0" maxOccurs="1"/>
+<xs:element name="TaxTpInf" type="TaxDetails" minOccurs="0" maxOccurs="unbounded"/>
+</xs:sequence>
+</xs:complexType>
+<xs:complexType name="TaxType">
+<xs:sequence>
+<xs:element name="CtgyDesc" type="Max35Text" minOccurs="0" maxOccurs="1"/>
+<xs:element name="Rate" type="PercentageRate" minOccurs="0" maxOccurs="1"/>
+<xs:element name="TaxblBaseAmt" type="CurrencyAndAmount" minOccurs="0" maxOccurs="1"/>
+<xs:element name="Amt" type="CurrencyAndAmount" minOccurs="0" maxOccurs="1"/>
+</xs:sequence>
+</xs:complexType>
+<xs:simpleType name="UPICIdentifier">
+<xs:restriction base="xs:string">
+<xs:pattern value="[0-9]{8,17}"/>
+</xs:restriction>
+</xs:simpleType>
+<xs:complexType name="pain.001.001.02">
+<xs:sequence>
+<xs:element name="GrpHdr" type="GroupHeader1"/>
+<xs:element name="PmtInf" type="PaymentInstructionInformation1" minOccurs="1" maxOccurs="unbounded"/>
+</xs:sequence>
+</xs:complexType>
+</xs:schema>

=== added file 'account_banking_sepa_credit_transfer/data/pain.001.001.03.xsd'
--- account_banking_sepa_credit_transfer/data/pain.001.001.03.xsd	1970-01-01 00:00:00 +0000
+++ account_banking_sepa_credit_transfer/data/pain.001.001.03.xsd	2013-06-28 19:44:42 +0000
@@ -0,0 +1,921 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--Generated by SWIFTStandards Workstation (build:R6.1.0.2) on 2009 Jan 08 17:30:53-->
+<xs:schema xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03" xmlns:xs="http://www.w3.org/2001/XMLSchema"; elementFormDefault="qualified" targetNamespace="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">
+    <xs:element name="Document" type="Document"/>
+    <xs:complexType name="AccountIdentification4Choice">
+        <xs:sequence>
+            <xs:choice>
+                <xs:element name="IBAN" type="IBAN2007Identifier"/>
+                <xs:element name="Othr" type="GenericAccountIdentification1"/>
+            </xs:choice>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="AccountSchemeName1Choice">
+        <xs:sequence>
+            <xs:choice>
+                <xs:element name="Cd" type="ExternalAccountIdentification1Code"/>
+                <xs:element name="Prtry" type="Max35Text"/>
+            </xs:choice>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:simpleType name="ActiveOrHistoricCurrencyAndAmount_SimpleType">
+        <xs:restriction base="xs:decimal">
+            <xs:minInclusive value="0"/>
+            <xs:fractionDigits value="5"/>
+            <xs:totalDigits value="18"/>
+        </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="AmountType3Choice">
+        <xs:sequence>
+            <xs:choice>
+                <xs:element name="InstdAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
+                <xs:element name="EqvtAmt" type="EquivalentAmount2"/>
+            </xs:choice>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:simpleType name="AnyBICIdentifier">
+        <xs:restriction base="xs:string">
+            <xs:pattern value="[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}"/>
+        </xs:restriction>
+    </xs:simpleType>
+    <xs:complexType name="Authorisation1Choice">
+        <xs:sequence>
+            <xs:choice>
+                <xs:element name="Cd" type="Authorisation1Code"/>
+                <xs:element name="Prtry" type="Max128Text"/>
+            </xs:choice>
+        </xs:sequence>
+    </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="BICIdentifier">
+        <xs:restriction base="xs:string">
+            <xs:pattern value="[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([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="BranchAndFinancialInstitutionIdentification4">
+        <xs:sequence>
+            <xs:element name="FinInstnId" type="FinancialInstitutionIdentification7"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="BrnchId" type="BranchData2"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="BranchData2">
+        <xs:sequence>
+            <xs:element maxOccurs="1" minOccurs="0" name="Id" type="Max35Text"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="PstlAdr" type="PostalAddress6"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="CashAccount16">
+        <xs:sequence>
+            <xs:element name="Id" type="AccountIdentification4Choice"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="Tp" type="CashAccountType2"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="Ccy" type="ActiveOrHistoricCurrencyCode"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max70Text"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="CashAccountType2">
+        <xs:sequence>
+            <xs:choice>
+                <xs:element name="Cd" type="CashAccountType4Code"/>
+                <xs:element name="Prtry" type="Max35Text"/>
+            </xs:choice>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:simpleType name="CashAccountType4Code">
+        <xs:restriction base="xs:string">
+            <xs:enumeration value="CASH"/>
+            <xs:enumeration value="CHAR"/>
+            <xs:enumeration value="COMM"/>
+            <xs:enumeration value="TAXE"/>
+            <xs:enumeration value="CISH"/>
+            <xs:enumeration value="TRAS"/>
+            <xs:enumeration value="SACC"/>
+            <xs:enumeration value="CACC"/>
+            <xs:enumeration value="SVGS"/>
+            <xs:enumeration value="ONDP"/>
+            <xs:enumeration value="MGLD"/>
+            <xs:enumeration value="NREX"/>
+            <xs:enumeration value="MOMA"/>
+            <xs:enumeration value="LOAN"/>
+            <xs:enumeration value="SLRY"/>
+            <xs:enumeration value="ODFT"/>
+        </xs:restriction>
+    </xs:simpleType>
+    <xs:complexType name="CategoryPurpose1Choice">
+        <xs:sequence>
+            <xs:choice>
+                <xs:element name="Cd" type="ExternalCategoryPurpose1Code"/>
+                <xs:element name="Prtry" type="Max35Text"/>
+            </xs:choice>
+        </xs:sequence>
+    </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="Cheque6">
+        <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="NameAndAddress10"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="DlvryMtd" type="ChequeDeliveryMethod1Choice"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="DlvrTo" type="NameAndAddress10"/>
+            <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: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:sequence>
+            <xs:choice>
+                <xs:element name="Cd" type="ChequeDelivery1Code"/>
+                <xs:element name="Prtry" type="Max35Text"/>
+            </xs:choice>
+        </xs:sequence>
+    </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:sequence>
+            <xs:choice>
+                <xs:element name="Cd" type="ExternalClearingSystemIdentification1Code"/>
+                <xs:element name="Prtry" type="Max35Text"/>
+            </xs:choice>
+        </xs:sequence>
+    </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="ContactDetails2">
+        <xs:sequence>
+            <xs:element maxOccurs="1" minOccurs="0" name="NmPrfx" type="NamePrefix1Code"/>
+            <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="Othr" type="Max35Text"/>
+        </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="CreditTransferTransactionInformation10">
+        <xs:sequence>
+            <xs:element name="PmtId" type="PaymentIdentification1"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="PmtTpInf" type="PaymentTypeInformation19"/>
+            <xs:element name="Amt" type="AmountType3Choice"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="XchgRateInf" type="ExchangeRateInformation1"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="ChrgBr" type="ChargeBearerType1Code"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="ChqInstr" type="Cheque6"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="UltmtDbtr" type="PartyIdentification32"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="IntrmyAgt1" type="BranchAndFinancialInstitutionIdentification4"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="IntrmyAgt1Acct" type="CashAccount16"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="IntrmyAgt2" type="BranchAndFinancialInstitutionIdentification4"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="IntrmyAgt2Acct" type="CashAccount16"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="IntrmyAgt3" type="BranchAndFinancialInstitutionIdentification4"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="IntrmyAgt3Acct" type="CashAccount16"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="CdtrAgt" type="BranchAndFinancialInstitutionIdentification4"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="CdtrAgtAcct" type="CashAccount16"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="Cdtr" type="PartyIdentification32"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="CdtrAcct" type="CashAccount16"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="UltmtCdtr" type="PartyIdentification32"/>
+            <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="TaxInformation3"/>
+            <xs:element maxOccurs="10" minOccurs="0" name="RltdRmtInf" type="RemittanceLocation2"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="RmtInf" type="RemittanceInformation5"/>
+        </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:sequence>
+            <xs:choice>
+                <xs:element name="Cd" type="DocumentType3Code"/>
+                <xs:element name="Prtry" type="Max35Text"/>
+            </xs:choice>
+        </xs:sequence>
+    </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="CustomerCreditTransferInitiationV03">
+        <xs:sequence>
+            <xs:element name="GrpHdr" type="GroupHeader32"/>
+            <xs:element maxOccurs="unbounded" minOccurs="1" name="PmtInf" type="PaymentInstructionInformation3"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="DateAndPlaceOfBirth">
+        <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="DatePeriodDetails">
+        <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="Document">
+        <xs:sequence>
+            <xs:element name="CstmrCdtTrfInitn" type="CustomerCreditTransferInitiationV03"/>
+        </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: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="DocumentType5Code">
+        <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: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:complexType name="ExchangeRateInformation1">
+        <xs:sequence>
+            <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="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="ExternalFinancialInstitutionIdentification1Code">
+        <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="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:complexType name="FinancialIdentificationSchemeName1Choice">
+        <xs:sequence>
+            <xs:choice>
+                <xs:element name="Cd" type="ExternalFinancialInstitutionIdentification1Code"/>
+                <xs:element name="Prtry" type="Max35Text"/>
+            </xs:choice>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="FinancialInstitutionIdentification7">
+        <xs:sequence>
+            <xs:element maxOccurs="1" minOccurs="0" name="BIC" type="BICIdentifier"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="ClrSysMmbId" type="ClearingSystemMemberIdentification2"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="PstlAdr" type="PostalAddress6"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="Othr" type="GenericFinancialIdentification1"/>
+        </xs:sequence>
+    </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="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="GroupHeader32">
+        <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="PartyIdentification32"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="FwdgAgt" type="BranchAndFinancialInstitutionIdentification4"/>
+        </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:complexType name="LocalInstrument2Choice">
+        <xs:sequence>
+            <xs:choice>
+                <xs:element name="Cd" type="ExternalLocalInstrument1Code"/>
+                <xs:element name="Prtry" type="Max35Text"/>
+            </xs:choice>
+        </xs:sequence>
+    </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="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="NameAndAddress10">
+        <xs:sequence>
+            <xs:element name="Nm" type="Max140Text"/>
+            <xs:element name="Adr" type="PostalAddress6"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:simpleType name="NamePrefix1Code">
+        <xs:restriction base="xs:string">
+            <xs:enumeration value="DOCT"/>
+            <xs:enumeration value="MIST"/>
+            <xs:enumeration value="MISS"/>
+            <xs:enumeration value="MADM"/>
+        </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="OrganisationIdentification4">
+        <xs:sequence>
+            <xs:element maxOccurs="1" minOccurs="0" name="BICOrBEI" type="AnyBICIdentifier"/>
+            <xs:element maxOccurs="unbounded" minOccurs="0" name="Othr" type="GenericOrganisationIdentification1"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="OrganisationIdentificationSchemeName1Choice">
+        <xs:sequence>
+            <xs:choice>
+                <xs:element name="Cd" type="ExternalOrganisationIdentification1Code"/>
+                <xs:element name="Prtry" type="Max35Text"/>
+            </xs:choice>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="Party6Choice">
+        <xs:sequence>
+            <xs:choice>
+                <xs:element name="OrgId" type="OrganisationIdentification4"/>
+                <xs:element name="PrvtId" type="PersonIdentification5"/>
+            </xs:choice>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="PartyIdentification32">
+        <xs:sequence>
+            <xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="PstlAdr" type="PostalAddress6"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="Id" type="Party6Choice"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="CtryOfRes" type="CountryCode"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="CtctDtls" type="ContactDetails2"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="PaymentIdentification1">
+        <xs:sequence>
+            <xs:element maxOccurs="1" minOccurs="0" name="InstrId" type="Max35Text"/>
+            <xs:element name="EndToEndId" type="Max35Text"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="PaymentInstructionInformation3">
+        <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="PaymentTypeInformation19"/>
+            <xs:element name="ReqdExctnDt" type="ISODate"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="PoolgAdjstmntDt" type="ISODate"/>
+            <xs:element name="Dbtr" type="PartyIdentification32"/>
+            <xs:element name="DbtrAcct" type="CashAccount16"/>
+            <xs:element name="DbtrAgt" type="BranchAndFinancialInstitutionIdentification4"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="DbtrAgtAcct" type="CashAccount16"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="UltmtDbtr" type="PartyIdentification32"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="ChrgBr" type="ChargeBearerType1Code"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="ChrgsAcct" type="CashAccount16"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="ChrgsAcctAgt" type="BranchAndFinancialInstitutionIdentification4"/>
+            <xs:element maxOccurs="unbounded" minOccurs="1" name="CdtTrfTxInf" type="CreditTransferTransactionInformation10"/>
+        </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="PaymentTypeInformation19">
+        <xs:sequence>
+            <xs:element maxOccurs="1" minOccurs="0" name="InstrPrty" type="Priority2Code"/>
+            <xs:element maxOccurs="1" 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="PersonIdentification5">
+        <xs:sequence>
+            <xs:element maxOccurs="1" minOccurs="0" name="DtAndPlcOfBirth" type="DateAndPlaceOfBirth"/>
+            <xs:element maxOccurs="unbounded" minOccurs="0" name="Othr" type="GenericPersonIdentification1"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="PersonIdentificationSchemeName1Choice">
+        <xs:sequence>
+            <xs:choice>
+                <xs:element name="Cd" type="ExternalPersonIdentification1Code"/>
+                <xs:element name="Prtry" type="Max35Text"/>
+            </xs:choice>
+        </xs:sequence>
+    </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="PostalAddress6">
+        <xs:sequence>
+            <xs:element maxOccurs="1" minOccurs="0" name="AdrTp" type="AddressType2Code"/>
+            <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="PstCd" type="Max16Text"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="TwnNm" 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="Priority2Code">
+        <xs:restriction base="xs:string">
+            <xs:enumeration value="HIGH"/>
+            <xs:enumeration value="NORM"/>
+        </xs:restriction>
+    </xs:simpleType>
+    <xs:complexType name="Purpose2Choice">
+        <xs:sequence>
+            <xs:choice>
+                <xs:element name="Cd" type="ExternalPurpose1Code"/>
+                <xs:element name="Prtry" type="Max35Text"/>
+            </xs:choice>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="ReferredDocumentInformation3">
+        <xs:sequence>
+            <xs:element maxOccurs="1" minOccurs="0" name="Tp" type="ReferredDocumentType2"/>
+            <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="ReferredDocumentType1Choice">
+        <xs:sequence>
+            <xs:choice>
+                <xs:element name="Cd" type="DocumentType5Code"/>
+                <xs:element name="Prtry" type="Max35Text"/>
+            </xs:choice>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="ReferredDocumentType2">
+        <xs:sequence>
+            <xs:element name="CdOrPrtry" type="ReferredDocumentType1Choice"/>
+            <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="RemittanceAmount1">
+        <xs:sequence>
+            <xs:element maxOccurs="1" minOccurs="0" name="DuePyblAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="DscntApldAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="CdtNoteAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="TaxAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
+            <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="RemittanceInformation5">
+        <xs:sequence>
+            <xs:element maxOccurs="unbounded" minOccurs="0" name="Ustrd" type="Max140Text"/>
+            <xs:element maxOccurs="unbounded" minOccurs="0" name="Strd" type="StructuredRemittanceInformation7"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="RemittanceLocation2">
+        <xs:sequence>
+            <xs:element maxOccurs="1" minOccurs="0" name="RmtId" type="Max35Text"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="RmtLctnMtd" type="RemittanceLocationMethod2Code"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="RmtLctnElctrncAdr" type="Max2048Text"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="RmtLctnPstlAdr" type="NameAndAddress10"/>
+        </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:sequence>
+            <xs:choice>
+                <xs:element name="Cd" type="ExternalServiceLevel1Code"/>
+                <xs:element name="Prtry" type="Max35Text"/>
+            </xs:choice>
+        </xs:sequence>
+    </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="StructuredRemittanceInformation7">
+        <xs:sequence>
+            <xs:element maxOccurs="unbounded" minOccurs="0" name="RfrdDocInf" type="ReferredDocumentInformation3"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="RfrdDocAmt" type="RemittanceAmount1"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="CdtrRefInf" type="CreditorReferenceInformation2"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="Invcr" type="PartyIdentification32"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="Invcee" type="PartyIdentification32"/>
+            <xs:element maxOccurs="3" minOccurs="0" name="AddtlRmtInf" type="Max140Text"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="TaxAmount1">
+        <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="TaxRecordDetails1"/>
+        </xs:sequence>
+    </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="TaxInformation3">
+        <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="AdmstnZn" 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="TaxRecord1"/>
+        </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="TaxPeriod1">
+        <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="DatePeriodDetails"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="TaxRecord1">
+        <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="TaxPeriod1"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="TaxAmt" type="TaxAmount1"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="AddtlInf" type="Max140Text"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="TaxRecordDetails1">
+        <xs:sequence>
+            <xs:element maxOccurs="1" minOccurs="0" name="Prd" type="TaxPeriod1"/>
+            <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:schema>

=== added file 'account_banking_sepa_credit_transfer/data/pain.001.001.04.xsd'
--- account_banking_sepa_credit_transfer/data/pain.001.001.04.xsd	1970-01-01 00:00:00 +0000
+++ account_banking_sepa_credit_transfer/data/pain.001.001.04.xsd	2013-06-28 19:44:42 +0000
@@ -0,0 +1,968 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--Generated by SWIFTStandards Workstation (build:R7.1.30.4) on 2012 Jun 07 20:47:19-->
+<xs:schema elementFormDefault="qualified" targetNamespace="urn:iso:std:iso:20022:tech:xsd:pain.001.001.04" xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.04" xmlns:xs="http://www.w3.org/2001/XMLSchema";>
+    <xs:element name="Document" type="Document"/>
+    <xs:complexType name="AccountIdentification4Choice">
+        <xs:sequence>
+            <xs:choice>
+                <xs:element name="IBAN" type="IBAN2007Identifier"/>
+                <xs:element name="Othr" type="GenericAccountIdentification1"/>
+            </xs:choice>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="AccountSchemeName1Choice">
+        <xs:sequence>
+            <xs:choice>
+                <xs:element name="Cd" type="ExternalAccountIdentification1Code"/>
+                <xs:element name="Prtry" type="Max35Text"/>
+            </xs:choice>
+        </xs:sequence>
+    </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="AmountType3Choice">
+        <xs:sequence>
+            <xs:choice>
+                <xs:element name="InstdAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
+                <xs:element name="EqvtAmt" type="EquivalentAmount2"/>
+            </xs:choice>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:simpleType name="AnyBICIdentifier">
+        <xs:restriction base="xs:string">
+            <xs:pattern value="[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}"/>
+        </xs:restriction>
+    </xs:simpleType>
+    <xs:complexType name="Authorisation1Choice">
+        <xs:sequence>
+            <xs:choice>
+                <xs:element name="Cd" type="Authorisation1Code"/>
+                <xs:element name="Prtry" type="Max128Text"/>
+            </xs:choice>
+        </xs:sequence>
+    </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="BICFIIdentifier">
+        <xs:restriction base="xs:string">
+            <xs:pattern value="[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([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="BranchAndFinancialInstitutionIdentification5">
+        <xs:sequence>
+            <xs:element name="FinInstnId" type="FinancialInstitutionIdentification8"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="BrnchId" type="BranchData2"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="BranchData2">
+        <xs:sequence>
+            <xs:element maxOccurs="1" minOccurs="0" name="Id" type="Max35Text"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="PstlAdr" type="PostalAddress6"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="CashAccount24">
+        <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:sequence>
+    </xs:complexType>
+    <xs:complexType name="CashAccountType2Choice">
+        <xs:sequence>
+            <xs:choice>
+                <xs:element name="Cd" type="ExternalCashAccountType1Code"/>
+                <xs:element name="Prtry" type="Max35Text"/>
+            </xs:choice>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="CategoryPurpose1Choice">
+        <xs:sequence>
+            <xs:choice>
+                <xs:element name="Cd" type="ExternalCategoryPurpose1Code"/>
+                <xs:element name="Prtry" type="Max35Text"/>
+            </xs:choice>
+        </xs:sequence>
+    </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="Cheque7">
+        <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="NameAndAddress10"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="DlvryMtd" type="ChequeDeliveryMethod1Choice"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="DlvrTo" type="NameAndAddress10"/>
+            <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:sequence>
+            <xs:choice>
+                <xs:element name="Cd" type="ChequeDelivery1Code"/>
+                <xs:element name="Prtry" type="Max35Text"/>
+            </xs:choice>
+        </xs:sequence>
+    </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:sequence>
+            <xs:choice>
+                <xs:element name="Cd" type="ExternalClearingSystemIdentification1Code"/>
+                <xs:element name="Prtry" type="Max35Text"/>
+            </xs:choice>
+        </xs:sequence>
+    </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="ContactDetails2">
+        <xs:sequence>
+            <xs:element maxOccurs="1" minOccurs="0" name="NmPrfx" type="NamePrefix1Code"/>
+            <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="Othr" type="Max35Text"/>
+        </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="CreditTransferTransaction1">
+        <xs:sequence>
+            <xs:element name="PmtId" type="PaymentIdentification1"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="PmtTpInf" type="PaymentTypeInformation19"/>
+            <xs:element name="Amt" type="AmountType3Choice"/>
+            <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="Cheque7"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="UltmtDbtr" type="PartyIdentification43"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="IntrmyAgt1" type="BranchAndFinancialInstitutionIdentification5"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="IntrmyAgt1Acct" type="CashAccount24"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="IntrmyAgt2" type="BranchAndFinancialInstitutionIdentification5"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="IntrmyAgt2Acct" type="CashAccount24"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="IntrmyAgt3" type="BranchAndFinancialInstitutionIdentification5"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="IntrmyAgt3Acct" type="CashAccount24"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="CdtrAgt" type="BranchAndFinancialInstitutionIdentification5"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="CdtrAgtAcct" type="CashAccount24"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="Cdtr" type="PartyIdentification43"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="CdtrAcct" type="CashAccount24"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="UltmtCdtr" type="PartyIdentification43"/>
+            <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="TaxInformation3"/>
+            <xs:element maxOccurs="10" minOccurs="0" name="RltdRmtInf" type="RemittanceLocation2"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="RmtInf" type="RemittanceInformation7"/>
+        </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:sequence>
+            <xs:choice>
+                <xs:element name="Cd" type="DocumentType3Code"/>
+                <xs:element name="Prtry" type="Max35Text"/>
+            </xs:choice>
+        </xs:sequence>
+    </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="CustomerCreditTransferInitiationV04">
+        <xs:sequence>
+            <xs:element name="GrpHdr" type="GroupHeader48"/>
+            <xs:element maxOccurs="unbounded" minOccurs="1" name="PmtInf" type="PaymentInstruction6"/>
+            <xs:element maxOccurs="unbounded" minOccurs="0" name="SplmtryData" type="SupplementaryData1"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="DateAndPlaceOfBirth">
+        <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="DatePeriodDetails">
+        <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:sequence>
+            <xs:choice>
+                <xs:element name="Cd" type="ExternalDiscountAmountType1Code"/>
+                <xs:element name="Prtry" type="Max35Text"/>
+            </xs:choice>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="Document">
+        <xs:sequence>
+            <xs:element name="CstmrCdtTrfInitn" type="CustomerCreditTransferInitiationV04"/>
+        </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: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="DocumentType5Code">
+        <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: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: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="ExternalFinancialInstitutionIdentification1Code">
+        <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="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:sequence>
+            <xs:choice>
+                <xs:element name="Cd" type="ExternalFinancialInstitutionIdentification1Code"/>
+                <xs:element name="Prtry" type="Max35Text"/>
+            </xs:choice>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="FinancialInstitutionIdentification8">
+        <xs:sequence>
+            <xs:element maxOccurs="1" minOccurs="0" name="BICFI" type="BICFIIdentifier"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="ClrSysMmbId" type="ClearingSystemMemberIdentification2"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="PstlAdr" type="PostalAddress6"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="Othr" type="GenericFinancialIdentification1"/>
+        </xs:sequence>
+    </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="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="GroupHeader48">
+        <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="PartyIdentification43"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="FwdgAgt" type="BranchAndFinancialInstitutionIdentification5"/>
+        </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:complexType name="LocalInstrument2Choice">
+        <xs:sequence>
+            <xs:choice>
+                <xs:element name="Cd" type="ExternalLocalInstrument1Code"/>
+                <xs:element name="Prtry" type="Max35Text"/>
+            </xs:choice>
+        </xs:sequence>
+    </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="NameAndAddress10">
+        <xs:sequence>
+            <xs:element name="Nm" type="Max140Text"/>
+            <xs:element name="Adr" type="PostalAddress6"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:simpleType name="NamePrefix1Code">
+        <xs:restriction base="xs:string">
+            <xs:enumeration value="DOCT"/>
+            <xs:enumeration value="MIST"/>
+            <xs:enumeration value="MISS"/>
+            <xs:enumeration value="MADM"/>
+        </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="OrganisationIdentification8">
+        <xs:sequence>
+            <xs:element maxOccurs="1" minOccurs="0" name="AnyBIC" type="AnyBICIdentifier"/>
+            <xs:element maxOccurs="unbounded" minOccurs="0" name="Othr" type="GenericOrganisationIdentification1"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="OrganisationIdentificationSchemeName1Choice">
+        <xs:sequence>
+            <xs:choice>
+                <xs:element name="Cd" type="ExternalOrganisationIdentification1Code"/>
+                <xs:element name="Prtry" type="Max35Text"/>
+            </xs:choice>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="Party11Choice">
+        <xs:sequence>
+            <xs:choice>
+                <xs:element name="OrgId" type="OrganisationIdentification8"/>
+                <xs:element name="PrvtId" type="PersonIdentification5"/>
+            </xs:choice>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="PartyIdentification43">
+        <xs:sequence>
+            <xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="PstlAdr" type="PostalAddress6"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="Id" type="Party11Choice"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="CtryOfRes" type="CountryCode"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="CtctDtls" type="ContactDetails2"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="PaymentIdentification1">
+        <xs:sequence>
+            <xs:element maxOccurs="1" minOccurs="0" name="InstrId" type="Max35Text"/>
+            <xs:element name="EndToEndId" type="Max35Text"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="PaymentInstruction6">
+        <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="PaymentTypeInformation19"/>
+            <xs:element name="ReqdExctnDt" type="ISODate"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="PoolgAdjstmntDt" type="ISODate"/>
+            <xs:element name="Dbtr" type="PartyIdentification43"/>
+            <xs:element name="DbtrAcct" type="CashAccount24"/>
+            <xs:element name="DbtrAgt" type="BranchAndFinancialInstitutionIdentification5"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="DbtrAgtAcct" type="CashAccount24"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="InstrForDbtrAgt" type="Max140Text"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="UltmtDbtr" type="PartyIdentification43"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="ChrgBr" type="ChargeBearerType1Code"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="ChrgsAcct" type="CashAccount24"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="ChrgsAcctAgt" type="BranchAndFinancialInstitutionIdentification5"/>
+            <xs:element maxOccurs="unbounded" minOccurs="1" name="CdtTrfTxInf" type="CreditTransferTransaction1"/>
+        </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="PaymentTypeInformation19">
+        <xs:sequence>
+            <xs:element maxOccurs="1" minOccurs="0" name="InstrPrty" type="Priority2Code"/>
+            <xs:element maxOccurs="1" 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="PersonIdentification5">
+        <xs:sequence>
+            <xs:element maxOccurs="1" minOccurs="0" name="DtAndPlcOfBirth" type="DateAndPlaceOfBirth"/>
+            <xs:element maxOccurs="unbounded" minOccurs="0" name="Othr" type="GenericPersonIdentification1"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="PersonIdentificationSchemeName1Choice">
+        <xs:sequence>
+            <xs:choice>
+                <xs:element name="Cd" type="ExternalPersonIdentification1Code"/>
+                <xs:element name="Prtry" type="Max35Text"/>
+            </xs:choice>
+        </xs:sequence>
+    </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="PostalAddress6">
+        <xs:sequence>
+            <xs:element maxOccurs="1" minOccurs="0" name="AdrTp" type="AddressType2Code"/>
+            <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="PstCd" type="Max16Text"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="TwnNm" 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="Priority2Code">
+        <xs:restriction base="xs:string">
+            <xs:enumeration value="HIGH"/>
+            <xs:enumeration value="NORM"/>
+        </xs:restriction>
+    </xs:simpleType>
+    <xs:complexType name="Purpose2Choice">
+        <xs:sequence>
+            <xs:choice>
+                <xs:element name="Cd" type="ExternalPurpose1Code"/>
+                <xs:element name="Prtry" type="Max35Text"/>
+            </xs:choice>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="ReferredDocumentInformation3">
+        <xs:sequence>
+            <xs:element maxOccurs="1" minOccurs="0" name="Tp" type="ReferredDocumentType2"/>
+            <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="ReferredDocumentType1Choice">
+        <xs:sequence>
+            <xs:choice>
+                <xs:element name="Cd" type="DocumentType5Code"/>
+                <xs:element name="Prtry" type="Max35Text"/>
+            </xs:choice>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="ReferredDocumentType2">
+        <xs:sequence>
+            <xs:element name="CdOrPrtry" type="ReferredDocumentType1Choice"/>
+            <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="RemittanceInformation7">
+        <xs:sequence>
+            <xs:element maxOccurs="unbounded" minOccurs="0" name="Ustrd" type="Max140Text"/>
+            <xs:element maxOccurs="unbounded" minOccurs="0" name="Strd" type="StructuredRemittanceInformation9"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="RemittanceLocation2">
+        <xs:sequence>
+            <xs:element maxOccurs="1" minOccurs="0" name="RmtId" type="Max35Text"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="RmtLctnMtd" type="RemittanceLocationMethod2Code"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="RmtLctnElctrncAdr" type="Max2048Text"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="RmtLctnPstlAdr" type="NameAndAddress10"/>
+        </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:sequence>
+            <xs:choice>
+                <xs:element name="Cd" type="ExternalServiceLevel1Code"/>
+                <xs:element name="Prtry" type="Max35Text"/>
+            </xs:choice>
+        </xs:sequence>
+    </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="StructuredRemittanceInformation9">
+        <xs:sequence>
+            <xs:element maxOccurs="unbounded" minOccurs="0" name="RfrdDocInf" type="ReferredDocumentInformation3"/>
+            <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="PartyIdentification43"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="Invcee" type="PartyIdentification43"/>
+            <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="TaxAmount1">
+        <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="TaxRecordDetails1"/>
+        </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:sequence>
+            <xs:choice>
+                <xs:element name="Cd" type="ExternalTaxAmountType1Code"/>
+                <xs:element name="Prtry" type="Max35Text"/>
+            </xs:choice>
+        </xs:sequence>
+    </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="TaxInformation3">
+        <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="AdmstnZn" 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="TaxRecord1"/>
+        </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="TaxPeriod1">
+        <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="DatePeriodDetails"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="TaxRecord1">
+        <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="TaxPeriod1"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="TaxAmt" type="TaxAmount1"/>
+            <xs:element maxOccurs="1" minOccurs="0" name="AddtlInf" type="Max140Text"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="TaxRecordDetails1">
+        <xs:sequence>
+            <xs:element maxOccurs="1" minOccurs="0" name="Prd" type="TaxPeriod1"/>
+            <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:schema>
\ No newline at end of file

=== added file 'account_banking_sepa_credit_transfer/data/payment_type_sepa_sct.xml'
--- account_banking_sepa_credit_transfer/data/payment_type_sepa_sct.xml	1970-01-01 00:00:00 +0000
+++ account_banking_sepa_credit_transfer/data/payment_type_sepa_sct.xml	2013-06-28 19:44:42 +0000
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+<data noupdate="1">
+
+
+<!-- TODO In the suitable_bank_types field, we should restrict to IBAN type and Rib+IBAN of l10n_fr_rib ? -->
+<record id="export_sepa_sct_001_001_04" model="payment.mode.type">
+    <field name="name">SEPA Credit Transfer v04</field>
+    <field name="code">pain.001.001.04</field>
+    <field name="suitable_bank_types"></field>
+    <field name="ir_model_id" ref="model_banking_export_sepa_wizard"/>
+    <field name="payment_order_type">payment</field>
+</record>
+
+<record id="export_sepa_sct_001_001_03" model="payment.mode.type">
+    <field name="name">SEPA Credit Transfer v03</field>
+    <field name="code">pain.001.001.03</field>
+    <field name="suitable_bank_types"></field>
+    <field name="ir_model_id" ref="model_banking_export_sepa_wizard"/>
+    <field name="payment_order_type">payment</field>
+</record>
+
+<record id="export_sepa_sct_001_001_02" model="payment.mode.type">
+    <field name="name">SEPA Credit Transfer v02</field>
+    <field name="code">pain.001.001.02</field>
+    <field name="suitable_bank_types"></field>
+    <field name="ir_model_id" ref="model_banking_export_sepa_wizard"/>
+    <field name="payment_order_type">payment</field>
+</record>
+
+
+</data>
+</openerp>

=== added directory 'account_banking_sepa_credit_transfer/i18n'
=== added file 'account_banking_sepa_credit_transfer/i18n/account_banking_sepa_credit_transfer.pot'
--- account_banking_sepa_credit_transfer/i18n/account_banking_sepa_credit_transfer.pot	1970-01-01 00:00:00 +0000
+++ account_banking_sepa_credit_transfer/i18n/account_banking_sepa_credit_transfer.pot	2013-06-28 19:44:42 +0000
@@ -0,0 +1,251 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+#	* account_banking_sepa_credit_transfer
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 6.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-06-06 08:01+0000\n"
+"PO-Revision-Date: 2013-06-06 08:01+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,file:0
+#: field:banking.export.sepa.wizard,file_id:0
+msgid "SEPA XML file"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa:0
+msgid "Payment order"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa.wizard,state:0
+msgid "Create"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: help:banking.export.sepa.wizard,msg_identification:0
+msgid "This is the message identification of the entire SEPA XML file. 35 characters max."
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,filename:0
+#: field:banking.export.sepa.wizard,filename:0
+msgid "Filename"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa:0
+msgid "General information"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,state:0
+#: field:banking.export.sepa.wizard,state:0
+msgid "State"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa,state:0
+msgid "Draft"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,prefered_exec_date:0
+#: field:banking.export.sepa.wizard,prefered_exec_date:0
+msgid "Prefered execution date"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa,charge_bearer:0
+#: selection:banking.export.sepa.wizard,charge_bearer:0
+msgid "Shared"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,generation_date:0
+msgid "Generation date"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: model:ir.model,name:account_banking_sepa_credit_transfer.model_banking_export_sepa_wizard
+msgid "Export SEPA Credit Transfer XML file"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa:0
+msgid "SEPA Credit Transfer"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa.wizard,state:0
+msgid "Finish"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa,state:0
+msgid "Reconciled"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: model:ir.actions.act_window,name:account_banking_sepa_credit_transfer.act_banking_export_sepa_payment_order
+msgid "Generated SEPA files"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: model:ir.actions.act_window,name:account_banking_sepa_credit_transfer.action_account_banking_sepa
+#: model:ir.ui.menu,name:account_banking_sepa_credit_transfer.menu_account_banking_sepa
+msgid "Generated SEPA XML files"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa,state:0
+msgid "Sent"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa.wizard:0
+msgid "Validate"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa.wizard:0
+msgid "Generate"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,msg_identification:0
+#: field:banking.export.sepa.wizard,msg_identification:0
+msgid "Message identification"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:284
+#, python-format
+msgid "The generated XML file is not valid against the official XML Schema Definition. The generated XML file and the full error have been written in the server logs. Here is the error, which may give you an idea on the cause of the problem : %s"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,total_amount:0
+#: field:banking.export.sepa.wizard,total_amount:0
+msgid "Total amount"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: help:banking.export.sepa,charge_bearer:0
+#: help:banking.export.sepa.wizard,charge_bearer:0
+msgid "Shared : transaction charges on the sender side are to be borne by the debtor, transaction charges on the receiver side are to be borne by the creditor (most transfers use this). Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor. Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme."
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa,charge_bearer:0
+#: selection:banking.export.sepa.wizard,charge_bearer:0
+msgid "Borne by creditor"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa:0
+#: field:banking.export.sepa,payment_order_ids:0
+#: field:banking.export.sepa.wizard,payment_order_ids:0
+msgid "Payment orders"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:90
+#, python-format
+msgid "This IBAN is not valid : %s"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa.wizard:0
+msgid "SEPA XML file generation"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa.wizard:0
+msgid "Reference for further communication"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa.wizard:0
+msgid "Processing details"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: model:ir.model,name:account_banking_sepa_credit_transfer.model_banking_export_sepa
+msgid "SEPA export"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa,charge_bearer:0
+#: selection:banking.export.sepa.wizard,charge_bearer:0
+msgid "Borne by debtor"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,nb_transactions:0
+#: field:banking.export.sepa.wizard,nb_transactions:0
+msgid "Number of transactions"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa,charge_bearer:0
+#: selection:banking.export.sepa.wizard,charge_bearer:0
+msgid "Following service level"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,charge_bearer:0
+#: field:banking.export.sepa.wizard,charge_bearer:0
+msgid "Charge bearer"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: help:banking.export.sepa,batch_booking:0
+#: help:banking.export.sepa.wizard,batch_booking:0
+msgid "If true, the bank statement will display only one debit line for all the wire transfers of the SEPA XML file ; if false, the bank statement will display one debit line per wire transfer of the SEPA XML file."
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: help:banking.export.sepa.wizard,prefered_exec_date:0
+msgid "This is the date on which the file should be processed by the bank. Please keep in mind that banks only execute on working days and typically use a delay of two days between execution date and effective transfer date."
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa.wizard,file:0
+msgid "File"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa.wizard:0
+msgid "Cancel"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:135
+#, python-format
+msgid "Payment Type Code '%s' is not supported. The only Payment Type Codes supported for SEPA Credit Transfers are 'pain.001.001.02', 'pain.001.001.03' and 'pain.001.001.04'."
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:90
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:135
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:284
+#, python-format
+msgid "Error :"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,batch_booking:0
+#: field:banking.export.sepa.wizard,batch_booking:0
+msgid "Batch booking"
+msgstr ""
+

=== added file 'account_banking_sepa_credit_transfer/i18n/fr.po'
--- account_banking_sepa_credit_transfer/i18n/fr.po	1970-01-01 00:00:00 +0000
+++ account_banking_sepa_credit_transfer/i18n/fr.po	2013-06-28 19:44:42 +0000
@@ -0,0 +1,251 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+#	* account_banking_sepa_credit_transfer
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 6.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-06-06 08:01+0000\n"
+"PO-Revision-Date: 2013-06-06 08:01+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,file:0
+#: field:banking.export.sepa.wizard,file_id:0
+msgid "SEPA XML file"
+msgstr "Fichier SEPA XML"
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa:0
+msgid "Payment order"
+msgstr "Ordre de paiement"
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa.wizard,state:0
+msgid "Create"
+msgstr "Créer"
+
+#. module: account_banking_sepa_credit_transfer
+#: help:banking.export.sepa.wizard,msg_identification:0
+msgid "This is the message identification of the entire SEPA XML file. 35 characters max."
+msgstr "Ceci est le libellé d'identification du fichier SEPA XML. 35 caractères maximum."
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,filename:0
+#: field:banking.export.sepa.wizard,filename:0
+msgid "Filename"
+msgstr "Nom du fichier"
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa:0
+msgid "General information"
+msgstr "Informations générales"
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,state:0
+#: field:banking.export.sepa.wizard,state:0
+msgid "State"
+msgstr "État"
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa,state:0
+msgid "Draft"
+msgstr "Brouillon"
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,prefered_exec_date:0
+#: field:banking.export.sepa.wizard,prefered_exec_date:0
+msgid "Prefered execution date"
+msgstr "Date d'exécution demandée"
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa,charge_bearer:0
+#: selection:banking.export.sepa.wizard,charge_bearer:0
+msgid "Shared"
+msgstr "Partagé"
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,generation_date:0
+msgid "Generation date"
+msgstr "Date de génération"
+
+#. module: account_banking_sepa_credit_transfer
+#: model:ir.model,name:account_banking_sepa_credit_transfer.model_banking_export_sepa_wizard
+msgid "Export SEPA Credit Transfer XML file"
+msgstr "Exporte the fichier de virement SEPA XML"
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa:0
+msgid "SEPA Credit Transfer"
+msgstr "Virement SEPA"
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa.wizard,state:0
+msgid "Finish"
+msgstr "Finir"
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa,state:0
+msgid "Reconciled"
+msgstr "Réconcilié"
+
+#. module: account_banking_sepa_credit_transfer
+#: model:ir.actions.act_window,name:account_banking_sepa_credit_transfer.act_banking_export_sepa_payment_order
+msgid "Generated SEPA files"
+msgstr "Fichiers SEPA générés"
+
+#. module: account_banking_sepa_credit_transfer
+#: model:ir.actions.act_window,name:account_banking_sepa_credit_transfer.action_account_banking_sepa
+#: model:ir.ui.menu,name:account_banking_sepa_credit_transfer.menu_account_banking_sepa
+msgid "Generated SEPA XML files"
+msgstr "Fichiers SEPA XML générés"
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa,state:0
+msgid "Sent"
+msgstr "Envoyé"
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa.wizard:0
+msgid "Validate"
+msgstr "Valider"
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa.wizard:0
+msgid "Generate"
+msgstr "Générer"
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,msg_identification:0
+#: field:banking.export.sepa.wizard,msg_identification:0
+msgid "Message identification"
+msgstr "Libellé d'identification"
+
+#. module: account_banking_sepa_credit_transfer
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:284
+#, python-format
+msgid "The generated XML file is not valid against the official XML Schema Definition. The generated XML file and the full error have been written in the server logs. Here is the error, which may give you an idea on the cause of the problem : %s"
+msgstr "Le fichier XML généré n'est pas valide par rapport à la Définition du Schéma XML officiel. Le fichier XML généré et le message d'erreur complet ont été écrits dans les logs du serveur. Voici l'erreur, qui vous donnera peut-être une idée sur la cause du problème : %s"
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,total_amount:0
+#: field:banking.export.sepa.wizard,total_amount:0
+msgid "Total amount"
+msgstr "Montant total"
+
+#. module: account_banking_sepa_credit_transfer
+#: help:banking.export.sepa,charge_bearer:0
+#: help:banking.export.sepa.wizard,charge_bearer:0
+msgid "Shared : transaction charges on the sender side are to be borne by the debtor, transaction charges on the receiver side are to be borne by the creditor (most transfers use this). Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor. Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme."
+msgstr "Partagés : les frais bancaires côté émetteur sont à la charge de l'émetteur et les frais bancaires côté destinataire sont à la charge du destinataire (la plupart des virements utilisent cette répartition). Supportés par le destinataire : tous les frais bancaires sont à la charge du destinataire. Supportés par l'émetteur : tous les frais bancaires sont à la charge de l'émetteur. Suivant le niveau de service : la répartition des frais bancaires suit les règles pré-établies dans le contrat avec la banque."
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa,charge_bearer:0
+#: selection:banking.export.sepa.wizard,charge_bearer:0
+msgid "Borne by creditor"
+msgstr "Supportés par le destinataire"
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa:0
+#: field:banking.export.sepa,payment_order_ids:0
+#: field:banking.export.sepa.wizard,payment_order_ids:0
+msgid "Payment orders"
+msgstr "Ordres de paiement"
+
+#. module: account_banking_sepa_credit_transfer
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:90
+#, python-format
+msgid "This IBAN is not valid : %s"
+msgstr "Cet IBAN n'est pas valide : %s"
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa.wizard:0
+msgid "SEPA XML file generation"
+msgstr "Génération du fichier SEPA XML"
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa.wizard:0
+msgid "Reference for further communication"
+msgstr "Référence pour communication ultérieure"
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa.wizard:0
+msgid "Processing details"
+msgstr "Paramètres"
+
+#. module: account_banking_sepa_credit_transfer
+#: model:ir.model,name:account_banking_sepa_credit_transfer.model_banking_export_sepa
+msgid "SEPA export"
+msgstr "Export SEPA"
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa,charge_bearer:0
+#: selection:banking.export.sepa.wizard,charge_bearer:0
+msgid "Borne by debtor"
+msgstr "Supportés par l'émetteur"
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,nb_transactions:0
+#: field:banking.export.sepa.wizard,nb_transactions:0
+msgid "Number of transactions"
+msgstr "Nombre de transactions"
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa,charge_bearer:0
+#: selection:banking.export.sepa.wizard,charge_bearer:0
+msgid "Following service level"
+msgstr "Suivant le niveau de service"
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,charge_bearer:0
+#: field:banking.export.sepa.wizard,charge_bearer:0
+msgid "Charge bearer"
+msgstr "Répartition des frais"
+
+#. module: account_banking_sepa_credit_transfer
+#: help:banking.export.sepa,batch_booking:0
+#: help:banking.export.sepa.wizard,batch_booking:0
+msgid "If true, the bank statement will display only one debit line for all the wire transfers of the SEPA XML file ; if false, the bank statement will display one debit line per wire transfer of the SEPA XML file."
+msgstr "Si coché, le relevé de compte ne comportera qu'une ligne de débit pour tous les virements du fichier SEPA XML ; si non coché, le relevé de compte comportera une ligne de débit pour chaque virement du fichier SEPA XML."
+
+#. module: account_banking_sepa_credit_transfer
+#: help:banking.export.sepa.wizard,prefered_exec_date:0
+msgid "This is the date on which the file should be processed by the bank. Please keep in mind that banks only execute on working days and typically use a delay of two days between execution date and effective transfer date."
+msgstr "C'est la date à laquelle le fichier doit être traité par la banque. Gardez en tête que les banques réalisent des traitements seulement les jours ouvrés et ont habituellement un délai de 2 jours entre la date de traitement et la date du transfert effectif."
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa.wizard,file:0
+msgid "File"
+msgstr "Fichier"
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa.wizard:0
+msgid "Cancel"
+msgstr "Annuler"
+
+#. module: account_banking_sepa_credit_transfer
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:135
+#, python-format
+msgid "Payment Type Code '%s' is not supported. The only Payment Type Codes supported for SEPA Credit Transfers are 'pain.001.001.02', 'pain.001.001.03' and 'pain.001.001.04'."
+msgstr "Le code '%s' pour le Type de Paiment n'est pas supporté. Les seuls codes de Types de Paiement supportés pour les virements SEPA sont 'pain.001.001.02', 'pain.001.001.03' et 'pain.001.001.04'."
+
+#. module: account_banking_sepa_credit_transfer
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:90
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:135
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:284
+#, python-format
+msgid "Error :"
+msgstr "Erreur :"
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,batch_booking:0
+#: field:banking.export.sepa.wizard,batch_booking:0
+msgid "Batch booking"
+msgstr "Débit groupé"
+

=== added directory 'account_banking_sepa_credit_transfer/security'
=== added file 'account_banking_sepa_credit_transfer/security/ir.model.access.csv'
--- account_banking_sepa_credit_transfer/security/ir.model.access.csv	1970-01-01 00:00:00 +0000
+++ account_banking_sepa_credit_transfer/security/ir.model.access.csv	2013-06-28 19:44:42 +0000
@@ -0,0 +1,2 @@
+"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
+"access_banking_export_sepa","Full access on banking.export.sepa","model_banking_export_sepa","account_payment.group_account_payment",1,1,1,1

=== added directory 'account_banking_sepa_credit_transfer/wizard'
=== added file 'account_banking_sepa_credit_transfer/wizard/__init__.py'
--- account_banking_sepa_credit_transfer/wizard/__init__.py	1970-01-01 00:00:00 +0000
+++ account_banking_sepa_credit_transfer/wizard/__init__.py	2013-06-28 19:44:42 +0000
@@ -0,0 +1,23 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+#    SEPA Credit Transfer module for OpenERP
+#    Copyright (C) 2010-2013 Akretion (http://www.akretion.com)
+#    @author: Alexis de Lattre <alexis.delattre@xxxxxxxxxxxx>
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as
+#    published by the Free Software Foundation, either version 3 of the
+#    License, or (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+import export_sepa

=== added file 'account_banking_sepa_credit_transfer/wizard/export_sepa.py'
--- account_banking_sepa_credit_transfer/wizard/export_sepa.py	1970-01-01 00:00:00 +0000
+++ account_banking_sepa_credit_transfer/wizard/export_sepa.py	2013-06-28 19:44:42 +0000
@@ -0,0 +1,336 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+#    SEPA Credit Transfer module for OpenERP
+#    Copyright (C) 2010-2013 Akretion (http://www.akretion.com)
+#    @author: Alexis de Lattre <alexis.delattre@xxxxxxxxxxxx>
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as
+#    published by the Free Software Foundation, either version 3 of the
+#    License, or (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+
+from openerp.osv import orm, fields
+import base64
+from datetime import datetime, timedelta
+from openerp.tools.translate import _
+from openerp import tools, netsvc
+from lxml import etree
+import logging
+
+_logger = logging.getLogger(__name__)
+
+
+class banking_export_sepa_wizard(orm.TransientModel):
+    _name = 'banking.export.sepa.wizard'
+    _description = 'Export SEPA Credit Transfer XML file'
+    _columns = {
+        'state': fields.selection([('create', 'Create'), ('finish', 'Finish')],
+            'State', readonly=True),
+        'msg_identification': fields.char('Message identification', size=35,
+            # Can't set required=True on the field because it blocks
+            # the launch of the wizard -> I set it as required in the view
+            help='This is the message identification of the entire SEPA XML file. 35 characters max.'),
+        'batch_booking': fields.boolean('Batch booking',
+            help="If true, the bank statement will display only one debit line for all the wire transfers of the SEPA XML file ; if false, the bank statement will display one debit line per wire transfer of the SEPA XML file."),
+        'prefered_exec_date': fields.date('Prefered execution date',
+            help='This is the date on which the file should be processed by the bank. Please keep in mind that banks only execute on working days and typically use a delay of two days between execution date and effective transfer date.'),
+        'charge_bearer': fields.selection([
+            ('SHAR', 'Shared'),
+            ('CRED', 'Borne by creditor'),
+            ('DEBT', 'Borne by debtor'),
+            ('SLEV', 'Following service level'),
+            ], 'Charge bearer', required=True,
+            help='Shared : transaction charges on the sender side are to be borne by the debtor, transaction charges on the receiver side are to be borne by the creditor (most transfers use this). Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor. Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme.'),
+        'nb_transactions': fields.related('file_id', 'nb_transactions',
+            type='integer', string='Number of transactions', readonly=True),
+        'total_amount': fields.related('file_id', 'total_amount', type='float',
+            string='Total amount', readonly=True),
+        'file_id': fields.many2one('banking.export.sepa', 'SEPA XML file', readonly=True),
+        'file': fields.related('file_id', 'file', string="File", type='binary',
+            readonly=True),
+        'filename': fields.related('file_id', 'filename', string="Filename",
+            type='char', size=256, readonly=True),
+        'payment_order_ids': fields.many2many('payment.order',
+            'wiz_sepa_payorders_rel', 'wizard_id', 'payment_order_id',
+            'Payment orders', readonly=True),
+        }
+
+    _defaults = {
+        'charge_bearer': 'SLEV',
+        'state': 'create',
+        }
+
+
+    def _limit_size(self, cr, uid, field, max_size, context=None):
+        '''Limit size of strings to respect the PAIN standard'''
+        max_size = int(max_size)
+        return field[0:max_size]
+
+
+    def _validate_iban(self, cr, uid, iban, context=None):
+        '''if IBAN is valid, returns IBAN
+        if IBAN is NOT valid, raises an error message'''
+        partner_bank_obj = self.pool.get('res.partner.bank')
+        if partner_bank_obj.is_iban_valid(cr, uid, iban, context=context):
+            return iban.replace(' ', '')
+        else:
+            raise orm.except_orm(_('Error :'), _("This IBAN is not valid : %s") % iban)
+
+    def create(self, cr, uid, vals, context=None):
+        payment_order_ids = context.get('active_ids', [])
+        vals.update({
+            'payment_order_ids': [[6, 0, payment_order_ids]],
+        })
+        return super(banking_export_sepa_wizard, self).create(cr, uid,
+            vals, context=context)
+
+
+    def create_sepa(self, cr, uid, ids, context=None):
+        '''
+        Creates the SEPA Credit Transfer file. That's the important code !
+        '''
+        payment_order_obj = self.pool.get('payment.order')
+
+        sepa_export = self.browse(cr, uid, ids[0], context=context)
+
+        my_company_name = sepa_export.payment_order_ids[0].mode.bank_id.partner_id.name
+        my_company_iban = self._validate_iban(cr, uid, sepa_export.payment_order_ids[0].mode.bank_id.iban, context=context)
+        my_company_bic = sepa_export.payment_order_ids[0].mode.bank_id.bank.bic
+        #my_company_country_code = sepa_export.payment_order_ids[0].mode.bank_id.partner_id.address[0].country_id.code
+        #my_company_city = sepa_export.payment_order_ids[0].mode.bank_id.partner_id.address[0].city
+        #my_company_street1 = sepa_export.payment_order_ids[0].mode.bank_id.partner_id.address[0].street
+        pain_flavor = sepa_export.payment_order_ids[0].mode.type.code
+        if pain_flavor == 'pain.001.001.02':
+            bic_xml_tag = 'BIC'
+            name_maxsize = 70
+            root_xml_tag = 'pain.001.001.02'
+        elif pain_flavor == 'pain.001.001.03':
+            bic_xml_tag = 'BIC'
+            # size 70 -> 140 for <Nm> with pain.001.001.03
+            # BUT the European Payment Council, in the document
+            # "SEPA Credit Transfer Scheme Customer-to-bank Implementation guidelines" v6.0
+            # available on http://www.europeanpaymentscouncil.eu/knowledge_bank.cfm
+            # says that 'Nm' should be limited to 70
+            # so we follow the "European Payment Council" and we put 70 and not 140
+            name_maxsize = 70
+            root_xml_tag = 'CstmrCdtTrfInitn'
+        elif pain_flavor == 'pain.001.001.04':
+            bic_xml_tag = 'BICFI'
+            name_maxsize = 140
+            root_xml_tag = 'CstmrCdtTrfInitn'
+        else:
+            raise orm.except_orm(_('Error :'), _("Payment Type Code '%s' is not supported. The only Payment Type Codes supported for SEPA Credit Transfers are 'pain.001.001.02', 'pain.001.001.03' and 'pain.001.001.04'.") % pain_flavor)
+        if sepa_export.batch_booking:
+            my_batch_booking = 'true'
+        else:
+            my_batch_booking = 'false'
+        my_msg_identification = sepa_export.msg_identification
+        if sepa_export.prefered_exec_date:
+            my_requested_exec_date = sepa_export.prefered_exec_date
+        else:
+            my_requested_exec_date = datetime.strftime(datetime.today() + timedelta(days=1), '%Y-%m-%d')
+
+        pain_ns = {
+            'xsi': 'http://www.w3.org/2001/XMLSchema-instance',
+            None: 'urn:iso:std:iso:20022:tech:xsd:%s' % pain_flavor,
+            }
+
+        root = etree.Element('Document', nsmap=pain_ns)
+        pain_root = etree.SubElement(root, root_xml_tag)
+        # A. Group header
+        group_header = etree.SubElement(pain_root, 'GrpHdr')
+        message_identification = etree.SubElement(group_header, 'MsgId')
+        message_identification.text = self._limit_size(cr, uid, my_msg_identification, 35, context=context)
+        creation_date_time = etree.SubElement(group_header, 'CreDtTm')
+        creation_date_time.text = datetime.strftime(datetime.today(), '%Y-%m-%dT%H:%M:%S')
+        if pain_flavor == 'pain.001.001.02':
+            # batch_booking is in "Group header" with pain.001.001.02
+            # and in "Payment info" in pain.001.001.03/04
+            batch_booking = etree.SubElement(group_header, 'BtchBookg')
+            batch_booking.text = my_batch_booking
+        nb_of_transactions_grphdr = etree.SubElement(group_header, 'NbOfTxs')
+        control_sum_grphdr = etree.SubElement(group_header, 'CtrlSum')
+        # Grpg removed in pain.001.001.03
+        if pain_flavor == 'pain.001.001.02':
+            grouping = etree.SubElement(group_header, 'Grpg')
+            grouping.text = 'GRPD'
+        initiating_party = etree.SubElement(group_header, 'InitgPty')
+        initiating_party_name = etree.SubElement(initiating_party, 'Nm')
+        initiating_party_name.text = self._limit_size(cr, uid, my_company_name, name_maxsize, context=context)
+        # B. Payment info
+        payment_info = etree.SubElement(pain_root, 'PmtInf')
+        payment_info_identification = etree.SubElement(payment_info, 'PmtInfId')
+        payment_info_identification.text = self._limit_size(cr, uid, my_msg_identification, 35, context=context)
+        payment_method = etree.SubElement(payment_info, 'PmtMtd')
+        payment_method.text = 'TRF'
+        if pain_flavor in ['pain.001.001.03', 'pain.001.001.04']:
+            # batch_booking is in "Group header" with pain.001.001.02
+            # and in "Payment info" in pain.001.001.03/04
+            batch_booking = etree.SubElement(payment_info, 'BtchBookg')
+            batch_booking.text = my_batch_booking
+        # It may seem surprising, but the
+        # "SEPA Credit Transfer Scheme Customer-to-bank Implementation guidelines"
+        # v6.0 says that control sum and nb_of_transactions should be present
+        # at both "group header" level and "payment info" level
+        # This seems to be confirmed by the tests carried out at
+        # BNP Paribas in PAIN v001.001.03
+        if pain_flavor in ['pain.001.001.03', 'pain.001.001.04']:
+            nb_of_transactions_pmtinf = etree.SubElement(payment_info, 'NbOfTxs')
+            control_sum_pmtinf = etree.SubElement(payment_info, 'CtrlSum')
+        payment_type_info = etree.SubElement(payment_info, 'PmtTpInf')
+        service_level = etree.SubElement(payment_type_info, 'SvcLvl')
+        service_level_code = etree.SubElement(service_level, 'Cd')
+        service_level_code.text = 'SEPA'
+        requested_exec_date = etree.SubElement(payment_info, 'ReqdExctnDt')
+        requested_exec_date.text = my_requested_exec_date
+        debtor = etree.SubElement(payment_info, 'Dbtr')
+        debtor_name = etree.SubElement(debtor, 'Nm')
+        debtor_name.text = self._limit_size(cr, uid, my_company_name, name_maxsize, context=context)
+#        debtor_address = etree.SubElement(debtor, 'PstlAdr')
+#        debtor_street = etree.SubElement(debtor_address, 'AdrLine')
+#        debtor_street.text = my_company_street1
+#        debtor_city = etree.SubElement(debtor_address, 'AdrLine')
+#        debtor_city.text = my_company_city
+#        debtor_country = etree.SubElement(debtor_address, 'Ctry')
+#        debtor_country.text = my_company_country_code
+        debtor_account = etree.SubElement(payment_info, 'DbtrAcct')
+        debtor_account_id = etree.SubElement(debtor_account, 'Id')
+        debtor_account_iban = etree.SubElement(debtor_account_id, 'IBAN')
+        debtor_account_iban.text = my_company_iban
+        debtor_agent = etree.SubElement(payment_info, 'DbtrAgt')
+        debtor_agent_institution = etree.SubElement(debtor_agent, 'FinInstnId')
+        debtor_agent_bic = etree.SubElement(debtor_agent_institution, bic_xml_tag)
+        debtor_agent_bic.text = my_company_bic
+        charge_bearer = etree.SubElement(payment_info, 'ChrgBr')
+        charge_bearer.text = sepa_export.charge_bearer
+
+        transactions_count = 0
+        total_amount = 0.0
+        amount_control_sum = 0.0
+        # Iterate on payment orders
+        for payment_order in sepa_export.payment_order_ids:
+            total_amount = total_amount + payment_order.total
+            # Iterate each payment lines
+            for line in payment_order.line_ids:
+                transactions_count += 1
+                # C. Credit Transfer Transaction Info
+                credit_transfer_transaction_info = etree.SubElement(payment_info, 'CdtTrfTxInf')
+                payment_identification = etree.SubElement(credit_transfer_transaction_info, 'PmtId')
+                instruction_identification = etree.SubElement(payment_identification, 'InstrId')
+                instruction_identification.text = self._limit_size(cr, uid, line.communication, 35, context=context) #otherwise, we can reach the invoice fields via ml_inv_ref
+                end2end_identification = etree.SubElement(payment_identification, 'EndToEndId')
+                end2end_identification.text = self._limit_size(cr, uid, line.communication, 35, context=context)
+                amount = etree.SubElement(credit_transfer_transaction_info, 'Amt')
+                instructed_amount = etree.SubElement(amount, 'InstdAmt', Ccy=line.currency.name)
+                instructed_amount.text = '%.2f' % line.amount_currency
+                amount_control_sum += line.amount_currency
+                creditor_agent = etree.SubElement(credit_transfer_transaction_info, 'CdtrAgt')
+                creditor_agent_institution = etree.SubElement(creditor_agent, 'FinInstnId')
+                creditor_agent_bic = etree.SubElement(creditor_agent_institution, bic_xml_tag)
+                creditor_agent_bic.text = line.bank_id.bank.bic
+                creditor = etree.SubElement(credit_transfer_transaction_info, 'Cdtr')
+                creditor_name = etree.SubElement(creditor, 'Nm')
+                creditor_name.text = self._limit_size(cr, uid, line.partner_id.name, name_maxsize, context=context)
+# I don't think they want it
+# If they want it, we need to implement full spec p26 appendix
+#                creditor_address = etree.SubElement(creditor, 'PstlAdr')
+#                creditor_street = etree.SubElement(creditor_address, 'AdrLine')
+#                creditor_street.text = line.partner_id.address[0].street
+#                creditor_city = etree.SubElement(creditor_address, 'AdrLine')
+#                creditor_city.text = line.partner_id.address[0].city
+#                creditor_country = etree.SubElement(creditor_address, 'Ctry')
+#                creditor_country.text = line.partner_id.address[0].country_id.code
+                creditor_account = etree.SubElement(credit_transfer_transaction_info, 'CdtrAcct')
+                creditor_account_id = etree.SubElement(creditor_account, 'Id')
+                creditor_account_iban = etree.SubElement(creditor_account_id, 'IBAN')
+                creditor_account_iban.text = self._validate_iban(cr, uid, line.bank_id.iban, context=context)
+                remittance_info = etree.SubElement(credit_transfer_transaction_info, 'RmtInf')
+                # switch to Structured (Strdr) ? If we do it, beware that the format is not the same between pain 02 and pain 03
+                remittance_info_unstructured = etree.SubElement(remittance_info, 'Ustrd')
+                remittance_info_unstructured.text = self._limit_size(cr, uid, line.communication, 140, context=context)
+
+        if pain_flavor in ['pain.001.001.03', 'pain.001.001.04']:
+            nb_of_transactions_grphdr.text = nb_of_transactions_pmtinf.text = str(transactions_count)
+            control_sum_grphdr.text = control_sum_pmtinf.text = '%.2f' % amount_control_sum
+        else:
+            nb_of_transactions_grphdr.text = str(transactions_count)
+            control_sum_grphdr.text = '%.2f' % amount_control_sum
+
+
+        xml_string = etree.tostring(root, pretty_print=True, encoding='UTF-8', xml_declaration=True)
+        _logger.debug("Generated SEPA XML file below")
+        _logger.debug(xml_string)
+        official_pain_schema = etree.XMLSchema(etree.parse(tools.file_open('account_banking_sepa_credit_transfer/data/%s.xsd' % pain_flavor)))
+
+        try:
+            official_pain_schema.validate(root)
+        except Exception, e:
+            _logger.warning("The XML file is invalid against the XML Schema Definition")
+            _logger.warning(xml_string)
+            _logger.warning(e)
+            raise orm.except_orm(_('Error :'), _('The generated XML file is not valid against the official XML Schema Definition. The generated XML file and the full error have been written in the server logs. Here is the error, which may give you an idea on the cause of the problem : %s') % str(e))
+
+        # CREATE the banking.export.sepa record
+        file_id = self.pool.get('banking.export.sepa').create(cr, uid,
+            {
+            'msg_identification': my_msg_identification,
+            'batch_booking': sepa_export.batch_booking,
+            'charge_bearer': sepa_export.charge_bearer,
+            'prefered_exec_date': sepa_export.prefered_exec_date,
+            'total_amount': total_amount,
+            'nb_transactions': transactions_count,
+            'file': base64.encodestring(xml_string),
+            'payment_order_ids': [
+                (6, 0, [x.id for x in sepa_export.payment_order_ids])
+            ],
+            }, context=context)
+
+        self.write(cr, uid, ids, {
+            'file_id': file_id,
+            'state': 'finish',
+            }, context=context)
+
+        action = {
+            'name': 'SEPA XML',
+            'type': 'ir.actions.act_window',
+            'view_type': 'form',
+            'view_mode': 'form,tree',
+            'res_model': self._name,
+            'res_id': ids[0],
+            'target': 'new',
+            }
+        return action
+
+
+    def cancel_sepa(self, cr, uid, ids, context=None):
+        '''
+        Cancel the SEPA PAIN: just drop the file
+        '''
+        sepa_export = self.browse(cr, uid, ids[0], context=context)
+        self.pool.get('banking.export.sepa').unlink(cr, uid, sepa_export.file_id.id, context=context)
+        return {'type': 'ir.actions.act_window_close'}
+
+
+    def save_sepa(self, cr, uid, ids, context=None):
+        '''
+        Save the SEPA PAIN: mark all payments in the file as 'sent'.
+        '''
+        sepa_export = self.browse(cr, uid, ids[0], context=context)
+        sepa_file = self.pool.get('banking.export.sepa').write(cr, uid,
+            sepa_export.file_id.id, {'state': 'sent'}, context=context)
+        wf_service = netsvc.LocalService('workflow')
+        for order in sepa_export.payment_order_ids:
+            wf_service.trg_validate(uid, 'payment.order', order.id, 'sent', cr)
+        return {'type': 'ir.actions.act_window_close'}

=== added file 'account_banking_sepa_credit_transfer/wizard/export_sepa_view.xml'
--- account_banking_sepa_credit_transfer/wizard/export_sepa_view.xml	1970-01-01 00:00:00 +0000
+++ account_banking_sepa_credit_transfer/wizard/export_sepa_view.xml	2013-06-28 19:44:42 +0000
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2010-2012 Akretion (http://www.akretion.com)
+  @author: Alexis de Lattre <alexis.delattre@xxxxxxxxxxxx>
+  The licence is in the file __openerp__.py
+-->
+<openerp>
+<data>
+
+<record id="banking_export_sepa_wizard_view" model="ir.ui.view">
+    <field name="name">banking.export.sepa.wizard.view</field>
+    <field name="model">banking.export.sepa.wizard</field>
+    <field name="arch" type="xml">
+        <form string="SEPA XML file generation">
+            <field name="state" invisible="True"/>
+            <group states="create">
+                <separator colspan="4" string="Processing details" />
+                <field name="batch_booking" />
+                <field name="prefered_exec_date" />
+                <field name="charge_bearer" />
+                <separator colspan="4" string="Reference for further communication" />
+                <field name="msg_identification" required="True" />
+                <newline />
+                <button icon="gtk-close" special="cancel" string="Cancel" colspan="2"/>
+                <button icon="gtk-ok" string="Generate" name="create_sepa" type="object" colspan="2"/>
+            </group>
+            <group states="finish">
+                <field name="total_amount" />
+                <!-- Don't display this field, to avoid this bug :
+                https://bugs.launchpad.net/openobject-client-web/+bug/718989
+                Bug desc : in the Gtk client, you have to clic twice on the
+                "Create" button.
+                <field name="nb_transactions" /> -->
+                <newline />
+                <field name="file_id" />
+                <field name="file" filename="filename" />
+                <field name="filename" invisible="True"/>
+                <newline />
+                <button icon="gtk-cancel" string="Cancel" name="cancel_sepa" type="object" colspan="2"/>
+                <button icon="gtk-ok" string="Validate" name="save_sepa" type="object" colspan="2"/>
+            </group>
+        </form>
+    </field>
+</record>
+
+</data>
+</openerp>


Follow ups