Status Report (pain.002) input files
Table of contents
General
The Status Reports are used by bank to inform the corporate about the status of an instruction - either single transaction or a batch.
- For File level rejection the trigger is embedded to MessageIdentification field (MsgId).
<?xml version="1.0" encoding="UTF-8"?> <Document mlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03"> <CstmrCdtTrfInitn> <GrpHdr> <MsgId>ERR{ReasonCode}/MsgId> |
- For Batch level rejection the trigger is embedded to PaymentInformationIdentification field (PmtInfId).
<PmtInf> <PmtInfId>ERR{ReasonCode}</PmtInfId> <PmtMtd>TRF</PmtMtd> <ReqdExctnDt>2014-01-01</ReqdExctnDt> ... |
- For Transaction level rejection thetrigger code is placed on name of the counter party of the transaction (Cdtr/Nm in Credit Transfers, Dbtr/Nm in Direct Debits).
<Cdtr> <Nm>ERR{ReasonCode}</Nm> <PstlAdr> <TwnNm>Tampere</TwnNm> <Ctry>FI</Ctry> </PstlAdr> </Cdtr> |
List of trigger codes
The format of a trigger code is following:
ERR{ ReasonCode }{R type} for example ERRAC01RJCT
The full list of availabe trigger codes below:
Trigger code | ISO code | Description (en) | Description (nl) | SCT | SDD |
ERRAC01RJCT | AC01 | Account incorrect | Rek.nummer onjuist | x | x |
ERRAC04RJCT | AC04 | Account closed | Rek.nummer gesloten | x | |
ERRAG01RJCT | AG01 | Transaction forbidden | Administratieve reden | x | |
ERRAG02RJCT | AG02 | Invalid file format | Fout bestandsformaat | x | x |
ERRAM04RJCT | AM04 | Insufficient funds | x | ||
ERRAM05RJCT | AM05 | Duplicate collection | Dubbele incasso | x | x |
ERRBE01RJCT | BE01 | Reason not specified | Administratieve reden | x | |
ERRCNORRJCT | CNOR | BIC not registered | BIC niet aangesloten | x | x |
ERRDNORRJCT | DNOR | BIC not registered | BIC niet aangesloten | x | x |
ERRFF01RJCT | FF01 | Invalid file format | Fout bestandsformaat | x | x |
ERRMD01RJCT | MD01 | No mandate | Onjuiste machtiging | x | |
ERRMD02RJCT | MD02 | Incorrect mandate | Onjuiste machtiging | x | |
ERRMD07RJCT | MD07 | Reason not specified | Administratieve reden | x | |
ERRMS02RJCT | MS02 | Refusal by the Debtor | Oneens met incasso | x | |
ERRMS03RJCT | MS03 | Reason not specified | Administratieve reden | x | x |
ERRRC01RJCT | RC01 | BIC Incorrect | Onbekende BIC | x | x |
ERRRR01RJCT | RR01 | Reason not specified | Administratieve reden | x | x |
ERRRR02RJCT | RR02 | Reason not specified | Administratieve reden | x | x |
ERRRR03RJCT | RR03 | Reason not specified | Administratieve reden | x | x |
ERRRR04RJCT | RR04 | Reason not specified | Administratieve reden | x | x |
ERRSL01RJCT | SL01 | Reason not specified | Administratieve reden | x | |
ERRTM01RJCT | TM01 | Reason not specified | Administratieve reden | x | |
ERRAC06RJCT | AC06 | Reason not specified | Administratieve reden | x |
Special cases
The XMLdation Simulator tool always generates one pain.002 status report file per one input file. This functionality creates a limitation in the following scenario:
Assume e.g. an SCT payment file, which has an incorrect account number on batch level and contains an invalid BIC on transaction level. The simultaneous presence of these two errors in one and the same message file can manifest itself in two different ways: either they are found in one and the same batch or they appear in different batches. In Rabobank production environment, both situations will always generate two separate pain.002 files, one reporting the error on batch level and one reporting the error on transaction level.
The simulator will generate the following output for the above described cases:
- The Batch error and Transaction error are included in the same batch – Only the error on batch level will be reported in the generated pain.002 file
- The Batch error and Transaction error are included in different batches – Bothe the error on batch level and the error on transaction level will be reported, but within the same pain.002 message
This situation in Rabobank production environment can only be simulated for both cases by presenting the error on a batch level and the error on a transaction level in two separate input SCT or SDD files.
Example 1
In the following examples this will be illustrated. The first example is an SCT file with the error message ERRAC01RJCT on batch level (meaning that the account number is incorrect) and the error message ERRRC01RJCT on transaction level (meaning that the BIC is incorrect) in the same batch:
<?xml version="1.0" encoding="UTF-8"?> <Document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03"> <CstmrCdtTrfInitn> <GrpHdr> <MsgId>MsgId-SCT-20140101-01</MsgId> <CreDtTm>2014-01-01T12:12:01</CreDtTm> <NbOfTxs>1</NbOfTxs> <CtrlSum>19.87</CtrlSum> <InitgPty> <Nm>dhr. D. ebiteur</Nm> </InitgPty> </GrpHdr> <PmtInf> <PmtInfId>ERRAC01RJCT</PmtInfId> <PmtMtd>TRF</PmtMtd> <ReqdExctnDt>2014-01-01</ReqdExctnDt> <Dbtr> <Nm>dhr. D. ebiteur</Nm> </Dbtr> <DbtrAcct> <Id> <IBAN>NL16WIND0123456789</IBAN> </Id> </DbtrAcct> <DbtrAgt> <FinInstnId> <BIC>RABONL2U</BIC> </FinInstnId> </DbtrAgt> <CdtTrfTxInf> <PmtId> <EndToEndId>SCT-20140101-01</EndToEndId> </PmtId> <Amt> <InstdAmt Ccy="EUR">19.87</InstdAmt> </Amt> <CdtrAgt> <FinInstnId> <BIC>RABONL2U</BIC> </FinInstnId> </CdtrAgt> <Cdtr> <Nm>ERRRC01RJCT</Nm> </Cdtr> <CdtrAcct> <Id> <IBAN>NL13TEST0123456789</IBAN> </Id> </CdtrAcct> </CdtTrfTxInf> </PmtInf> </CstmrCdtTrfInitn> </Document> |
In the Simulator, this input file will generate one pain.002 reporting only the error on batch level. So, the result is incomplete and therefore not desired. By creating the following two separate input files one will avoid this undesired output:
File 1:
<?xml version="1.0" encoding="UTF-8"?> <Document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03"> <CstmrCdtTrfInitn> <GrpHdr> <MsgId>MsgId-SCT-20140101-01</MsgId> <CreDtTm>2014-01-01T12:12:01</CreDtTm> <NbOfTxs>1</NbOfTxs> <CtrlSum>19.87</CtrlSum> <InitgPty> <Nm>dhr. D. ebiteur</Nm> </InitgPty> </GrpHdr> <PmtInf> <PmtInfId>ERRAC01RJCT</PmtInfId> <PmtMtd>TRF</PmtMtd> <ReqdExctnDt>2014-01-01</ReqdExctnDt> <Dbtr> <Nm>dhr. D. ebiteur</Nm> </Dbtr> <DbtrAcct> <Id> <IBAN>NL16WIND0123456789</IBAN> </Id> </DbtrAcct> <DbtrAgt> <FinInstnId> <BIC>RABONL2U</BIC> </FinInstnId> </DbtrAgt> <CdtTrfTxInf> <PmtId> <EndToEndId>SCT-20140101-01</EndToEndId> </PmtId> <Amt> <InstdAmt Ccy="EUR">19.87</InstdAmt> </Amt> <CdtrAgt> <FinInstnId> <BIC>RABONL2U</BIC> </FinInstnId> </CdtrAgt> <Cdtr> <Nm>Dhr. C. Rediteur</Nm> </Cdtr> <CdtrAcct> <Id> <IBAN>NL13TEST0123456789</IBAN> </Id> </CdtrAcct> </CdtTrfTxInf> </PmtInf> </CstmrCdtTrfInitn> </Document> |
File 2:
<?xml version="1.0" encoding="UTF-8"?> <Document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03"> <CstmrCdtTrfInitn> <GrpHdr> <MsgId>MsgId-SCT-20140101-01</MsgId> <CreDtTm>2014-01-01T12:12:01</CreDtTm> <NbOfTxs>1</NbOfTxs> <CtrlSum>19.87</CtrlSum> <InitgPty> <Nm>dhr. D. ebiteur</Nm> </InitgPty> </GrpHdr> <PmtInf> <PmtInfId>PmtInfId-SCT-20140101-01</PmtInfId> <PmtMtd>TRF</PmtMtd> <ReqdExctnDt>2014-01-01</ReqdExctnDt> <Dbtr> <Nm>dhr. D. ebiteur</Nm> </Dbtr> <DbtrAcct> <Id> <IBAN>NL16WIND0123456789</IBAN> </Id> </DbtrAcct> <DbtrAgt> <FinInstnId> <BIC>RABONL2U</BIC> </FinInstnId> </DbtrAgt> <CdtTrfTxInf> <PmtId> <EndToEndId>SCT-20140101-01</EndToEndId> </PmtId> <Amt> <InstdAmt Ccy="EUR">19.87</InstdAmt> </Amt> <CdtrAgt> <FinInstnId> <BIC>RABONL2U</BIC> </FinInstnId> </CdtrAgt> <Cdtr> <Nm>ERRRC01RJCT</Nm> </Cdtr> <CdtrAcct> <Id> <IBAN>NL13TEST0123456789</IBAN> </Id> </CdtrAcct> </CdtTrfTxInf> </PmtInf> </CstmrCdtTrfInitn> </Document> |
Example 2
The second example isan SCT file with the error message ERRAC01RJCT on batch level and the error message ERRRC01RJCT on transaction level in different batches:
<?xml version="1.0" encoding="UTF-8"?> <Document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03"> <CstmrCdtTrfInitn> <GrpHdr> <MsgId>MsgId-SCT-20140101-01</MsgId> <CreDtTm>2014-01-01T12:12:01</CreDtTm> <NbOfTxs>2</NbOfTxs> <CtrlSum>19.88</CtrlSum> <InitgPty> <Nm>dhr. I. Nitiatiefnemer</Nm> </InitgPty> </GrpHdr> <PmtInf> <PmtInfId> ERRAC01RJCT </PmtInfId> <PmtMtd>TRF</PmtMtd> <ReqdExctnDt>2014-01-01</ReqdExctnDt> <Dbtr> <Nm>Jonkheer D. ebiteur de eerste</Nm> </Dbtr> <DbtrAcct> <Id> <IBAN>NL16WIND0123456789</IBAN> </Id> </DbtrAcct> <DbtrAgt> <FinInstnId> <BIC>RABONL2U</BIC> </FinInstnId> </DbtrAgt> <CdtTrfTxInf> <PmtId> <EndToEndId>SCT-20140101-01</EndToEndId> </PmtId> <Amt> <InstdAmt Ccy="EUR">9.94</InstdAmt> </Amt> <CdtrAgt> <FinInstnId> <BIC>RABONL2U</BIC> </FinInstnId> </CdtrAgt> <Cdtr> <Nm>Dhr. C. Rediteur</Nm> </Cdtr> <CdtrAcct> <Id> <IBAN>NL13TEST0123456789</IBAN> </Id> </CdtrAcct> </CdtTrfTxInf> </PmtInf> <PmtInf> <PmtInfId>PmtInfId-SCT-20140101-01</PmtInfId> <PmtMtd>TRF</PmtMtd> <ReqdExctnDt>2014-01-01</ReqdExctnDt> <Dbtr> <Nm>Jonkheer D. ebiteur de tweede</Nm> </Dbtr> <DbtrAcct> <Id> <IBAN>NL83DEBT0123456789</IBAN> </Id> </DbtrAcct> <DbtrAgt> <FinInstnId> <BIC>RABONL2U</BIC> </FinInstnId> </DbtrAgt> <CdtTrfTxInf> <PmtId> <EndToEndId>SCT-20140101-01</EndToEndId> </PmtId> <Amt> <InstdAmt Ccy="EUR">9.94</InstdAmt> </Amt> <CdtrAgt> <FinInstnId> <BIC>RABONL2U</BIC> </FinInstnId> </CdtrAgt> <Cdtr> <Nm>ERRRC01RJCT</Nm> </Cdtr> <CdtrAcct> <Id> <IBAN>NL13TEST0123456789</IBAN> </Id> </CdtrAcct> </CdtTrfTxInf> </PmtInf> </CstmrCdtTrfInitn> </Document> |
By running this input file in the Simulator, we will have one pain.002 file as a result. Although this pain.002 file reports both the error on batch level and the one on transaction level, we will only have one pain.002 output file instead of two pain.002 output files, like in production. Thus, the result is complete but not desired. By dividing the two batches over two separate input files, one will avoid this unwanted result:
File 1:
<?xml version="1.0" encoding="UTF-8"?> <Document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03"> <CstmrCdtTrfInitn> <GrpHdr> <MsgId>MsgId-SCT-20140101-01</MsgId> <CreDtTm>2014-01-01T12:12:01</CreDtTm> <NbOfTxs>1</NbOfTxs> <CtrlSum>9.94</CtrlSum> <InitgPty> <Nm>dhr. I. Nitiatiefnemer</Nm> </InitgPty> </GrpHdr> <PmtInf> <PmtInfId>ERRAC01RJCT</PmtInfId> <PmtMtd>TRF</PmtMtd> <ReqdExctnDt>2014-01-01</ReqdExctnDt> <Dbtr> <Nm>Jonkheer D. ebiteur de eerste</Nm> </Dbtr> <DbtrAcct> <Id> <IBAN>NL16WIND0123456789</IBAN> </Id> </DbtrAcct> <DbtrAgt> <FinInstnId> <BIC>RABONL2U</BIC> </FinInstnId> </DbtrAgt> <CdtTrfTxInf> <PmtId> <EndToEndId>SCT-20140101-01</EndToEndId> </PmtId> <Amt> <InstdAmt Ccy="EUR">9.94</InstdAmt> </Amt> <CdtrAgt> <FinInstnId> <BIC>RABONL2U</BIC> </FinInstnId> </CdtrAgt> <Cdtr> <Nm>Dhr. C. Rediteur</Nm> </Cdtr> <CdtrAcct> <Id> <IBAN>NL13TEST0123456789</IBAN> </Id> </CdtrAcct> </CdtTrfTxInf> </PmtInf> </CstmrCdtTrfInitn> </Document> |
File 2:
<?xml version="1.0" encoding="UTF-8"?> <Document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03"> <CstmrCdtTrfInitn> <GrpHdr> <MsgId>MsgId-SCT-20140101-01</MsgId> <CreDtTm>2014-01-01T12:12:01</CreDtTm> <NbOfTxs>1</NbOfTxs> <CtrlSum>9.94</CtrlSum> <InitgPty> <Nm>dhr. I. Nitiatiefnemer</Nm> </InitgPty> </GrpHdr> <PmtInf> <PmtInfId>PmtInfId-SCT-20140101-01</PmtInfId> <PmtMtd>TRF</PmtMtd> <ReqdExctnDt>2014-01-01</ReqdExctnDt> <Dbtr> <Nm>Jonkheer D. ebiteur de tweede</Nm> </Dbtr> <DbtrAcct> <Id> <IBAN>NL83DEBT0123456789</IBAN> </Id> </DbtrAcct> <DbtrAgt> <FinInstnId> <BIC>RABONL2U</BIC> </FinInstnId> </DbtrAgt> <CdtTrfTxInf> <PmtId> <EndToEndId>SCT-20140101-01</EndToEndId> </PmtId> <Amt> <InstdAmt Ccy="EUR">9.94</InstdAmt> </Amt> <CdtrAgt> <FinInstnId> <BIC>RABONL2U</BIC> </FinInstnId> </CdtrAgt> <Cdtr> <Nm>ERRRC01RJCT</Nm> </Cdtr> <CdtrAcct> <Id> <IBAN>NL13TEST0123456789</IBAN> </Id> </CdtrAcct> </CdtTrfTxInf> </PmtInf> </CstmrCdtTrfInitn> </Document> |