libeufin

Integration and sandbox testing for FinTech APIs and data formats
Log | Files | Refs | Submodules | README | LICENSE

commit 9076c7a1b22c87e27feb2e1a99a22d6566ad7034
parent a6dba8366ae28db07c96f9d166888003d5e92da1
Author: MS <ms@taler.net>
Date:   Tue, 30 May 2023 09:14:27 +0200

PostFinance integration.

Implementing the EBICS message type to request pain.002
documents to the bank, and bringing the pain.001 to version
2019.

Diffstat:
Mnexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsNexus.kt | 83+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------
Mnexus/src/main/kotlin/tech/libeufin/nexus/iso20022/Iso20022.kt | 29++++++++++++++++++++++-------
Mnexus/src/main/kotlin/tech/libeufin/nexus/server/JSON.kt | 9+++++++++
Mnexus/src/test/kotlin/EbicsTest.kt | 42------------------------------------------
Mnexus/src/test/kotlin/Iso20022Test.kt | 31++++++++++++++++++++++++++++++-
Mnexus/src/test/kotlin/PostFinance.kt | 28++++++++++++++++++++++------
Mutil/src/main/kotlin/XMLUtil.kt | 4++--
Autil/src/main/resources/xsd/pain.001.001.09.ch.03.xsd | 1733+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
8 files changed, 1887 insertions(+), 72 deletions(-)

diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsNexus.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsNexus.kt @@ -501,6 +501,64 @@ private fun getNotificationTypeAfterDialect(dialect: String? = null): String { * take place. The caller then decides how to handle the exceptions. */ class EbicsBankConnectionProtocol: BankConnectionProtocol { + /** + * Downloads the pain.002 that informs about previous + * payments submissions. Not all the banks offer this + * service; some may use analog channels. + */ + suspend fun fetchPaymentReceipt( + fetchSpec: FetchSpecJson, + client: HttpClient, + bankConnectionId: String, + accountId: String + ) { + val subscriberDetails = transaction { getEbicsSubscriberDetails(bankConnectionId) } + // Typically a date range. + if (fetchSpec.level != FetchLevel.RECEIPT) { + logger.error("This method accepts only RECEIPT as the fetch level, not '${fetchSpec.level}'.") + throw badRequest("Invalid params to get payments receipts: use fetch level RECEIPT.") + } + val ebicsOrderInfo = when(fetchSpec) { + is FetchSpecLatestJson -> { + EbicsFetchSpec( + orderType = "Z01", // PoFi specific. + orderParams = EbicsStandardOrderParams() + ) + } + else -> throw NotImplementedError("Fetch spec '${fetchSpec::class}' not supported for payment receipts.") + } + // Proceeding to download now. + val response = try { + doEbicsDownloadTransaction( + client, + subscriberDetails, + ebicsOrderInfo.orderType, + ebicsOrderInfo.orderParams + ) + } catch (e: EbicsProtocolError) { + if (e.ebicsTechnicalCode == EbicsReturnCode.EBICS_NO_DOWNLOAD_DATA_AVAILABLE) { + logger.debug("EBICS had no new data") + return + } + // re-throw in any other error case. + throw e + } + when(response) { + is EbicsDownloadEmptyResult -> { + // no-op + } + is EbicsDownloadBankErrorResult -> { + logger.error("Bank technical code: ${response.returnCode}") + } + is EbicsDownloadSuccessResult -> { + // Extracting the content (pain.002) and parsing it. + val orderData: String = response.orderData.toString() + logger.debug(orderData) + val doc = XMLUtil.parseStringIntoDom(orderData) + + } + } + } override suspend fun fetchTransactions( fetchSpec: FetchSpecJson, client: HttpClient, @@ -533,6 +591,10 @@ class EbicsBankConnectionProtocol: BankConnectionProtocol { FetchLevel.NOTIFICATION -> { specs.add(EbicsFetchSpec(getNotificationTypeAfterDialect(subscriberDetails.dialect), p)) } + else -> { + logger.error("fetch level wrong in addForLevel() helper: ${fetchSpec.level}.") + throw badRequest("Fetch level ${fetchSpec.level} not supported") + } } } // Figuring out what time range to put in the fetch instructions. @@ -611,6 +673,8 @@ class EbicsBankConnectionProtocol: BankConnectionProtocol { orderParams = pNtfn )) } + else -> throw badRequest("Fetch level ${fetchSpec.level} " + + "not supported in the 'since last' EBICS time range.") } } } @@ -636,7 +700,10 @@ class EbicsBankConnectionProtocol: BankConnectionProtocol { } // Submit one Pain.001 for one payment initiations. - override suspend fun submitPaymentInitiation(httpClient: HttpClient, paymentInitiationId: Long) { + override suspend fun submitPaymentInitiation( + httpClient: HttpClient, + paymentInitiationId: Long + ) { val dbData = transaction { val preparedPayment = getPaymentInitiation(paymentInitiationId) val conn = preparedPayment.bankAccount.defaultBankConnection ?: throw NexusError( @@ -668,19 +735,7 @@ class EbicsBankConnectionProtocol: BankConnectionProtocol { val subscriberDetails = subscriberDetails } } - if (!XMLUtil.validateFromString(dbData.painXml)) { - val pmtInfId = transaction { - val payment = getPaymentInitiation(paymentInitiationId) - logger.error("Pain.001 ${payment.paymentInformationId}" + - " is invalid, not submitting it and flag as invalid.") - payment.invalid = true - } - throw NexusError( - HttpStatusCode.InternalServerError, - "pain document: $pmtInfId document is invalid. Not sent to the bank.", - LibeufinErrorCode.LIBEUFIN_EC_INVALID_STATE - ) - } + // Used to validate here, then removed for performances reasons. doEbicsUploadTransaction( httpClient, dbData.subscriberDetails, diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/iso20022/Iso20022.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/iso20022/Iso20022.kt @@ -135,6 +135,15 @@ data class Pain001Namespaces( val xsdFilename: String ) +fun XmlElementBuilder.setBicAfterDialect(dialect: String?, bic: String) { + if (dialect == EbicsDialects.POSTFINANCE.dialectName) + element("BICFI") { + text(bic) + } + else element("BIC") { + text(bic) + } +} /** * Create a PAIN.001 XML document according to the input data. * Needs to be called within a transaction block. @@ -145,9 +154,10 @@ fun createPain001document( ): String { val namespace: Pain001Namespaces = if (dialect == "pf") + // The 2019 version of pain.001. Pain001Namespaces( - fullNamespace = "http://www.six-interbank-clearing.com/de/pain.001.001.03.ch.02.xsd", - xsdFilename = "pain.001.001.03.ch.02.xsd" + fullNamespace = "urn:iso:std:iso:20022:tech:xsd:pain.001.001.09", + xsdFilename = "pain.001.001.09.ch.03.xsd" ) else Pain001Namespaces( fullNamespace = "urn:iso:std:iso:20022:tech:xsd:pain.001.001.03", @@ -208,7 +218,12 @@ fun createPain001document( } element("ReqdExctnDt") { val dateMillis = paymentData.preparationTimestamp - text(importDateFromMillis(dateMillis).toDashedDate()) + if (dialect == EbicsDialects.POSTFINANCE.dialectName) + element("Dt") { + text(importDateFromMillis(dateMillis).toDashedDate()) + } + else + text(importDateFromMillis(dateMillis).toDashedDate()) } element("Dbtr/Nm") { text(paymentData.debtorName) @@ -216,8 +231,8 @@ fun createPain001document( element("DbtrAcct/Id/IBAN") { text(paymentData.debtorIban) } - element("DbtrAgt/FinInstnId/BIC") { - text(paymentData.debtorBic) + element("DbtrAgt/FinInstnId") { + setBicAfterDialect(dialect, paymentData.debtorBic) } element("ChrgBr") { text("SLEV") @@ -238,8 +253,8 @@ fun createPain001document( } val creditorBic = paymentData.creditorBic if (creditorBic != null) { - element("CdtrAgt/FinInstnId/BIC") { - text(creditorBic) + element("CdtrAgt/FinInstnId") { + setBicAfterDialect(dialect, creditorBic) } } element("Cdtr/Nm") { diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/server/JSON.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/server/JSON.kt @@ -175,6 +175,15 @@ enum class FetchLevel(@get:JsonValue val jsonName: String) { REPORT("report"), STATEMENT("statement"), NOTIFICATION("notification"), + /** + * Although not strictly used to get camt documents - typically + * gets pain.002 documents, this level still participates in downloading + * bank account activity, so placing it here. + */ + RECEIPT("receipt"), + /** + * Uses of ALL do NOT include RECEIPT, in the current version. + */ ALL("all"); } diff --git a/nexus/src/test/kotlin/EbicsTest.kt b/nexus/src/test/kotlin/EbicsTest.kt @@ -220,48 +220,6 @@ class DownloadAndSubmit { } /** - * Submits one payment instruction with an invalid Pain.001 - * document, and checks that it was marked as invalid. Hence, - * the error is expected only by the first submission, since - * the second won't pick the invalid payment. - */ - @Test - fun invalidPain001() { - withNexusAndSandboxUser { - testApplication { - application(sandboxApp) - runBlocking { - // Create Pain.001 to be submitted. - addPaymentInitiation( - Pain001Data( - creditorIban = getIban(), - creditorBic = "not-a-BIC", // this value causes the expected error. - creditorName = "Tester", - subject = "test payment", - sum = "1", - currency = "TESTKUDOS" - ), - transaction { - NexusBankAccountEntity.findByName("foo") ?: throw Exception("Test failed") - } - ) - // Encounters errors. - var thrown = false - try { - submitAllPaymentInitiations(client, "foo") - } catch (e: NexusError) { - assert((e.code == LibeufinErrorCode.LIBEUFIN_EC_INVALID_STATE)) - thrown = true - } - assert(thrown) - // No errors, since it should not retry. - submitAllPaymentInitiations(client, "foo") - } - } - } - } - - /** * Submits one pain.001 document with the wrong currency and checks * that the bank responded with EBICS_PROCESSING_ERROR. */ diff --git a/nexus/src/test/kotlin/Iso20022Test.kt b/nexus/src/test/kotlin/Iso20022Test.kt @@ -20,6 +20,7 @@ import tech.libeufin.nexus.server.nexusApp import tech.libeufin.util.DestructionError import tech.libeufin.util.XMLUtil import tech.libeufin.util.destructXml +import tech.libeufin.util.getNow import withTestDatabase import kotlin.test.assertEquals import kotlin.test.assertNotNull @@ -122,10 +123,13 @@ class Iso20022Test { parseCamtMessage(doc, dialect = "pf") } + // TODO: test deduplication here. + @Test fun ingestPoFiCamt054() { val doc = XMLUtil.parseStringIntoDom(poFiCamt054_2019) - withTestDatabase { prepNexusDb() + withTestDatabase { + prepNexusDb() ingestCamtMessageIntoAccount( "foo", doc, @@ -134,6 +138,31 @@ class Iso20022Test { ) } } + // Checks that the 2019 pain.001 version validates. + @Test + fun validatePain001() { + val pain001 = createPain001document( + NexusPaymentInitiationData( + debtorIban = "CH0889144371988976754", + debtorBic = "POFICHBEXXX", + debtorName = "Sample Debtor Name", + currency = "CHF", + amount = "5.00", + creditorIban = "CH9789144829733648596", + creditorName = "Sample Creditor Name", + creditorBic = "POFICHBEXXX", + paymentInformationId = "8aae7a2ded2f", + preparationTimestamp = getNow().toInstant().toEpochMilli(), + subject = "Unstructured remittance information", + instructionId = "InstructionId", + endToEndId = "71cfbdaf901f", + messageId = "2a16b35ed69c" + ), + dialect = "pf" + ) + val doc = XMLUtil.parseStringIntoDom(pain001) + assert(XMLUtil.validateFromDom(doc)) + } @Test fun parsePostFinanceCamt052() { diff --git a/nexus/src/test/kotlin/PostFinance.kt b/nexus/src/test/kotlin/PostFinance.kt @@ -5,6 +5,7 @@ import org.jetbrains.exposed.sql.transactions.transaction import tech.libeufin.nexus.bankaccount.addPaymentInitiation import tech.libeufin.nexus.bankaccount.fetchBankAccountTransactions import tech.libeufin.nexus.bankaccount.getBankAccount +import tech.libeufin.nexus.ebics.EbicsBankConnectionProtocol import tech.libeufin.nexus.ebics.doEbicsUploadTransaction import tech.libeufin.nexus.ebics.getEbicsSubscriberDetails import tech.libeufin.nexus.getConnectionPlugin @@ -14,7 +15,7 @@ import tech.libeufin.util.EbicsStandardOrderParams import java.io.BufferedReader import java.io.File - +// Submits a Z54 to the bank, expecting a camt.054 back. private fun downloadPayment() { val httpClient = HttpClient() runBlocking { @@ -29,7 +30,9 @@ private fun downloadPayment() { } } -// Causes one CRDT payment to show up in the camt.054. +/* Simulates one incoming payment for the test platorm's bank account. + * The QRR format is NOT used in Taler, it is just convenient. + * */ private fun uploadQrrPayment() { val httpClient = HttpClient() val qrr = """ @@ -48,6 +51,8 @@ private fun uploadQrrPayment() { } /** + * Submits a XE2 (+ pain.001 version 2019) message to the bank. + * * Causes one DBIT payment to show up in the camt.054. This one * however lacks the AcctSvcrRef, so other ways to pin it are needed. * Notably, EndToEndId is mandatory in pain.001 _and_ is controlled @@ -75,19 +80,22 @@ private fun uploadPain001Payment() { ebicsConn.submitPaymentInitiation(httpClient, 1L) } } + fun main() { - // Load EBICS subscriber's keys from disk. + // Loads EBICS subscriber's keys from disk. val bufferedReader: BufferedReader = File("/tmp/pofi.json").bufferedReader() val accessDataTxt = bufferedReader.use { it.readText() } val ebicsConn = getConnectionPlugin("ebics") val accessDataJson = jacksonObjectMapper().readTree(accessDataTxt) + + // Creates a connection handle to the bank, using the loaded keys. withTestDatabase { prepNexusDb() transaction { ebicsConn.createConnectionFromBackup( connId = "postfinance", user = getNexusUser("foo"), - passphrase = "foo", + passphrase = "secret", accessDataJson ) val fooBankAccount = getBankAccount("foo") @@ -95,6 +103,14 @@ fun main() { fooBankAccount.iban = "CH9789144829733648596" } } - // uploadPayment() - downloadPayment() + // uploadPain001Payment() // XE2 + // downloadPayment() // Z54. + /*runBlocking { + (ebicsConn as EbicsBankConnectionProtocol).fetchPaymentReceipt( + FetchSpecLatestJson(FetchLevel.RECEIPT, null), + HttpClient(), + "postfinance", + "foo" + ) + }*/ } \ No newline at end of file diff --git a/util/src/main/kotlin/XMLUtil.kt b/util/src/main/kotlin/XMLUtil.kt @@ -225,7 +225,6 @@ class XMLUtil private constructor() { } } } - val schemaInputs: Array<Source> = listOf( "xsd/ebics_H004.xsd", "xsd/ebics_hev.xsd", @@ -233,7 +232,8 @@ class XMLUtil private constructor() { "xsd/camt.053.001.02.xsd", "xsd/camt.054.001.02.xsd", "xsd/pain.001.001.03.xsd", - "xsd/pain.001.001.03.ch.02.xsd" // Swiss 2013 version. + // "xsd/pain.001.001.03.ch.02.xsd", // Swiss 2013 version. + "xsd/pain.001.001.09.ch.03.xsd" // Swiss 2019 version. ).map { val stream = classLoader.getResourceAsStream(it) ?: throw FileNotFoundException("Schema file $it not found.") diff --git a/util/src/main/resources/xsd/pain.001.001.09.ch.03.xsd b/util/src/main/resources/xsd/pain.001.001.09.ch.03.xsd @@ -0,0 +1,1733 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +(C) Copyright 2021, SIX, www.iso-payments.ch +CH Version for pain.001 Credit Transfer: "pain.001.001.09.ch.03.xsd" +.ch.: Identification for this CH version +Last part (.03): CH Version of this scheme + +Based on ISO pain.001.001.09 (urn:iso:std:iso:20022:tech:xsd:pain.001.001.09) +--> +<xs:schema xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09" elementFormDefault="qualified"> + <xs:element name="Document" type="Document_pain001_ch"/> + <xs:complexType name="AccountIdentification4Choice"> + <xs:choice> + <xs:element name="IBAN" type="IBAN2007Identifier"/> + <xs:element name="Othr" type="GenericAccountIdentification1"/> + </xs:choice> + </xs:complexType> + <xs:complexType name="AccountIdentification4Choice_pain001_ch"> + <xs:complexContent> + <xs:restriction base="AccountIdentification4Choice"> + <xs:choice> + <xs:element name="IBAN" type="IBAN2007Identifier"/> + <xs:element name="Othr" type="GenericAccountIdentification1_pain001_ch"/> + </xs:choice> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="AccountSchemeName1Choice"> + <xs:choice> + <xs:element name="Cd" type="ExternalAccountIdentification1Code"/> + <xs:element name="Prtry" type="Max35Text"/> + </xs:choice> + </xs:complexType> + <xs: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="ActiveOrHistoricCurrencyAndAmount_SimpleType"> + <xs:restriction base="xs:decimal"> + <xs:minInclusive value="0"/> + <xs:totalDigits value="18"/> + <xs:fractionDigits value="5"/> + </xs:restriction> + </xs:simpleType> + <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="BIZZ"/> + <xs:enumeration value="DLVY"/> + <xs:enumeration value="HOME"/> + <xs:enumeration value="MLTO"/> + <xs:enumeration value="PBOX"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="AddressType3Choice"> + <xs:choice> + <xs:element name="Cd" type="AddressType2Code"/> + <xs:element name="Prtry" type="GenericIdentification30"/> + </xs:choice> + </xs:complexType> + <xs:complexType name="AmountType4Choice"> + <xs:choice> + <xs:element name="InstdAmt" type="ActiveOrHistoricCurrencyAndAmount"/> + <xs:element name="EqvtAmt" type="EquivalentAmount2"/> + </xs:choice> + </xs:complexType> + <xs:simpleType name="AnyBICDec2014Identifier"> + <xs:restriction base="xs:string"> + <xs:pattern value="[A-Z0-9]{4,4}[A-Z]{2,2}[A-Z0-9]{2,2}([A-Z0-9]{3,3}){0,1}"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="Authorisation1Choice"> + <xs:choice> + <xs:element name="Cd" type="Authorisation1Code"/> + <xs:element name="Prtry" type="Max128Text"/> + </xs:choice> + </xs:complexType> + <xs:simpleType name="Authorisation1Code"> + <xs:restriction base="xs:string"> + <xs:enumeration value="AUTH"/> + <xs:enumeration value="FDET"/> + <xs:enumeration value="FSUM"/> + <xs:enumeration value="ILEV"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="BaseOneRate"> + <xs:restriction base="xs:decimal"> + <xs:totalDigits value="11"/> + <xs:fractionDigits value="10"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="BatchBookingIndicator"> + <xs:restriction base="xs:boolean"/> + </xs:simpleType> + <xs:simpleType name="BICFIDec2014Identifier"> + <xs:restriction base="xs:string"> + <xs:pattern value="[A-Z0-9]{4,4}[A-Z]{2,2}[A-Z0-9]{2,2}([A-Z0-9]{3,3}){0,1}"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="BranchAndFinancialInstitutionIdentification6"> + <xs:sequence> + <xs:element name="FinInstnId" type="FinancialInstitutionIdentification18"/> + <xs:element name="BrnchId" type="BranchData3" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="BranchAndFinancialInstitutionIdentification6_pain001_ch"> + <xs:complexContent> + <xs:restriction base="BranchAndFinancialInstitutionIdentification6"> + <xs:sequence> + <xs:element name="FinInstnId" type="FinancialInstitutionIdentification18_pain001_ch"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="BranchAndFinancialInstitutionIdentification6_pain001_ch_2"> + <xs:complexContent> + <xs:restriction base="BranchAndFinancialInstitutionIdentification6"> + <xs:sequence> + <xs:element name="FinInstnId" type="FinancialInstitutionIdentification18_pain001_ch_2"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="BranchAndFinancialInstitutionIdentification6_pain001_ch_3"> + <xs:complexContent> + <xs:restriction base="BranchAndFinancialInstitutionIdentification6"> + <xs:sequence> + <xs:element name="FinInstnId" type="FinancialInstitutionIdentification18_pain001_ch_3"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="BranchAndFinancialInstitutionIdentification6_pain001_ch_4"> + <xs:complexContent> + <xs:restriction base="BranchAndFinancialInstitutionIdentification6"> + <xs:sequence> + <xs:element name="FinInstnId" type="FinancialInstitutionIdentification18_pain001_ch_4"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="BranchData3"> + <xs:sequence> + <xs:element name="Id" type="Max35Text" minOccurs="0"/> + <xs:element name="LEI" type="LEIIdentifier" minOccurs="0"/> + <xs:element name="Nm" type="Max140Text" minOccurs="0"/> + <xs:element name="PstlAdr" type="PostalAddress24" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="CashAccount38"> + <xs:sequence> + <xs:element name="Id" type="AccountIdentification4Choice"/> + <xs:element name="Tp" type="CashAccountType2Choice" minOccurs="0"/> + <xs:element name="Ccy" type="ActiveOrHistoricCurrencyCode" minOccurs="0"/> + <xs:element name="Nm" type="Max70Text" minOccurs="0"/> + <xs:element name="Prxy" type="ProxyAccountIdentification1" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="CashAccount38_pain001_ch"> + <xs:complexContent> + <xs:restriction base="CashAccount38"> + <xs:sequence> + <xs:element name="Id" type="AccountIdentification4Choice_pain001_ch"/> + <xs:element name="Tp" type="CashAccountType2Choice" minOccurs="0"/> + <xs:element name="Ccy" type="ActiveOrHistoricCurrencyCode" minOccurs="0"/> + <xs:element name="Prxy" type="ProxyAccountIdentification1" minOccurs="0"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="CashAccount38_pain001_ch_2"> + <xs:complexContent> + <xs:restriction base="CashAccount38"> + <xs:sequence> + <xs:element name="Id" type="AccountIdentification4Choice_pain001_ch"/> + <xs:element name="Ccy" type="ActiveOrHistoricCurrencyCode" minOccurs="0"/> + <xs:element name="Prxy" type="ProxyAccountIdentification1" minOccurs="0"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="CashAccount38_pain001_ch_3"> + <xs:complexContent> + <xs:restriction base="CashAccount38"> + <xs:sequence> + <xs:element name="Id" type="AccountIdentification4Choice"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="CashAccount38_pain001_ch_4"> + <xs:complexContent> + <xs:restriction base="CashAccount38"> + <xs:sequence> + <xs:element name="Id" type="AccountIdentification4Choice_pain001_ch"/> + <xs:element name="Prxy" type="ProxyAccountIdentification1" minOccurs="0"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="CashAccountType2Choice"> + <xs:choice> + <xs:element name="Cd" type="ExternalCashAccountType1Code"/> + <xs:element name="Prtry" type="Max35Text"/> + </xs:choice> + </xs:complexType> + <xs:complexType name="CategoryPurpose1Choice"> + <xs:choice> + <xs:element name="Cd" type="ExternalCategoryPurpose1Code"/> + <xs:element name="Prtry" type="Max35Text"/> + </xs:choice> + </xs:complexType> + <xs:complexType name="CategoryPurpose1Choice_pain001_ch"> + <xs:complexContent> + <xs:restriction base="CategoryPurpose1Choice"> + <xs:choice> + <xs:element name="Cd" type="ExternalCategoryPurpose1Code"/> + </xs:choice> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:simpleType name="ChargeBearerType1Code"> + <xs:restriction base="xs:string"> + <xs:enumeration value="CRED"/> + <xs:enumeration value="DEBT"/> + <xs:enumeration value="SHAR"/> + <xs:enumeration value="SLEV"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="Cheque11"> + <xs:sequence> + <xs:element name="ChqTp" type="ChequeType2Code" minOccurs="0"/> + <xs:element name="ChqNb" type="Max35Text" minOccurs="0"/> + <xs:element name="ChqFr" type="NameAndAddress16" minOccurs="0"/> + <xs:element name="DlvryMtd" type="ChequeDeliveryMethod1Choice" minOccurs="0"/> + <xs:element name="DlvrTo" type="NameAndAddress16" minOccurs="0"/> + <xs:element name="InstrPrty" type="Priority2Code" minOccurs="0"/> + <xs:element name="ChqMtrtyDt" type="ISODate" minOccurs="0"/> + <xs:element name="FrmsCd" type="Max35Text" minOccurs="0"/> + <xs:element name="MemoFld" type="Max35Text" minOccurs="0" maxOccurs="2"/> + <xs:element name="RgnlClrZone" type="Max35Text" minOccurs="0"/> + <xs:element name="PrtLctn" type="Max35Text" minOccurs="0"/> + <xs:element name="Sgntr" type="Max70Text" minOccurs="0" maxOccurs="5"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="Cheque11_pain001_ch"> + <xs:complexContent> + <xs:restriction base="Cheque11"> + <xs:sequence> + <xs:element name="ChqTp" type="ChequeType2Code" minOccurs="0"/> + <xs:element name="DlvryMtd" type="ChequeDeliveryMethod1Choice" minOccurs="0"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:simpleType name="ChequeDelivery1Code"> + <xs:restriction base="xs:string"> + <xs:enumeration value="CRCD"/> + <xs:enumeration value="CRDB"/> + <xs:enumeration value="CRFA"/> + <xs:enumeration value="MLCD"/> + <xs:enumeration value="MLDB"/> + <xs:enumeration value="MLFA"/> + <xs:enumeration value="PUCD"/> + <xs:enumeration value="PUDB"/> + <xs:enumeration value="PUFA"/> + <xs:enumeration value="RGCD"/> + <xs:enumeration value="RGDB"/> + <xs:enumeration value="RGFA"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="ChequeDeliveryMethod1Choice"> + <xs:choice> + <xs:element name="Cd" type="ChequeDelivery1Code"/> + <xs:element name="Prtry" type="Max35Text"/> + </xs:choice> + </xs:complexType> + <xs:simpleType name="ChequeType2Code"> + <xs:restriction base="xs:string"> + <xs:enumeration value="BCHQ"/> + <xs:enumeration value="CCCH"/> + <xs:enumeration value="CCHQ"/> + <xs:enumeration value="DRFT"/> + <xs:enumeration value="ELDR"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="ClearingSystemIdentification2Choice"> + <xs:choice> + <xs:element name="Cd" type="ExternalClearingSystemIdentification1Code"/> + <xs:element name="Prtry" type="Max35Text"/> + </xs:choice> + </xs:complexType> + <xs:complexType name="ClearingSystemIdentification2Choice_pain001_ch"> + <xs:complexContent> + <xs:restriction base="ClearingSystemIdentification2Choice"> + <xs:choice> + <xs:element name="Cd" type="ExternalClearingSystemIdentification1Code"/> + </xs:choice> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="ClearingSystemMemberIdentification2"> + <xs:sequence> + <xs:element name="ClrSysId" type="ClearingSystemIdentification2Choice" minOccurs="0"/> + <xs:element name="MmbId" type="Max35Text"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="ClearingSystemMemberIdentification2_pain001_ch"> + <xs:complexContent> + <xs:restriction base="ClearingSystemMemberIdentification2"> + <xs:sequence> + <xs:element name="ClrSysId" type="ClearingSystemIdentification2Choice_pain001_ch" minOccurs="0"/> + <xs:element name="MmbId" type="Max35Text"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Contact4"> + <xs:sequence> + <xs:element name="NmPrfx" type="NamePrefix2Code" minOccurs="0"/> + <xs:element name="Nm" type="Max140Text" minOccurs="0"/> + <xs:element name="PhneNb" type="PhoneNumber" minOccurs="0"/> + <xs:element name="MobNb" type="PhoneNumber" minOccurs="0"/> + <xs:element name="FaxNb" type="PhoneNumber" minOccurs="0"/> + <xs:element name="EmailAdr" type="Max2048Text" minOccurs="0"/> + <xs:element name="EmailPurp" type="Max35Text" minOccurs="0"/> + <xs:element name="JobTitl" type="Max35Text" minOccurs="0"/> + <xs:element name="Rspnsblty" type="Max35Text" minOccurs="0"/> + <xs:element name="Dept" type="Max70Text" minOccurs="0"/> + <xs:element name="Othr" type="OtherContact1" minOccurs="0" maxOccurs="unbounded"/> + <xs:element name="PrefrdMtd" type="PreferredContactMethod1Code" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="Contact4_pain001_ch"> + <xs:complexContent> + <xs:restriction base="Contact4"> + <xs:sequence> + <xs:element name="Othr" type="OtherContact1_pain001_ch" minOccurs="0" maxOccurs="4"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:simpleType name="CountryCode"> + <xs:restriction base="xs:string"> + <xs:pattern value="[A-Z]{2,2}"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="CreditDebitCode"> + <xs:restriction base="xs:string"> + <xs:enumeration value="CRDT"/> + <xs:enumeration value="DBIT"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="CreditorReferenceInformation2"> + <xs:sequence> + <xs:element name="Tp" type="CreditorReferenceType2" minOccurs="0"/> + <xs:element name="Ref" type="Max35Text" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="CreditorReferenceType1Choice"> + <xs:choice> + <xs:element name="Cd" type="DocumentType3Code"/> + <xs:element name="Prtry" type="Max35Text"/> + </xs:choice> + </xs:complexType> + <xs:complexType name="CreditorReferenceType2"> + <xs:sequence> + <xs:element name="CdOrPrtry" type="CreditorReferenceType1Choice"/> + <xs:element name="Issr" type="Max35Text" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="CreditTransferTransaction34"> + <xs:sequence> + <xs:element name="PmtId" type="PaymentIdentification6"/> + <xs:element name="PmtTpInf" type="PaymentTypeInformation26" minOccurs="0"/> + <xs:element name="Amt" type="AmountType4Choice"/> + <xs:element name="XchgRateInf" type="ExchangeRate1" minOccurs="0"/> + <xs:element name="ChrgBr" type="ChargeBearerType1Code" minOccurs="0"/> + <xs:element name="ChqInstr" type="Cheque11" minOccurs="0"/> + <xs:element name="UltmtDbtr" type="PartyIdentification135" minOccurs="0"/> + <xs:element name="IntrmyAgt1" type="BranchAndFinancialInstitutionIdentification6" minOccurs="0"/> + <xs:element name="IntrmyAgt1Acct" type="CashAccount38" minOccurs="0"/> + <xs:element name="IntrmyAgt2" type="BranchAndFinancialInstitutionIdentification6" minOccurs="0"/> + <xs:element name="IntrmyAgt2Acct" type="CashAccount38" minOccurs="0"/> + <xs:element name="IntrmyAgt3" type="BranchAndFinancialInstitutionIdentification6" minOccurs="0"/> + <xs:element name="IntrmyAgt3Acct" type="CashAccount38" minOccurs="0"/> + <xs:element name="CdtrAgt" type="BranchAndFinancialInstitutionIdentification6" minOccurs="0"/> + <xs:element name="CdtrAgtAcct" type="CashAccount38" minOccurs="0"/> + <xs:element name="Cdtr" type="PartyIdentification135" minOccurs="0"/> + <xs:element name="CdtrAcct" type="CashAccount38" minOccurs="0"/> + <xs:element name="UltmtCdtr" type="PartyIdentification135" minOccurs="0"/> + <xs:element name="InstrForCdtrAgt" type="InstructionForCreditorAgent1" minOccurs="0" maxOccurs="unbounded"/> + <xs:element name="InstrForDbtrAgt" type="Max140Text" minOccurs="0"/> + <xs:element name="Purp" type="Purpose2Choice" minOccurs="0"/> + <xs:element name="RgltryRptg" type="RegulatoryReporting3" minOccurs="0" maxOccurs="10"/> + <xs:element name="Tax" type="TaxInformation8" minOccurs="0"/> + <xs:element name="RltdRmtInf" type="RemittanceLocation7" minOccurs="0" maxOccurs="10"/> + <xs:element name="RmtInf" type="RemittanceInformation16" minOccurs="0"/> + <xs:element name="SplmtryData" type="SupplementaryData1" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="CreditTransferTransaction34_pain001_ch"> + <xs:complexContent> + <xs:restriction base="CreditTransferTransaction34"> + <xs:sequence> + <xs:element name="PmtId" type="PaymentIdentification6_pain001_ch"/> + <xs:element name="PmtTpInf" type="PaymentTypeInformation26_pain001_ch_2" minOccurs="0"/> + <xs:element name="Amt" type="AmountType4Choice"/> + <xs:element name="XchgRateInf" type="ExchangeRate1" minOccurs="0"/> + <xs:element name="ChrgBr" type="ChargeBearerType1Code" minOccurs="0"/> + <xs:element name="ChqInstr" type="Cheque11_pain001_ch" minOccurs="0"/> + <xs:element name="UltmtDbtr" type="PartyIdentification135_pain001_ch_3" minOccurs="0"/> + <xs:element name="IntrmyAgt1" type="BranchAndFinancialInstitutionIdentification6_pain001_ch_3" minOccurs="0"/> + <xs:element name="IntrmyAgt1Acct" type="CashAccount38_pain001_ch_3" minOccurs="0"/> + <xs:element name="CdtrAgt" type="BranchAndFinancialInstitutionIdentification6_pain001_ch_4" minOccurs="0"/> + <xs:element name="CdtrAgtAcct" type="CashAccount38_pain001_ch_3" minOccurs="0"/> + <xs:element name="Cdtr" type="PartyIdentification135_pain001_ch_4" minOccurs="0"/> + <xs:element name="CdtrAcct" type="CashAccount38_pain001_ch_4" minOccurs="0"/> + <xs:element name="UltmtCdtr" type="PartyIdentification135_pain001_ch_3" minOccurs="0"/> + <xs:element name="InstrForCdtrAgt" type="InstructionForCreditorAgent1" minOccurs="0" maxOccurs="2"/> + <xs:element name="InstrForDbtrAgt" type="Max140Text" minOccurs="0"/> + <xs:element name="Purp" type="Purpose2Choice_pain001_ch" minOccurs="0"/> + <xs:element name="RgltryRptg" type="RegulatoryReporting3" minOccurs="0" maxOccurs="10"/> + <xs:element name="RltdRmtInf" type="RemittanceLocation7" minOccurs="0"/> + <xs:element name="RmtInf" type="RemittanceInformation16_pain001_ch" minOccurs="0"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="CustomerCreditTransferInitiationV09"> + <xs:sequence> + <xs:element name="GrpHdr" type="GroupHeader85"/> + <xs:element name="PmtInf" type="PaymentInstruction30" maxOccurs="unbounded"/> + <xs:element name="SplmtryData" type="SupplementaryData1" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="CustomerCreditTransferInitiationV09_pain001_ch"> + <xs:complexContent> + <xs:restriction base="CustomerCreditTransferInitiationV09"> + <xs:sequence> + <xs:element name="GrpHdr" type="GroupHeader85_pain001_ch"/> + <xs:element name="PmtInf" type="PaymentInstruction30_pain001_ch" maxOccurs="unbounded"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="DateAndDateTime2Choice"> + <xs:choice> + <xs:element name="Dt" type="ISODate"/> + <xs:element name="DtTm" type="ISODateTime"/> + </xs:choice> + </xs:complexType> + <xs:complexType name="DateAndPlaceOfBirth1"> + <xs:sequence> + <xs:element name="BirthDt" type="ISODate"/> + <xs:element name="PrvcOfBirth" type="Max35Text" minOccurs="0"/> + <xs:element name="CityOfBirth" type="Max35Text"/> + <xs:element name="CtryOfBirth" type="CountryCode"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="DatePeriod2"> + <xs:sequence> + <xs:element name="FrDt" type="ISODate"/> + <xs:element name="ToDt" type="ISODate"/> + </xs:sequence> + </xs:complexType> + <xs:simpleType name="DecimalNumber"> + <xs:restriction base="xs:decimal"> + <xs:totalDigits value="18"/> + <xs:fractionDigits value="17"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="DiscountAmountAndType1"> + <xs:sequence> + <xs:element name="Tp" type="DiscountAmountType1Choice" minOccurs="0"/> + <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="DiscountAmountType1Choice"> + <xs:choice> + <xs:element name="Cd" type="ExternalDiscountAmountType1Code"/> + <xs:element name="Prtry" type="Max35Text"/> + </xs:choice> + </xs:complexType> + <xs:complexType name="Document"> + <xs:sequence> + <xs:element name="CstmrCdtTrfInitn" type="CustomerCreditTransferInitiationV09"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="DocumentAdjustment1"> + <xs:sequence> + <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> + <xs:element name="CdtDbtInd" type="CreditDebitCode" minOccurs="0"/> + <xs:element name="Rsn" type="Max4Text" minOccurs="0"/> + <xs:element name="AddtlInf" type="Max140Text" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="DocumentLineIdentification1"> + <xs:sequence> + <xs:element name="Tp" type="DocumentLineType1" minOccurs="0"/> + <xs:element name="Nb" type="Max35Text" minOccurs="0"/> + <xs:element name="RltdDt" type="ISODate" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="DocumentLineInformation1"> + <xs:sequence> + <xs:element name="Id" type="DocumentLineIdentification1" maxOccurs="unbounded"/> + <xs:element name="Desc" type="Max2048Text" minOccurs="0"/> + <xs:element name="Amt" type="RemittanceAmount3" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="DocumentLineType1"> + <xs:sequence> + <xs:element name="CdOrPrtry" type="DocumentLineType1Choice"/> + <xs:element name="Issr" type="Max35Text" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="DocumentLineType1Choice"> + <xs:choice> + <xs:element name="Cd" type="ExternalDocumentLineType1Code"/> + <xs:element name="Prtry" type="Max35Text"/> + </xs:choice> + </xs:complexType> + <xs:simpleType name="DocumentType3Code"> + <xs:restriction base="xs:string"> + <xs:enumeration value="DISP"/> + <xs:enumeration value="FXDR"/> + <xs:enumeration value="PUOR"/> + <xs:enumeration value="RADM"/> + <xs:enumeration value="RPIN"/> + <xs:enumeration value="SCOR"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="DocumentType6Code"> + <xs:restriction base="xs:string"> + <xs:enumeration value="AROI"/> + <xs:enumeration value="BOLD"/> + <xs:enumeration value="CINV"/> + <xs:enumeration value="CMCN"/> + <xs:enumeration value="CNFA"/> + <xs:enumeration value="CREN"/> + <xs:enumeration value="DEBN"/> + <xs:enumeration value="DISP"/> + <xs:enumeration value="DNFA"/> + <xs:enumeration value="HIRI"/> + <xs:enumeration value="MSIN"/> + <xs:enumeration value="PUOR"/> + <xs:enumeration value="SBIN"/> + <xs:enumeration value="SOAC"/> + <xs:enumeration value="TSUT"/> + <xs:enumeration value="VCHR"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="Document_pain001_ch"> + <xs:complexContent> + <xs:restriction base="Document"> + <xs:sequence> + <xs:element name="CstmrCdtTrfInitn" type="CustomerCreditTransferInitiationV09_pain001_ch"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="EquivalentAmount2"> + <xs:sequence> + <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> + <xs:element name="CcyOfTrf" type="ActiveOrHistoricCurrencyCode"/> + </xs:sequence> + </xs:complexType> + <xs:simpleType name="Exact4AlphaNumericText"> + <xs:restriction base="xs:string"> + <xs:pattern value="[a-zA-Z0-9]{4}"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="ExchangeRate1"> + <xs:sequence> + <xs:element name="UnitCcy" type="ActiveOrHistoricCurrencyCode" minOccurs="0"/> + <xs:element name="XchgRate" type="BaseOneRate" minOccurs="0"/> + <xs:element name="RateTp" type="ExchangeRateType1Code" minOccurs="0"/> + <xs:element name="CtrctId" type="Max35Text" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:simpleType name="ExchangeRateType1Code"> + <xs:restriction base="xs:string"> + <xs:enumeration value="AGRD"/> + <xs:enumeration value="SALE"/> + <xs:enumeration value="SPOT"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="ExternalAccountIdentification1Code"> + <xs:restriction base="xs:string"> + <xs:minLength value="1"/> + <xs:maxLength value="4"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="ExternalCashAccountType1Code"> + <xs:restriction base="xs:string"> + <xs:minLength value="1"/> + <xs:maxLength value="4"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="ExternalCategoryPurpose1Code"> + <xs:restriction base="xs:string"> + <xs:minLength value="1"/> + <xs:maxLength value="4"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="ExternalClearingSystemIdentification1Code"> + <xs:restriction base="xs:string"> + <xs:minLength value="1"/> + <xs:maxLength value="5"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="ExternalDiscountAmountType1Code"> + <xs:restriction base="xs:string"> + <xs:minLength value="1"/> + <xs:maxLength value="4"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="ExternalDocumentLineType1Code"> + <xs:restriction base="xs:string"> + <xs:minLength value="1"/> + <xs:maxLength value="4"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="ExternalFinancialInstitutionIdentification1Code"> + <xs:restriction base="xs:string"> + <xs:minLength value="1"/> + <xs:maxLength value="4"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="ExternalGarnishmentType1Code"> + <xs:restriction base="xs:string"> + <xs:minLength value="1"/> + <xs:maxLength value="4"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="ExternalLocalInstrument1Code"> + <xs:restriction base="xs:string"> + <xs:minLength value="1"/> + <xs:maxLength value="35"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="ExternalOrganisationIdentification1Code"> + <xs:restriction base="xs:string"> + <xs:minLength value="1"/> + <xs:maxLength value="4"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="ExternalPersonIdentification1Code"> + <xs:restriction base="xs:string"> + <xs:minLength value="1"/> + <xs:maxLength value="4"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="ExternalProxyAccountType1Code"> + <xs:restriction base="xs:string"> + <xs:minLength value="1"/> + <xs:maxLength value="4"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="ExternalPurpose1Code"> + <xs:restriction base="xs:string"> + <xs:minLength value="1"/> + <xs:maxLength value="4"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="ExternalServiceLevel1Code"> + <xs:restriction base="xs:string"> + <xs:minLength value="1"/> + <xs:maxLength value="4"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="ExternalTaxAmountType1Code"> + <xs:restriction base="xs:string"> + <xs:minLength value="1"/> + <xs:maxLength value="4"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="FinancialIdentificationSchemeName1Choice"> + <xs:choice> + <xs:element name="Cd" type="ExternalFinancialInstitutionIdentification1Code"/> + <xs:element name="Prtry" type="Max35Text"/> + </xs:choice> + </xs:complexType> + <xs:complexType name="FinancialInstitutionIdentification18"> + <xs:sequence> + <xs:element name="BICFI" type="BICFIDec2014Identifier" minOccurs="0"/> + <xs:element name="ClrSysMmbId" type="ClearingSystemMemberIdentification2" minOccurs="0"/> + <xs:element name="LEI" type="LEIIdentifier" minOccurs="0"/> + <xs:element name="Nm" type="Max140Text" minOccurs="0"/> + <xs:element name="PstlAdr" type="PostalAddress24" minOccurs="0"/> + <xs:element name="Othr" type="GenericFinancialIdentification1" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="FinancialInstitutionIdentification18_pain001_ch"> + <xs:complexContent> + <xs:restriction base="FinancialInstitutionIdentification18"> + <xs:sequence> + <xs:element name="BICFI" type="BICFIDec2014Identifier" minOccurs="0"/> + <xs:element name="ClrSysMmbId" type="ClearingSystemMemberIdentification2" minOccurs="0"/> + <xs:element name="LEI" type="LEIIdentifier" minOccurs="0"/> + <xs:element name="Nm" type="Max140Text" minOccurs="0"/> + <xs:element name="PstlAdr" type="PostalAddress24_pain001_ch" minOccurs="0"/> + <xs:element name="Othr" type="GenericFinancialIdentification1_pain001_ch" minOccurs="0"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="FinancialInstitutionIdentification18_pain001_ch_2"> + <xs:complexContent> + <xs:restriction base="FinancialInstitutionIdentification18"> + <xs:sequence> + <xs:element name="BICFI" type="BICFIDec2014Identifier" minOccurs="0"/> + <xs:element name="ClrSysMmbId" type="ClearingSystemMemberIdentification2_pain001_ch" minOccurs="0"/> + <xs:element name="LEI" type="LEIIdentifier" minOccurs="0"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="FinancialInstitutionIdentification18_pain001_ch_3"> + <xs:complexContent> + <xs:restriction base="FinancialInstitutionIdentification18"> + <xs:sequence> + <xs:element name="BICFI" type="BICFIDec2014Identifier" minOccurs="0"/> + <xs:element name="ClrSysMmbId" type="ClearingSystemMemberIdentification2_pain001_ch" minOccurs="0"/> + <xs:element name="LEI" type="LEIIdentifier" minOccurs="0"/> + <xs:element name="Nm" type="Max140Text" minOccurs="0"/> + <xs:element name="PstlAdr" type="PostalAddress24_pain001_ch_4" minOccurs="0"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="FinancialInstitutionIdentification18_pain001_ch_4"> + <xs:complexContent> + <xs:restriction base="FinancialInstitutionIdentification18"> + <xs:sequence> + <xs:element name="BICFI" type="BICFIDec2014Identifier" minOccurs="0"/> + <xs:element name="ClrSysMmbId" type="ClearingSystemMemberIdentification2_pain001_ch" minOccurs="0"/> + <xs:element name="LEI" type="LEIIdentifier" minOccurs="0"/> + <xs:element name="Nm" type="Max140Text" minOccurs="0"/> + <xs:element name="PstlAdr" type="PostalAddress24_pain001_ch_3" minOccurs="0"/> + <xs:element name="Othr" type="GenericFinancialIdentification1_pain001_ch_2" minOccurs="0"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Garnishment3"> + <xs:sequence> + <xs:element name="Tp" type="GarnishmentType1"/> + <xs:element name="Grnshee" type="PartyIdentification135" minOccurs="0"/> + <xs:element name="GrnshmtAdmstr" type="PartyIdentification135" minOccurs="0"/> + <xs:element name="RefNb" type="Max140Text" minOccurs="0"/> + <xs:element name="Dt" type="ISODate" minOccurs="0"/> + <xs:element name="RmtdAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> + <xs:element name="FmlyMdclInsrncInd" type="TrueFalseIndicator" minOccurs="0"/> + <xs:element name="MplyeeTermntnInd" type="TrueFalseIndicator" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="Garnishment3_pain001_ch"> + <xs:complexContent> + <xs:restriction base="Garnishment3"> + <xs:sequence> + <xs:element name="Tp" type="GarnishmentType1"/> + <xs:element name="Grnshee" type="PartyIdentification135_pain001_ch_5" minOccurs="0"/> + <xs:element name="GrnshmtAdmstr" type="PartyIdentification135_pain001_ch_5" minOccurs="0"/> + <xs:element name="RefNb" type="Max140Text" minOccurs="0"/> + <xs:element name="Dt" type="ISODate" minOccurs="0"/> + <xs:element name="RmtdAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> + <xs:element name="FmlyMdclInsrncInd" type="TrueFalseIndicator" minOccurs="0"/> + <xs:element name="MplyeeTermntnInd" type="TrueFalseIndicator" minOccurs="0"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="GarnishmentType1"> + <xs:sequence> + <xs:element name="CdOrPrtry" type="GarnishmentType1Choice"/> + <xs:element name="Issr" type="Max35Text" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="GarnishmentType1Choice"> + <xs:choice> + <xs:element name="Cd" type="ExternalGarnishmentType1Code"/> + <xs:element name="Prtry" type="Max35Text"/> + </xs:choice> + </xs:complexType> + <xs:complexType name="GenericAccountIdentification1"> + <xs:sequence> + <xs:element name="Id" type="Max34Text"/> + <xs:element name="SchmeNm" type="AccountSchemeName1Choice" minOccurs="0"/> + <xs:element name="Issr" type="Max35Text" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="GenericAccountIdentification1_pain001_ch"> + <xs:complexContent> + <xs:restriction base="GenericAccountIdentification1"> + <xs:sequence> + <xs:element name="Id" type="Max34Text"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="GenericFinancialIdentification1"> + <xs:sequence> + <xs:element name="Id" type="Max35Text"/> + <xs:element name="SchmeNm" type="FinancialIdentificationSchemeName1Choice" minOccurs="0"/> + <xs:element name="Issr" type="Max35Text" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="GenericFinancialIdentification1_pain001_ch"> + <xs:complexContent> + <xs:restriction base="GenericFinancialIdentification1"> + <xs:sequence> + <xs:element name="Id" type="Max35Text"/> + <xs:element name="SchmeNm" type="FinancialIdentificationSchemeName1Choice" minOccurs="0"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="GenericFinancialIdentification1_pain001_ch_2"> + <xs:complexContent> + <xs:restriction base="GenericFinancialIdentification1"> + <xs:sequence> + <xs:element name="Id" type="Max35Text"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="GenericIdentification30"> + <xs:sequence> + <xs:element name="Id" type="Exact4AlphaNumericText"/> + <xs:element name="Issr" type="Max35Text"/> + <xs:element name="SchmeNm" type="Max35Text" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="GenericOrganisationIdentification1"> + <xs:sequence> + <xs:element name="Id" type="Max35Text"/> + <xs:element name="SchmeNm" type="OrganisationIdentificationSchemeName1Choice" minOccurs="0"/> + <xs:element name="Issr" type="Max35Text" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="GenericPersonIdentification1"> + <xs:sequence> + <xs:element name="Id" type="Max35Text"/> + <xs:element name="SchmeNm" type="PersonIdentificationSchemeName1Choice" minOccurs="0"/> + <xs:element name="Issr" type="Max35Text" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="GroupHeader85"> + <xs:sequence> + <xs:element name="MsgId" type="Max35Text"/> + <xs:element name="CreDtTm" type="ISODateTime"/> + <xs:element name="Authstn" type="Authorisation1Choice" minOccurs="0" maxOccurs="2"/> + <xs:element name="NbOfTxs" type="Max15NumericText"/> + <xs:element name="CtrlSum" type="DecimalNumber" minOccurs="0"/> + <xs:element name="InitgPty" type="PartyIdentification135"/> + <xs:element name="FwdgAgt" type="BranchAndFinancialInstitutionIdentification6" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="GroupHeader85_pain001_ch"> + <xs:complexContent> + <xs:restriction base="GroupHeader85"> + <xs:sequence> + <xs:element name="MsgId" type="Max35Text_pain001_ch"/> + <xs:element name="CreDtTm" type="ISODateTime"/> + <xs:element name="NbOfTxs" type="Max15NumericText"/> + <xs:element name="CtrlSum" type="DecimalNumber" minOccurs="0"/> + <xs:element name="InitgPty" type="PartyIdentification135_pain001_ch"/> + <xs:element name="FwdgAgt" type="BranchAndFinancialInstitutionIdentification6_pain001_ch" minOccurs="0"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </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="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"/> + <xs:element name="InstrInf" type="Max140Text" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:simpleType name="ISODate"> + <xs:restriction base="xs:date"/> + </xs:simpleType> + <xs:simpleType name="ISODateTime"> + <xs:restriction base="xs:dateTime"/> + </xs:simpleType> + <xs:simpleType name="LEIIdentifier"> + <xs:restriction base="xs:string"> + <xs:pattern value="[A-Z0-9]{18,18}[0-9]{2,2}"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="LocalInstrument2Choice"> + <xs:choice> + <xs:element name="Cd" type="ExternalLocalInstrument1Code"/> + <xs:element name="Prtry" type="Max35Text"/> + </xs:choice> + </xs:complexType> + <xs:simpleType name="Max10Text"> + <xs:restriction base="SPSText"> + <xs:minLength value="1"/> + <xs:maxLength value="10"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="Max128Text"> + <xs:restriction base="SPSText"> + <xs:minLength value="1"/> + <xs:maxLength value="128"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="Max140Text"> + <xs:restriction base="SPSText"> + <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="SPSText"> + <xs:minLength value="1"/> + <xs:maxLength value="16"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="Max2048Text"> + <xs:restriction base="SPSText"> + <xs:minLength value="1"/> + <xs:maxLength value="2048"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="Max34Text"> + <xs:restriction base="SPSText"> + <xs:minLength value="1"/> + <xs:maxLength value="34"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="Max350Text"> + <xs:restriction base="SPSText"> + <xs:minLength value="1"/> + <xs:maxLength value="350"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="Max35Text"> + <xs:restriction base="SPSText"> + <xs:minLength value="1"/> + <xs:maxLength value="35"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="Max35Text_pain001_ch"> + <xs:restriction base="Max35Text"> + <xs:minLength value="1"/> + <xs:maxLength value="35"/> + <xs:pattern value="([A-Za-z0-9]|[+|\?|/|\-|:|\(|\)|\.|,|&apos;|\p{Zs}])*"/> + </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="SPSText"> + <xs:minLength value="1"/> + <xs:maxLength value="70"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="NameAndAddress16"> + <xs:sequence> + <xs:element name="Nm" type="Max140Text"/> + <xs:element name="Adr" type="PostalAddress24"/> + </xs:sequence> + </xs:complexType> + <xs:simpleType name="NamePrefix2Code"> + <xs:restriction base="xs:string"> + <xs:enumeration value="DOCT"/> + <xs:enumeration value="MADM"/> + <xs:enumeration value="MIKS"/> + <xs:enumeration value="MISS"/> + <xs:enumeration value="MIST"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="Number"> + <xs:restriction base="xs:decimal"> + <xs:totalDigits value="18"/> + <xs:fractionDigits value="0"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="OrganisationIdentification29"> + <xs:sequence> + <xs:element name="AnyBIC" type="AnyBICDec2014Identifier" minOccurs="0"/> + <xs:element name="LEI" type="LEIIdentifier" minOccurs="0"/> + <xs:element name="Othr" type="GenericOrganisationIdentification1" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="OrganisationIdentification29_pain001_ch"> + <xs:complexContent> + <xs:restriction base="OrganisationIdentification29"> + <xs:sequence> + <xs:element name="AnyBIC" type="AnyBICDec2014Identifier" minOccurs="0"/> + <xs:element name="LEI" type="LEIIdentifier" minOccurs="0"/> + <xs:element name="Othr" type="GenericOrganisationIdentification1" minOccurs="0"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="OrganisationIdentification29_pain001_ch_2"> + <xs:complexContent> + <xs:restriction base="OrganisationIdentification29"> + <xs:sequence> + <xs:element name="AnyBIC" type="AnyBICDec2014Identifier" minOccurs="0"/> + <xs:element name="LEI" type="LEIIdentifier" minOccurs="0"/> + <xs:element name="Othr" type="GenericOrganisationIdentification1" minOccurs="0" maxOccurs="2"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="OrganisationIdentificationSchemeName1Choice"> + <xs:choice> + <xs:element name="Cd" type="ExternalOrganisationIdentification1Code"/> + <xs:element name="Prtry" type="Max35Text"/> + </xs:choice> + </xs:complexType> + <xs:complexType name="OtherContact1"> + <xs:sequence> + <xs:element name="ChanlTp" type="Max4Text"/> + <xs:element name="Id" type="Max128Text" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="OtherContact1_pain001_ch"> + <xs:complexContent> + <xs:restriction base="OtherContact1"> + <xs:sequence> + <xs:element name="ChanlTp" type="Max4Text"/> + <xs:element name="Id" type="Max128Text"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Party38Choice"> + <xs:choice> + <xs:element name="OrgId" type="OrganisationIdentification29"/> + <xs:element name="PrvtId" type="PersonIdentification13"/> + </xs:choice> + </xs:complexType> + <xs:complexType name="Party38Choice_pain001_ch"> + <xs:complexContent> + <xs:restriction base="Party38Choice"> + <xs:choice> + <xs:element name="OrgId" type="OrganisationIdentification29_pain001_ch"/> + <xs:element name="PrvtId" type="PersonIdentification13_pain001_ch"/> + </xs:choice> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Party38Choice_pain001_ch_2"> + <xs:complexContent> + <xs:restriction base="Party38Choice"> + <xs:choice> + <xs:element name="OrgId" type="OrganisationIdentification29_pain001_ch_2"/> + <xs:element name="PrvtId" type="PersonIdentification13_pain001_ch_2"/> + </xs:choice> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="PartyIdentification135"> + <xs:sequence> + <xs:element name="Nm" type="Max140Text" minOccurs="0"/> + <xs:element name="PstlAdr" type="PostalAddress24" minOccurs="0"/> + <xs:element name="Id" type="Party38Choice" minOccurs="0"/> + <xs:element name="CtryOfRes" type="CountryCode" minOccurs="0"/> + <xs:element name="CtctDtls" type="Contact4" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="PartyIdentification135_pain001_ch"> + <xs:complexContent> + <xs:restriction base="PartyIdentification135"> + <xs:sequence> + <xs:element name="Nm" type="Max140Text" minOccurs="0"/> + <xs:element name="Id" type="Party38Choice_pain001_ch" minOccurs="0"/> + <xs:element name="CtctDtls" type="Contact4_pain001_ch" minOccurs="0"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="PartyIdentification135_pain001_ch_2"> + <xs:complexContent> + <xs:restriction base="PartyIdentification135"> + <xs:sequence> + <xs:element name="Nm" type="Max140Text" minOccurs="0"/> + <xs:element name="PstlAdr" type="PostalAddress24_pain001_ch_2" minOccurs="0"/> + <xs:element name="Id" type="Party38Choice_pain001_ch" minOccurs="0"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="PartyIdentification135_pain001_ch_3"> + <xs:complexContent> + <xs:restriction base="PartyIdentification135"> + <xs:sequence> + <xs:element name="Nm" type="Max140Text" minOccurs="0"/> + <xs:element name="PstlAdr" type="PostalAddress24_pain001_ch_3" minOccurs="0"/> + <xs:element name="Id" type="Party38Choice_pain001_ch" minOccurs="0"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="PartyIdentification135_pain001_ch_4"> + <xs:complexContent> + <xs:restriction base="PartyIdentification135"> + <xs:sequence> + <xs:element name="Nm" type="Max140Text"/> + <xs:element name="PstlAdr" type="PostalAddress24_pain001_ch_3" minOccurs="0"/> + <xs:element name="Id" type="Party38Choice_pain001_ch" minOccurs="0"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="PartyIdentification135_pain001_ch_5"> + <xs:complexContent> + <xs:restriction base="PartyIdentification135"> + <xs:sequence> + <xs:element name="Nm" type="Max140Text" minOccurs="0"/> + <xs:element name="PstlAdr" type="PostalAddress24_pain001_ch_5" minOccurs="0"/> + <xs:element name="Id" type="Party38Choice_pain001_ch_2" minOccurs="0"/> + <xs:element name="CtryOfRes" type="CountryCode" minOccurs="0"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="PaymentIdentification6"> + <xs:sequence> + <xs:element name="InstrId" type="Max35Text" minOccurs="0"/> + <xs:element name="EndToEndId" type="Max35Text"/> + <xs:element name="UETR" type="UUIDv4Identifier" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="PaymentIdentification6_pain001_ch"> + <xs:complexContent> + <xs:restriction base="PaymentIdentification6"> + <xs:sequence> + <xs:element name="InstrId" type="Max35Text_pain001_ch" minOccurs="0"/> + <xs:element name="EndToEndId" type="Max35Text_pain001_ch"/> + <xs:element name="UETR" type="UUIDv4Identifier" minOccurs="0"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="PaymentInstruction30"> + <xs:sequence> + <xs:element name="PmtInfId" type="Max35Text"/> + <xs:element name="PmtMtd" type="PaymentMethod3Code"/> + <xs:element name="BtchBookg" type="BatchBookingIndicator" minOccurs="0"/> + <xs:element name="NbOfTxs" type="Max15NumericText" minOccurs="0"/> + <xs:element name="CtrlSum" type="DecimalNumber" minOccurs="0"/> + <xs:element name="PmtTpInf" type="PaymentTypeInformation26" minOccurs="0"/> + <xs:element name="ReqdExctnDt" type="DateAndDateTime2Choice"/> + <xs:element name="PoolgAdjstmntDt" type="ISODate" minOccurs="0"/> + <xs:element name="Dbtr" type="PartyIdentification135"/> + <xs:element name="DbtrAcct" type="CashAccount38"/> + <xs:element name="DbtrAgt" type="BranchAndFinancialInstitutionIdentification6"/> + <xs:element name="DbtrAgtAcct" type="CashAccount38" minOccurs="0"/> + <xs:element name="InstrForDbtrAgt" type="Max140Text" minOccurs="0"/> + <xs:element name="UltmtDbtr" type="PartyIdentification135" minOccurs="0"/> + <xs:element name="ChrgBr" type="ChargeBearerType1Code" minOccurs="0"/> + <xs:element name="ChrgsAcct" type="CashAccount38" minOccurs="0"/> + <xs:element name="ChrgsAcctAgt" type="BranchAndFinancialInstitutionIdentification6" minOccurs="0"/> + <xs:element name="CdtTrfTxInf" type="CreditTransferTransaction34" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="PaymentInstruction30_pain001_ch"> + <xs:complexContent> + <xs:restriction base="PaymentInstruction30"> + <xs:sequence> + <xs:element name="PmtInfId" type="Max35Text_pain001_ch"/> + <xs:element name="PmtMtd" type="PaymentMethod3Code"/> + <xs:element name="BtchBookg" type="BatchBookingIndicator" minOccurs="0"/> + <xs:element name="NbOfTxs" type="Max15NumericText" minOccurs="0"/> + <xs:element name="CtrlSum" type="DecimalNumber" minOccurs="0"/> + <xs:element name="PmtTpInf" type="PaymentTypeInformation26_pain001_ch" minOccurs="0"/> + <xs:element name="ReqdExctnDt" type="DateAndDateTime2Choice"/> + <xs:element name="Dbtr" type="PartyIdentification135_pain001_ch_2"/> + <xs:element name="DbtrAcct" type="CashAccount38_pain001_ch"/> + <xs:element name="DbtrAgt" type="BranchAndFinancialInstitutionIdentification6_pain001_ch_2"/> + <xs:element name="InstrForDbtrAgt" type="Max140Text" minOccurs="0"/> + <xs:element name="UltmtDbtr" type="PartyIdentification135_pain001_ch_3" minOccurs="0"/> + <xs:element name="ChrgBr" type="ChargeBearerType1Code" minOccurs="0"/> + <xs:element name="ChrgsAcct" type="CashAccount38_pain001_ch_2" minOccurs="0"/> + <xs:element name="CdtTrfTxInf" type="CreditTransferTransaction34_pain001_ch" maxOccurs="unbounded"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:simpleType name="PaymentMethod3Code"> + <xs:restriction base="xs:string"> + <xs:enumeration value="CHK"/> + <xs:enumeration value="TRA"/> + <xs:enumeration value="TRF"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="PaymentTypeInformation26"> + <xs:sequence> + <xs:element name="InstrPrty" type="Priority2Code" minOccurs="0"/> + <xs:element name="SvcLvl" type="ServiceLevel8Choice" minOccurs="0" maxOccurs="unbounded"/> + <xs:element name="LclInstrm" type="LocalInstrument2Choice" minOccurs="0"/> + <xs:element name="CtgyPurp" type="CategoryPurpose1Choice" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="PaymentTypeInformation26_pain001_ch"> + <xs:complexContent> + <xs:restriction base="PaymentTypeInformation26"> + <xs:sequence> + <xs:element name="InstrPrty" type="Priority2Code" minOccurs="0"/> + <xs:element name="SvcLvl" type="ServiceLevel8Choice" minOccurs="0" maxOccurs="3"/> + <xs:element name="LclInstrm" type="LocalInstrument2Choice" minOccurs="0"/> + <xs:element name="CtgyPurp" type="CategoryPurpose1Choice_pain001_ch" minOccurs="0"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="PaymentTypeInformation26_pain001_ch_2"> + <xs:complexContent> + <xs:restriction base="PaymentTypeInformation26"> + <xs:sequence> + <xs:element name="InstrPrty" type="Priority2Code" minOccurs="0"/> + <xs:element name="SvcLvl" type="ServiceLevel8Choice" minOccurs="0" maxOccurs="3"/> + <xs:element name="LclInstrm" type="LocalInstrument2Choice" minOccurs="0"/> + <xs:element name="CtgyPurp" type="CategoryPurpose1Choice" minOccurs="0"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:simpleType name="PercentageRate"> + <xs:restriction base="xs:decimal"> + <xs:totalDigits value="11"/> + <xs:fractionDigits value="10"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="PersonIdentification13"> + <xs:sequence> + <xs:element name="DtAndPlcOfBirth" type="DateAndPlaceOfBirth1" minOccurs="0"/> + <xs:element name="Othr" type="GenericPersonIdentification1" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="PersonIdentification13_pain001_ch"> + <xs:complexContent> + <xs:restriction base="PersonIdentification13"> + <xs:sequence> + <xs:element name="DtAndPlcOfBirth" type="DateAndPlaceOfBirth1" minOccurs="0"/> + <xs:element name="Othr" type="GenericPersonIdentification1" minOccurs="0"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="PersonIdentification13_pain001_ch_2"> + <xs:complexContent> + <xs:restriction base="PersonIdentification13"> + <xs:sequence> + <xs:element name="DtAndPlcOfBirth" type="DateAndPlaceOfBirth1" minOccurs="0"/> + <xs:element name="Othr" type="GenericPersonIdentification1" minOccurs="0" maxOccurs="2"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="PersonIdentificationSchemeName1Choice"> + <xs:choice> + <xs:element name="Cd" type="ExternalPersonIdentification1Code"/> + <xs:element name="Prtry" type="Max35Text"/> + </xs:choice> + </xs:complexType> + <xs:simpleType name="PhoneNumber"> + <xs:restriction base="xs:string"> + <xs:pattern value="\+[0-9]{1,3}-[0-9()+\-]{1,30}"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="PostalAddress24"> + <xs:sequence> + <xs:element name="AdrTp" type="AddressType3Choice" minOccurs="0"/> + <xs:element name="Dept" type="Max70Text" minOccurs="0"/> + <xs:element name="SubDept" type="Max70Text" minOccurs="0"/> + <xs:element name="StrtNm" type="Max70Text" minOccurs="0"/> + <xs:element name="BldgNb" type="Max16Text" minOccurs="0"/> + <xs:element name="BldgNm" type="Max35Text" minOccurs="0"/> + <xs:element name="Flr" type="Max70Text" minOccurs="0"/> + <xs:element name="PstBx" type="Max16Text" minOccurs="0"/> + <xs:element name="Room" type="Max70Text" minOccurs="0"/> + <xs:element name="PstCd" type="Max16Text" minOccurs="0"/> + <xs:element name="TwnNm" type="Max35Text" minOccurs="0"/> + <xs:element name="TwnLctnNm" type="Max35Text" minOccurs="0"/> + <xs:element name="DstrctNm" type="Max35Text" minOccurs="0"/> + <xs:element name="CtrySubDvsn" type="Max35Text" minOccurs="0"/> + <xs:element name="Ctry" type="CountryCode" minOccurs="0"/> + <xs:element name="AdrLine" type="Max70Text" minOccurs="0" maxOccurs="7"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="PostalAddress24_pain001_ch"> + <xs:complexContent> + <xs:restriction base="PostalAddress24"> + <xs:sequence> + <xs:element name="AdrLine" type="Max70Text" minOccurs="0" maxOccurs="7"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="PostalAddress24_pain001_ch_2"> + <xs:complexContent> + <xs:restriction base="PostalAddress24"> + <xs:sequence> + <xs:element name="AdrTp" type="AddressType3Choice" minOccurs="0"/> + <xs:element name="Dept" type="Max70Text" minOccurs="0"/> + <xs:element name="SubDept" type="Max70Text" minOccurs="0"/> + <xs:element name="StrtNm" type="Max70Text" minOccurs="0"/> + <xs:element name="BldgNb" type="Max16Text" minOccurs="0"/> + <xs:element name="BldgNm" type="Max35Text" minOccurs="0"/> + <xs:element name="Flr" type="Max70Text" minOccurs="0"/> + <xs:element name="PstBx" type="Max16Text" minOccurs="0"/> + <xs:element name="Room" type="Max70Text" minOccurs="0"/> + <xs:element name="PstCd" type="Max16Text" minOccurs="0"/> + <xs:element name="TwnNm" type="Max35Text" minOccurs="0"/> + <xs:element name="TwnLctnNm" type="Max35Text" minOccurs="0"/> + <xs:element name="DstrctNm" type="Max35Text" minOccurs="0"/> + <xs:element name="CtrySubDvsn" type="Max35Text" minOccurs="0"/> + <xs:element name="Ctry" type="CountryCode" minOccurs="0"/> + <xs:element name="AdrLine" type="Max70Text" minOccurs="0" maxOccurs="2"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="PostalAddress24_pain001_ch_3"> + <xs:complexContent> + <xs:restriction base="PostalAddress24"> + <xs:sequence> + <xs:element name="Dept" type="Max70Text" minOccurs="0"/> + <xs:element name="SubDept" type="Max70Text" minOccurs="0"/> + <xs:element name="StrtNm" type="Max70Text" minOccurs="0"/> + <xs:element name="BldgNb" type="Max16Text" minOccurs="0"/> + <xs:element name="BldgNm" type="Max35Text" minOccurs="0"/> + <xs:element name="Flr" type="Max70Text" minOccurs="0"/> + <xs:element name="PstBx" type="Max16Text" minOccurs="0"/> + <xs:element name="Room" type="Max70Text" minOccurs="0"/> + <xs:element name="PstCd" type="Max16Text" minOccurs="0"/> + <xs:element name="TwnNm" type="Max35Text" minOccurs="0"/> + <xs:element name="TwnLctnNm" type="Max35Text" minOccurs="0"/> + <xs:element name="DstrctNm" type="Max35Text" minOccurs="0"/> + <xs:element name="CtrySubDvsn" type="Max35Text" minOccurs="0"/> + <xs:element name="Ctry" type="CountryCode" minOccurs="0"/> + <xs:element name="AdrLine" type="Max70Text" minOccurs="0" maxOccurs="2"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="PostalAddress24_pain001_ch_4"> + <xs:complexContent> + <xs:restriction base="PostalAddress24"> + <xs:sequence> + <xs:element name="AdrLine" type="Max70Text" minOccurs="0" maxOccurs="2"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="PostalAddress24_pain001_ch_5"> + <xs:complexContent> + <xs:restriction base="PostalAddress24"> + <xs:sequence> + <xs:element name="Dept" type="Max70Text" minOccurs="0"/> + <xs:element name="SubDept" type="Max70Text" minOccurs="0"/> + <xs:element name="StrtNm" type="Max70Text" minOccurs="0"/> + <xs:element name="BldgNb" type="Max16Text" minOccurs="0"/> + <xs:element name="BldgNm" type="Max35Text" minOccurs="0"/> + <xs:element name="Flr" type="Max70Text" minOccurs="0"/> + <xs:element name="PstBx" type="Max16Text" minOccurs="0"/> + <xs:element name="Room" type="Max70Text" minOccurs="0"/> + <xs:element name="PstCd" type="Max16Text" minOccurs="0"/> + <xs:element name="TwnNm" type="Max35Text" minOccurs="0"/> + <xs:element name="TwnLctnNm" type="Max35Text" minOccurs="0"/> + <xs:element name="DstrctNm" type="Max35Text" minOccurs="0"/> + <xs:element name="CtrySubDvsn" type="Max35Text" minOccurs="0"/> + <xs:element name="Ctry" type="CountryCode" minOccurs="0"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:simpleType name="PreferredContactMethod1Code"> + <xs:restriction base="xs:string"> + <xs:enumeration value="CELL"/> + <xs:enumeration value="FAXX"/> + <xs:enumeration value="LETT"/> + <xs:enumeration value="MAIL"/> + <xs:enumeration value="PHON"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="Priority2Code"> + <xs:restriction base="xs:string"> + <xs:enumeration value="HIGH"/> + <xs:enumeration value="NORM"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="ProxyAccountIdentification1"> + <xs:sequence> + <xs:element name="Tp" type="ProxyAccountType1Choice" minOccurs="0"/> + <xs:element name="Id" type="Max2048Text"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="ProxyAccountType1Choice"> + <xs:choice> + <xs:element name="Cd" type="ExternalProxyAccountType1Code"/> + <xs:element name="Prtry" type="Max35Text"/> + </xs:choice> + </xs:complexType> + <xs:complexType name="Purpose2Choice"> + <xs:choice> + <xs:element name="Cd" type="ExternalPurpose1Code"/> + <xs:element name="Prtry" type="Max35Text"/> + </xs:choice> + </xs:complexType> + <xs:complexType name="Purpose2Choice_pain001_ch"> + <xs:complexContent> + <xs:restriction base="Purpose2Choice"> + <xs:choice> + <xs:element name="Cd" type="ExternalPurpose1Code"/> + </xs:choice> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="ReferredDocumentInformation7"> + <xs:sequence> + <xs:element name="Tp" type="ReferredDocumentType4" minOccurs="0"/> + <xs:element name="Nb" type="Max35Text" minOccurs="0"/> + <xs:element name="RltdDt" type="ISODate" minOccurs="0"/> + <xs:element name="LineDtls" type="DocumentLineInformation1" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="ReferredDocumentType3Choice"> + <xs:choice> + <xs:element name="Cd" type="DocumentType6Code"/> + <xs:element name="Prtry" type="Max35Text"/> + </xs:choice> + </xs:complexType> + <xs:complexType name="ReferredDocumentType4"> + <xs:sequence> + <xs:element name="CdOrPrtry" type="ReferredDocumentType3Choice"/> + <xs:element name="Issr" type="Max35Text" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="RegulatoryAuthority2"> + <xs:sequence> + <xs:element name="Nm" type="Max140Text" minOccurs="0"/> + <xs:element name="Ctry" type="CountryCode" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="RegulatoryReporting3"> + <xs:sequence> + <xs:element name="DbtCdtRptgInd" type="RegulatoryReportingType1Code" minOccurs="0"/> + <xs:element name="Authrty" type="RegulatoryAuthority2" minOccurs="0"/> + <xs:element name="Dtls" type="StructuredRegulatoryReporting3" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + <xs:simpleType name="RegulatoryReportingType1Code"> + <xs:restriction base="xs:string"> + <xs:enumeration value="BOTH"/> + <xs:enumeration value="CRED"/> + <xs:enumeration value="DEBT"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="RemittanceAmount2"> + <xs:sequence> + <xs:element name="DuePyblAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> + <xs:element name="DscntApldAmt" type="DiscountAmountAndType1" minOccurs="0" maxOccurs="unbounded"/> + <xs:element name="CdtNoteAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> + <xs:element name="TaxAmt" type="TaxAmountAndType1" minOccurs="0" maxOccurs="unbounded"/> + <xs:element name="AdjstmntAmtAndRsn" type="DocumentAdjustment1" minOccurs="0" maxOccurs="unbounded"/> + <xs:element name="RmtdAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="RemittanceAmount3"> + <xs:sequence> + <xs:element name="DuePyblAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> + <xs:element name="DscntApldAmt" type="DiscountAmountAndType1" minOccurs="0" maxOccurs="unbounded"/> + <xs:element name="CdtNoteAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> + <xs:element name="TaxAmt" type="TaxAmountAndType1" minOccurs="0" maxOccurs="unbounded"/> + <xs:element name="AdjstmntAmtAndRsn" type="DocumentAdjustment1" minOccurs="0" maxOccurs="unbounded"/> + <xs:element name="RmtdAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="RemittanceInformation16"> + <xs:sequence> + <xs:element name="Ustrd" type="Max140Text" minOccurs="0" maxOccurs="unbounded"/> + <xs:element name="Strd" type="StructuredRemittanceInformation16" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="RemittanceInformation16_pain001_ch"> + <xs:complexContent> + <xs:restriction base="RemittanceInformation16"> + <xs:sequence> + <xs:element name="Ustrd" type="Max140Text" minOccurs="0"/> + <xs:element name="Strd" type="StructuredRemittanceInformation16_pain001_ch" minOccurs="0"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="RemittanceLocation7"> + <xs:sequence> + <xs:element name="RmtId" type="Max35Text" minOccurs="0"/> + <xs:element name="RmtLctnDtls" type="RemittanceLocationData1" minOccurs="0" maxOccurs="2"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="RemittanceLocationData1"> + <xs:sequence> + <xs:element name="Mtd" type="RemittanceLocationMethod2Code"/> + <xs:element name="ElctrncAdr" type="Max2048Text" minOccurs="0"/> + <xs:element name="PstlAdr" type="NameAndAddress16" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:simpleType name="RemittanceLocationMethod2Code"> + <xs:restriction base="xs:string"> + <xs:enumeration value="EDIC"/> + <xs:enumeration value="EMAL"/> + <xs:enumeration value="FAXI"/> + <xs:enumeration value="POST"/> + <xs:enumeration value="SMSM"/> + <xs:enumeration value="URID"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="ServiceLevel8Choice"> + <xs:choice> + <xs:element name="Cd" type="ExternalServiceLevel1Code"/> + <xs:element name="Prtry" type="Max35Text"/> + </xs:choice> + </xs:complexType> + <xs:simpleType name="SPSText"> + <xs:restriction base="xs:string"> + <xs:pattern value="[\p{IsBasicLatin}\p{IsLatin-1Supplement}\p{IsLatinExtended-A}€ȘșȚț-[\p{C}]]+"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="StructuredRegulatoryReporting3"> + <xs:sequence> + <xs:element name="Tp" type="Max35Text" minOccurs="0"/> + <xs:element name="Dt" type="ISODate" minOccurs="0"/> + <xs:element name="Ctry" type="CountryCode" minOccurs="0"/> + <xs:element name="Cd" type="Max10Text" minOccurs="0"/> + <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> + <xs:element name="Inf" type="Max35Text" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="StructuredRemittanceInformation16"> + <xs:sequence> + <xs:element name="RfrdDocInf" type="ReferredDocumentInformation7" minOccurs="0" maxOccurs="unbounded"/> + <xs:element name="RfrdDocAmt" type="RemittanceAmount2" minOccurs="0"/> + <xs:element name="CdtrRefInf" type="CreditorReferenceInformation2" minOccurs="0"/> + <xs:element name="Invcr" type="PartyIdentification135" minOccurs="0"/> + <xs:element name="Invcee" type="PartyIdentification135" minOccurs="0"/> + <xs:element name="TaxRmt" type="TaxInformation7" minOccurs="0"/> + <xs:element name="GrnshmtRmt" type="Garnishment3" minOccurs="0"/> + <xs:element name="AddtlRmtInf" type="Max140Text" minOccurs="0" maxOccurs="3"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="StructuredRemittanceInformation16_pain001_ch"> + <xs:complexContent> + <xs:restriction base="StructuredRemittanceInformation16"> + <xs:sequence> + <xs:element name="RfrdDocInf" type="ReferredDocumentInformation7" minOccurs="0" maxOccurs="unbounded"/> + <xs:element name="RfrdDocAmt" type="RemittanceAmount2" minOccurs="0"/> + <xs:element name="CdtrRefInf" type="CreditorReferenceInformation2" minOccurs="0"/> + <xs:element name="Invcr" type="PartyIdentification135_pain001_ch_5" minOccurs="0"/> + <xs:element name="Invcee" type="PartyIdentification135_pain001_ch_5" minOccurs="0"/> + <xs:element name="TaxRmt" type="TaxInformation7" minOccurs="0"/> + <xs:element name="GrnshmtRmt" type="Garnishment3_pain001_ch" minOccurs="0"/> + <xs:element name="AddtlRmtInf" type="Max140Text" minOccurs="0" maxOccurs="3"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="SupplementaryData1"> + <xs:sequence> + <xs:element name="PlcAndNm" type="Max350Text" minOccurs="0"/> + <xs:element name="Envlp" type="SupplementaryDataEnvelope1"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="SupplementaryDataEnvelope1"> + <xs:sequence> + <xs:any namespace="##any" processContents="lax"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="TaxAmount2"> + <xs:sequence> + <xs:element name="Rate" type="PercentageRate" minOccurs="0"/> + <xs:element name="TaxblBaseAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> + <xs:element name="TtlAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> + <xs:element name="Dtls" type="TaxRecordDetails2" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="TaxAmountAndType1"> + <xs:sequence> + <xs:element name="Tp" type="TaxAmountType1Choice" minOccurs="0"/> + <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="TaxAmountType1Choice"> + <xs:choice> + <xs:element name="Cd" type="ExternalTaxAmountType1Code"/> + <xs:element name="Prtry" type="Max35Text"/> + </xs:choice> + </xs:complexType> + <xs:complexType name="TaxAuthorisation1"> + <xs:sequence> + <xs:element name="Titl" type="Max35Text" minOccurs="0"/> + <xs:element name="Nm" type="Max140Text" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="TaxInformation7"> + <xs:sequence> + <xs:element name="Cdtr" type="TaxParty1" minOccurs="0"/> + <xs:element name="Dbtr" type="TaxParty2" minOccurs="0"/> + <xs:element name="UltmtDbtr" type="TaxParty2" minOccurs="0"/> + <xs:element name="AdmstnZone" type="Max35Text" minOccurs="0"/> + <xs:element name="RefNb" type="Max140Text" minOccurs="0"/> + <xs:element name="Mtd" type="Max35Text" minOccurs="0"/> + <xs:element name="TtlTaxblBaseAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> + <xs:element name="TtlTaxAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> + <xs:element name="Dt" type="ISODate" minOccurs="0"/> + <xs:element name="SeqNb" type="Number" minOccurs="0"/> + <xs:element name="Rcrd" type="TaxRecord2" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="TaxInformation8"> + <xs:sequence> + <xs:element name="Cdtr" type="TaxParty1" minOccurs="0"/> + <xs:element name="Dbtr" type="TaxParty2" minOccurs="0"/> + <xs:element name="AdmstnZone" type="Max35Text" minOccurs="0"/> + <xs:element name="RefNb" type="Max140Text" minOccurs="0"/> + <xs:element name="Mtd" type="Max35Text" minOccurs="0"/> + <xs:element name="TtlTaxblBaseAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> + <xs:element name="TtlTaxAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/> + <xs:element name="Dt" type="ISODate" minOccurs="0"/> + <xs:element name="SeqNb" type="Number" minOccurs="0"/> + <xs:element name="Rcrd" type="TaxRecord2" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="TaxParty1"> + <xs:sequence> + <xs:element name="TaxId" type="Max35Text" minOccurs="0"/> + <xs:element name="RegnId" type="Max35Text" minOccurs="0"/> + <xs:element name="TaxTp" type="Max35Text" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="TaxParty2"> + <xs:sequence> + <xs:element name="TaxId" type="Max35Text" minOccurs="0"/> + <xs:element name="RegnId" type="Max35Text" minOccurs="0"/> + <xs:element name="TaxTp" type="Max35Text" minOccurs="0"/> + <xs:element name="Authstn" type="TaxAuthorisation1" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="TaxPeriod2"> + <xs:sequence> + <xs:element name="Yr" type="ISODate" minOccurs="0"/> + <xs:element name="Tp" type="TaxRecordPeriod1Code" minOccurs="0"/> + <xs:element name="FrToDt" type="DatePeriod2" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="TaxRecord2"> + <xs:sequence> + <xs:element name="Tp" type="Max35Text" minOccurs="0"/> + <xs:element name="Ctgy" type="Max35Text" minOccurs="0"/> + <xs:element name="CtgyDtls" type="Max35Text" minOccurs="0"/> + <xs:element name="DbtrSts" type="Max35Text" minOccurs="0"/> + <xs:element name="CertId" type="Max35Text" minOccurs="0"/> + <xs:element name="FrmsCd" type="Max35Text" minOccurs="0"/> + <xs:element name="Prd" type="TaxPeriod2" minOccurs="0"/> + <xs:element name="TaxAmt" type="TaxAmount2" minOccurs="0"/> + <xs:element name="AddtlInf" type="Max140Text" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="TaxRecordDetails2"> + <xs:sequence> + <xs:element name="Prd" type="TaxPeriod2" minOccurs="0"/> + <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/> + </xs:sequence> + </xs:complexType> + <xs:simpleType name="TaxRecordPeriod1Code"> + <xs:restriction base="xs:string"> + <xs:enumeration value="HLF1"/> + <xs:enumeration value="HLF2"/> + <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:restriction> + </xs:simpleType> + <xs:simpleType name="TrueFalseIndicator"> + <xs:restriction base="xs:boolean"/> + </xs:simpleType> + <xs:simpleType name="UUIDv4Identifier"> + <xs:restriction base="xs:string"> + <xs:pattern value="[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}"/> + </xs:restriction> + </xs:simpleType> +</xs:schema>