sepa_king 0.0.2

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.
@@ -0,0 +1,597 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <xs:schema xmlns="urn:iso:std:iso:20022:tech:xsd:pain.008.002.02" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:iso:std:iso:20022:tech:xsd:pain.008.002.02" elementFormDefault="qualified">
3
+ <xs:element name="Document" type="Document"/>
4
+ <xs:complexType name="AccountIdentificationSEPA">
5
+ <xs:sequence>
6
+ <xs:element name="IBAN" type="IBAN2007Identifier"/>
7
+ </xs:sequence>
8
+ </xs:complexType>
9
+ <xs:simpleType name="ActiveOrHistoricCurrencyAndAmount_SimpleTypeSEPA">
10
+ <xs:restriction base="xs:decimal">
11
+ <xs:minInclusive value="0.01"/>
12
+ <xs:maxInclusive value="999999999.99"/>
13
+ <xs:fractionDigits value="2"/>
14
+ <xs:totalDigits value="11"/>
15
+ </xs:restriction>
16
+ </xs:simpleType>
17
+ <xs:complexType name="ActiveOrHistoricCurrencyAndAmountSEPA">
18
+ <xs:simpleContent>
19
+ <xs:extension base="ActiveOrHistoricCurrencyAndAmount_SimpleTypeSEPA">
20
+ <xs:attribute name="Ccy" type="ActiveOrHistoricCurrencyCodeEUR" use="required"/>
21
+ </xs:extension>
22
+ </xs:simpleContent>
23
+ </xs:complexType>
24
+ <xs:simpleType name="ActiveOrHistoricCurrencyCodeEUR">
25
+ <xs:restriction base="xs:string">
26
+ <xs:enumeration value="EUR"/>
27
+ </xs:restriction>
28
+ </xs:simpleType>
29
+ <xs:simpleType name="ActiveOrHistoricCurrencyCode">
30
+ <xs:restriction base="xs:string">
31
+ <xs:pattern value="[A-Z]{3,3}"/>
32
+ </xs:restriction>
33
+ </xs:simpleType>
34
+ <xs:complexType name="AmendmentInformationDetailsSDD">
35
+ <xs:sequence>
36
+ <xs:element name="OrgnlMndtId" type="RestrictedIdentificationSEPA2" minOccurs="0">
37
+ <xs:annotation>
38
+ <xs:documentation>Mandatory if changes occur in ‘Mandate Identification’, otherwise not to be used.</xs:documentation>
39
+ </xs:annotation>
40
+ </xs:element>
41
+ <xs:element name="OrgnlCdtrSchmeId" type="PartyIdentificationSEPA4" minOccurs="0">
42
+ <xs:annotation>
43
+ <xs:documentation>Mandatory if changes occur in 'Creditor Scheme Identification', otherwise not to be used.</xs:documentation>
44
+ </xs:annotation>
45
+ </xs:element>
46
+ <xs:element name="OrgnlDbtrAcct" type="CashAccountSEPA2" minOccurs="0">
47
+ <xs:annotation>
48
+ <xs:documentation>To be used only for changes of accounts within the same bank.</xs:documentation>
49
+ </xs:annotation>
50
+ </xs:element>
51
+ <xs:element name="OrgnlDbtrAgt" type="BranchAndFinancialInstitutionIdentificationSEPA2" minOccurs="0">
52
+ <xs:annotation>
53
+ <xs:documentation>To use 'Identification’ under 'Other' under 'Financial Institution Identifier with code ‘SMNDA’ to indicate same mandate with new Debtor Agent. To be used with the ‘FRST’ indicator in the ‘Sequence Type’.</xs:documentation>
54
+ </xs:annotation>
55
+ </xs:element>
56
+ </xs:sequence>
57
+ </xs:complexType>
58
+ <xs:simpleType name="AnyBICIdentifier">
59
+ <xs:restriction base="xs:string">
60
+ <xs:pattern value="[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}"/>
61
+ </xs:restriction>
62
+ </xs:simpleType>
63
+ <xs:simpleType name="BICIdentifier">
64
+ <xs:restriction base="xs:string">
65
+ <xs:pattern value="[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}"/>
66
+ </xs:restriction>
67
+ </xs:simpleType>
68
+ <xs:simpleType name="BatchBookingIndicator">
69
+ <xs:restriction base="xs:boolean"/>
70
+ </xs:simpleType>
71
+ <xs:complexType name="BranchAndFinancialInstitutionIdentificationSEPA1">
72
+ <xs:sequence>
73
+ <xs:element name="FinInstnId" type="FinancialInstitutionIdentificationSEPA1"/>
74
+ </xs:sequence>
75
+ </xs:complexType>
76
+ <xs:complexType name="BranchAndFinancialInstitutionIdentificationSEPA2">
77
+ <xs:sequence>
78
+ <xs:element name="FinInstnId" type="FinancialInstitutionIdentificationSEPA2"/>
79
+ </xs:sequence>
80
+ </xs:complexType>
81
+ <xs:complexType name="CashAccountSEPA1">
82
+ <xs:sequence>
83
+ <xs:element name="Id" type="AccountIdentificationSEPA"/>
84
+ <xs:element name="Ccy" type="ActiveOrHistoricCurrencyCode" minOccurs="0"/>
85
+ </xs:sequence>
86
+ </xs:complexType>
87
+ <xs:complexType name="CashAccountSEPA2">
88
+ <xs:sequence>
89
+ <xs:element name="Id" type="AccountIdentificationSEPA"/>
90
+ </xs:sequence>
91
+ </xs:complexType>
92
+ <xs:complexType name="CategoryPurposeSEPA">
93
+ <xs:sequence>
94
+ <xs:element name="Cd" type="ExternalCategoryPurpose1Code"/>
95
+ </xs:sequence>
96
+ </xs:complexType>
97
+ <xs:simpleType name="ChargeBearerTypeSEPACode">
98
+ <xs:restriction base="xs:string">
99
+ <xs:enumeration value="SLEV"/>
100
+ </xs:restriction>
101
+ </xs:simpleType>
102
+ <xs:simpleType name="CountryCode">
103
+ <xs:restriction base="xs:string">
104
+ <xs:pattern value="[A-Z]{2,2}"/>
105
+ </xs:restriction>
106
+ </xs:simpleType>
107
+ <xs:complexType name="CreditorReferenceInformationSEPA1">
108
+ <xs:sequence>
109
+ <xs:element name="Tp" type="CreditorReferenceTypeSEPA"/>
110
+ <xs:element name="Ref" type="Max35Text">
111
+ <xs:annotation>
112
+ <xs:documentation>If a Creditor Reference contains a check digit, the receiving bank is not required to validate this.
113
+ If the receiving bank validates the check digit and if this validation fails, the bank may continue its processing and send the transaction to the next party in the chain.</xs:documentation>
114
+ </xs:annotation>
115
+ </xs:element>
116
+ </xs:sequence>
117
+ </xs:complexType>
118
+ <xs:complexType name="CreditorReferenceTypeSEPA">
119
+ <xs:sequence>
120
+ <xs:element name="CdOrPrtry" type="CreditorReferenceTypeCodeSEPA"/>
121
+ <xs:element name="Issr" type="Max35Text" minOccurs="0"/>
122
+ </xs:sequence>
123
+ </xs:complexType>
124
+ <xs:complexType name="CreditorReferenceTypeCodeSEPA">
125
+ <xs:sequence>
126
+ <xs:element name="Cd" type="DocumentType3CodeSEPA"/>
127
+ </xs:sequence>
128
+ </xs:complexType>
129
+ <xs:complexType name="CustomerDirectDebitInitiationV02">
130
+ <xs:sequence>
131
+ <xs:element name="GrpHdr" type="GroupHeaderSDD"/>
132
+ <xs:element name="PmtInf" type="PaymentInstructionInformationSDD" maxOccurs="unbounded"/>
133
+ </xs:sequence>
134
+ </xs:complexType>
135
+ <xs:complexType name="DateAndPlaceOfBirth">
136
+ <xs:sequence>
137
+ <xs:element name="BirthDt" type="ISODate"/>
138
+ <xs:element name="PrvcOfBirth" type="Max35Text" minOccurs="0"/>
139
+ <xs:element name="CityOfBirth" type="Max35Text"/>
140
+ <xs:element name="CtryOfBirth" type="CountryCode"/>
141
+ </xs:sequence>
142
+ </xs:complexType>
143
+ <xs:simpleType name="DecimalNumber">
144
+ <xs:restriction base="xs:decimal">
145
+ <xs:fractionDigits value="17"/>
146
+ <xs:totalDigits value="18"/>
147
+ </xs:restriction>
148
+ </xs:simpleType>
149
+ <xs:complexType name="DirectDebitTransactionSDD">
150
+ <xs:sequence>
151
+ <xs:element name="MndtRltdInf" type="MandateRelatedInformationSDD"/>
152
+ <xs:element name="CdtrSchmeId" type="PartyIdentificationSEPA3" minOccurs="0">
153
+ <xs:annotation>
154
+ <xs:documentation>It is recommended that all transactions within the same ‘Payment Information’ block have the same ‘Creditor Scheme Identification’.
155
+ This data element must be present at either ‘Payment Information’ or ‘Direct Debit
156
+ Transaction’ level.</xs:documentation>
157
+ </xs:annotation>
158
+ </xs:element>
159
+ </xs:sequence>
160
+ </xs:complexType>
161
+ <xs:complexType name="DirectDebitTransactionInformationSDD">
162
+ <xs:sequence>
163
+ <xs:element name="PmtId" type="PaymentIdentificationSEPA"/>
164
+ <xs:element name="InstdAmt" type="ActiveOrHistoricCurrencyAndAmountSEPA"/>
165
+ <xs:element name="ChrgBr" type="ChargeBearerTypeSEPACode" minOccurs="0">
166
+ <xs:annotation>
167
+ <xs:documentation>It is recommended that this element be specified at ‘Payment Information’ level.</xs:documentation>
168
+ </xs:annotation>
169
+ </xs:element>
170
+ <xs:element name="DrctDbtTx" type="DirectDebitTransactionSDD"/>
171
+ <xs:element name="UltmtCdtr" type="PartyIdentificationSEPA1" minOccurs="0">
172
+ <xs:annotation>
173
+ <xs:documentation>This data element may be present either at ‘Payment Information’ or at ‘Direct Debit Transaction Information’ level.</xs:documentation>
174
+ </xs:annotation>
175
+ </xs:element>
176
+ <xs:element name="DbtrAgt" type="BranchAndFinancialInstitutionIdentificationSEPA1"/>
177
+ <xs:element name="Dbtr" type="PartyIdentificationSEPA2"/>
178
+ <xs:element name="DbtrAcct" type="CashAccountSEPA2"/>
179
+ <xs:element name="UltmtDbtr" type="PartyIdentificationSEPA1" minOccurs="0">
180
+ <xs:annotation>
181
+ <xs:documentation>Mandatory if provided by the debtor in the mandate.</xs:documentation>
182
+ </xs:annotation>
183
+ </xs:element>
184
+ <xs:element name="Purp" type="PurposeSEPA" minOccurs="0"/>
185
+ <xs:element name="RmtInf" type="RemittanceInformationSEPA1Choice" minOccurs="0"/>
186
+ </xs:sequence>
187
+ </xs:complexType>
188
+ <xs:complexType name="Document">
189
+ <xs:sequence>
190
+ <xs:element name="CstmrDrctDbtInitn" type="CustomerDirectDebitInitiationV02"/>
191
+ </xs:sequence>
192
+ </xs:complexType>
193
+ <xs:simpleType name="DocumentType3CodeSEPA">
194
+ <xs:restriction base="xs:string">
195
+ <xs:enumeration value="SCOR"/>
196
+ </xs:restriction>
197
+ </xs:simpleType>
198
+ <xs:simpleType name="ExternalCategoryPurpose1Code">
199
+ <xs:restriction base="xs:string">
200
+ <xs:minLength value="1"/>
201
+ <xs:maxLength value="4"/>
202
+ </xs:restriction>
203
+ </xs:simpleType>
204
+ <xs:simpleType name="LocalInstrumentSEPACode">
205
+ <xs:restriction base="xs:string">
206
+ <xs:enumeration value="CORE"/>
207
+ <xs:enumeration value="B2B"/>
208
+ </xs:restriction>
209
+ </xs:simpleType>
210
+ <xs:simpleType name="ExternalOrganisationIdentification1Code">
211
+ <xs:restriction base="xs:string">
212
+ <xs:minLength value="1"/>
213
+ <xs:maxLength value="4"/>
214
+ </xs:restriction>
215
+ </xs:simpleType>
216
+ <xs:simpleType name="ExternalPersonIdentification1Code">
217
+ <xs:restriction base="xs:string">
218
+ <xs:minLength value="1"/>
219
+ <xs:maxLength value="4"/>
220
+ </xs:restriction>
221
+ </xs:simpleType>
222
+ <xs:simpleType name="ExternalPurpose1Code">
223
+ <xs:restriction base="xs:string">
224
+ <xs:minLength value="1"/>
225
+ <xs:maxLength value="4"/>
226
+ </xs:restriction>
227
+ </xs:simpleType>
228
+ <xs:simpleType name="ServiceLevelSEPACode">
229
+ <xs:restriction base="xs:string">
230
+ <xs:enumeration value="SEPA"/>
231
+ </xs:restriction>
232
+ </xs:simpleType>
233
+ <xs:complexType name="FinancialInstitutionIdentificationSEPA1">
234
+ <xs:sequence>
235
+ <xs:element name="BIC" type="BICIdentifier"/>
236
+ </xs:sequence>
237
+ </xs:complexType>
238
+ <xs:complexType name="FinancialInstitutionIdentificationSEPA2">
239
+ <xs:sequence>
240
+ <xs:element name="Othr" type="RestrictedFinancialIdentificationSEPA"/>
241
+ </xs:sequence>
242
+ </xs:complexType>
243
+ <xs:complexType name="RestrictedFinancialIdentificationSEPA">
244
+ <xs:sequence>
245
+ <xs:element name="Id" type="RestrictedSMNDACode"/>
246
+ </xs:sequence>
247
+ </xs:complexType>
248
+ <xs:simpleType name="RestrictedSMNDACode">
249
+ <xs:restriction base="xs:string">
250
+ <xs:enumeration value="SMNDA"/>
251
+ </xs:restriction>
252
+ </xs:simpleType>
253
+ <xs:complexType name="GenericOrganisationIdentification1">
254
+ <xs:sequence>
255
+ <xs:element name="Id" type="Max35Text"/>
256
+ <xs:element name="SchmeNm" type="OrganisationIdentificationSchemeName1Choice" minOccurs="0"/>
257
+ <xs:element name="Issr" type="Max35Text" minOccurs="0"/>
258
+ </xs:sequence>
259
+ </xs:complexType>
260
+ <xs:complexType name="GenericPersonIdentification1">
261
+ <xs:sequence>
262
+ <xs:element name="Id" type="Max35Text"/>
263
+ <xs:element name="SchmeNm" type="PersonIdentificationSchemeName1Choice" minOccurs="0"/>
264
+ <xs:element name="Issr" type="Max35Text" minOccurs="0"/>
265
+ </xs:sequence>
266
+ </xs:complexType>
267
+ <xs:complexType name="RestrictedPersonIdentificationSEPA">
268
+ <xs:sequence>
269
+ <xs:element name="Id" type="RestrictedPersonIdentifierSEPA"/>
270
+ <xs:element name="SchmeNm" type="RestrictedPersonIdentificationSchemeNameSEPA"/>
271
+ </xs:sequence>
272
+ </xs:complexType>
273
+ <xs:simpleType name="RestrictedPersonIdentifierSEPA">
274
+ <xs:restriction base="xs:string">
275
+ <xs:pattern value="[a-zA-Z]{2,2}[0-9]{2,2}([A-Za-z0-9]|[\+|\?|/|\-|:|\(|\)|\.|,|']){3,3}([A-Za-z0-9]|[\+|\?|/|\-|:|\(|\)|\.|,|']){1,28}"/>
276
+ </xs:restriction>
277
+ </xs:simpleType>
278
+ <xs:complexType name="GroupHeaderSDD">
279
+ <xs:sequence>
280
+ <xs:element name="MsgId" type="RestrictedIdentificationSEPA1"/>
281
+ <xs:element name="CreDtTm" type="ISODateTime"/>
282
+ <xs:element name="NbOfTxs" type="Max15NumericText"/>
283
+ <xs:element name="CtrlSum" type="DecimalNumber" minOccurs="0"/>
284
+ <xs:element name="InitgPty" type="PartyIdentificationSEPA1"/>
285
+ </xs:sequence>
286
+ </xs:complexType>
287
+ <xs:simpleType name="IBAN2007Identifier">
288
+ <xs:restriction base="xs:string">
289
+ <xs:pattern value="[A-Z]{2,2}[0-9]{2,2}[a-zA-Z0-9]{1,30}"/>
290
+ </xs:restriction>
291
+ </xs:simpleType>
292
+ <xs:simpleType name="ISODate">
293
+ <xs:restriction base="xs:date"/>
294
+ </xs:simpleType>
295
+ <xs:simpleType name="ISODateTime">
296
+ <xs:restriction base="xs:dateTime"/>
297
+ </xs:simpleType>
298
+ <xs:complexType name="LocalInstrumentSEPA">
299
+ <xs:sequence>
300
+ <xs:element name="Cd" type="LocalInstrumentSEPACode"/>
301
+ </xs:sequence>
302
+ </xs:complexType>
303
+ <xs:complexType name="MandateRelatedInformationSDD">
304
+ <xs:sequence>
305
+ <xs:element name="MndtId" type="RestrictedIdentificationSEPA2"/>
306
+ <xs:element name="DtOfSgntr" type="ISODate"/>
307
+ <xs:element name="AmdmntInd" type="TrueFalseIndicator" minOccurs="0"/>
308
+ <xs:element name="AmdmntInfDtls" type="AmendmentInformationDetailsSDD" minOccurs="0">
309
+ <xs:annotation>
310
+ <xs:documentation>Mandatory if 'Amendment Indicator' is 'TRUE'
311
+ The reason code from the Rulebook is indicated using one of the following message subelements.</xs:documentation>
312
+ </xs:annotation>
313
+ </xs:element>
314
+ <xs:element name="ElctrncSgntr" type="Max1025Text" minOccurs="0"/>
315
+ </xs:sequence>
316
+ </xs:complexType>
317
+ <xs:simpleType name="Max1025Text">
318
+ <xs:restriction base="xs:string">
319
+ <xs:minLength value="1"/>
320
+ <xs:maxLength value="1025"/>
321
+ </xs:restriction>
322
+ </xs:simpleType>
323
+ <xs:simpleType name="Max140Text">
324
+ <xs:restriction base="xs:string">
325
+ <xs:minLength value="1"/>
326
+ <xs:maxLength value="140"/>
327
+ </xs:restriction>
328
+ </xs:simpleType>
329
+ <xs:simpleType name="Max15NumericText">
330
+ <xs:restriction base="xs:string">
331
+ <xs:pattern value="[0-9]{1,15}"/>
332
+ </xs:restriction>
333
+ </xs:simpleType>
334
+ <xs:simpleType name="Max35Text">
335
+ <xs:restriction base="xs:string">
336
+ <xs:minLength value="1"/>
337
+ <xs:maxLength value="35"/>
338
+ </xs:restriction>
339
+ </xs:simpleType>
340
+ <xs:simpleType name="Max70Text">
341
+ <xs:restriction base="xs:string">
342
+ <xs:minLength value="1"/>
343
+ <xs:maxLength value="70"/>
344
+ </xs:restriction>
345
+ </xs:simpleType>
346
+ <xs:complexType name="OrganisationIdentificationSEPAChoice">
347
+ <xs:sequence>
348
+ <xs:choice>
349
+ <xs:element name="BICOrBEI" type="AnyBICIdentifier"/>
350
+ <xs:element name="Othr" type="GenericOrganisationIdentification1"/>
351
+ </xs:choice>
352
+ </xs:sequence>
353
+ </xs:complexType>
354
+ <xs:complexType name="OrganisationIdentificationSchemeName1Choice">
355
+ <xs:sequence>
356
+ <xs:choice>
357
+ <xs:element name="Cd" type="ExternalOrganisationIdentification1Code"/>
358
+ <xs:element name="Prtry" type="Max35Text"/>
359
+ </xs:choice>
360
+ </xs:sequence>
361
+ </xs:complexType>
362
+ <xs:complexType name="PartySEPAChoice">
363
+ <xs:sequence>
364
+ <xs:choice>
365
+ <xs:element name="OrgId" type="OrganisationIdentificationSEPAChoice">
366
+ <xs:annotation>
367
+ <xs:documentation>Either ‘BIC or BEI’ or one
368
+ occurrence of ‘Other’ is allowed.</xs:documentation>
369
+ </xs:annotation>
370
+ </xs:element>
371
+ <xs:element name="PrvtId" type="PersonIdentificationSEPA1Choice">
372
+ <xs:annotation>
373
+ <xs:documentation>Either ‘Date and Place of Birth’ or one occurrence of ‘Other’ is allowed</xs:documentation>
374
+ </xs:annotation>
375
+ </xs:element>
376
+ </xs:choice>
377
+ </xs:sequence>
378
+ </xs:complexType>
379
+ <xs:complexType name="PartySEPA2">
380
+ <xs:sequence>
381
+ <xs:element name="PrvtId" type="PersonIdentificationSEPA2">
382
+ <xs:annotation>
383
+ <xs:documentation>Private Identification is used to identify either an organisation or a private
384
+ person.</xs:documentation>
385
+ </xs:annotation>
386
+ </xs:element>
387
+ </xs:sequence>
388
+ </xs:complexType>
389
+ <xs:complexType name="PartyIdentificationSEPA1">
390
+ <xs:sequence>
391
+ <xs:element name="Nm" type="Max70Text" minOccurs="0">
392
+ <xs:annotation>
393
+ <xs:documentation>‘Name’ is limited to 70 characters in length.</xs:documentation>
394
+ </xs:annotation>
395
+ </xs:element>
396
+ <xs:element name="Id" type="PartySEPAChoice" minOccurs="0"/>
397
+ </xs:sequence>
398
+ </xs:complexType>
399
+ <xs:complexType name="PartyIdentificationSEPA2">
400
+ <xs:sequence>
401
+ <xs:element name="Nm" type="Max70Text">
402
+ <xs:annotation>
403
+ <xs:documentation>‘Name’ is limited to 70 characters in length.</xs:documentation>
404
+ </xs:annotation>
405
+ </xs:element>
406
+ <xs:element name="PstlAdr" type="PostalAddressSEPA" minOccurs="0"/>
407
+ <xs:element name="Id" type="PartySEPAChoice" minOccurs="0"/>
408
+ </xs:sequence>
409
+ </xs:complexType>
410
+ <xs:complexType name="PartyIdentificationSEPA3">
411
+ <xs:sequence>
412
+ <xs:element name="Id" type="PartySEPA2"/>
413
+ </xs:sequence>
414
+ </xs:complexType>
415
+ <xs:complexType name="PartyIdentificationSEPA4">
416
+ <xs:sequence>
417
+ <xs:element name="Nm" type="Max70Text" minOccurs="0">
418
+ <xs:annotation>
419
+ <xs:documentation>If present the new’ Name’ must be specified under ‘Creditor’. ‘Name’ is limited to 70 characters in length.</xs:documentation>
420
+ </xs:annotation>
421
+ </xs:element>
422
+ <xs:element name="Id" type="PartySEPA2" minOccurs="0"/>
423
+ </xs:sequence>
424
+ </xs:complexType>
425
+ <xs:complexType name="PartyIdentificationSEPA5">
426
+ <xs:sequence>
427
+ <xs:element name="Nm" type="Max70Text">
428
+ <xs:annotation>
429
+ <xs:documentation>‘Name’ is limited to 70 characters in length.</xs:documentation>
430
+ </xs:annotation>
431
+ </xs:element>
432
+ <xs:element name="PstlAdr" type="PostalAddressSEPA" minOccurs="0"/>
433
+ </xs:sequence>
434
+ </xs:complexType>
435
+ <xs:complexType name="PaymentIdentificationSEPA">
436
+ <xs:sequence>
437
+ <xs:element name="InstrId" type="RestrictedIdentificationSEPA1" minOccurs="0"/>
438
+ <xs:element name="EndToEndId" type="RestrictedIdentificationSEPA1"/>
439
+ </xs:sequence>
440
+ </xs:complexType>
441
+ <xs:complexType name="PaymentInstructionInformationSDD">
442
+ <xs:sequence>
443
+ <xs:element name="PmtInfId" type="RestrictedIdentificationSEPA1"/>
444
+ <xs:element name="PmtMtd" type="PaymentMethod2Code"/>
445
+ <xs:element name="BtchBookg" type="BatchBookingIndicator" minOccurs="0">
446
+ <xs:annotation>
447
+ <xs:documentation>If present and contains ‘true’, batch booking is requested. If present and contains ‘false’, booking per transaction is requested. If element is not present, pre-agreed customer-to-bank conditions apply.</xs:documentation>
448
+ </xs:annotation>
449
+ </xs:element>
450
+ <xs:element name="NbOfTxs" type="Max15NumericText" minOccurs="0"/>
451
+ <xs:element name="CtrlSum" type="DecimalNumber" minOccurs="0"/>
452
+ <xs:element name="PmtTpInf" type="PaymentTypeInformationSDD"/>
453
+ <xs:element name="ReqdColltnDt" type="ISODate"/>
454
+ <xs:element name="Cdtr" type="PartyIdentificationSEPA5"/>
455
+ <xs:element name="CdtrAcct" type="CashAccountSEPA1"/>
456
+ <xs:element name="CdtrAgt" type="BranchAndFinancialInstitutionIdentificationSEPA1"/>
457
+ <xs:element name="UltmtCdtr" type="PartyIdentificationSEPA1" minOccurs="0">
458
+ <xs:annotation>
459
+ <xs:documentation>This data element may be present either at ‘Payment Information’ or at ‘Direct Debit Transaction Information’ level.</xs:documentation>
460
+ </xs:annotation>
461
+ </xs:element>
462
+ <xs:element name="ChrgBr" type="ChargeBearerTypeSEPACode" minOccurs="0">
463
+ <xs:annotation>
464
+ <xs:documentation>It is recommended that this element be specified at ‘Payment Information’ level.</xs:documentation>
465
+ </xs:annotation>
466
+ </xs:element>
467
+ <xs:element name="CdtrSchmeId" type="PartyIdentificationSEPA3" minOccurs="0">
468
+ <xs:annotation>
469
+ <xs:documentation>It is recommended that all transactions within the same ‘Payment Information’ block have the same ‘Creditor Scheme Identification’.
470
+ This data element must be present at either ‘Payment Information’ or ‘Direct Debit
471
+ Transaction’ level.</xs:documentation>
472
+ </xs:annotation>
473
+ </xs:element>
474
+ <xs:element name="DrctDbtTxInf" type="DirectDebitTransactionInformationSDD" maxOccurs="unbounded"/>
475
+ </xs:sequence>
476
+ </xs:complexType>
477
+ <xs:simpleType name="PaymentMethod2Code">
478
+ <xs:restriction base="xs:string">
479
+ <xs:enumeration value="DD"/>
480
+ </xs:restriction>
481
+ </xs:simpleType>
482
+ <xs:complexType name="PaymentTypeInformationSDD">
483
+ <xs:sequence>
484
+ <xs:element name="SvcLvl" type="ServiceLevelSEPA"/>
485
+ <xs:element name="LclInstrm" type="LocalInstrumentSEPA">
486
+ <xs:annotation>
487
+ <xs:documentation>Only ‘B2B’ or 'CORE' is allowed. The mixing of Core Direct Debits and B2B Direct Debits is not allowed in the same message.</xs:documentation>
488
+ </xs:annotation>
489
+ </xs:element>
490
+ <xs:element name="SeqTp" type="SequenceType1Code">
491
+ <xs:annotation>
492
+ <xs:documentation>If 'Amendment Indicator' is 'true' and 'Original Debtor Agent' is set to 'SMNDA' this message element must indicate 'FRST'</xs:documentation>
493
+ </xs:annotation>
494
+ </xs:element>
495
+ <xs:element name="CtgyPurp" type="CategoryPurposeSEPA" minOccurs="0">
496
+ <xs:annotation>
497
+ <xs:documentation>Depending on the agreement between the Creditor and the Creditor Bank, ‘Category Purpose’ may be forwarded to the Debtor Bank.</xs:documentation>
498
+ </xs:annotation>
499
+ </xs:element>
500
+ </xs:sequence>
501
+ </xs:complexType>
502
+ <xs:complexType name="PersonIdentificationSEPA1Choice">
503
+ <xs:sequence>
504
+ <xs:choice>
505
+ <xs:element name="DtAndPlcOfBirth" type="DateAndPlaceOfBirth"/>
506
+ <xs:element name="Othr" type="GenericPersonIdentification1"/>
507
+ </xs:choice>
508
+ </xs:sequence>
509
+ </xs:complexType>
510
+ <xs:complexType name="PersonIdentificationSEPA2">
511
+ <xs:sequence>
512
+ <xs:element name="Othr" type="RestrictedPersonIdentificationSEPA">
513
+ <xs:annotation>
514
+ <xs:documentation>Only one occurrence of ‘Other’ is allowed, and no other sub-elements are allowed.
515
+ Identification must be used with an identifier described in General Message Element Specifications, Chapter 1.5.2 of the Implementation Guide.
516
+ Scheme Name’ under ‘Other’ must specify ‘SEPA’ under ‘Proprietary</xs:documentation>
517
+ </xs:annotation>
518
+ </xs:element>
519
+ </xs:sequence>
520
+ </xs:complexType>
521
+ <xs:complexType name="PersonIdentificationSchemeName1Choice">
522
+ <xs:sequence>
523
+ <xs:choice>
524
+ <xs:element name="Cd" type="ExternalPersonIdentification1Code"/>
525
+ <xs:element name="Prtry" type="Max35Text"/>
526
+ </xs:choice>
527
+ </xs:sequence>
528
+ </xs:complexType>
529
+ <xs:complexType name="RestrictedPersonIdentificationSchemeNameSEPA">
530
+ <xs:sequence>
531
+ <xs:element name="Prtry" type="IdentificationSchemeNameSEPA"/>
532
+ </xs:sequence>
533
+ </xs:complexType>
534
+ <xs:simpleType name="IdentificationSchemeNameSEPA">
535
+ <xs:restriction base="xs:string">
536
+ <xs:enumeration value="SEPA"/>
537
+ </xs:restriction>
538
+ </xs:simpleType>
539
+ <xs:complexType name="PostalAddressSEPA">
540
+ <xs:sequence>
541
+ <xs:element name="Ctry" type="CountryCode" minOccurs="0"/>
542
+ <xs:element name="AdrLine" type="Max70Text" minOccurs="0" maxOccurs="2"/>
543
+ </xs:sequence>
544
+ </xs:complexType>
545
+ <xs:complexType name="PurposeSEPA">
546
+ <xs:sequence>
547
+ <xs:element name="Cd" type="ExternalPurpose1Code">
548
+ <xs:annotation>
549
+ <xs:documentation>Only codes from the ISO 20022 ExternalPurposeCode list are allowed.</xs:documentation>
550
+ </xs:annotation>
551
+ </xs:element>
552
+ </xs:sequence>
553
+ </xs:complexType>
554
+ <xs:complexType name="RemittanceInformationSEPA1Choice">
555
+ <xs:sequence>
556
+ <xs:choice>
557
+ <xs:element name="Ustrd" type="Max140Text"/>
558
+ <xs:element name="Strd" type="StructuredRemittanceInformationSEPA1"/>
559
+ </xs:choice>
560
+ </xs:sequence>
561
+ </xs:complexType>
562
+ <xs:simpleType name="SequenceType1Code">
563
+ <xs:restriction base="xs:string">
564
+ <xs:enumeration value="FRST"/>
565
+ <xs:enumeration value="RCUR"/>
566
+ <xs:enumeration value="FNAL"/>
567
+ <xs:enumeration value="OOFF"/>
568
+ </xs:restriction>
569
+ </xs:simpleType>
570
+ <xs:complexType name="ServiceLevelSEPA">
571
+ <xs:sequence>
572
+ <xs:element name="Cd" type="ServiceLevelSEPACode"/>
573
+ </xs:sequence>
574
+ </xs:complexType>
575
+ <xs:complexType name="StructuredRemittanceInformationSEPA1">
576
+ <xs:sequence>
577
+ <xs:element name="CdtrRefInf" type="CreditorReferenceInformationSEPA1" minOccurs="0">
578
+ <xs:annotation>
579
+ <xs:documentation>When present, the receiving bank is not obliged to validate the reference information.</xs:documentation>
580
+ </xs:annotation>
581
+ </xs:element>
582
+ </xs:sequence>
583
+ </xs:complexType>
584
+ <xs:simpleType name="TrueFalseIndicator">
585
+ <xs:restriction base="xs:boolean"/>
586
+ </xs:simpleType>
587
+ <xs:simpleType name="RestrictedIdentificationSEPA1">
588
+ <xs:restriction base="xs:string">
589
+ <xs:pattern value="([A-Za-z0-9]|[\+|\?|/|\-|:|\(|\)|\.|,|'| ]){1,35}"/>
590
+ </xs:restriction>
591
+ </xs:simpleType>
592
+ <xs:simpleType name="RestrictedIdentificationSEPA2">
593
+ <xs:restriction base="xs:string">
594
+ <xs:pattern value="([A-Za-z0-9]|[\+|\?|/|\-|:|\(|\)|\.|,|']){1,35}"/>
595
+ </xs:restriction>
596
+ </xs:simpleType>
597
+ </xs:schema>
@@ -0,0 +1,37 @@
1
+ # encoding: utf-8
2
+ module SEPA
3
+ class Account
4
+ include TextConverter
5
+
6
+ attr_reader :name, :iban, :bic, :identifier
7
+
8
+ def initialize(options)
9
+ options.each_pair do |k,v|
10
+ send("#{k}=", convert_text(v))
11
+ end
12
+ end
13
+
14
+ def name=(value)
15
+ raise ArgumentError.new('Name is missing') unless value
16
+ @name = value
17
+ end
18
+
19
+ def iban=(value)
20
+ raise ArgumentError.new('IBAN is missing') unless value
21
+ raise ArgumentError.new("IBAN has wrong length: #{value.length}, must be between 15-34") unless value.length.between?(15,34)
22
+ @iban = value
23
+ end
24
+
25
+ def bic=(value)
26
+ raise ArgumentError.new('BIC is missing') unless value
27
+ raise ArgumentError.new("BIC has wrong length: #{value.length} must be between 8-11") unless value.length.between?(8,11)
28
+ @bic = value
29
+ end
30
+
31
+ def identifier=(value)
32
+ raise ArgumentError.new('Identifier is missing') unless value
33
+ raise ArgumentError.new("Identifier has wrong length: #{value.length} must be exactly 18") unless value.length == 18
34
+ @identifier = value
35
+ end
36
+ end
37
+ end