syntax = "proto2"; package pain_008_001_09; message UnspecifiedType { required string baseObjectType = 1; required bytes object = 2; } message AccountSchemeName1Choice { optional string Cd = 1; optional string Prtry = 2; } message ActiveOrHistoricCurrencyAndAmount { required string Ccy = 1; } message AdviceType1Choice { enum AdviceType1Code { AdviceType1Code_ADND = 1; AdviceType1Code_ADWD = 2; } optional AdviceType1Code Cd = 1; optional string Prtry = 2; } message Authorisation1Choice { enum Authorisation1Code { Authorisation1Code_AUTH = 1; Authorisation1Code_FDET = 2; Authorisation1Code_FSUM = 3; Authorisation1Code_ILEV = 4; } optional Authorisation1Code Cd = 1; optional string Prtry = 2; } message CashAccountType2Choice { optional string Cd = 1; optional string Prtry = 2; } message CategoryPurpose1Choice { optional string Cd = 1; optional string Prtry = 2; } message ClearingSystemIdentification2Choice { optional string Cd = 1; optional string Prtry = 2; } message ClearingSystemMemberIdentification2 { optional ClearingSystemIdentification2Choice ClrSysId = 1; required string MmbId = 2; } message CreditorReferenceType1Choice { enum DocumentType3Code { DocumentType3Code_DISP = 1; DocumentType3Code_FXDR = 2; DocumentType3Code_PUOR = 3; DocumentType3Code_RADM = 4; DocumentType3Code_RPIN = 5; DocumentType3Code_SCOR = 6; } optional DocumentType3Code Cd = 1; optional string Prtry = 2; } message CreditorReferenceType2 { required CreditorReferenceType1Choice CdOrPrtry = 1; optional string Issr = 2; } message DateAndPlaceOfBirth1 { required int32 BirthDt = 1; required string CityOfBirth = 2; required string CtryOfBirth = 3; optional string PrvcOfBirth = 4; } message DatePeriod2 { required int32 FrDt = 1; required int32 ToDt = 2; } message DiscountAmountType1Choice { optional string Cd = 1; optional string Prtry = 2; } message DocumentAdjustment1 { optional string AddtlInf = 1; required ActiveOrHistoricCurrencyAndAmount Amt = 2; enum CreditDebitCode { CreditDebitCode_CRDT = 1; CreditDebitCode_DBIT = 2; } optional CreditDebitCode CdtDbtInd = 3; optional string Rsn = 4; } message DocumentLineType1Choice { optional string Cd = 1; optional string Prtry = 2; } message FinancialIdentificationSchemeName1Choice { optional string Cd = 1; optional string Prtry = 2; } message FrequencyAndMoment1 { required string PtInTm = 1; enum Frequency6Code { Frequency6Code_ADHO = 1; Frequency6Code_DAIL = 2; Frequency6Code_FRTN = 3; Frequency6Code_INDA = 4; Frequency6Code_MIAN = 5; Frequency6Code_MNTH = 6; Frequency6Code_QURT = 7; Frequency6Code_WEEK = 8; Frequency6Code_YEAR = 9; } required Frequency6Code Tp = 2; } message FrequencyPeriod1 { required double CntPerPrd = 1; enum Frequency6Code { Frequency6Code_ADHO = 1; Frequency6Code_DAIL = 2; Frequency6Code_FRTN = 3; Frequency6Code_INDA = 4; Frequency6Code_MIAN = 5; Frequency6Code_MNTH = 6; Frequency6Code_QURT = 7; Frequency6Code_WEEK = 8; Frequency6Code_YEAR = 9; } required Frequency6Code Tp = 2; } message GarnishmentType1Choice { optional string Cd = 1; optional string Prtry = 2; } message GenericAccountIdentification1 { required string Id = 1; optional string Issr = 2; optional AccountSchemeName1Choice SchmeNm = 3; } message GenericFinancialIdentification1 { required string Id = 1; optional string Issr = 2; optional FinancialIdentificationSchemeName1Choice SchmeNm = 3; } message GenericIdentification30 { required string Id = 1; required string Issr = 2; optional string SchmeNm = 3; } message LocalInstrument2Choice { optional string Cd = 1; optional string Prtry = 2; } message MandateSetupReason1Choice { optional string Cd = 1; optional string Prtry = 2; } message OrganisationIdentificationSchemeName1Choice { optional string Cd = 1; optional string Prtry = 2; } message OtherContact1 { required string ChanlTp = 1; optional string Id = 2; } message PaymentIdentification6 { required string EndToEndId = 1; optional string InstrId = 2; optional string UETR = 3; } message PersonIdentificationSchemeName1Choice { optional string Cd = 1; optional string Prtry = 2; } message ProxyAccountType1Choice { optional string Cd = 1; optional string Prtry = 2; } message Purpose2Choice { optional string Cd = 1; optional string Prtry = 2; } message ReferredDocumentType3Choice { enum DocumentType6Code { DocumentType6Code_AROI = 1; DocumentType6Code_BOLD = 2; DocumentType6Code_CINV = 3; DocumentType6Code_CMCN = 4; DocumentType6Code_CNFA = 5; DocumentType6Code_CREN = 6; DocumentType6Code_DEBN = 7; DocumentType6Code_DISP = 8; DocumentType6Code_DNFA = 9; DocumentType6Code_HIRI = 10; DocumentType6Code_MSIN = 11; DocumentType6Code_PUOR = 12; DocumentType6Code_SBIN = 13; DocumentType6Code_SOAC = 14; DocumentType6Code_TSUT = 15; DocumentType6Code_VCHR = 16; } optional DocumentType6Code Cd = 1; optional string Prtry = 2; } message ReferredDocumentType4 { required ReferredDocumentType3Choice CdOrPrtry = 1; optional string Issr = 2; } message RegulatoryAuthority2 { optional string Ctry = 1; optional string Nm = 2; } message ServiceLevel8Choice { optional string Cd = 1; optional string Prtry = 2; } message StructuredRegulatoryReporting3 { optional ActiveOrHistoricCurrencyAndAmount Amt = 1; optional string Cd = 2; optional string Ctry = 3; optional int32 Dt = 4; repeated string Inf = 5; optional string Tp = 6; } message SupplementaryDataEnvelope1 { } message TaxAmountType1Choice { optional string Cd = 1; optional string Prtry = 2; } message TaxAuthorisation1 { optional string Nm = 1; optional string Titl = 2; } message TaxParty1 { optional string RegnId = 1; optional string TaxId = 2; optional string TaxTp = 3; } message TaxParty2 { optional TaxAuthorisation1 Authstn = 1; optional string RegnId = 2; optional string TaxId = 3; optional string TaxTp = 4; } message TaxPeriod2 { optional DatePeriod2 FrToDt = 1; enum TaxRecordPeriod1Code { TaxRecordPeriod1Code_HLF1 = 1; TaxRecordPeriod1Code_HLF2 = 2; TaxRecordPeriod1Code_MM01 = 3; TaxRecordPeriod1Code_MM02 = 4; TaxRecordPeriod1Code_MM03 = 5; TaxRecordPeriod1Code_MM04 = 6; TaxRecordPeriod1Code_MM05 = 7; TaxRecordPeriod1Code_MM06 = 8; TaxRecordPeriod1Code_MM07 = 9; TaxRecordPeriod1Code_MM08 = 10; TaxRecordPeriod1Code_MM09 = 11; TaxRecordPeriod1Code_MM10 = 12; TaxRecordPeriod1Code_MM11 = 13; TaxRecordPeriod1Code_MM12 = 14; TaxRecordPeriod1Code_QTR1 = 15; TaxRecordPeriod1Code_QTR2 = 16; TaxRecordPeriod1Code_QTR3 = 17; TaxRecordPeriod1Code_QTR4 = 18; } optional TaxRecordPeriod1Code Tp = 2; optional int32 Yr = 3; } message TaxRecordDetails2 { required ActiveOrHistoricCurrencyAndAmount Amt = 1; optional TaxPeriod2 Prd = 2; } message AccountIdentification4Choice { optional string IBAN = 1; optional GenericAccountIdentification1 Othr = 2; } message AddressType3Choice { enum AddressType2Code { AddressType2Code_ADDR = 1; AddressType2Code_BIZZ = 2; AddressType2Code_DLVY = 3; AddressType2Code_HOME = 4; AddressType2Code_MLTO = 5; AddressType2Code_PBOX = 6; } optional AddressType2Code Cd = 1; optional GenericIdentification30 Prtry = 2; } message AdviceType1 { optional AdviceType1Choice CdtAdvc = 1; optional AdviceType1Choice DbtAdvc = 2; } message Contact4 { optional string Dept = 1; optional string EmailAdr = 2; optional string EmailPurp = 3; optional string FaxNb = 4; optional string JobTitl = 5; optional string MobNb = 6; optional string Nm = 7; enum NamePrefix2Code { NamePrefix2Code_DOCT = 1; NamePrefix2Code_MADM = 2; NamePrefix2Code_MIKS = 3; NamePrefix2Code_MISS = 4; NamePrefix2Code_MIST = 5; } optional NamePrefix2Code NmPrfx = 8; repeated OtherContact1 Othr = 9; optional string PhneNb = 10; enum PreferredContactMethod1Code { PreferredContactMethod1Code_CELL = 1; PreferredContactMethod1Code_FAXX = 2; PreferredContactMethod1Code_LETT = 3; PreferredContactMethod1Code_MAIL = 4; PreferredContactMethod1Code_PHON = 5; } optional PreferredContactMethod1Code PrefrdMtd = 11; optional string Rspnsblty = 12; } message CreditorReferenceInformation2 { optional string Ref = 1; optional CreditorReferenceType2 Tp = 2; } message DiscountAmountAndType1 { required ActiveOrHistoricCurrencyAndAmount Amt = 1; optional DiscountAmountType1Choice Tp = 2; } message DocumentLineType1 { required DocumentLineType1Choice CdOrPrtry = 1; optional string Issr = 2; } message Frequency36Choice { optional FrequencyPeriod1 Prd = 1; optional FrequencyAndMoment1 PtInTm = 2; enum Frequency6Code { Frequency6Code_ADHO = 1; Frequency6Code_DAIL = 2; Frequency6Code_FRTN = 3; Frequency6Code_INDA = 4; Frequency6Code_MIAN = 5; Frequency6Code_MNTH = 6; Frequency6Code_QURT = 7; Frequency6Code_WEEK = 8; Frequency6Code_YEAR = 9; } optional Frequency6Code Tp = 3; } message GarnishmentType1 { required GarnishmentType1Choice CdOrPrtry = 1; optional string Issr = 2; } message GenericOrganisationIdentification1 { required string Id = 1; optional string Issr = 2; optional OrganisationIdentificationSchemeName1Choice SchmeNm = 3; } message GenericPersonIdentification1 { required string Id = 1; optional string Issr = 2; optional PersonIdentificationSchemeName1Choice SchmeNm = 3; } message OrganisationIdentification29 { optional string AnyBIC = 1; optional string LEI = 2; repeated GenericOrganisationIdentification1 Othr = 3; } message PaymentTypeInformation29 { optional CategoryPurpose1Choice CtgyPurp = 1; enum Priority2Code { Priority2Code_HIGH = 1; Priority2Code_NORM = 2; } optional Priority2Code InstrPrty = 2; optional LocalInstrument2Choice LclInstrm = 3; enum SequenceType3Code { SequenceType3Code_FNAL = 1; SequenceType3Code_FRST = 2; SequenceType3Code_OOFF = 3; SequenceType3Code_RCUR = 4; SequenceType3Code_RPRE = 5; } optional SequenceType3Code SeqTp = 4; repeated ServiceLevel8Choice SvcLvl = 5; } message PersonIdentification13 { optional DateAndPlaceOfBirth1 DtAndPlcOfBirth = 1; repeated GenericPersonIdentification1 Othr = 2; } message PostalAddress24 { repeated string AdrLine = 1; optional AddressType3Choice AdrTp = 2; optional string BldgNb = 3; optional string BldgNm = 4; optional string Ctry = 5; optional string CtrySubDvsn = 6; optional string Dept = 7; optional string DstrctNm = 8; optional string Flr = 9; optional string PstBx = 10; optional string PstCd = 11; optional string Room = 12; optional string StrtNm = 13; optional string SubDept = 14; optional string TwnLctnNm = 15; optional string TwnNm = 16; } message ProxyAccountIdentification1 { required string Id = 1; optional ProxyAccountType1Choice Tp = 2; } message RegulatoryReporting3 { optional RegulatoryAuthority2 Authrty = 1; enum RegulatoryReportingType1Code { RegulatoryReportingType1Code_BOTH = 1; RegulatoryReportingType1Code_CRED = 2; RegulatoryReportingType1Code_DEBT = 3; } optional RegulatoryReportingType1Code DbtCdtRptgInd = 2; repeated StructuredRegulatoryReporting3 Dtls = 3; } message SupplementaryData1 { required SupplementaryDataEnvelope1 Envlp = 1; optional string PlcAndNm = 2; } message TaxAmount2 { repeated TaxRecordDetails2 Dtls = 1; optional double Rate = 2; optional ActiveOrHistoricCurrencyAndAmount TaxblBaseAmt = 3; optional ActiveOrHistoricCurrencyAndAmount TtlAmt = 4; } message TaxAmountAndType1 { required ActiveOrHistoricCurrencyAndAmount Amt = 1; optional TaxAmountType1Choice Tp = 2; } message TaxRecord2 { optional string AddtlInf = 1; optional string CertId = 2; optional string Ctgy = 3; optional string CtgyDtls = 4; optional string DbtrSts = 5; optional string FrmsCd = 6; optional TaxPeriod2 Prd = 7; optional TaxAmount2 TaxAmt = 8; optional string Tp = 9; } message BranchData3 { optional string Id = 1; optional string LEI = 2; optional string Nm = 3; optional PostalAddress24 PstlAdr = 4; } message CashAccount38 { optional string Ccy = 1; required AccountIdentification4Choice Id = 2; optional string Nm = 3; optional ProxyAccountIdentification1 Prxy = 4; optional CashAccountType2Choice Tp = 5; } message DocumentLineIdentification1 { optional string Nb = 1; optional int32 RltdDt = 2; optional DocumentLineType1 Tp = 3; } message FinancialInstitutionIdentification18 { optional string BICFI = 1; optional ClearingSystemMemberIdentification2 ClrSysMmbId = 2; optional string LEI = 3; optional string Nm = 4; optional GenericFinancialIdentification1 Othr = 5; optional PostalAddress24 PstlAdr = 6; } message NameAndAddress16 { required PostalAddress24 Adr = 1; required string Nm = 2; } message Party38Choice { optional OrganisationIdentification29 OrgId = 1; optional PersonIdentification13 PrvtId = 2; } message PartyIdentification135 { optional Contact4 CtctDtls = 1; optional string CtryOfRes = 2; optional Party38Choice Id = 3; optional string Nm = 4; optional PostalAddress24 PstlAdr = 5; } message RemittanceAmount2 { repeated DocumentAdjustment1 AdjstmntAmtAndRsn = 1; optional ActiveOrHistoricCurrencyAndAmount CdtNoteAmt = 2; repeated DiscountAmountAndType1 DscntApldAmt = 3; optional ActiveOrHistoricCurrencyAndAmount DuePyblAmt = 4; optional ActiveOrHistoricCurrencyAndAmount RmtdAmt = 5; repeated TaxAmountAndType1 TaxAmt = 6; } message RemittanceAmount3 { repeated DocumentAdjustment1 AdjstmntAmtAndRsn = 1; optional ActiveOrHistoricCurrencyAndAmount CdtNoteAmt = 2; repeated DiscountAmountAndType1 DscntApldAmt = 3; optional ActiveOrHistoricCurrencyAndAmount DuePyblAmt = 4; optional ActiveOrHistoricCurrencyAndAmount RmtdAmt = 5; repeated TaxAmountAndType1 TaxAmt = 6; } message RemittanceLocationData1 { optional string ElctrncAdr = 1; enum RemittanceLocationMethod2Code { RemittanceLocationMethod2Code_EDIC = 1; RemittanceLocationMethod2Code_EMAL = 2; RemittanceLocationMethod2Code_FAXI = 3; RemittanceLocationMethod2Code_POST = 4; RemittanceLocationMethod2Code_SMSM = 5; RemittanceLocationMethod2Code_URID = 6; } required RemittanceLocationMethod2Code Mtd = 2; optional NameAndAddress16 PstlAdr = 3; } message TaxInformation7 { optional string AdmstnZone = 1; optional TaxParty1 Cdtr = 2; optional TaxParty2 Dbtr = 3; optional int32 Dt = 4; optional string Mtd = 5; repeated TaxRecord2 Rcrd = 6; optional string RefNb = 7; optional double SeqNb = 8; optional ActiveOrHistoricCurrencyAndAmount TtlTaxAmt = 9; optional ActiveOrHistoricCurrencyAndAmount TtlTaxblBaseAmt = 10; optional TaxParty2 UltmtDbtr = 11; } message TaxInformation8 { optional string AdmstnZone = 1; optional TaxParty1 Cdtr = 2; optional TaxParty2 Dbtr = 3; optional int32 Dt = 4; optional string Mtd = 5; repeated TaxRecord2 Rcrd = 6; optional string RefNb = 7; optional double SeqNb = 8; optional ActiveOrHistoricCurrencyAndAmount TtlTaxAmt = 9; optional ActiveOrHistoricCurrencyAndAmount TtlTaxblBaseAmt = 10; } message BranchAndFinancialInstitutionIdentification6 { optional BranchData3 BrnchId = 1; required FinancialInstitutionIdentification18 FinInstnId = 2; } message DocumentLineInformation1 { optional RemittanceAmount3 Amt = 1; optional string Desc = 2; repeated DocumentLineIdentification1 Id = 3; } message Garnishment3 { optional int32 Dt = 1; optional bool FmlyMdclInsrncInd = 2; optional PartyIdentification135 Grnshee = 3; optional PartyIdentification135 GrnshmtAdmstr = 4; optional bool MplyeeTermntnInd = 5; optional string RefNb = 6; optional ActiveOrHistoricCurrencyAndAmount RmtdAmt = 7; required GarnishmentType1 Tp = 8; } message GroupHeader83 { repeated Authorisation1Choice Authstn = 1; required int64 CreDtTm = 2; optional double CtrlSum = 3; optional BranchAndFinancialInstitutionIdentification6 FwdgAgt = 4; required PartyIdentification135 InitgPty = 5; required string MsgId = 6; required string NbOfTxs = 7; } message ReferredDocumentInformation7 { repeated DocumentLineInformation1 LineDtls = 1; optional string Nb = 2; optional int32 RltdDt = 3; optional ReferredDocumentType4 Tp = 4; } message RemittanceLocation7 { optional string RmtId = 1; repeated RemittanceLocationData1 RmtLctnDtls = 2; } message StructuredRemittanceInformation16 { repeated string AddtlRmtInf = 1; optional CreditorReferenceInformation2 CdtrRefInf = 2; optional Garnishment3 GrnshmtRmt = 3; optional PartyIdentification135 Invcee = 4; optional PartyIdentification135 Invcr = 5; optional RemittanceAmount2 RfrdDocAmt = 6; repeated ReferredDocumentInformation7 RfrdDocInf = 7; optional TaxInformation7 TaxRmt = 8; } message AmendmentInformationDetails13 { optional BranchAndFinancialInstitutionIdentification6 OrgnlCdtrAgt = 1; optional CashAccount38 OrgnlCdtrAgtAcct = 2; optional PartyIdentification135 OrgnlCdtrSchmeId = 3; optional PartyIdentification135 OrgnlDbtr = 4; optional CashAccount38 OrgnlDbtrAcct = 5; optional BranchAndFinancialInstitutionIdentification6 OrgnlDbtrAgt = 6; optional CashAccount38 OrgnlDbtrAgtAcct = 7; optional int32 OrgnlFnlColltnDt = 8; optional Frequency36Choice OrgnlFrqcy = 9; optional string OrgnlMndtId = 10; optional MandateSetupReason1Choice OrgnlRsn = 11; optional string OrgnlTrckgDays = 12; } message MandateRelatedInformation14 { optional bool AmdmntInd = 1; optional AmendmentInformationDetails13 AmdmntInfDtls = 2; optional int32 DtOfSgntr = 3; optional string ElctrncSgntr = 4; optional int32 FnlColltnDt = 5; optional Frequency36Choice Frqcy = 6; optional int32 FrstColltnDt = 7; optional string MndtId = 8; optional MandateSetupReason1Choice Rsn = 9; optional string TrckgDays = 10; } message RemittanceInformation16 { repeated StructuredRemittanceInformation16 Strd = 1; repeated string Ustrd = 2; } message DirectDebitTransaction10 { optional PartyIdentification135 CdtrSchmeId = 1; optional MandateRelatedInformation14 MndtRltdInf = 2; optional int32 PreNtfctnDt = 3; optional string PreNtfctnId = 4; } message DirectDebitTransactionInformation23 { enum ChargeBearerType1Code { ChargeBearerType1Code_CRED = 1; ChargeBearerType1Code_DEBT = 2; ChargeBearerType1Code_SHAR = 3; ChargeBearerType1Code_SLEV = 4; } optional ChargeBearerType1Code ChrgBr = 1; required PartyIdentification135 Dbtr = 2; required CashAccount38 DbtrAcct = 3; required BranchAndFinancialInstitutionIdentification6 DbtrAgt = 4; optional CashAccount38 DbtrAgtAcct = 5; optional DirectDebitTransaction10 DrctDbtTx = 6; required ActiveOrHistoricCurrencyAndAmount InstdAmt = 7; optional string InstrForCdtrAgt = 8; required PaymentIdentification6 PmtId = 9; optional PaymentTypeInformation29 PmtTpInf = 10; optional Purpose2Choice Purp = 11; repeated RegulatoryReporting3 RgltryRptg = 12; repeated RemittanceLocation7 RltdRmtInf = 13; optional RemittanceInformation16 RmtInf = 14; repeated SupplementaryData1 SplmtryData = 15; optional TaxInformation8 Tax = 16; optional PartyIdentification135 UltmtCdtr = 17; optional PartyIdentification135 UltmtDbtr = 18; } message PaymentInstruction37 { optional bool BtchBookg = 1; required PartyIdentification135 Cdtr = 2; required CashAccount38 CdtrAcct = 3; required BranchAndFinancialInstitutionIdentification6 CdtrAgt = 4; optional CashAccount38 CdtrAgtAcct = 5; optional PartyIdentification135 CdtrSchmeId = 6; enum ChargeBearerType1Code { ChargeBearerType1Code_CRED = 1; ChargeBearerType1Code_DEBT = 2; ChargeBearerType1Code_SHAR = 3; ChargeBearerType1Code_SLEV = 4; } optional ChargeBearerType1Code ChrgBr = 7; optional CashAccount38 ChrgsAcct = 8; optional BranchAndFinancialInstitutionIdentification6 ChrgsAcctAgt = 9; optional double CtrlSum = 10; repeated DirectDebitTransactionInformation23 DrctDbtTxInf = 11; optional string NbOfTxs = 12; required string PmtInfId = 13; enum PaymentMethod2Code { PaymentMethod2Code_DD = 1; } required PaymentMethod2Code PmtMtd = 14; optional PaymentTypeInformation29 PmtTpInf = 15; optional AdviceType1 ReqdAdvcTp = 16; required int32 ReqdColltnDt = 17; optional PartyIdentification135 UltmtCdtr = 18; } message CustomerDirectDebitInitiationV09 { required GroupHeader83 GrpHdr = 1; repeated PaymentInstruction37 PmtInf = 2; repeated SupplementaryData1 SplmtryData = 3; } message Document { required CustomerDirectDebitInitiationV09 CstmrDrctDbtInitn = 1; }