This is the complete element reference for pain.008.001.02, generated directly from the official ISO 20022 XSD that Pain001 validates against — not transcribed by hand. Every cardinality, type and code value below can be checked against ISO's own publication.
488 elements · 90 required · 63 types · 15 code lists
Cardinality is shown as ISO writes it: 0..1 optional, 1..1 required, 0..* repeating. Required elements are bold — those are the ones whose absence makes the document invalid before any bank sees it.
Schema provenance. The shipped file carries the header “Generated by SWIFTStandards Workstation on 2009 Jan 08” — that is the schema generation timestamp, not necessarily ISO's publication date. Verify against the ISO 20022 catalogue.
CstmrDrctDbtInitn#
| Element | Path | Card. | Type | Constraints |
|---|---|---|---|---|
CstmrDrctDbtInitn |
CstmrDrctDbtInitn |
1..1 | CustomerDirectDebitInitiationV02 |
GrpHdr#
Group Header — one per message
| Element | Path | Card. | Type | Constraints |
|---|---|---|---|---|
GrpHdr |
CstmrDrctDbtInitn/GrpHdr |
1..1 | GroupHeader39 |
|
MsgId |
CstmrDrctDbtInitn/GrpHdr/MsgId |
1..1 | Max35Text |
length 1–35 |
CreDtTm |
CstmrDrctDbtInitn/GrpHdr/CreDtTm |
1..1 | ISODateTime |
|
Authstn |
CstmrDrctDbtInitn/GrpHdr/Authstn |
0..2 | Authorisation1Choice |
|
Cd |
CstmrDrctDbtInitn/GrpHdr/Authstn/Cd |
1..1 | Authorisation1Code |
4 codes |
Prtry |
CstmrDrctDbtInitn/GrpHdr/Authstn/Prtry |
1..1 | Max128Text |
length 1–128 |
NbOfTxs |
CstmrDrctDbtInitn/GrpHdr/NbOfTxs |
1..1 | Max15NumericText |
pattern [0-9]{1,15} |
CtrlSum |
CstmrDrctDbtInitn/GrpHdr/CtrlSum |
0..1 | DecimalNumber |
17 decimals max |
InitgPty |
CstmrDrctDbtInitn/GrpHdr/InitgPty |
1..1 | PartyIdentification32 |
|
Nm |
CstmrDrctDbtInitn/GrpHdr/InitgPty/Nm |
0..1 | Max140Text |
length 1–140 |
PstlAdr |
CstmrDrctDbtInitn/GrpHdr/InitgPty/PstlAdr |
0..1 | PostalAddress6 |
|
Id |
CstmrDrctDbtInitn/GrpHdr/InitgPty/Id |
0..1 | Party6Choice |
|
CtryOfRes |
CstmrDrctDbtInitn/GrpHdr/InitgPty/CtryOfRes |
0..1 | CountryCode |
pattern [A-Z]{2,2} |
CtctDtls |
CstmrDrctDbtInitn/GrpHdr/InitgPty/CtctDtls |
0..1 | ContactDetails2 |
|
FwdgAgt |
CstmrDrctDbtInitn/GrpHdr/FwdgAgt |
0..1 | BranchAndFinancialInstitutionIdentification4 |
|
FinInstnId |
CstmrDrctDbtInitn/GrpHdr/FwdgAgt/FinInstnId |
1..1 | FinancialInstitutionIdentification7 |
|
BrnchId |
CstmrDrctDbtInitn/GrpHdr/FwdgAgt/BrnchId |
0..1 | BranchData2 |
56 further nested elements sit below this depth — every one of them is defined in the type reference below, which lists each type once instead of repeating it under every party.
PmtInf#
Payment Information — one per debtor account and execution date
| Element | Path | Card. | Type | Constraints |
|---|---|---|---|---|
PmtInf |
CstmrDrctDbtInitn/PmtInf |
1..* | PaymentInstructionInformation4 |
|
PmtInfId |
CstmrDrctDbtInitn/PmtInf/PmtInfId |
1..1 | Max35Text |
length 1–35 |
PmtMtd |
CstmrDrctDbtInitn/PmtInf/PmtMtd |
1..1 | PaymentMethod2Code |
1 codes |
BtchBookg |
CstmrDrctDbtInitn/PmtInf/BtchBookg |
0..1 | BatchBookingIndicator |
|
NbOfTxs |
CstmrDrctDbtInitn/PmtInf/NbOfTxs |
0..1 | Max15NumericText |
pattern [0-9]{1,15} |
CtrlSum |
CstmrDrctDbtInitn/PmtInf/CtrlSum |
0..1 | DecimalNumber |
17 decimals max |
PmtTpInf |
CstmrDrctDbtInitn/PmtInf/PmtTpInf |
0..1 | PaymentTypeInformation20 |
|
InstrPrty |
CstmrDrctDbtInitn/PmtInf/PmtTpInf/InstrPrty |
0..1 | Priority2Code |
2 codes |
SvcLvl |
CstmrDrctDbtInitn/PmtInf/PmtTpInf/SvcLvl |
0..1 | ServiceLevel8Choice |
|
LclInstrm |
CstmrDrctDbtInitn/PmtInf/PmtTpInf/LclInstrm |
0..1 | LocalInstrument2Choice |
|
SeqTp |
CstmrDrctDbtInitn/PmtInf/PmtTpInf/SeqTp |
0..1 | SequenceType1Code |
4 codes |
CtgyPurp |
CstmrDrctDbtInitn/PmtInf/PmtTpInf/CtgyPurp |
0..1 | CategoryPurpose1Choice |
|
ReqdColltnDt |
CstmrDrctDbtInitn/PmtInf/ReqdColltnDt |
1..1 | ISODate |
|
Cdtr |
CstmrDrctDbtInitn/PmtInf/Cdtr |
1..1 | PartyIdentification32 |
|
Nm |
CstmrDrctDbtInitn/PmtInf/Cdtr/Nm |
0..1 | Max140Text |
length 1–140 |
PstlAdr |
CstmrDrctDbtInitn/PmtInf/Cdtr/PstlAdr |
0..1 | PostalAddress6 |
|
Id |
CstmrDrctDbtInitn/PmtInf/Cdtr/Id |
0..1 | Party6Choice |
|
CtryOfRes |
CstmrDrctDbtInitn/PmtInf/Cdtr/CtryOfRes |
0..1 | CountryCode |
pattern [A-Z]{2,2} |
CtctDtls |
CstmrDrctDbtInitn/PmtInf/Cdtr/CtctDtls |
0..1 | ContactDetails2 |
|
CdtrAcct |
CstmrDrctDbtInitn/PmtInf/CdtrAcct |
1..1 | CashAccount16 |
|
Id |
CstmrDrctDbtInitn/PmtInf/CdtrAcct/Id |
1..1 | AccountIdentification4Choice |
|
Tp |
CstmrDrctDbtInitn/PmtInf/CdtrAcct/Tp |
0..1 | CashAccountType2 |
|
Ccy |
CstmrDrctDbtInitn/PmtInf/CdtrAcct/Ccy |
0..1 | ActiveOrHistoricCurrencyCode |
pattern [A-Z]{3,3} |
Nm |
CstmrDrctDbtInitn/PmtInf/CdtrAcct/Nm |
0..1 | Max70Text |
length 1–70 |
CdtrAgt |
CstmrDrctDbtInitn/PmtInf/CdtrAgt |
1..1 | BranchAndFinancialInstitutionIdentification4 |
|
FinInstnId |
CstmrDrctDbtInitn/PmtInf/CdtrAgt/FinInstnId |
1..1 | FinancialInstitutionIdentification7 |
|
BrnchId |
CstmrDrctDbtInitn/PmtInf/CdtrAgt/BrnchId |
0..1 | BranchData2 |
|
CdtrAgtAcct |
CstmrDrctDbtInitn/PmtInf/CdtrAgtAcct |
0..1 | CashAccount16 |
|
Id |
CstmrDrctDbtInitn/PmtInf/CdtrAgtAcct/Id |
1..1 | AccountIdentification4Choice |
|
Tp |
CstmrDrctDbtInitn/PmtInf/CdtrAgtAcct/Tp |
0..1 | CashAccountType2 |
|
Ccy |
CstmrDrctDbtInitn/PmtInf/CdtrAgtAcct/Ccy |
0..1 | ActiveOrHistoricCurrencyCode |
pattern [A-Z]{3,3} |
Nm |
CstmrDrctDbtInitn/PmtInf/CdtrAgtAcct/Nm |
0..1 | Max70Text |
length 1–70 |
UltmtCdtr |
CstmrDrctDbtInitn/PmtInf/UltmtCdtr |
0..1 | PartyIdentification32 |
|
Nm |
CstmrDrctDbtInitn/PmtInf/UltmtCdtr/Nm |
0..1 | Max140Text |
length 1–140 |
PstlAdr |
CstmrDrctDbtInitn/PmtInf/UltmtCdtr/PstlAdr |
0..1 | PostalAddress6 |
|
Id |
CstmrDrctDbtInitn/PmtInf/UltmtCdtr/Id |
0..1 | Party6Choice |
|
CtryOfRes |
CstmrDrctDbtInitn/PmtInf/UltmtCdtr/CtryOfRes |
0..1 | CountryCode |
pattern [A-Z]{2,2} |
CtctDtls |
CstmrDrctDbtInitn/PmtInf/UltmtCdtr/CtctDtls |
0..1 | ContactDetails2 |
|
ChrgBr |
CstmrDrctDbtInitn/PmtInf/ChrgBr |
0..1 | ChargeBearerType1Code |
4 codes |
ChrgsAcct |
CstmrDrctDbtInitn/PmtInf/ChrgsAcct |
0..1 | CashAccount16 |
|
Id |
CstmrDrctDbtInitn/PmtInf/ChrgsAcct/Id |
1..1 | AccountIdentification4Choice |
|
Tp |
CstmrDrctDbtInitn/PmtInf/ChrgsAcct/Tp |
0..1 | CashAccountType2 |
|
Ccy |
CstmrDrctDbtInitn/PmtInf/ChrgsAcct/Ccy |
0..1 | ActiveOrHistoricCurrencyCode |
pattern [A-Z]{3,3} |
Nm |
CstmrDrctDbtInitn/PmtInf/ChrgsAcct/Nm |
0..1 | Max70Text |
length 1–70 |
ChrgsAcctAgt |
CstmrDrctDbtInitn/PmtInf/ChrgsAcctAgt |
0..1 | BranchAndFinancialInstitutionIdentification4 |
|
FinInstnId |
CstmrDrctDbtInitn/PmtInf/ChrgsAcctAgt/FinInstnId |
1..1 | FinancialInstitutionIdentification7 |
|
BrnchId |
CstmrDrctDbtInitn/PmtInf/ChrgsAcctAgt/BrnchId |
0..1 | BranchData2 |
|
CdtrSchmeId |
CstmrDrctDbtInitn/PmtInf/CdtrSchmeId |
0..1 | PartyIdentification32 |
|
Nm |
CstmrDrctDbtInitn/PmtInf/CdtrSchmeId/Nm |
0..1 | Max140Text |
length 1–140 |
PstlAdr |
CstmrDrctDbtInitn/PmtInf/CdtrSchmeId/PstlAdr |
0..1 | PostalAddress6 |
|
Id |
CstmrDrctDbtInitn/PmtInf/CdtrSchmeId/Id |
0..1 | Party6Choice |
|
CtryOfRes |
CstmrDrctDbtInitn/PmtInf/CdtrSchmeId/CtryOfRes |
0..1 | CountryCode |
pattern [A-Z]{2,2} |
CtctDtls |
CstmrDrctDbtInitn/PmtInf/CdtrSchmeId/CtctDtls |
0..1 | ContactDetails2 |
|
DrctDbtTxInf |
CstmrDrctDbtInitn/PmtInf/DrctDbtTxInf |
1..* | DirectDebitTransactionInformation9 |
|
PmtId |
CstmrDrctDbtInitn/PmtInf/DrctDbtTxInf/PmtId |
1..1 | PaymentIdentification1 |
|
PmtTpInf |
CstmrDrctDbtInitn/PmtInf/DrctDbtTxInf/PmtTpInf |
0..1 | PaymentTypeInformation20 |
|
InstdAmt |
CstmrDrctDbtInitn/PmtInf/DrctDbtTxInf/InstdAmt |
1..1 | ActiveOrHistoricCurrencyAndAmount |
|
ChrgBr |
CstmrDrctDbtInitn/PmtInf/DrctDbtTxInf/ChrgBr |
0..1 | ChargeBearerType1Code |
4 codes |
DrctDbtTx |
CstmrDrctDbtInitn/PmtInf/DrctDbtTxInf/DrctDbtTx |
0..1 | DirectDebitTransaction6 |
|
UltmtCdtr |
CstmrDrctDbtInitn/PmtInf/DrctDbtTxInf/UltmtCdtr |
0..1 | PartyIdentification32 |
|
DbtrAgt |
CstmrDrctDbtInitn/PmtInf/DrctDbtTxInf/DbtrAgt |
1..1 | BranchAndFinancialInstitutionIdentification4 |
|
DbtrAgtAcct |
CstmrDrctDbtInitn/PmtInf/DrctDbtTxInf/DbtrAgtAcct |
0..1 | CashAccount16 |
|
Dbtr |
CstmrDrctDbtInitn/PmtInf/DrctDbtTxInf/Dbtr |
1..1 | PartyIdentification32 |
|
DbtrAcct |
CstmrDrctDbtInitn/PmtInf/DrctDbtTxInf/DbtrAcct |
1..1 | CashAccount16 |
|
UltmtDbtr |
CstmrDrctDbtInitn/PmtInf/DrctDbtTxInf/UltmtDbtr |
0..1 | PartyIdentification32 |
|
InstrForCdtrAgt |
CstmrDrctDbtInitn/PmtInf/DrctDbtTxInf/InstrForCdtrAgt |
0..1 | Max140Text |
length 1–140 |
Purp |
CstmrDrctDbtInitn/PmtInf/DrctDbtTxInf/Purp |
0..1 | Purpose2Choice |
|
RgltryRptg |
CstmrDrctDbtInitn/PmtInf/DrctDbtTxInf/RgltryRptg |
0..10 | RegulatoryReporting3 |
|
Tax |
CstmrDrctDbtInitn/PmtInf/DrctDbtTxInf/Tax |
0..1 | TaxInformation3 |
|
RltdRmtInf |
CstmrDrctDbtInitn/PmtInf/DrctDbtTxInf/RltdRmtInf |
0..10 | RemittanceLocation2 |
|
RmtInf |
CstmrDrctDbtInitn/PmtInf/DrctDbtTxInf/RmtInf |
0..1 | RemittanceInformation5 |
343 further nested elements sit below this depth — every one of them is defined in the type reference below, which lists each type once instead of repeating it under every party.
Type reference#
Every complex type in this version is defined once on the pain.008.001.02 type reference — 62 types. The tree above repeats a party or address structure under each party; the type reference does not, which makes it the better page for mapping work.
Code lists used by this version#
| Code list | Values |
|---|---|
AddressType2Code |
ADDR, PBOX, HOME, BIZZ, MLTO, DLVY |
Authorisation1Code |
AUTH, FDET, FSUM, ILEV |
CashAccountType4Code |
CASH, CHAR, COMM, TAXE, CISH, TRAS, SACC, CACC, SVGS, ONDP, MGLD, NREX, MOMA, LOAN (+2 more) |
ChargeBearerType1Code |
DEBT, CRED, SHAR, SLEV |
CreditDebitCode |
CRDT, DBIT |
DocumentType3Code |
RADM, RPIN, FXDR, DISP, PUOR, SCOR |
DocumentType5Code |
MSIN, CNFA, DNFA, CINV, CREN, DEBN, HIRI, SBIN, CMCN, SOAC, DISP, BOLD, VCHR, AROI (+1 more) |
Frequency1Code |
YEAR, MNTH, QURT, MIAN, WEEK, DAIL, ADHO, INDA |
NamePrefix1Code |
DOCT, MIST, MISS, MADM |
PaymentMethod2Code |
DD |
Priority2Code |
HIGH, NORM |
RegulatoryReportingType1Code |
CRED, DEBT, BOTH |
RemittanceLocationMethod2Code |
FAXI, EDIC, URID, EMAL, POST, SMSM |
SequenceType1Code |
FRST, RCUR, FNAL, OOFF |
TaxRecordPeriod1Code |
MM01, MM02, MM03, MM04, MM05, MM06, MM07, MM08, MM09, MM10, MM11, MM12, QTR1, QTR2 (+4 more) |
The full value set for every list is on the code lists page.
Generate and validate this version#
pain001 -t pain.008.001.02 -d payments.csv -o out/ --dry-run
See the compatibility matrix for supported input formats and gates.