sps_king 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +32 -0
  5. data/CONTRIBUTING.md +38 -0
  6. data/Gemfile +2 -0
  7. data/LICENSE.txt +24 -0
  8. data/README.md +246 -0
  9. data/Rakefile +6 -0
  10. data/gemfiles/Gemfile-activemodel-3.1.x +5 -0
  11. data/gemfiles/Gemfile-activemodel-3.2.x +5 -0
  12. data/gemfiles/Gemfile-activemodel-4.0.x +5 -0
  13. data/gemfiles/Gemfile-activemodel-4.1.x +5 -0
  14. data/gemfiles/Gemfile-activemodel-4.2.x +5 -0
  15. data/gemfiles/Gemfile-activemodel-5.0.x +5 -0
  16. data/gemfiles/Gemfile-activemodel-5.1.x +5 -0
  17. data/gemfiles/Gemfile-activemodel-5.2.x +5 -0
  18. data/lib/schema/pain.001.001.03.ch.02.xsd +1212 -0
  19. data/lib/schema/pain.008.001.02.ch.03.xsd +784 -0
  20. data/lib/sps_king.rb +22 -0
  21. data/lib/sps_king/account.rb +24 -0
  22. data/lib/sps_king/account/creditor_account.rb +11 -0
  23. data/lib/sps_king/account/creditor_address.rb +37 -0
  24. data/lib/sps_king/account/debtor_account.rb +5 -0
  25. data/lib/sps_king/account/debtor_address.rb +34 -0
  26. data/lib/sps_king/converter.rb +53 -0
  27. data/lib/sps_king/error.rb +4 -0
  28. data/lib/sps_king/message.rb +163 -0
  29. data/lib/sps_king/message/credit_transfer.rb +140 -0
  30. data/lib/sps_king/message/direct_debit.rb +177 -0
  31. data/lib/sps_king/structured_remittance_information.rb +20 -0
  32. data/lib/sps_king/transaction.rb +59 -0
  33. data/lib/sps_king/transaction/credit_transfer_transaction.rb +19 -0
  34. data/lib/sps_king/transaction/direct_debit_transaction.rb +58 -0
  35. data/lib/sps_king/validator.rb +55 -0
  36. data/lib/sps_king/version.rb +3 -0
  37. data/spec/examples/pain.001.001.03.ch.02.xml +172 -0
  38. data/spec/examples/pain.008.001.02.ch.03.xml +240 -0
  39. data/spec/lib/sps_king/account/creditor_account_spec.rb +52 -0
  40. data/spec/lib/sps_king/account/creditor_address_spec.rb +14 -0
  41. data/spec/lib/sps_king/account/debtor_account_spec.rb +14 -0
  42. data/spec/lib/sps_king/account/debtor_address_spec.rb +14 -0
  43. data/spec/lib/sps_king/account_spec.rb +42 -0
  44. data/spec/lib/sps_king/converter_spec.rb +88 -0
  45. data/spec/lib/sps_king/message/credit_transfer_spec.rb +350 -0
  46. data/spec/lib/sps_king/message/direct_debit_spec.rb +483 -0
  47. data/spec/lib/sps_king/message_spec.rb +128 -0
  48. data/spec/lib/sps_king/structured_remittance_information_spec.rb +32 -0
  49. data/spec/lib/sps_king/transaction/credit_transfer_transaction_spec.rb +53 -0
  50. data/spec/lib/sps_king/transaction/direct_debit_transaction_spec.rb +56 -0
  51. data/spec/lib/sps_king/transaction_spec.rb +133 -0
  52. data/spec/lib/sps_king/validation_spec.rb +23 -0
  53. data/spec/lib/sps_king/validator_spec.rb +78 -0
  54. data/spec/spec_helper.rb +33 -0
  55. data/spec/support/active_model.rb +30 -0
  56. data/spec/support/custom_matcher.rb +60 -0
  57. data/spec/support/factories.rb +33 -0
  58. data/spec/support/validations.rb +27 -0
  59. data/sps_king.gemspec +31 -0
  60. metadata +237 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6cd77b54487aa19572d341aacb94135014482406
4
+ data.tar.gz: c2b795d7d60742a76ef3bc1b335ea0901ecee526
5
+ SHA512:
6
+ metadata.gz: b1153883b2c58b05b2cc890c5c90bdaeab9d8296a1c0e2ef02766421028d3ff40ff673ea65f6e4b99a3c8e5785ecc7f1ccae508b4102931191ff4dd90583e827
7
+ data.tar.gz: 9b9546cb0777778b9ff24b7c4405a60cf62a1b899ccfd91b5fb6c8068f6ca4b927288263073b82d204ee6f9403d1eae55f69b8fed74eb8bfbba955fa232a97f5
@@ -0,0 +1,9 @@
1
+ nbproject/*
2
+ .rvmrc
3
+ coverage/*
4
+ rdoc/*
5
+ pkg/*
6
+ .DS_Store
7
+ Gemfile.lock
8
+ # tmp disable
9
+ docs/
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format progress
@@ -0,0 +1,32 @@
1
+ rvm:
2
+ - 2.1.1
3
+ - 2.2.10
4
+ - 2.3.7
5
+ - 2.4.4
6
+ - 2.5.1
7
+ gemfile:
8
+ - gemfiles/Gemfile-activemodel-3.1.x
9
+ - gemfiles/Gemfile-activemodel-3.2.x
10
+ - gemfiles/Gemfile-activemodel-4.0.x
11
+ - gemfiles/Gemfile-activemodel-4.1.x
12
+ - gemfiles/Gemfile-activemodel-4.2.x
13
+ - gemfiles/Gemfile-activemodel-5.0.x
14
+ - gemfiles/Gemfile-activemodel-5.1.x
15
+ - gemfiles/Gemfile-activemodel-5.2.x
16
+ matrix:
17
+ exclude:
18
+ - rvm: 2.1.1
19
+ gemfile: gemfiles/Gemfile-activemodel-5.0.x
20
+ - rvm: 2.1.1
21
+ gemfile: gemfiles/Gemfile-activemodel-5.1.x
22
+ - rvm: 2.1.1
23
+ gemfile: gemfiles/Gemfile-activemodel-5.2.x
24
+ - rvm: 2.4.4
25
+ gemfile: gemfiles/Gemfile-activemodel-4.1.x
26
+ - rvm: 2.4.4
27
+ gemfile: gemfiles/Gemfile-activemodel-4.2.x
28
+ - rvm: 2.5.1
29
+ gemfile: gemfiles/Gemfile-activemodel-4.1.x
30
+ - rvm: 2.5.1
31
+ gemfile: gemfiles/Gemfile-activemodel-4.2.x
32
+ sudo: false
@@ -0,0 +1,38 @@
1
+ We love pull requests. Here's a quick guide:
2
+
3
+ 1. Fork the repo.
4
+
5
+ 2. Run the tests. We only take pull requests with passing tests, and it's great
6
+ to know that you have a clean slate: `bundle && rake`
7
+
8
+ 3. Add a test for your change. Only refactoring and documentation changes
9
+ require no new tests. If you are adding functionality or fixing a bug, we need
10
+ a test!
11
+
12
+ 4. Make the test pass.
13
+
14
+ 5. Push to your fork and submit a pull request.
15
+
16
+
17
+ At this point you're waiting on us. We like to at least comment on, if not
18
+ accept, pull requests within three business days (and, typically, one business
19
+ day). We may suggest some changes or improvements or alternatives.
20
+
21
+ Some things that will increase the chance that your pull request is accepted,
22
+ taken straight from the Ruby on Rails guide:
23
+
24
+ * Use Rails idioms and helpers
25
+ * Include tests that fail without your code, and pass with it
26
+ * Update the documentation, the surrounding one, examples elsewhere, guides,
27
+ whatever is affected by your contribution
28
+
29
+ Syntax:
30
+
31
+ * Two spaces, no tabs.
32
+ * No trailing whitespace. Blank lines should not have any space.
33
+ * Prefer &&/|| over and/or.
34
+ * MyClass.my_method(my_arg) not my_method( my_arg ) or my_method my_arg.
35
+ * a = b and not a=b.
36
+ * Follow the conventions you see used in the source already.
37
+
38
+ And in case we didn't emphasize it enough: we love tests!
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source 'https://rubygems.org'
2
+ gemspec
@@ -0,0 +1,24 @@
1
+ Copyright (c) 2018 Tobias Schoknecht
2
+
3
+ Copyright (c) 2013-2017 Georg Leciejewski (Sales King GmbH) & Georg Ledermann for portions of this project copied from sepa_king
4
+
5
+ MIT License
6
+
7
+ Permission is hereby granted, free of charge, to any person obtaining
8
+ a copy of this software and associated documentation files (the
9
+ "Software"), to deal in the Software without restriction, including
10
+ without limitation the rights to use, copy, modify, merge, publish,
11
+ distribute, sublicense, and/or sell copies of the Software, and to
12
+ permit persons to whom the Software is furnished to do so, subject to
13
+ the following conditions:
14
+
15
+ The above copyright notice and this permission notice shall be
16
+ included in all copies or substantial portions of the Software.
17
+
18
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
22
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
23
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
24
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,246 @@
1
+ # Ruby gem for creating SPS XML files
2
+
3
+ [![Build Status](https://travis-ci.org/Barzahlen/sps_king.svg)](http://travis-ci.org/Barzahlen/sps_king)
4
+ [![Gem Version](https://badge.fury.io/rb/sps_king.svg)](http://badge.fury.io/rb/sps_king)
5
+
6
+ sps_king is a Ruby gem which implements **pain** (**Pa**yment **In**itiation) file building for the Swiss Payment Standard, which is a subset of the ISO 20022 standard.
7
+ This is currently implemented in v1.8 for Swiss Credit Transfers (`pain.001.001.03.ch.02`) and v1.2 for Swiss Direct Debits (`pain.008.001.02.ch.03`).
8
+
9
+ It is a forked of [sepa_king](https://github.com/salesking/sepa_king) and therefore heavily inspired by the structure and the API.
10
+
11
+
12
+ ## Requirements
13
+
14
+ * Ruby 2.1 or newer
15
+ * ActiveModel 3.1 or newer
16
+
17
+
18
+ ## Installation
19
+
20
+ gem install sps_king
21
+
22
+
23
+ ## Usage
24
+
25
+ How to create the XML for **Direct Debit Initiation** (in German: "Lastschriften")
26
+
27
+ ```ruby
28
+ # First: Create the main object
29
+ sdd = SPS::DirectDebit.new(
30
+ # Name of the initiating party and creditor, in German: "Auftraggeber"
31
+ # String, max. 70 char
32
+ name: 'Gläubiger GmbH',
33
+
34
+ # Optional: ISR Participant Number for the swiss ISR debit system. Only for Swiss Direct Debits with ISR references
35
+ # Numeric, 9 digits, last digit is checkdigit recursive with modulo 10
36
+ isr_participant_number: '010001456',
37
+
38
+ # International Bank Account Number of the creditor
39
+ # String, max. 34 chars
40
+ iban: 'CH7081232000001998736',
41
+
42
+ # Creditor Identifier, in German: Gläubiger-Identifikationsnummer
43
+ # String, max. 35 chars
44
+ creditor_identifier: 'ABC1W'
45
+ )
46
+
47
+ # Second: Add transactions
48
+ sdd.add_transaction(
49
+ # Name of the debtor, in German: "Zahlungspflichtiger"
50
+ # String, max. 70 char
51
+ name: 'Zahlemann & Söhne GbR',
52
+
53
+ # International Bank Account Number of the debtor's account
54
+ # String, max. 34 chars
55
+ iban: 'CH9804835011062385295',
56
+
57
+ # Amount
58
+ # Number with two decimal digit
59
+ amount: 39.99,
60
+
61
+ # OPTIONAL: Currency, CHF by default (ISO 4217 standard)
62
+ # String, 3 char
63
+ currency: 'CHF',
64
+
65
+ # Instruction Identification, will not be submitted to the debtor
66
+ # String, max. 35 char
67
+ instruction: '12345',
68
+
69
+ # OPTIONAL: End-To-End-Identification, will be submitted to the debtor
70
+ # String, max. 35 char
71
+ reference: 'XYZ/2013-08-ABO/6789',
72
+
73
+ # OPTIONAL: Unstructured remittance information, in German "Verwendungszweck"
74
+ # String, max. 140 char
75
+ remittance_information: 'Vielen Dank für Ihren Einkauf!',
76
+
77
+ # OPTIONAL: Structured remittance information, in German "Strukturierter Verwendungszweck". Required for e.g. Swiss Direct Debits
78
+ # StructuredRemittanceInformation
79
+ structured_remittance_information: SPS::StructuredRemittanceInformation.new(
80
+ # Defines how the reference field should be interpreted for Swiss Direct Debits
81
+ # One of these strings:
82
+ # 'ESR' ("ESR-Referenznummer")
83
+ # 'IPI' ("IPI-Verwendungszweck")
84
+ proprietary: 'ESR',
85
+ # if proprietary is 'ESR': 27 character ISR reference number
86
+ # if proprietary is 'IPI': 20 character IPI remittance
87
+ reference: '609323234234234353453423423'
88
+ ),
89
+
90
+ # Service Level
91
+ # One of these strings:
92
+ # 'CHTA' ("Banklastschrift") - Only for Swiss Direct Debits
93
+ # 'CHDD' ("PostFinance-Lastschrift") - Only for Swiss Direct Debits
94
+ service_level: 'CHTA'
95
+
96
+ # Local instrument, in German "Lastschriftart"
97
+ # One of these strings:
98
+ # 'DDCOR1' ("Basis-Lastschrift") - only for service_level 'CHDD'
99
+ # 'DDB2B' ("Firmen-Lastschrift") - only for service_level 'CHDD'
100
+ # 'LSV+' ("Basis-Lastschrift") - only for service_level 'CHTA'
101
+ # 'BDD' ("Firmen-Lastschrift") - only for service_level 'CHTA'
102
+ local_instrument: 'LSV+',
103
+
104
+ # OPTIONAL: Requested collection date, in German "Fälligkeitsdatum der Lastschrift"
105
+ # Date
106
+ requested_date: Date.new(2013,9,5),
107
+
108
+ # OPTIONAL: Use a different creditor account
109
+ # CreditorAccount
110
+ creditor_account: SPS::CreditorAccount.new(
111
+ name: 'Creditor Inc.',
112
+ iban: 'CH7081232000001998736',
113
+ creditor_identifier: '12312'
114
+ )
115
+
116
+ # Specify the country & address of the debtor (The individually required fields depend on the local legal requirements)
117
+ debtor_address: SPS::DebtorAddress.new(
118
+ country_code: 'CH',
119
+ # Not required if individual fields are used
120
+ address_line1: 'Mustergasse 123a',
121
+ address_line2: '1234 Musterstadt'
122
+ # Not required if address_line1 and address_line2 are used
123
+ street_name: 'Mustergasse',
124
+ post_code: '1234',
125
+ town_name: 'Musterstadt'
126
+ )
127
+ )
128
+ sdd.add_transaction ...
129
+
130
+ # Last: create XML string
131
+ xml_string = sdd.to_xml # Use latest schema pain.008.001.02.ch.03
132
+ ```
133
+
134
+
135
+ How to create the XML for **Credit Transfer Initiation** (in German: "Überweisungen")
136
+
137
+ ```ruby
138
+ # First: Create the main object
139
+ sct = SPS::CreditTransfer.new(
140
+ # Name of the initiating party and debtor, in German: "Auftraggeber"
141
+ # String, max. 70 char
142
+ name: 'Schuldner GmbH',
143
+
144
+ # Business Identifier Code (SWIFT-Code) of the debtor
145
+ # String, 8 or 11 char
146
+ bic: 'RAIFCH22',
147
+
148
+ # International Bank Account Number of the debtor
149
+ # String, max. 34 chars
150
+ iban: 'CH5481230000001998736'
151
+ )
152
+
153
+ # Second: Add transactions
154
+ sct.add_transaction(
155
+ # Name of the creditor, in German: "Zahlungsempfänger"
156
+ # String, max. 70 char
157
+ name: 'Contoso AG',
158
+
159
+ # Business Identifier Code (SWIFT-Code) of the creditor's account
160
+ # String, 8 or 11 char
161
+ bic: 'CRESCHZZ80A',
162
+
163
+ # International Bank Account Number of the creditor's account
164
+ # String, max. 34 chars
165
+ iban: 'CH9300762011623852957',
166
+
167
+ # Amount
168
+ # Number with two decimal digit
169
+ amount: 102.50,
170
+
171
+ # OPTIONAL: Currency, CHF by default (ISO 4217 standard)
172
+ # String, 3 char
173
+ currency: 'CHF',
174
+
175
+ # OPTIONAL: Instruction Identification, will not be submitted to the creditor
176
+ # String, max. 35 char
177
+ instruction: '12345',
178
+
179
+ # OPTIONAL: End-To-End-Identification, will be submitted to the creditor
180
+ # String, max. 35 char
181
+ reference: 'XYZ-1234/123',
182
+
183
+ # OPTIONAL: Unstructured remittance information, in German "Verwendungszweck"
184
+ # String, max. 140 char
185
+ remittance_information: 'Rechnung vom 22.08.2013',
186
+
187
+ # OPTIONAL: Requested execution date, in German "Ausführungstermin"
188
+ # Date
189
+ requested_date: Date.new(2013,9,5),
190
+
191
+ # OPTIONAL: Enables or disables batch booking, in German "Sammelbuchung / Einzelbuchung"
192
+ # True or False
193
+ batch_booking: true,
194
+
195
+ # OPTIONAL: Urgent Payment
196
+ # One of these strings:
197
+ # 'SEPA' ("SEPA-Zahlung")
198
+ # 'URGP' ("Taggleiche Eilüberweisung")
199
+ service_level: 'URGP'
200
+
201
+ # OPTIONAL: Unstructured information to indicate the purpose of the payment
202
+ # String, max. 4 char
203
+ category_purpose: 'SALA',
204
+
205
+ # Specify the country & address of the creditor. The required fields may vary depending on the legal requirements.
206
+ creditor_address: SPS::CreditorAddress.new(
207
+ country_code: 'CH',
208
+ # Not required if individual fields are used
209
+ address_line1: 'Mustergasse 123a',
210
+ address_line2: '1234 Musterstadt'
211
+ # Not required if address_line1 and address_line2 are used
212
+ street_name: 'Mustergasse',
213
+ building_number: '123a',
214
+ post_code: '1234',
215
+ town_name: 'Musterstadt'
216
+ )
217
+ )
218
+ sct.add_transaction ...
219
+
220
+ # Last: create XML string
221
+ xml_string = sct.to_xml # Use latest schema pain.001.001.03.ch.02
222
+ ```
223
+
224
+ ## Changelog
225
+
226
+ https://github.com/Barzahlen/sps_king/releases
227
+
228
+
229
+ ## Contributors
230
+
231
+ https://github.com/Barzahlen/sps_king/graphs/contributors
232
+
233
+
234
+ ## Resources
235
+
236
+ * https://www.six-group.com/interbank-clearing/de/home/standardization/iso-payments/customer-bank/implementation-guidelines.html
237
+ * https://www.lsv.ch/en/home/financial-institutions/direct-debit-procedures/support.html
238
+ * https://www.six-group.com/interbank-clearing/de/home/bank-master-data/inquiry-bc-number.html
239
+
240
+ ## License
241
+
242
+ Released under the MIT license
243
+
244
+ Copyright (c) 2018 Tobias Schoknecht
245
+
246
+ Copyright (c) 2013-2017 Georg Leciejewski (Sales King GmbH) & Georg Ledermann for portions of this project copied from sepa_king
@@ -0,0 +1,6 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task default: :spec
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec path: '..'
4
+
5
+ gem 'activemodel', '~>3.1.12'
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec path: '..'
4
+
5
+ gem 'activemodel', '~>3.2.22.2'
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec path: '..'
4
+
5
+ gem 'activemodel', '~>4.0.13'
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec path: '..'
4
+
5
+ gem 'activemodel', '~>4.1.15'
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec path: '..'
4
+
5
+ gem 'activemodel', '~>4.2.6'
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec path: '..'
4
+
5
+ gem 'activemodel', '~> 5.0.0'
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec path: '..'
4
+
5
+ gem 'activemodel', '~> 5.1.0'
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec path: '..'
4
+
5
+ gem 'activemodel', '~> 5.2.0'
@@ -0,0 +1,1212 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!--
3
+ (C) Copyright 2010, SKSF, www.sksf.ch
4
+ CH Version fuer pain.001 Credit Transfer: xmlns="http://www.iso-payments.ch"
5
+ .ch.: Identification for this CH version
6
+ Last part (.02): Version of this scheme
7
+
8
+ Based on ISO pain.001.001.03 (urn:iso:std:iso:20022:tech:xsd:pain.001.001.03)
9
+
10
+ Anregungen und Fragen zu diesem Dokument können an das jeweilige Finanzinstitut gerichtet werden.
11
+ Allgemeine Anregungen können auch bei der SIX Interbank Clearing AG unter folgender Adresse angebracht werden:
12
+ pm@six-group.com
13
+
14
+ History
15
+ 15.02.2010 V01 initial version, targetNamespace="http://www.six-interbank-clearing.com/de/pain.001.001.03.ch.01.xsd" File:pain.001.001.03.ch.01.xsd
16
+ 30.04.2010 V02 added: element Initiating Party/Contact Details contains Software name and Version of producing application
17
+ changed: name in "PartyIdentification32-CH_Name" mandatory
18
+ -->
19
+ <!-- V01: changed:
20
+ -->
21
+ <xs:schema xmlns="http://www.six-interbank-clearing.com/de/pain.001.001.03.ch.02.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.six-interbank-clearing.com/de/pain.001.001.03.ch.02.xsd" elementFormDefault="qualified">
22
+ <xs:element name="Document" type="Document"/>
23
+ <!-- V01: changed: CH version changes applied -->
24
+ <xs:complexType name="AccountIdentification4Choice-CH">
25
+ <xs:sequence>
26
+ <xs:choice>
27
+ <xs:element name="IBAN" type="IBAN2007Identifier"/>
28
+ <xs:element name="Othr" type="GenericAccountIdentification1-CH"/>
29
+ </xs:choice>
30
+ </xs:sequence>
31
+ </xs:complexType>
32
+ <!-- V01: unused
33
+ <xs:complexType name="AccountSchemeName1Choice">
34
+ <xs:sequence>
35
+ <xs:choice>
36
+ <xs:element name="Cd" type="ExternalAccountIdentification1Code"/>
37
+ <xs:element name="Prtry" type="Max35Text"/>
38
+ </xs:choice>
39
+ </xs:sequence>
40
+ </xs:complexType>
41
+ -->
42
+ <xs:simpleType name="ActiveOrHistoricCurrencyAndAmount_SimpleType">
43
+ <xs:restriction base="xs:decimal">
44
+ <xs:minInclusive value="0"/>
45
+ <xs:fractionDigits value="5"/>
46
+ <xs:totalDigits value="18"/>
47
+ </xs:restriction>
48
+ </xs:simpleType>
49
+ <xs:complexType name="ActiveOrHistoricCurrencyAndAmount">
50
+ <xs:simpleContent>
51
+ <xs:extension base="ActiveOrHistoricCurrencyAndAmount_SimpleType">
52
+ <xs:attribute name="Ccy" type="ActiveOrHistoricCurrencyCode" use="required"/>
53
+ </xs:extension>
54
+ </xs:simpleContent>
55
+ </xs:complexType>
56
+ <xs:simpleType name="ActiveOrHistoricCurrencyCode">
57
+ <xs:restriction base="xs:string">
58
+ <xs:pattern value="[A-Z]{3,3}"/>
59
+ </xs:restriction>
60
+ </xs:simpleType>
61
+ <xs:simpleType name="AddressType2Code">
62
+ <xs:restriction base="xs:string">
63
+ <xs:enumeration value="ADDR"/>
64
+ <xs:enumeration value="PBOX"/>
65
+ <xs:enumeration value="HOME"/>
66
+ <xs:enumeration value="BIZZ"/>
67
+ <xs:enumeration value="MLTO"/>
68
+ <xs:enumeration value="DLVY"/>
69
+ </xs:restriction>
70
+ </xs:simpleType>
71
+ <xs:complexType name="AmountType3Choice">
72
+ <xs:sequence>
73
+ <xs:choice>
74
+ <xs:element name="InstdAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
75
+ <xs:element name="EqvtAmt" type="EquivalentAmount2"/>
76
+ </xs:choice>
77
+ </xs:sequence>
78
+ </xs:complexType>
79
+ <xs:simpleType name="AnyBICIdentifier">
80
+ <xs:restriction base="xs:string">
81
+ <xs:pattern value="[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}"/>
82
+ </xs:restriction>
83
+ </xs:simpleType>
84
+ <!-- V01: unused: type Authorisation1Choice is not allowed or used in CH Version
85
+ <xs:complexType name="Authorisation1Choice">
86
+ <xs:sequence>
87
+ <xs:choice>
88
+ <xs:element name="Cd" type="Authorisation1Code"/>
89
+ <xs:element name="Prtry" type="Max128Text"/>
90
+ </xs:choice>
91
+ </xs:sequence>
92
+ </xs:complexType>
93
+ <xs:simpleType name="Authorisation1Code">
94
+ <xs:restriction base="xs:string">
95
+ <xs:enumeration value="AUTH"/>
96
+ <xs:enumeration value="FDET"/>
97
+ <xs:enumeration value="FSUM"/>
98
+ <xs:enumeration value="ILEV"/>
99
+ </xs:restriction>
100
+ </xs:simpleType>
101
+ -->
102
+ <!-- V01: added: CH version supports only this character set. All text fields use this type -->
103
+ <xs:simpleType name="BasicText-CH">
104
+ <xs:restriction base="xs:string">
105
+ <xs:pattern value="([a-zA-Z0-9\.,;:'\+\-/\(\)?\*\[\]\{\}\\`´~ ]|[!&quot;#%&amp;&lt;&gt;÷=@_$£]|[àáâäçèéêëìíîïñòóôöùúûüýßÀÁÂÄÇÈÉÊËÌÍÎÏÒÓÔÖÙÚÛÜÑ])*"/>
106
+ </xs:restriction>
107
+ </xs:simpleType>
108
+ <!-- V01: added: This is the SWIFT character set -->
109
+ <xs:simpleType name="BasicText-Swift">
110
+ <xs:restriction base="xs:string">
111
+ <xs:pattern value="([A-Za-z0-9]|[+|\?|/|\-|:|\(|\)|\.|,|'|\p{Zs}])*"/>
112
+ </xs:restriction>
113
+ </xs:simpleType>
114
+ <xs:simpleType name="BICIdentifier">
115
+ <xs:restriction base="xs:string">
116
+ <xs:pattern value="[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}"/>
117
+ </xs:restriction>
118
+ </xs:simpleType>
119
+ <xs:simpleType name="BaseOneRate">
120
+ <xs:restriction base="xs:decimal">
121
+ <xs:fractionDigits value="10"/>
122
+ <xs:totalDigits value="11"/>
123
+ </xs:restriction>
124
+ </xs:simpleType>
125
+ <xs:simpleType name="BatchBookingIndicator">
126
+ <xs:restriction base="xs:boolean"/>
127
+ </xs:simpleType>
128
+ <xs:complexType name="BranchAndFinancialInstitutionIdentification4">
129
+ <xs:sequence>
130
+ <xs:element name="FinInstnId" type="FinancialInstitutionIdentification7"/>
131
+ <xs:element name="BrnchId" type="BranchData2" minOccurs="0"/>
132
+ </xs:sequence>
133
+ </xs:complexType>
134
+ <!-- VO1: added: definition of FI where only BIC or Clearing Id is allowed, but no branch data -->
135
+ <xs:complexType name="BranchAndFinancialInstitutionIdentification4-CH_BicOrClrId">
136
+ <xs:sequence>
137
+ <xs:element name="FinInstnId" type="FinancialInstitutionIdentification7-CH_BicOrClrId"/>
138
+ <!-- V01: unused
139
+ <xs:element name="BrnchId" type="BranchData2" minOccurs="0"/>
140
+ -->
141
+ </xs:sequence>
142
+ </xs:complexType>
143
+ <!-- VO1: added: definition of FI where all elements are allowed, but no branch data -->
144
+ <xs:complexType name="BranchAndFinancialInstitutionIdentification4-CH">
145
+ <xs:sequence>
146
+ <xs:element name="FinInstnId" type="FinancialInstitutionIdentification7-CH"/>
147
+ <!-- V01: unused
148
+ <xs:element name="BrnchId" type="BranchData2" minOccurs="0"/>
149
+ -->
150
+ </xs:sequence>
151
+ </xs:complexType>
152
+ <xs:complexType name="BranchData2">
153
+ <xs:sequence>
154
+ <xs:element name="Id" type="Max35Text" minOccurs="0"/>
155
+ <xs:element name="Nm" type="Max140Text" minOccurs="0"/>
156
+ <xs:element name="PstlAdr" type="PostalAddress6" minOccurs="0"/>
157
+ </xs:sequence>
158
+ </xs:complexType>
159
+ <!-- V01: changed: CH version changes applied -->
160
+ <xs:complexType name="CashAccount16-CH_IdAndCurrency">
161
+ <xs:sequence>
162
+ <xs:element name="Id" type="AccountIdentification4Choice-CH"/>
163
+ <xs:element name="Ccy" type="ActiveOrHistoricCurrencyCode" minOccurs="0"/>
164
+ <!-- V01: unused
165
+ <xs:element name="Tp" type="CashAccountType2" minOccurs="0"/>
166
+ <xs:element name="Nm" type="Max70Text" minOccurs="0"/>
167
+ -->
168
+ </xs:sequence>
169
+ </xs:complexType>
170
+ <!-- V01: added -->
171
+ <xs:complexType name="CashAccount16-CH_IdTpCcy">
172
+ <xs:sequence>
173
+ <xs:element name="Id" type="AccountIdentification4Choice-CH"/>
174
+ <xs:element name="Tp" type="CashAccountType2" minOccurs="0"/>
175
+ <xs:element name="Ccy" type="ActiveOrHistoricCurrencyCode" minOccurs="0"/>
176
+ <!-- V01: unused
177
+ <xs:element name="Nm" type="Max70Text" minOccurs="0"/>
178
+ -->
179
+ </xs:sequence>
180
+ </xs:complexType>
181
+ <!-- V01: added -->
182
+ <xs:complexType name="CashAccount16-CH_Id">
183
+ <xs:sequence>
184
+ <xs:element name="Id" type="AccountIdentification4Choice-CH"/>
185
+ <!-- V01: unused
186
+ <xs:element name="Tp" type="CashAccountType2" minOccurs="0"/>
187
+ <xs:element name="Ccy" type="ActiveOrHistoricCurrencyCode" minOccurs="0"/>
188
+ <xs:element name="Nm" type="Max70Text" minOccurs="0"/>
189
+ -->
190
+ </xs:sequence>
191
+ </xs:complexType>
192
+ <xs:complexType name="CashAccountType2">
193
+ <xs:sequence>
194
+ <xs:choice>
195
+ <xs:element name="Cd" type="CashAccountType4Code"/>
196
+ <xs:element name="Prtry" type="Max35Text"/>
197
+ </xs:choice>
198
+ </xs:sequence>
199
+ </xs:complexType>
200
+ <xs:simpleType name="CashAccountType4Code">
201
+ <xs:restriction base="xs:string">
202
+ <xs:enumeration value="CASH"/>
203
+ <xs:enumeration value="CHAR"/>
204
+ <xs:enumeration value="COMM"/>
205
+ <xs:enumeration value="TAXE"/>
206
+ <xs:enumeration value="CISH"/>
207
+ <xs:enumeration value="TRAS"/>
208
+ <xs:enumeration value="SACC"/>
209
+ <xs:enumeration value="CACC"/>
210
+ <xs:enumeration value="SVGS"/>
211
+ <xs:enumeration value="ONDP"/>
212
+ <xs:enumeration value="MGLD"/>
213
+ <xs:enumeration value="NREX"/>
214
+ <xs:enumeration value="MOMA"/>
215
+ <xs:enumeration value="LOAN"/>
216
+ <xs:enumeration value="SLRY"/>
217
+ <xs:enumeration value="ODFT"/>
218
+ </xs:restriction>
219
+ </xs:simpleType>
220
+ <!-- V01: changed: Only element Code allowed in Ch version -->
221
+ <xs:complexType name="CategoryPurpose1-CH_Code">
222
+ <xs:sequence>
223
+ <xs:element name="Cd" type="ExternalCategoryPurpose1Code"/>
224
+ <!-- V01: unused
225
+ <xs:element name="Prtry" type="Max35Text"/>
226
+ -->
227
+ </xs:sequence>
228
+ </xs:complexType>
229
+ <!-- -->
230
+ <xs:simpleType name="ChargeBearerType1Code">
231
+ <xs:restriction base="xs:string">
232
+ <xs:enumeration value="DEBT"/>
233
+ <xs:enumeration value="CRED"/>
234
+ <xs:enumeration value="SHAR"/>
235
+ <xs:enumeration value="SLEV"/>
236
+ </xs:restriction>
237
+ </xs:simpleType>
238
+ <!-- V01: unused
239
+ <xs:complexType name="Cheque6">
240
+ <xs:sequence>
241
+ <xs:element name="ChqTp" type="ChequeType2Code" minOccurs="0"/>
242
+ <xs:element name="ChqNb" type="Max35Text" minOccurs="0"/>
243
+ <xs:element name="ChqFr" type="NameAndAddress10" minOccurs="0"/>
244
+ <xs:element name="DlvryMtd" type="ChequeDeliveryMethod1Choice" minOccurs="0"/>
245
+ <xs:element name="DlvrTo" type="NameAndAddress10" minOccurs="0"/>
246
+ <xs:element name="InstrPrty" type="Priority2Code" minOccurs="0"/>
247
+ <xs:element name="ChqMtrtyDt" type="ISODate" minOccurs="0"/>
248
+ <xs:element name="FrmsCd" type="Max35Text" minOccurs="0"/>
249
+ <xs:element name="MemoFld" type="Max35Text" minOccurs="0" maxOccurs="2"/>
250
+ <xs:element name="RgnlClrZone" type="Max35Text" minOccurs="0"/>
251
+ <xs:element name="PrtLctn" type="Max35Text" minOccurs="0"/>
252
+ </xs:sequence>
253
+ </xs:complexType>
254
+ -->
255
+ <!-- V01: added -->
256
+ <xs:complexType name="Cheque6-CH">
257
+ <xs:sequence>
258
+ <xs:element name="ChqTp" type="ChequeType2Code" minOccurs="0"/>
259
+ <xs:element name="DlvryMtd" type="ChequeDeliveryMethod1Choice" minOccurs="0"/>
260
+ <!-- V01: unused
261
+ <xs:element name="ChqNb" type="Max35Text" minOccurs="0"/>
262
+ <xs:element name="ChqFr" type="NameAndAddress10" minOccurs="0"/>
263
+ <xs:element name="DlvrTo" type="NameAndAddress10" minOccurs="0"/>
264
+ <xs:element name="InstrPrty" type="Priority2Code" minOccurs="0"/>
265
+ <xs:element name="ChqMtrtyDt" type="ISODate" minOccurs="0"/>
266
+ <xs:element name="FrmsCd" type="Max35Text" minOccurs="0"/>
267
+ <xs:element name="MemoFld" type="Max35Text" minOccurs="0" maxOccurs="2"/>
268
+ <xs:element name="RgnlClrZone" type="Max35Text" minOccurs="0"/>
269
+ <xs:element name="PrtLctn" type="Max35Text" minOccurs="0"/>
270
+ -->
271
+ </xs:sequence>
272
+ </xs:complexType>
273
+ <xs:simpleType name="ChequeDelivery1Code">
274
+ <xs:restriction base="xs:string">
275
+ <xs:enumeration value="MLDB"/>
276
+ <xs:enumeration value="MLCD"/>
277
+ <xs:enumeration value="MLFA"/>
278
+ <xs:enumeration value="CRDB"/>
279
+ <xs:enumeration value="CRCD"/>
280
+ <xs:enumeration value="CRFA"/>
281
+ <xs:enumeration value="PUDB"/>
282
+ <xs:enumeration value="PUCD"/>
283
+ <xs:enumeration value="PUFA"/>
284
+ <xs:enumeration value="RGDB"/>
285
+ <xs:enumeration value="RGCD"/>
286
+ <xs:enumeration value="RGFA"/>
287
+ </xs:restriction>
288
+ </xs:simpleType>
289
+ <xs:complexType name="ChequeDeliveryMethod1Choice">
290
+ <xs:sequence>
291
+ <xs:choice>
292
+ <xs:element name="Cd" type="ChequeDelivery1Code"/>
293
+ <xs:element name="Prtry" type="Max35Text"/>
294
+ </xs:choice>
295
+ </xs:sequence>
296
+ </xs:complexType>
297
+ <xs:simpleType name="ChequeType2Code">
298
+ <xs:restriction base="xs:string">
299
+ <xs:enumeration value="CCHQ"/>
300
+ <xs:enumeration value="CCCH"/>
301
+ <xs:enumeration value="BCHQ"/>
302
+ <xs:enumeration value="DRFT"/>
303
+ <xs:enumeration value="ELDR"/>
304
+ </xs:restriction>
305
+ </xs:simpleType>
306
+ <xs:complexType name="ClearingSystemIdentification2Choice">
307
+ <xs:sequence>
308
+ <xs:choice>
309
+ <xs:element name="Cd" type="ExternalClearingSystemIdentification1Code"/>
310
+ <xs:element name="Prtry" type="Max35Text"/>
311
+ </xs:choice>
312
+ </xs:sequence>
313
+ </xs:complexType>
314
+ <xs:complexType name="ClearingSystemMemberIdentification2">
315
+ <xs:sequence>
316
+ <xs:element name="ClrSysId" type="ClearingSystemIdentification2Choice" minOccurs="0"/>
317
+ <xs:element name="MmbId" type="Max35Text"/>
318
+ </xs:sequence>
319
+ </xs:complexType>
320
+ <xs:complexType name="ContactDetails2">
321
+ <xs:sequence>
322
+ <xs:element name="NmPrfx" type="NamePrefix1Code" minOccurs="0"/>
323
+ <xs:element name="Nm" type="Max140Text" minOccurs="0"/>
324
+ <xs:element name="PhneNb" type="PhoneNumber" minOccurs="0"/>
325
+ <xs:element name="MobNb" type="PhoneNumber" minOccurs="0"/>
326
+ <xs:element name="FaxNb" type="PhoneNumber" minOccurs="0"/>
327
+ <xs:element name="EmailAdr" type="Max2048Text" minOccurs="0"/>
328
+ <xs:element name="Othr" type="Max35Text" minOccurs="0"/>
329
+ </xs:sequence>
330
+ </xs:complexType>
331
+ <!-- V02: changed: include Contact Details for Software name and version -->
332
+ <xs:complexType name="ContactDetails2-CH">
333
+ <xs:sequence>
334
+ <xs:element name="Nm" type="Max70Text" minOccurs="0"/>
335
+ <xs:element name="Othr" type="Max35Text" minOccurs="0"/>
336
+ <!-- V02: unused
337
+ <xs:element name="NmPrfx" type="NamePrefix1Code" minOccurs="0"/>
338
+ <xs:element name="PhneNb" type="PhoneNumber" minOccurs="0"/>
339
+ <xs:element name="MobNb" type="PhoneNumber" minOccurs="0"/>
340
+ <xs:element name="FaxNb" type="PhoneNumber" minOccurs="0"/>
341
+ <xs:element name="EmailAdr" type="Max2048Text" minOccurs="0"/>
342
+ -->
343
+ </xs:sequence>
344
+ </xs:complexType>
345
+ <xs:simpleType name="CountryCode">
346
+ <xs:restriction base="xs:string">
347
+ <xs:pattern value="[A-Z]{2,2}"/>
348
+ </xs:restriction>
349
+ </xs:simpleType>
350
+ <xs:simpleType name="CreditDebitCode">
351
+ <xs:restriction base="xs:string">
352
+ <xs:enumeration value="CRDT"/>
353
+ <xs:enumeration value="DBIT"/>
354
+ </xs:restriction>
355
+ </xs:simpleType>
356
+ <xs:complexType name="CreditTransferTransactionInformation10-CH">
357
+ <xs:sequence>
358
+ <xs:element name="PmtId" type="PaymentIdentification1"/>
359
+ <xs:element name="PmtTpInf" type="PaymentTypeInformation19-CH" minOccurs="0"/>
360
+ <xs:element name="Amt" type="AmountType3Choice"/>
361
+ <xs:element name="XchgRateInf" type="ExchangeRateInformation1" minOccurs="0"/>
362
+ <xs:element name="ChrgBr" type="ChargeBearerType1Code" minOccurs="0"/>
363
+ <xs:element name="ChqInstr" type="Cheque6-CH" minOccurs="0"/>
364
+ <xs:element name="UltmtDbtr" type="PartyIdentification32-CH" minOccurs="0"/>
365
+ <xs:element name="IntrmyAgt1" type="BranchAndFinancialInstitutionIdentification4-CH" minOccurs="0"/>
366
+ <xs:element name="CdtrAgt" type="BranchAndFinancialInstitutionIdentification4-CH" minOccurs="0"/>
367
+ <!-- V02: changed: element Name mandatory -->
368
+ <xs:element name="Cdtr" type="PartyIdentification32-CH_Name" minOccurs="0"/>
369
+ <xs:element name="CdtrAcct" type="CashAccount16-CH_Id" minOccurs="0"/>
370
+ <!-- V02: changed: element Name mandatory -->
371
+ <xs:element name="UltmtCdtr" type="PartyIdentification32-CH_Name" minOccurs="0"/>
372
+ <xs:element name="InstrForCdtrAgt" type="InstructionForCreditorAgent1" minOccurs="0" maxOccurs="unbounded"/>
373
+ <xs:element name="InstrForDbtrAgt" type="Max140Text" minOccurs="0"/>
374
+ <xs:element name="Purp" type="Purpose2-CH_Code" minOccurs="0"/>
375
+ <xs:element name="RgltryRptg" type="RegulatoryReporting3" minOccurs="0" maxOccurs="10"/>
376
+ <xs:element name="RmtInf" type="RemittanceInformation5-CH" minOccurs="0"/>
377
+ <!-- V01: usused
378
+ <xs:element name="IntrmyAgt1Acct" type="CashAccount16" minOccurs="0"/>
379
+ <xs:element name="IntrmyAgt2" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/>
380
+ <xs:element name="IntrmyAgt2Acct" type="CashAccount16" minOccurs="0"/>
381
+ <xs:element name="IntrmyAgt3" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/>
382
+ <xs:element name="IntrmyAgt3Acct" type="CashAccount16" minOccurs="0"/>
383
+ <xs:element name="CdtrAgtAcct" type="CashAccount16-CH_Id" minOccurs="0"/>
384
+ <xs:element name="Tax" type="TaxInformation3" minOccurs="0"/>
385
+ <xs:element name="RltdRmtInf" type="RemittanceLocation2" minOccurs="0" maxOccurs="10"/>
386
+ -->
387
+ </xs:sequence>
388
+ </xs:complexType>
389
+ <xs:complexType name="CreditorReferenceInformation2">
390
+ <xs:sequence>
391
+ <xs:element name="Tp" type="CreditorReferenceType2" minOccurs="0"/>
392
+ <xs:element name="Ref" type="Max35Text" minOccurs="0"/>
393
+ </xs:sequence>
394
+ </xs:complexType>
395
+ <xs:complexType name="CreditorReferenceType1Choice">
396
+ <xs:sequence>
397
+ <xs:choice>
398
+ <xs:element name="Cd" type="DocumentType3Code"/>
399
+ <xs:element name="Prtry" type="Max35Text"/>
400
+ </xs:choice>
401
+ </xs:sequence>
402
+ </xs:complexType>
403
+ <xs:complexType name="CreditorReferenceType2">
404
+ <xs:sequence>
405
+ <xs:element name="CdOrPrtry" type="CreditorReferenceType1Choice"/>
406
+ <xs:element name="Issr" type="Max35Text" minOccurs="0"/>
407
+ </xs:sequence>
408
+ </xs:complexType>
409
+ <xs:complexType name="CustomerCreditTransferInitiationV03-CH">
410
+ <xs:sequence>
411
+ <xs:element name="GrpHdr" type="GroupHeader32-CH"/>
412
+ <xs:element name="PmtInf" type="PaymentInstructionInformation3-CH" maxOccurs="unbounded"/>
413
+ </xs:sequence>
414
+ </xs:complexType>
415
+ <xs:complexType name="DateAndPlaceOfBirth">
416
+ <xs:sequence>
417
+ <xs:element name="BirthDt" type="ISODate"/>
418
+ <xs:element name="PrvcOfBirth" type="Max35Text" minOccurs="0"/>
419
+ <xs:element name="CityOfBirth" type="Max35Text"/>
420
+ <xs:element name="CtryOfBirth" type="CountryCode"/>
421
+ </xs:sequence>
422
+ </xs:complexType>
423
+ <!-- V01: unused
424
+ <xs:complexType name="DatePeriodDetails">
425
+ <xs:sequence>
426
+ <xs:element name="FrDt" type="ISODate"/>
427
+ <xs:element name="ToDt" type="ISODate"/>
428
+ </xs:sequence>
429
+ </xs:complexType>
430
+ -->
431
+ <xs:simpleType name="DecimalNumber">
432
+ <xs:restriction base="xs:decimal">
433
+ <xs:fractionDigits value="17"/>
434
+ <xs:totalDigits value="18"/>
435
+ </xs:restriction>
436
+ </xs:simpleType>
437
+ <xs:complexType name="Document">
438
+ <xs:sequence>
439
+ <xs:element name="CstmrCdtTrfInitn" type="CustomerCreditTransferInitiationV03-CH"/>
440
+ </xs:sequence>
441
+ </xs:complexType>
442
+ <xs:complexType name="DocumentAdjustment1">
443
+ <xs:sequence>
444
+ <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/>
445
+ <xs:element name="CdtDbtInd" type="CreditDebitCode" minOccurs="0"/>
446
+ <xs:element name="Rsn" type="Max4Text" minOccurs="0"/>
447
+ <xs:element name="AddtlInf" type="Max140Text" minOccurs="0"/>
448
+ </xs:sequence>
449
+ </xs:complexType>
450
+ <xs:simpleType name="DocumentType3Code">
451
+ <xs:restriction base="xs:string">
452
+ <xs:enumeration value="RADM"/>
453
+ <xs:enumeration value="RPIN"/>
454
+ <xs:enumeration value="FXDR"/>
455
+ <xs:enumeration value="DISP"/>
456
+ <xs:enumeration value="PUOR"/>
457
+ <xs:enumeration value="SCOR"/>
458
+ </xs:restriction>
459
+ </xs:simpleType>
460
+ <xs:simpleType name="DocumentType5Code">
461
+ <xs:restriction base="xs:string">
462
+ <xs:enumeration value="MSIN"/>
463
+ <xs:enumeration value="CNFA"/>
464
+ <xs:enumeration value="DNFA"/>
465
+ <xs:enumeration value="CINV"/>
466
+ <xs:enumeration value="CREN"/>
467
+ <xs:enumeration value="DEBN"/>
468
+ <xs:enumeration value="HIRI"/>
469
+ <xs:enumeration value="SBIN"/>
470
+ <xs:enumeration value="CMCN"/>
471
+ <xs:enumeration value="SOAC"/>
472
+ <xs:enumeration value="DISP"/>
473
+ <xs:enumeration value="BOLD"/>
474
+ <xs:enumeration value="VCHR"/>
475
+ <xs:enumeration value="AROI"/>
476
+ <xs:enumeration value="TSUT"/>
477
+ </xs:restriction>
478
+ </xs:simpleType>
479
+ <xs:complexType name="EquivalentAmount2">
480
+ <xs:sequence>
481
+ <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/>
482
+ <xs:element name="CcyOfTrf" type="ActiveOrHistoricCurrencyCode"/>
483
+ </xs:sequence>
484
+ </xs:complexType>
485
+ <xs:complexType name="ExchangeRateInformation1">
486
+ <xs:sequence>
487
+ <xs:element name="XchgRate" type="BaseOneRate" minOccurs="0"/>
488
+ <xs:element name="RateTp" type="ExchangeRateType1Code" minOccurs="0"/>
489
+ <xs:element name="CtrctId" type="Max35Text" minOccurs="0"/>
490
+ </xs:sequence>
491
+ </xs:complexType>
492
+ <xs:simpleType name="ExchangeRateType1Code">
493
+ <xs:restriction base="xs:string">
494
+ <xs:enumeration value="SPOT"/>
495
+ <xs:enumeration value="SALE"/>
496
+ <xs:enumeration value="AGRD"/>
497
+ </xs:restriction>
498
+ </xs:simpleType>
499
+ <!-- V01: unused:
500
+ <xs:simpleType name="ExternalAccountIdentification1Code">
501
+ <xs:restriction base="xs:string">
502
+ <xs:minLength value="1"/>
503
+ <xs:maxLength value="4"/>
504
+ </xs:restriction>
505
+ </xs:simpleType>
506
+ -->
507
+ <xs:simpleType name="ExternalCategoryPurpose1Code">
508
+ <xs:restriction base="xs:string">
509
+ <xs:minLength value="1"/>
510
+ <xs:maxLength value="4"/>
511
+ </xs:restriction>
512
+ </xs:simpleType>
513
+ <xs:simpleType name="ExternalClearingSystemIdentification1Code">
514
+ <xs:restriction base="xs:string">
515
+ <xs:minLength value="1"/>
516
+ <xs:maxLength value="5"/>
517
+ </xs:restriction>
518
+ </xs:simpleType>
519
+ <xs:simpleType name="ExternalFinancialInstitutionIdentification1Code">
520
+ <xs:restriction base="xs:string">
521
+ <xs:minLength value="1"/>
522
+ <xs:maxLength value="4"/>
523
+ </xs:restriction>
524
+ </xs:simpleType>
525
+ <xs:simpleType name="ExternalLocalInstrument1Code">
526
+ <xs:restriction base="xs:string">
527
+ <xs:minLength value="1"/>
528
+ <xs:maxLength value="35"/>
529
+ </xs:restriction>
530
+ </xs:simpleType>
531
+ <xs:simpleType name="ExternalOrganisationIdentification1Code">
532
+ <xs:restriction base="xs:string">
533
+ <xs:minLength value="1"/>
534
+ <xs:maxLength value="4"/>
535
+ </xs:restriction>
536
+ </xs:simpleType>
537
+ <xs:simpleType name="ExternalPersonIdentification1Code">
538
+ <xs:restriction base="xs:string">
539
+ <xs:minLength value="1"/>
540
+ <xs:maxLength value="4"/>
541
+ </xs:restriction>
542
+ </xs:simpleType>
543
+ <xs:simpleType name="ExternalPurpose1Code">
544
+ <xs:restriction base="xs:string">
545
+ <xs:minLength value="1"/>
546
+ <xs:maxLength value="4"/>
547
+ </xs:restriction>
548
+ </xs:simpleType>
549
+ <xs:simpleType name="ExternalServiceLevel1Code">
550
+ <xs:restriction base="xs:string">
551
+ <xs:minLength value="1"/>
552
+ <xs:maxLength value="4"/>
553
+ </xs:restriction>
554
+ </xs:simpleType>
555
+ <xs:complexType name="FinancialIdentificationSchemeName1Choice">
556
+ <xs:sequence>
557
+ <xs:choice>
558
+ <xs:element name="Cd" type="ExternalFinancialInstitutionIdentification1Code"/>
559
+ <xs:element name="Prtry" type="Max35Text"/>
560
+ </xs:choice>
561
+ </xs:sequence>
562
+ </xs:complexType>
563
+ <xs:complexType name="FinancialInstitutionIdentification7">
564
+ <xs:sequence>
565
+ <xs:element name="BIC" type="BICIdentifier" minOccurs="0"/>
566
+ <xs:element name="ClrSysMmbId" type="ClearingSystemMemberIdentification2" minOccurs="0"/>
567
+ <xs:element name="Nm" type="Max140Text" minOccurs="0"/>
568
+ <xs:element name="PstlAdr" type="PostalAddress6" minOccurs="0"/>
569
+ <xs:element name="Othr" type="GenericFinancialIdentification1" minOccurs="0"/>
570
+ </xs:sequence>
571
+ </xs:complexType>
572
+ <!-- V01: added: definition of FI where only BIC or Clearing Id is allowed -->
573
+ <xs:complexType name="FinancialInstitutionIdentification7-CH_BicOrClrId">
574
+ <xs:sequence>
575
+ <xs:element name="BIC" type="BICIdentifier" minOccurs="0"/>
576
+ <xs:element name="ClrSysMmbId" type="ClearingSystemMemberIdentification2" minOccurs="0"/>
577
+ <!-- V01: unused
578
+ <xs:element name="Nm" type="Max140Text" minOccurs="0"/>
579
+ <xs:element name="PstlAdr" type="PostalAddress6" minOccurs="0"/>
580
+ <xs:element name="Othr" type="GenericFinancialIdentification1" minOccurs="0"/>
581
+ -->
582
+ </xs:sequence>
583
+ </xs:complexType>
584
+ <!-- V01: added: definition of FI where all elements are allowed (in a CH version) -->
585
+ <xs:complexType name="FinancialInstitutionIdentification7-CH">
586
+ <xs:sequence>
587
+ <xs:element name="BIC" type="BICIdentifier" minOccurs="0"/>
588
+ <xs:element name="ClrSysMmbId" type="ClearingSystemMemberIdentification2" minOccurs="0"/>
589
+ <xs:element name="Nm" type="Max70Text" minOccurs="0"/>
590
+ <xs:element name="PstlAdr" type="PostalAddress6-CH" minOccurs="0"/>
591
+ <xs:element name="Othr" type="GenericFinancialIdentification1-CH" minOccurs="0"/>
592
+ <!-- V01: unused
593
+ -->
594
+ </xs:sequence>
595
+ </xs:complexType>
596
+ <!-- V01: changed: only element ID allowed in CH version -->
597
+ <xs:complexType name="GenericAccountIdentification1-CH">
598
+ <xs:sequence>
599
+ <xs:element name="Id" type="Max34Text"/>
600
+ <!-- V01: unused
601
+ <xs:element name="SchmeNm" type="AccountSchemeName1Choice" minOccurs="0"/>
602
+ <xs:element name="Issr" type="Max35Text" minOccurs="0"/>
603
+ -->
604
+ </xs:sequence>
605
+ </xs:complexType>
606
+ <xs:complexType name="GenericFinancialIdentification1">
607
+ <xs:sequence>
608
+ <xs:element name="Id" type="Max35Text"/>
609
+ <xs:element name="SchmeNm" type="FinancialIdentificationSchemeName1Choice" minOccurs="0"/>
610
+ <xs:element name="Issr" type="Max35Text" minOccurs="0"/>
611
+ </xs:sequence>
612
+ </xs:complexType>
613
+ <!-- V01: added: only element Id allowed in CH version -->
614
+ <xs:complexType name="GenericFinancialIdentification1-CH">
615
+ <xs:sequence>
616
+ <xs:element name="Id" type="Max35Text"/>
617
+ <!-- V01: unused
618
+ <xs:element name="SchmeNm" type="FinancialIdentificationSchemeName1Choice" minOccurs="0"/>
619
+ <xs:element name="Issr" type="Max35Text" minOccurs="0"/>
620
+ -->
621
+ </xs:sequence>
622
+ </xs:complexType>
623
+ <xs:complexType name="GenericOrganisationIdentification1">
624
+ <xs:sequence>
625
+ <xs:element name="Id" type="Max35Text"/>
626
+ <xs:element name="SchmeNm" type="OrganisationIdentificationSchemeName1Choice" minOccurs="0"/>
627
+ <xs:element name="Issr" type="Max35Text" minOccurs="0"/>
628
+ </xs:sequence>
629
+ </xs:complexType>
630
+ <xs:complexType name="GenericPersonIdentification1">
631
+ <xs:sequence>
632
+ <xs:element name="Id" type="Max35Text"/>
633
+ <xs:element name="SchmeNm" type="PersonIdentificationSchemeName1Choice" minOccurs="0"/>
634
+ <xs:element name="Issr" type="Max35Text" minOccurs="0"/>
635
+ </xs:sequence>
636
+ </xs:complexType>
637
+ <xs:complexType name="GroupHeader32-CH">
638
+ <xs:sequence>
639
+ <xs:element name="MsgId" type="Max35Text-Swift"/>
640
+ <xs:element name="CreDtTm" type="ISODateTime"/>
641
+ <xs:element name="NbOfTxs" type="Max15NumericText"/>
642
+ <xs:element name="CtrlSum" type="DecimalNumber" minOccurs="0"/>
643
+ <!-- V02: changed: include Contact Details for Software name and version -->
644
+ <xs:element name="InitgPty" type="PartyIdentification32-CH_NameAndId"/>
645
+ <xs:element name="FwdgAgt" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/>
646
+ <!-- V01: unused: type Authorisation1Choice is not allowed or used in CH Version
647
+ <xs:element name="Authstn" type="Authorisation1Choice" minOccurs="0" maxOccurs="2"/>
648
+ -->
649
+ <!-- V01: changed: Initiating party only to contain name and id in CH version
650
+ <xs:element name="InitgPty" type="PartyIdentification32"/>
651
+ -->
652
+ </xs:sequence>
653
+ </xs:complexType>
654
+ <xs:simpleType name="IBAN2007Identifier">
655
+ <xs:restriction base="xs:string">
656
+ <xs:pattern value="[A-Z]{2,2}[0-9]{2,2}[a-zA-Z0-9]{1,30}"/>
657
+ </xs:restriction>
658
+ </xs:simpleType>
659
+ <xs:simpleType name="ISODate">
660
+ <xs:restriction base="xs:date"/>
661
+ </xs:simpleType>
662
+ <xs:simpleType name="ISODateTime">
663
+ <xs:restriction base="xs:dateTime"/>
664
+ </xs:simpleType>
665
+ <xs:simpleType name="Instruction3Code">
666
+ <xs:restriction base="xs:string">
667
+ <xs:enumeration value="CHQB"/>
668
+ <xs:enumeration value="HOLD"/>
669
+ <xs:enumeration value="PHOB"/>
670
+ <xs:enumeration value="TELB"/>
671
+ </xs:restriction>
672
+ </xs:simpleType>
673
+ <xs:complexType name="InstructionForCreditorAgent1">
674
+ <xs:sequence>
675
+ <xs:element name="Cd" type="Instruction3Code" minOccurs="0"/>
676
+ <xs:element name="InstrInf" type="Max140Text" minOccurs="0"/>
677
+ </xs:sequence>
678
+ </xs:complexType>
679
+ <xs:complexType name="LocalInstrument2Choice">
680
+ <xs:sequence>
681
+ <xs:choice>
682
+ <xs:element name="Cd" type="ExternalLocalInstrument1Code"/>
683
+ <xs:element name="Prtry" type="Max35Text"/>
684
+ </xs:choice>
685
+ </xs:sequence>
686
+ </xs:complexType>
687
+ <xs:simpleType name="Max10Text">
688
+ <xs:restriction base="BasicText-CH">
689
+ <xs:minLength value="1"/>
690
+ <xs:maxLength value="10"/>
691
+ </xs:restriction>
692
+ </xs:simpleType>
693
+ <!-- V01: unused
694
+ <xs:simpleType name="Max128Text">
695
+ <xs:restriction base="BasicText-CH">
696
+ <xs:minLength value="1"/>
697
+ <xs:maxLength value="128"/>
698
+ </xs:restriction>
699
+ </xs:simpleType>
700
+ -->
701
+ <xs:simpleType name="Max140Text">
702
+ <xs:restriction base="BasicText-CH">
703
+ <xs:minLength value="1"/>
704
+ <xs:maxLength value="140"/>
705
+ </xs:restriction>
706
+ </xs:simpleType>
707
+ <xs:simpleType name="Max15NumericText">
708
+ <xs:restriction base="xs:string">
709
+ <xs:pattern value="[0-9]{1,15}"/>
710
+ </xs:restriction>
711
+ </xs:simpleType>
712
+ <xs:simpleType name="Max16Text">
713
+ <xs:restriction base="BasicText-CH">
714
+ <xs:minLength value="1"/>
715
+ <xs:maxLength value="16"/>
716
+ </xs:restriction>
717
+ </xs:simpleType>
718
+ <xs:simpleType name="Max2048Text">
719
+ <xs:restriction base="BasicText-CH">
720
+ <xs:minLength value="1"/>
721
+ <xs:maxLength value="2048"/>
722
+ </xs:restriction>
723
+ </xs:simpleType>
724
+ <xs:simpleType name="Max34Text">
725
+ <xs:restriction base="BasicText-CH">
726
+ <xs:minLength value="1"/>
727
+ <xs:maxLength value="34"/>
728
+ </xs:restriction>
729
+ </xs:simpleType>
730
+ <xs:simpleType name="Max35Text">
731
+ <xs:restriction base="BasicText-CH">
732
+ <xs:minLength value="1"/>
733
+ <xs:maxLength value="35"/>
734
+ </xs:restriction>
735
+ </xs:simpleType>
736
+ <!-- V01: added: replacement type for Max35Text where only the Swift character set is allowed -->
737
+ <xs:simpleType name="Max35Text-Swift">
738
+ <xs:restriction base="BasicText-Swift">
739
+ <xs:minLength value="1"/>
740
+ <xs:maxLength value="35"/>
741
+ </xs:restriction>
742
+ </xs:simpleType>
743
+ <xs:simpleType name="Max4Text">
744
+ <xs:restriction base="BasicText-CH">
745
+ <xs:minLength value="1"/>
746
+ <xs:maxLength value="4"/>
747
+ </xs:restriction>
748
+ </xs:simpleType>
749
+ <xs:simpleType name="Max70Text">
750
+ <xs:restriction base="BasicText-CH">
751
+ <xs:minLength value="1"/>
752
+ <xs:maxLength value="70"/>
753
+ </xs:restriction>
754
+ </xs:simpleType>
755
+ <!-- V01: unused
756
+ <xs:complexType name="NameAndAddress10">
757
+ <xs:sequence>
758
+ <xs:element name="Nm" type="Max140Text"/>
759
+ <xs:element name="Adr" type="PostalAddress6"/>
760
+ </xs:sequence>
761
+ </xs:complexType>
762
+ -->
763
+ <!-- V01: added: CH-Version: unused (prepared for later usage)
764
+ <xs:complexType name="NameAndAddress10-CH">
765
+ <xs:sequence>
766
+ <xs:element name="Nm" type="Max70Text"/>
767
+ <xs:element name="Adr" type="PostalAddress6-CH"/>
768
+ </xs:sequence>
769
+ </xs:complexType>
770
+ -->
771
+ <xs:simpleType name="NamePrefix1Code">
772
+ <xs:restriction base="xs:string">
773
+ <xs:enumeration value="DOCT"/>
774
+ <xs:enumeration value="MIST"/>
775
+ <xs:enumeration value="MISS"/>
776
+ <xs:enumeration value="MADM"/>
777
+ </xs:restriction>
778
+ </xs:simpleType>
779
+ <!-- V01: unused
780
+ <xs:simpleType name="Number">
781
+ <xs:restriction base="xs:decimal">
782
+ <xs:fractionDigits value="0"/>
783
+ <xs:totalDigits value="18"/>
784
+ </xs:restriction>
785
+ </xs:simpleType>
786
+ -->
787
+ <xs:complexType name="OrganisationIdentification4">
788
+ <xs:sequence>
789
+ <xs:element name="BICOrBEI" type="AnyBICIdentifier" minOccurs="0"/>
790
+ <xs:element name="Othr" type="GenericOrganisationIdentification1" minOccurs="0" maxOccurs="unbounded"/>
791
+ </xs:sequence>
792
+ </xs:complexType>
793
+ <!-- V01: added: only one occurance of element other allowed in CH version -->
794
+ <xs:complexType name="OrganisationIdentification4-CH">
795
+ <xs:sequence>
796
+ <xs:element name="BICOrBEI" type="AnyBICIdentifier" minOccurs="0"/>
797
+ <xs:element name="Othr" type="GenericOrganisationIdentification1" minOccurs="0"/>
798
+ </xs:sequence>
799
+ </xs:complexType>
800
+ <xs:complexType name="OrganisationIdentificationSchemeName1Choice">
801
+ <xs:sequence>
802
+ <xs:choice>
803
+ <xs:element name="Cd" type="ExternalOrganisationIdentification1Code"/>
804
+ <xs:element name="Prtry" type="Max35Text"/>
805
+ </xs:choice>
806
+ </xs:sequence>
807
+ </xs:complexType>
808
+ <xs:complexType name="Party6Choice">
809
+ <xs:sequence>
810
+ <xs:choice>
811
+ <xs:element name="OrgId" type="OrganisationIdentification4"/>
812
+ <xs:element name="PrvtId" type="PersonIdentification5"/>
813
+ </xs:choice>
814
+ </xs:sequence>
815
+ </xs:complexType>
816
+ <!-- V01: added: -->
817
+ <xs:complexType name="Party6Choice-CH">
818
+ <xs:sequence>
819
+ <xs:choice>
820
+ <xs:element name="OrgId" type="OrganisationIdentification4-CH"/>
821
+ <xs:element name="PrvtId" type="PersonIdentification5-CH"/>
822
+ </xs:choice>
823
+ </xs:sequence>
824
+ </xs:complexType>
825
+ <xs:complexType name="PartyIdentification32">
826
+ <xs:sequence>
827
+ <xs:element name="Nm" type="Max140Text" minOccurs="0"/>
828
+ <xs:element name="PstlAdr" type="PostalAddress6" minOccurs="0"/>
829
+ <xs:element name="Id" type="Party6Choice" minOccurs="0"/>
830
+ <xs:element name="CtryOfRes" type="CountryCode" minOccurs="0"/>
831
+ <xs:element name="CtctDtls" type="ContactDetails2" minOccurs="0"/>
832
+ </xs:sequence>
833
+ </xs:complexType>
834
+ <!-- V01: added: replacement type for PartyIdentification8 where only elements Name and Id may be used -->
835
+ <xs:complexType name="PartyIdentification32-CH_NameAndId">
836
+ <xs:sequence>
837
+ <xs:element name="Nm" type="Max70Text" minOccurs="0"/>
838
+ <xs:element name="Id" type="Party6Choice-CH" minOccurs="0"/>
839
+ <!-- V02: added: Contact Details for Software name and version -->
840
+ <xs:element name="CtctDtls" type="ContactDetails2-CH" minOccurs="0"/>
841
+ </xs:sequence>
842
+ </xs:complexType>
843
+ <!-- V01: added -->
844
+ <xs:complexType name="PartyIdentification32-CH">
845
+ <xs:sequence>
846
+ <xs:element name="Nm" type="Max70Text" minOccurs="0"/>
847
+ <xs:element name="PstlAdr" type="PostalAddress6-CH" minOccurs="0"/>
848
+ <xs:element name="Id" type="Party6Choice-CH" minOccurs="0"/>
849
+ <!-- changed -->
850
+ <!-- unused
851
+ <xs:element name="CtryOfRes" type="CountryCode" minOccurs="0"/>
852
+ -->
853
+ </xs:sequence>
854
+ </xs:complexType>
855
+ <!-- V02: changed: element Name mandatory -->
856
+ <xs:complexType name="PartyIdentification32-CH_Name">
857
+ <xs:sequence>
858
+ <xs:element name="Nm" type="Max70Text"/>
859
+ <xs:element name="PstlAdr" type="PostalAddress6-CH" minOccurs="0"/>
860
+ <xs:element name="Id" type="Party6Choice-CH" minOccurs="0"/>
861
+ <!-- changed -->
862
+ <!-- unused
863
+ <xs:element name="CtryOfRes" type="CountryCode" minOccurs="0"/>
864
+ -->
865
+ </xs:sequence>
866
+ </xs:complexType>
867
+ <!--
868
+ <xs:complexType name="PartyIdentification32-CH_Debtor">
869
+ <xs:sequence>
870
+ <xs:element name="Nm" type="Max70Text" minOccurs="0"/>
871
+ <xs:element name="PstlAdr" type="PostalAddress6-CH" minOccurs="0"/>
872
+ <xs:element name="Id" type="Party6Choice-CH" minOccurs="0"/>
873
+
874
+ <xs:element name="CtryOfRes" type="CountryCode" minOccurs="0"/>
875
+ <xs:element name="CtctDtls" type="ContactDetails2" minOccurs="0"/>
876
+
877
+ </xs:sequence>
878
+ </xs:complexType>
879
+
880
+ <xs:complexType name="PartyIdentification32-CH_Creditor">
881
+ <xs:sequence>
882
+ <xs:element name="Nm" type="Max70Text" minOccurs="0"/>
883
+ <xs:element name="PstlAdr" type="PostalAddress6-CH" minOccurs="0"/>
884
+ <xs:element name="Id" type="Party6Choice-CH" minOccurs="0"/>
885
+
886
+ <xs:element name="CtryOfRes" type="CountryCode" minOccurs="0"/>
887
+ <xs:element name="CtctDtls" type="ContactDetails2" minOccurs="0"/>
888
+
889
+ </xs:sequence>
890
+ </xs:complexType>
891
+ -->
892
+ <xs:complexType name="PaymentIdentification1">
893
+ <xs:sequence>
894
+ <xs:element name="InstrId" type="Max35Text-Swift" minOccurs="0"/>
895
+ <xs:element name="EndToEndId" type="Max35Text-Swift"/>
896
+ </xs:sequence>
897
+ </xs:complexType>
898
+ <!-- V01: changed: CH-version changes applied -->
899
+ <xs:complexType name="PaymentInstructionInformation3-CH">
900
+ <xs:sequence>
901
+ <xs:element name="PmtInfId" type="Max35Text-Swift"/>
902
+ <xs:element name="PmtMtd" type="PaymentMethod3Code"/>
903
+ <xs:element name="BtchBookg" type="BatchBookingIndicator" minOccurs="0"/>
904
+ <xs:element name="NbOfTxs" type="Max15NumericText" minOccurs="0"/>
905
+ <xs:element name="CtrlSum" type="DecimalNumber" minOccurs="0"/>
906
+ <xs:element name="PmtTpInf" type="PaymentTypeInformation19-CH" minOccurs="0"/>
907
+ <xs:element name="ReqdExctnDt" type="ISODate"/>
908
+ <xs:element name="Dbtr" type="PartyIdentification32-CH"/>
909
+ <xs:element name="DbtrAcct" type="CashAccount16-CH_IdTpCcy"/>
910
+ <xs:element name="DbtrAgt" type="BranchAndFinancialInstitutionIdentification4-CH_BicOrClrId"/>
911
+ <xs:element name="UltmtDbtr" type="PartyIdentification32-CH" minOccurs="0"/>
912
+ <xs:element name="ChrgBr" type="ChargeBearerType1Code" minOccurs="0"/>
913
+ <xs:element name="ChrgsAcct" type="CashAccount16-CH_IdAndCurrency" minOccurs="0"/>
914
+ <xs:element name="CdtTrfTxInf" type="CreditTransferTransactionInformation10-CH" maxOccurs="unbounded"/>
915
+ <!-- V01: unused
916
+ <xs:element name="PoolgAdjstmntDt" type="ISODate" minOccurs="0"/>
917
+ <xs:element name="DbtrAgtAcct" type="CashAccount16" minOccurs="0"/>
918
+ <xs:element name="ChrgsAcctAgt" type="BranchAndFinancialInstitutionIdentification4" minOccurs="0"/>
919
+ -->
920
+ </xs:sequence>
921
+ </xs:complexType>
922
+ <xs:simpleType name="PaymentMethod3Code">
923
+ <xs:restriction base="xs:string">
924
+ <xs:enumeration value="CHK"/>
925
+ <xs:enumeration value="TRF"/>
926
+ <xs:enumeration value="TRA"/>
927
+ </xs:restriction>
928
+ </xs:simpleType>
929
+ <!-- V01: changed: CH version changes applied -->
930
+ <xs:complexType name="PaymentTypeInformation19-CH">
931
+ <xs:sequence>
932
+ <xs:element name="InstrPrty" type="Priority2Code" minOccurs="0"/>
933
+ <xs:element name="SvcLvl" type="ServiceLevel8Choice" minOccurs="0"/>
934
+ <xs:element name="LclInstrm" type="LocalInstrument2Choice" minOccurs="0"/>
935
+ <xs:element name="CtgyPurp" type="CategoryPurpose1-CH_Code" minOccurs="0"/>
936
+ </xs:sequence>
937
+ </xs:complexType>
938
+ <!-- V01: unused
939
+ <xs:simpleType name="PercentageRate">
940
+ <xs:restriction base="xs:decimal">
941
+ <xs:fractionDigits value="10"/>
942
+ <xs:totalDigits value="11"/>
943
+ </xs:restriction>
944
+ </xs:simpleType>
945
+ -->
946
+ <xs:complexType name="PersonIdentification5">
947
+ <xs:sequence>
948
+ <xs:element name="DtAndPlcOfBirth" type="DateAndPlaceOfBirth" minOccurs="0"/>
949
+ <xs:element name="Othr" type="GenericPersonIdentification1" minOccurs="0" maxOccurs="unbounded"/>
950
+ </xs:sequence>
951
+ </xs:complexType>
952
+ <!-- V01: changed: only one occurance of element Othr allowed in CH version -->
953
+ <xs:complexType name="PersonIdentification5-CH">
954
+ <xs:sequence>
955
+ <xs:element name="DtAndPlcOfBirth" type="DateAndPlaceOfBirth" minOccurs="0"/>
956
+ <xs:element name="Othr" type="GenericPersonIdentification1" minOccurs="0"/>
957
+ </xs:sequence>
958
+ </xs:complexType>
959
+ <xs:complexType name="PersonIdentificationSchemeName1Choice">
960
+ <xs:sequence>
961
+ <xs:choice>
962
+ <xs:element name="Cd" type="ExternalPersonIdentification1Code"/>
963
+ <xs:element name="Prtry" type="Max35Text"/>
964
+ </xs:choice>
965
+ </xs:sequence>
966
+ </xs:complexType>
967
+ <xs:simpleType name="PhoneNumber">
968
+ <xs:restriction base="xs:string">
969
+ <xs:pattern value="\+[0-9]{1,3}-[0-9()+\-]{1,30}"/>
970
+ </xs:restriction>
971
+ </xs:simpleType>
972
+ <xs:complexType name="PostalAddress6">
973
+ <xs:sequence>
974
+ <xs:element name="AdrTp" type="AddressType2Code" minOccurs="0"/>
975
+ <xs:element name="Dept" type="Max70Text" minOccurs="0"/>
976
+ <xs:element name="SubDept" type="Max70Text" minOccurs="0"/>
977
+ <xs:element name="StrtNm" type="Max70Text" minOccurs="0"/>
978
+ <xs:element name="BldgNb" type="Max16Text" minOccurs="0"/>
979
+ <xs:element name="PstCd" type="Max16Text" minOccurs="0"/>
980
+ <xs:element name="TwnNm" type="Max35Text" minOccurs="0"/>
981
+ <xs:element name="CtrySubDvsn" type="Max35Text" minOccurs="0"/>
982
+ <xs:element name="Ctry" type="CountryCode" minOccurs="0"/>
983
+ <xs:element name="AdrLine" type="Max70Text" minOccurs="0" maxOccurs="7"/>
984
+ </xs:sequence>
985
+ </xs:complexType>
986
+ <!-- V01: added: only 2 lines of address lines allowed in CH version -->
987
+ <xs:complexType name="PostalAddress6-CH">
988
+ <xs:sequence>
989
+ <xs:element name="AdrTp" type="AddressType2Code" minOccurs="0"/>
990
+ <xs:element name="Dept" type="Max70Text" minOccurs="0"/>
991
+ <xs:element name="SubDept" type="Max70Text" minOccurs="0"/>
992
+ <xs:element name="StrtNm" type="Max70Text" minOccurs="0"/>
993
+ <xs:element name="BldgNb" type="Max16Text" minOccurs="0"/>
994
+ <xs:element name="PstCd" type="Max16Text" minOccurs="0"/>
995
+ <xs:element name="TwnNm" type="Max35Text" minOccurs="0"/>
996
+ <xs:element name="CtrySubDvsn" type="Max35Text" minOccurs="0"/>
997
+ <xs:element name="Ctry" type="CountryCode" minOccurs="0"/>
998
+ <xs:element name="AdrLine" type="Max70Text" minOccurs="0" maxOccurs="2"/>
999
+ <!-- V01: changed: max. 2 occurence -->
1000
+ </xs:sequence>
1001
+ </xs:complexType>
1002
+ <xs:simpleType name="Priority2Code">
1003
+ <xs:restriction base="xs:string">
1004
+ <xs:enumeration value="HIGH"/>
1005
+ <xs:enumeration value="NORM"/>
1006
+ </xs:restriction>
1007
+ </xs:simpleType>
1008
+ <!-- V01: changed: CH-version changes applied -->
1009
+ <xs:complexType name="Purpose2-CH_Code">
1010
+ <xs:sequence>
1011
+ <xs:element name="Cd" type="ExternalPurpose1Code"/>
1012
+ </xs:sequence>
1013
+ </xs:complexType>
1014
+ <xs:complexType name="ReferredDocumentInformation3">
1015
+ <xs:sequence>
1016
+ <xs:element name="Tp" type="ReferredDocumentType2" minOccurs="0"/>
1017
+ <xs:element name="Nb" type="Max35Text" minOccurs="0"/>
1018
+ <xs:element name="RltdDt" type="ISODate" minOccurs="0"/>
1019
+ </xs:sequence>
1020
+ </xs:complexType>
1021
+ <xs:complexType name="ReferredDocumentType1Choice">
1022
+ <xs:sequence>
1023
+ <xs:choice>
1024
+ <xs:element name="Cd" type="DocumentType5Code"/>
1025
+ <xs:element name="Prtry" type="Max35Text"/>
1026
+ </xs:choice>
1027
+ </xs:sequence>
1028
+ </xs:complexType>
1029
+ <xs:complexType name="ReferredDocumentType2">
1030
+ <xs:sequence>
1031
+ <xs:element name="CdOrPrtry" type="ReferredDocumentType1Choice"/>
1032
+ <xs:element name="Issr" type="Max35Text" minOccurs="0"/>
1033
+ </xs:sequence>
1034
+ </xs:complexType>
1035
+ <xs:complexType name="RegulatoryAuthority2">
1036
+ <xs:sequence>
1037
+ <xs:element name="Nm" type="Max140Text" minOccurs="0"/>
1038
+ <xs:element name="Ctry" type="CountryCode" minOccurs="0"/>
1039
+ </xs:sequence>
1040
+ </xs:complexType>
1041
+ <xs:complexType name="RegulatoryReporting3">
1042
+ <xs:sequence>
1043
+ <xs:element name="DbtCdtRptgInd" type="RegulatoryReportingType1Code" minOccurs="0"/>
1044
+ <xs:element name="Authrty" type="RegulatoryAuthority2" minOccurs="0"/>
1045
+ <xs:element name="Dtls" type="StructuredRegulatoryReporting3" minOccurs="0" maxOccurs="unbounded"/>
1046
+ </xs:sequence>
1047
+ </xs:complexType>
1048
+ <xs:simpleType name="RegulatoryReportingType1Code">
1049
+ <xs:restriction base="xs:string">
1050
+ <xs:enumeration value="CRED"/>
1051
+ <xs:enumeration value="DEBT"/>
1052
+ <xs:enumeration value="BOTH"/>
1053
+ </xs:restriction>
1054
+ </xs:simpleType>
1055
+ <xs:complexType name="RemittanceAmount1">
1056
+ <xs:sequence>
1057
+ <xs:element name="DuePyblAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/>
1058
+ <xs:element name="DscntApldAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/>
1059
+ <xs:element name="CdtNoteAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/>
1060
+ <xs:element name="TaxAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/>
1061
+ <xs:element name="AdjstmntAmtAndRsn" type="DocumentAdjustment1" minOccurs="0" maxOccurs="unbounded"/>
1062
+ <xs:element name="RmtdAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/>
1063
+ </xs:sequence>
1064
+ </xs:complexType>
1065
+ <xs:complexType name="RemittanceInformation5-CH">
1066
+ <xs:sequence>
1067
+ <xs:element name="Ustrd" type="Max140Text" minOccurs="0"/>
1068
+ <xs:element name="Strd" type="StructuredRemittanceInformation7" minOccurs="0"/>
1069
+ </xs:sequence>
1070
+ </xs:complexType>
1071
+ <!-- V01: unused
1072
+ <xs:complexType name="RemittanceLocation2">
1073
+ <xs:sequence>
1074
+ <xs:element name="RmtId" type="Max35Text" minOccurs="0"/>
1075
+ <xs:element name="RmtLctnMtd" type="RemittanceLocationMethod2Code" minOccurs="0"/>
1076
+ <xs:element name="RmtLctnElctrncAdr" type="Max2048Text" minOccurs="0"/>
1077
+ <xs:element name="RmtLctnPstlAdr" type="NameAndAddress10" minOccurs="0"/>
1078
+ </xs:sequence>
1079
+ </xs:complexType>
1080
+ <xs:simpleType name="RemittanceLocationMethod2Code">
1081
+ <xs:restriction base="xs:string">
1082
+ <xs:enumeration value="FAXI"/>
1083
+ <xs:enumeration value="EDIC"/>
1084
+ <xs:enumeration value="URID"/>
1085
+ <xs:enumeration value="EMAL"/>
1086
+ <xs:enumeration value="POST"/>
1087
+ <xs:enumeration value="SMSM"/>
1088
+ </xs:restriction>
1089
+ </xs:simpleType>
1090
+ -->
1091
+ <xs:complexType name="ServiceLevel8Choice">
1092
+ <xs:sequence>
1093
+ <xs:choice>
1094
+ <xs:element name="Cd" type="ExternalServiceLevel1Code"/>
1095
+ <xs:element name="Prtry" type="Max35Text"/>
1096
+ </xs:choice>
1097
+ </xs:sequence>
1098
+ </xs:complexType>
1099
+ <xs:complexType name="StructuredRegulatoryReporting3">
1100
+ <xs:sequence>
1101
+ <xs:element name="Tp" type="Max35Text" minOccurs="0"/>
1102
+ <xs:element name="Dt" type="ISODate" minOccurs="0"/>
1103
+ <xs:element name="Ctry" type="CountryCode" minOccurs="0"/>
1104
+ <xs:element name="Cd" type="Max10Text" minOccurs="0"/>
1105
+ <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/>
1106
+ <xs:element name="Inf" type="Max35Text" minOccurs="0" maxOccurs="unbounded"/>
1107
+ </xs:sequence>
1108
+ </xs:complexType>
1109
+ <xs:complexType name="StructuredRemittanceInformation7">
1110
+ <xs:sequence>
1111
+ <xs:element name="RfrdDocInf" type="ReferredDocumentInformation3" minOccurs="0" maxOccurs="unbounded"/>
1112
+ <xs:element name="RfrdDocAmt" type="RemittanceAmount1" minOccurs="0"/>
1113
+ <xs:element name="CdtrRefInf" type="CreditorReferenceInformation2" minOccurs="0"/>
1114
+ <xs:element name="Invcr" type="PartyIdentification32" minOccurs="0"/>
1115
+ <xs:element name="Invcee" type="PartyIdentification32" minOccurs="0"/>
1116
+ <xs:element name="AddtlRmtInf" type="Max140Text" minOccurs="0" maxOccurs="3"/>
1117
+ </xs:sequence>
1118
+ </xs:complexType>
1119
+ <!-- V01: unused
1120
+ <xs:complexType name="TaxAmount1">
1121
+ <xs:sequence>
1122
+ <xs:element name="Rate" type="PercentageRate" minOccurs="0"/>
1123
+ <xs:element name="TaxblBaseAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/>
1124
+ <xs:element name="TtlAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/>
1125
+ <xs:element name="Dtls" type="TaxRecordDetails1" minOccurs="0" maxOccurs="unbounded"/>
1126
+ </xs:sequence>
1127
+ </xs:complexType>
1128
+ <xs:complexType name="TaxAuthorisation1">
1129
+ <xs:sequence>
1130
+ <xs:element name="Titl" type="Max35Text" minOccurs="0"/>
1131
+ <xs:element name="Nm" type="Max140Text" minOccurs="0"/>
1132
+ </xs:sequence>
1133
+ </xs:complexType>
1134
+ <xs:complexType name="TaxInformation3">
1135
+ <xs:sequence>
1136
+ <xs:element name="Cdtr" type="TaxParty1" minOccurs="0"/>
1137
+ <xs:element name="Dbtr" type="TaxParty2" minOccurs="0"/>
1138
+ <xs:element name="AdmstnZn" type="Max35Text" minOccurs="0"/>
1139
+ <xs:element name="RefNb" type="Max140Text" minOccurs="0"/>
1140
+ <xs:element name="Mtd" type="Max35Text" minOccurs="0"/>
1141
+ <xs:element name="TtlTaxblBaseAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/>
1142
+ <xs:element name="TtlTaxAmt" type="ActiveOrHistoricCurrencyAndAmount" minOccurs="0"/>
1143
+ <xs:element name="Dt" type="ISODate" minOccurs="0"/>
1144
+ <xs:element name="SeqNb" type="Number" minOccurs="0"/>
1145
+ <xs:element name="Rcrd" type="TaxRecord1" minOccurs="0" maxOccurs="unbounded"/>
1146
+ </xs:sequence>
1147
+ </xs:complexType>
1148
+ <xs:complexType name="TaxParty1">
1149
+ <xs:sequence>
1150
+ <xs:element name="TaxId" type="Max35Text" minOccurs="0"/>
1151
+ <xs:element name="RegnId" type="Max35Text" minOccurs="0"/>
1152
+ <xs:element name="TaxTp" type="Max35Text" minOccurs="0"/>
1153
+ </xs:sequence>
1154
+ </xs:complexType>
1155
+ <xs:complexType name="TaxParty2">
1156
+ <xs:sequence>
1157
+ <xs:element name="TaxId" type="Max35Text" minOccurs="0"/>
1158
+ <xs:element name="RegnId" type="Max35Text" minOccurs="0"/>
1159
+ <xs:element name="TaxTp" type="Max35Text" minOccurs="0"/>
1160
+ <xs:element name="Authstn" type="TaxAuthorisation1" minOccurs="0"/>
1161
+ </xs:sequence>
1162
+ </xs:complexType>
1163
+ <xs:complexType name="TaxPeriod1">
1164
+ <xs:sequence>
1165
+ <xs:element name="Yr" type="ISODate" minOccurs="0"/>
1166
+ <xs:element name="Tp" type="TaxRecordPeriod1Code" minOccurs="0"/>
1167
+ <xs:element name="FrToDt" type="DatePeriodDetails" minOccurs="0"/>
1168
+ </xs:sequence>
1169
+ </xs:complexType>
1170
+ <xs:complexType name="TaxRecord1">
1171
+ <xs:sequence>
1172
+ <xs:element name="Tp" type="Max35Text" minOccurs="0"/>
1173
+ <xs:element name="Ctgy" type="Max35Text" minOccurs="0"/>
1174
+ <xs:element name="CtgyDtls" type="Max35Text" minOccurs="0"/>
1175
+ <xs:element name="DbtrSts" type="Max35Text" minOccurs="0"/>
1176
+ <xs:element name="CertId" type="Max35Text" minOccurs="0"/>
1177
+ <xs:element name="FrmsCd" type="Max35Text" minOccurs="0"/>
1178
+ <xs:element name="Prd" type="TaxPeriod1" minOccurs="0"/>
1179
+ <xs:element name="TaxAmt" type="TaxAmount1" minOccurs="0"/>
1180
+ <xs:element name="AddtlInf" type="Max140Text" minOccurs="0"/>
1181
+ </xs:sequence>
1182
+ </xs:complexType>
1183
+ <xs:complexType name="TaxRecordDetails1">
1184
+ <xs:sequence>
1185
+ <xs:element name="Prd" type="TaxPeriod1" minOccurs="0"/>
1186
+ <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/>
1187
+ </xs:sequence>
1188
+ </xs:complexType>
1189
+ <xs:simpleType name="TaxRecordPeriod1Code">
1190
+ <xs:restriction base="xs:string">
1191
+ <xs:enumeration value="MM01"/>
1192
+ <xs:enumeration value="MM02"/>
1193
+ <xs:enumeration value="MM03"/>
1194
+ <xs:enumeration value="MM04"/>
1195
+ <xs:enumeration value="MM05"/>
1196
+ <xs:enumeration value="MM06"/>
1197
+ <xs:enumeration value="MM07"/>
1198
+ <xs:enumeration value="MM08"/>
1199
+ <xs:enumeration value="MM09"/>
1200
+ <xs:enumeration value="MM10"/>
1201
+ <xs:enumeration value="MM11"/>
1202
+ <xs:enumeration value="MM12"/>
1203
+ <xs:enumeration value="QTR1"/>
1204
+ <xs:enumeration value="QTR2"/>
1205
+ <xs:enumeration value="QTR3"/>
1206
+ <xs:enumeration value="QTR4"/>
1207
+ <xs:enumeration value="HLF1"/>
1208
+ <xs:enumeration value="HLF2"/>
1209
+ </xs:restriction>
1210
+ </xs:simpleType>
1211
+ -->
1212
+ </xs:schema>