Version: 1.3.0
Updated: 2025-06-16
Table of Content
Validation of the requested execution date
Outgoing international payments
Additional Optional Service 2 (AOS2)
Payment Initiation message formats descriptions
Payment Initiation for Finnish accounts
Payment Initiation for German accounts
List of technical validation errors
Change log
| 2025-06-16 |
|
| 2024-03-15 |
|
| 2024-03-07 |
|
| 2024-01-30 |
|
| 2023-12-21 |
|
| 2023-11-09 |
|
| 2023-10-31 |
|
| 2023-09-21 |
|
Introduction
Holvi’s payment services enable customers to send Customer-to-Bank (C2B) payment messages for execution by Holvi. In return, the customer can receive status reports.
The purpose of this document is to provide guidance on how information in Payment Initiation messages (Customer-to-Bank) should be structured in the exchange between the customer and Holvi, and about the schema used for the status reports responses from Holvi.
Requirements
Customers must have a valid agreement with Holvi in order to deliver payment instructions to the Holvi system via an agreed data transfer channel.
The customer can specify whether a payment status report message shall be created for the payments delivered to Holvi.
Before starting to deliver payment instructions to Holvi for its customer’s payment accounts, Holvi and the customer must conduct joint testing to validate the structural correctness of the messages against the scheme and Holvi’s own requirements.
File formats
The C2B payment initiation messages can be delivered to the Holvi’s system based on the customer's choice, in the following formats:
- XML format by the International Organization for Standardization (ISO), including:
- ISO 20022 pain.001.001.02 - CustomerCreditTransferInitiationV02 message for Payment Initiation messages
- ISO 20022 pain.001.001.03 - CustomerCreditTransferInitiationV03 message for Payment Initiation messages
Holvi can return a ”Payment Status Report” after receiving a payment message, in one of the following formats, depending on the pain.001 version received:
- XML format by the International Organization for Standardization (ISO), including:
- ISO 20022 pain.002.001.02 - ”Payment Status Report” after receiving a payment message
- ISO 20022 pain.002.001.03 - ”Payment Status Report” after receiving a payment message
For additional details related to the market specific formats and versions supported, please check the “Payment initiation message format descriptions” section of this document.
For the schemas and documentation, please refer to the ISO website at www.iso20022.org.
All files exchanged with Holvi are UTF-8 encoded.
Payments processing
Holvi’s banking days follow the TARGET2 calendar schedule published by the European Central Bank and available at https://www.ecb.europa.eu/ under the Payments & Markets - TARGET services section.
It is the debtor’s responsibility to make sure that the Holvi account to be debited has sufficient funds available to cover the specified payment initiation message amount on the requested execution date.
SEPA credit transfers
Processing schedule
The following schedule applies to payment initiation messages received on a banking day:
- Messages received from 00:00 to 16:00 EET are processed on the same banking day.
- Messages received after 16:00 EET are processed on the following banking day and the due date of the executed payments will be the date of processing.
Payment initiation messages received on a non banking day, are processed on the next banking day and the due date of the executed payments will be the date of processing.
Validation of the requested execution date
Holvi accepts a requested execution date of a payment initiation message that can be in the past or in the future, and the following applies:
- If the requested execution date is between 0 and 60 days older than today’s date, the due date will be changed to the date of processing as per the above processing schedule.
- Payment initiation messages can be sent to Holvi up to 365 calendar days prior to the due date.
SEPA Instant Credit Transfers
We support SEPA Instant Credit Transfers payments. For a payment to be processed as SCT Inst, the local instrument needs to be set as INST.
As of today, we do NOT support a requested execution date with a value other than today’s date.
<ReqdExctnDt>2023-11-13</ReqdExctnDt>
<LclInstrm>
<Cd>INST</Cd>
</LclInstrm>
Here is a complete example:
<?xml version="1.0" encoding="utf-8"?>
<Document
xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03 pain.001.001.03.xsd"
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03"
xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>AC07444de77f8b1b40275b9d</MsgId>
<CreDtTm>2023-11-13T14:00:14Z</CreDtTm>
<NbOfTxs>1</NbOfTxs>
<InitgPty>
<PstlAdr>
<Ctry>FI</Ctry>
</PstlAdr>
</InitgPty>
</GrpHdr>
<PmtInf>
<PmtInfId>AC07444de77f8b1b40275b9dA1</PmtInfId>
<PmtMtd>TRF</PmtMtd>
<PmtTpInf>
<InstrPrty>NORM</InstrPrty>
<SvcLvl>
<Cd>SEPA</Cd>
</SvcLvl>
<LclInstrm>
<Cd>INST</Cd>
</LclInstrm>
</PmtTpInf>
<ReqdExctnDt>2023-11-13</ReqdExctnDt>
<Dbtr>
<Nm>avalo</Nm>
<PstlAdr>
<Ctry>FI</Ctry>
</PstlAdr>
<Id>
<OrgId>
<Othr>
<Id>0123123123</Id>
<SchmeNm>
<Cd>BANK</Cd>
</SchmeNm>
</Othr>
</OrgId>
</Id>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>DE87200500001234567890</IBAN>
</Id>
<Ccy>EUR</Ccy>
</DbtrAcct>
<DbtrAgt>
<FinInstnId>
<BIC>BANKDEMO</BIC>
</FinInstnId>
</DbtrAgt>
<CdtTrfTxInf>
<PmtId>
<InstrId>1</InstrId>
<EndToEndId>1</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="EUR">10.00</InstdAmt>
</Amt>
<CdtrAgt>
<FinInstnId>
<BIC>BANKDEMO</BIC>
</FinInstnId>
</CdtrAgt>
<Cdtr>
<Nm>avalotest</Nm>
<PstlAdr>
<Ctry>FI</Ctry>
</PstlAdr>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>DE21500500009876543210</IBAN>
</Id>
</CdtrAcct>
<RmtInf>
<Strd>
<CdtrRefInf>
<Tp>
<CdOrPrtry>
<Cd>SCOR</Cd>
</CdOrPrtry>
</Tp>
<Ref>123</Ref>
</CdtrRefInf>
</Strd>
</RmtInf>
</CdtTrfTxInf>
</PmtInf>
</CstmrCdtTrfInitn>
</Document>
Outgoing international payments
Holvi supports sending EUR payments to an IBAN or BBAN/national account number of a country outside the SEPA region, and also supports currency payments in a number of different currencies. The list of supported currencies can be found in the Holvi Help Centre article here.
The key requirements for submitting international payments to Holvi via pain.001 file are:
- An international payment cannot be requested as instant payment
- Creditor BIC is a required field
- Creditor postal address is a required field
- Charge bearer must be set SHAR
- Minimum payment amount shall be at least 1
Additional Optional Service 2 (AOS2)
Please note that Holvi does not currently support receiving incoming payments that include the Extended Remittance Information (ERI), also known as Additional Optional Service 2 (AOS2). You can find more details about this service in the Finanssiala specifications “Description of additional optional service 2 (AOS2) applied in Finland to SEPA Credit Transfer“.
The above means that as of today we cannot process payments with detailed structured remittance information beyond the standard SEPA format, and such pain files may be declined.
Files submission
The Payment Initiation message files may be submitted to Holvi through the following channels:
- SFTP
- EBICS
Please ask Holvi for availability and more information on any of the above delivery channels.
More details on each of the data communication methods used for file transfer with Holvi is available in the separate service description documents.
A Data Transfer Service agreement with the customer defines the channel to be used for uploading the payment initiation message files to Holvi.
The files are submitted to Holvi by a Holvi account owner or by a party authorised by the account owner to deliver the message.
The maximum size of a file that can be exchanged with the EBICS connection is 20MB.
Payment Initiation message formats descriptions
Payment Initiation for Finnish accounts
XML format
The International Organization for Standardization has published on its website instructions
on implementing ISO 20022 messages as well as schema files that can be used for
checking the message format. Information on standardisation and messages is available at
The XML payment initiation messages produced for payment accounts of customers domiciled in Finland shall correspond to the content and structure described in the ISO20022 Payments Guide published by Finance Finland, the Federation of Finnish Financial Services, that has published the guide describing the message elements that should be used and what information they should contain.
Payment ID (Maksatustunnus)
Holvi and the customer must agree if to use a Payment ID (maksatustunnus) in order for Holvi to authorise the payment instructions received from the customer.
A very common way to define the Payment ID is by using the company's business ID without a hyphen and with a leading zero. For example if a business ID is 1234567-8, the Payment ID would be 012345678.
Whenever a Payment ID is used, Holvi validates the data received in the following fields, depending on the pain.001 version used:
- pain.001.001.02: PmtInfId.Dbtr.Id.OrgId.BkPtyId
- pain.001.001.03: PmtInfId.Dbtr.Id.OrgId.Othr.Id
Pain.001.001.02 files
The following is an example of pain.001.001.02 payment initiation message for Finland:
<?xml version='1.0' encoding='UTF-8'?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.02">
<pain.001.001.02>
<GrpHdr>
<MsgId>c10036a6891a4ebfb71999e14fb0b63e</MsgId>
<CreDtTm>2023-06-29T12:15:00</CreDtTm>
<BtchBookg>false</BtchBookg>
<NbOfTxs>1</NbOfTxs>
<CtrlSum>5.00</CtrlSum>
<Grpg>MIXD</Grpg>
<InitgPty>
<Nm>Initiator Name</Nm>
<PstlAdr>
<AdrTp>BIZZ</AdrTp>
<StrtNm>Some street</StrtNm>
<PstCd>00530</PstCd>
<TwnNm>Helsinki</TwnNm>
<Ctry>FI</Ctry>
</PstlAdr>
<Id>
<OrgId>
<BkPtyId>021937564</BkPtyId>
</OrgId>
</Id>
</InitgPty>
</GrpHdr>
<PmtInf>
<PmtInfId>b6bcde669c341680b6a0fbb14296a253</PmtInfId>
<PmtMtd>TRF</PmtMtd>
<PmtTpInf>
<InstrPrty>NORM</InstrPrty>
</PmtTpInf>
<ReqdExctnDt>2023-07-18</ReqdExctnDt>
<Dbtr>
<Nm>Debtor Name</Nm>
<PstlAdr>
<AdrTp>BIZZ</AdrTp>
<StrtNm>Some street</StrtNm>
<PstCd>00530</PstCd>
<TwnNm>Helsinki</TwnNm>
<Ctry>FI</Ctry>
</PstlAdr>
<Id>
<OrgId>
<BkPtyId>021937564</BkPtyId>
</OrgId>
</Id>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>FI6879977997168567</IBAN>
</Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId>
<BIC>HOLVFIHH</BIC>
</FinInstnId>
</DbtrAgt>
<ChrgBr>SLEV</ChrgBr>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>0c9f51f432c47139d83994888b10750d</EndToEndId>
<InstrId>1234</InstrId>
</PmtId>
<PmtTpInf>
<CtgyPurp>CORT</CtgyPurp>
</PmtTpInf>
<Amt>
<InstdAmt Ccy="EUR">5.00</InstdAmt>
</Amt>
<CdtrAgt>
<FinInstnId>
<BIC>HOLVFIHHXXX</BIC>
</FinInstnId>
</CdtrAgt>
<Cdtr>
<Nm>Creditor Name</Nm>
<PstlAdr>
<AdrTp>BIZZ</AdrTp>
<StrtNm>Some street</StrtNm>
<PstCd>00530</PstCd>
<TwnNm>Helsinki</TwnNm>
<Ctry>FI</Ctry>
</PstlAdr>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>FI6879977997168567</IBAN>
</Id>
</CdtrAcct>
<RmtInf>
<Ustrd>Unstructured Remittance Information</Ustrd>
</RmtInf>
</CdtTrfTxInf>
</PmtInf>
</pain.001.001.02>
</Document>
Pain.001.001.03 files
The following is an example of pain.001.001.03 payment initiation message for Finland:
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09:pain.001.001.03.xsd">
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>Message-ID-4711</MsgId>
<CreDtTm>2023-11-11T09:30:47.000Z</CreDtTm>
<NbOfTxs>1</NbOfTxs>
<CtrlSum>112.72</CtrlSum>
<InitgPty>
<Nm>Initiator Name</Nm>
</InitgPty>
</GrpHdr>
<PmtInf>
<PmtInfId>Payment-Information-ID-4711</PmtInfId>
<PmtMtd>TRF</PmtMtd>
<BtchBookg>false</BtchBookg>
<NbOfTxs>2</NbOfTxs>
<CtrlSum>6655.86</CtrlSum>
<PmtTpInf>
<SvcLvl>
<Cd>SEPA</Cd>
</SvcLvl>
</PmtTpInf>
<ReqdExctnDt>2023-07-18</ReqdExctnDt>
<Dbtr>
<Nm>Debtor Name</Nm>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>FI6879977997168567</IBAN>
</Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId>
<BIC>HOLVFIHH</BIC>
</FinInstnId>
</DbtrAgt>
<ChrgBr>SLEV</ChrgBr>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>OriginatorID1235</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="EUR">112.72</InstdAmt>
</Amt>
<CdtrAgt>
<FinInstnId>
<BIC>HOLVFIHHXXX</BIC>
</FinInstnId>
</CdtrAgt>
<Cdtr>
<Nm>Creditor Name</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>FI6879977997168567</IBAN>
</Id>
</CdtrAcct>
<RmtInf>
<Ustrd>Unstructured Remittance Information</Ustrd>
</RmtInf>
</CdtTrfTxInf>
</PmtInf>
</CstmrCdtTrfInitn>
</Document>
Payment Initiation for German accounts
XML format
The International Organization for Standardization has published on its website instructions
on implementing ISO 20022 messages as well as schema files that can be used for
checking the message format. Information on standardisation and messages is available at
The XML payment initiation messages produced for payment accounts of customers domiciled in Germany correspond to the content and structure described in the appendix 3 of the DFÜ agreement.
The appendix 3, Specification of Data Formats, of the DFÜ agreement is a compilation of formats which are standardised and permitted for “DFÜ (remote data transfer) with customers.
Please check the latest descriptions available at the website https://die-dk.de/en/ and https://ebics.de.
Pain.001.001.03 files
The specific pain.001.001.03 GBIC3 format is supported by Holvi.
The following is an example of pain.001.001.03 payment initiation message for Germany:
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09:pain.001.001.03.xsd">
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>Message-ID-4711</MsgId>
<CreDtTm>2023-11-11T09:30:47.000Z</CreDtTm>
<NbOfTxs>2</NbOfTxs>
<CtrlSum>6655.86</CtrlSum>
<InitgPty>
<Nm>Initiator Name</Nm>
</InitgPty>
</GrpHdr>
<PmtInf>
<PmtInfId>Payment-Information-ID-4711</PmtInfId>
<PmtMtd>TRF</PmtMtd>
<BtchBookg>false</BtchBookg>
<NbOfTxs>2</NbOfTxs>
<CtrlSum>6655.86</CtrlSum>
<PmtTpInf>
<SvcLvl>
<Cd>SEPA</Cd>
</SvcLvl>
</PmtTpInf>
<ReqdExctnDt>2023-07-18</ReqdExctnDt>
<Dbtr>
<Nm>Debtor Name</Nm>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>DE87200500001234567890</IBAN>
</Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId>
<BIC>BANKDEFFXXX</BIC>
</FinInstnId>
</DbtrAgt>
<ChrgBr>SLEV</ChrgBr>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>OriginatorID1234</EndToEndId>
<InstrId>1234</InstrId>
</PmtId>
<Amt>
<InstdAmt Ccy="EUR">6543.14</InstdAmt>
</Amt>
<CdtrAgt>
<FinInstnId>
<BIC>SPUEDE2UXXX</BIC>
</FinInstnId>
</CdtrAgt>
<Cdtr>
<Nm>Creditor Name</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>DE21500500009876543210</IBAN>
</Id>
</CdtrAcct>
<RmtInf>
<Strd>
<CdtrRefInf>
<Tp>
<CdOrPrtry>
<Cd>SCOR</Cd>
</CdOrPrtry>
</Tp>
<Ref>7001426736167</Ref>
</CdtrRefInf>
</Strd>
</RmtInf>
</CdtTrfTxInf>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>OriginatorID1235</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="EUR">112.72</InstdAmt>
</Amt>
<CdtrAgt>
<FinInstnId>
<BIC>SPUEDE2UXXX</BIC>
</FinInstnId>
</CdtrAgt>
<Cdtr>
<Nm>Other Creditor Name</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>DE21500500001234567897</IBAN>
</Id>
</CdtrAcct>
<RmtInf>
<Ustrd>Unstructured Remittance Information</Ustrd>
</RmtInf>
</CdtTrfTxInf>
</PmtInf>
</CstmrCdtTrfInitn>
</Document>
Batch Booking
Batch booking is a feature thanks to which a payer can state if they wish for the payments to be debited individually or in a batch.
One way this is achieved is by making use of the Batch Booking <BtchBookg> tag, within a SEPA XML payment instruction file. This tag defines how the debit transaction should be handled, as it identifies whether a single entry (false) per individual transaction or a batch entry (true) for the sum of the amounts of all transactions within the group of a message is requested.
Upon request, it's also possible to configure the connection such that if the Batch Booking tag is not provided, Holvi always assumes that Batch booking = true.
Salary payments
Holvi supports executing payments where the Purpose Code is equal to SALA within a SEPA XML payment instruction file, as per the following XML Tag example:
<Purp>
<Cd>SALA</Cd>
</Purp>
Holvi executes salary payments according to existing regulations in the relevant market:
- Germany: a SEPA payment with SALA purpose code is executed by Holvi the same way as any other SEPA Credit Transfer.
- Finland: a payment with SALA purpose code is executed in line with the specifications from Finance Finland, that can be found in the document “Payment of salaries and pensions as credit transfers” available on their website here.
Payment Status Reports
The responses from Holvi to payments initiated by a C2B payment message use the schema pain.002.
Upon request, responses for the C2B message can be retrieved from the agreed channel, as per the related Data Transfer Service agreement with Holvi.
The pain.002 response data on payments initiated by a C2B payment message contains references to the original payload and in some cases also to individual payments.
Status reports schedule
If the batches or transactions contain errors, status reports are created after each payment initiation message has been processed by Holvi.
The following pain.002 status reports are created for C2B payment messages:
- Report on technical validation, upon sending the payment initiation message to Holvi.
- Report on content validation, upon processing the message content.
- Payment status report: Upon rejection of a payment in debit processing and for payments with insufficient funds. Upon successful debit processing of a payment.
The rejection reason codes used for pain.002 messages are the ones specified in the External Code List / ExternalStatusReason1Code of the ISO20022 standard. The code list is available at the ISO20022 website https://www.iso20022.org/catalogue-messages/additional-content-messages/external-code-sets.
Status reports formats
Pain.002.001.02 files
The Payment Status Report in the XML format is based on the message description pain.002.001.02 published by the International Organization for Standardization (ISO).
Message approved (ACTC)
This status report message occurs at the Group Header level, OriginalGroupInformationAndStatus (<OrgnlGrpInfAndSts>), and it’s related to the syntax and compliance validations of the payment order message.
The sample below shows an ACTC (AcceptedTechnicalValidation) status report, indicating that authentication and syntactical and semantical validation were successful. Holvi will process the payment order message further for back-end processing and perform content (business) validation.
The following is an example of file:
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.002.001.02">
<pain.002.001.02>
<GrpHdr>
</GrpHdr>
<OrgnlGrpInfAndSts>
<OrgnlMsgId>c10036a6891a4ebfb71999e14fb0b63e</OrgnlMsgId>
<OrgnlMsgNmId>pain.001.001.02</OrgnlMsgNmId>
<OrgnlCreDtTm>2023-06-29T12:15:00</OrgnlCreDtTm>
<OrgnlNbOfTxs>1</OrgnlNbOfTxs>
<OrgnlCtrlSum>5.00</OrgnlCtrlSum>
<GrpSts>ACTC</GrpSts>
</OrgnlGrpInfAndSts>
</pain.002.001.02>
</Document>
Message rejected (RJCT)
This status report message occurs at the Group Header level, OriginalGroupInformationAndStatus (<OrgnlGrpInfAndSts>), and it’s related to the syntax and compliance validations of the payment order message.
The sample below shows a RJCT (rejection) status report, indicating that payment initiation has been rejected. The whole pain.001.001.03 message must be corrected and re-sent to Holvi.
The following is an example of file:
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.002.001.02">
<pain.002.001.02>
<GrpHdr>
</GrpHdr>
<OrgnlGrpInfAndSts>
<OrgnlMsgId>c10036a6891a4ebfb71999e14fb0b63e</OrgnlMsgId>
<OrgnlMsgNmId>pain.001.001.02</OrgnlMsgNmId>
<OrgnlCreDtTm>2023-06-29T12:15:00</OrgnlCreDtTm>
<OrgnlNbOfTxs>1</OrgnlNbOfTxs>
<OrgnlCtrlSum>5.00</OrgnlCtrlSum>
<GrpSts>RJCT</GrpSts>
</OrgnlGrpInfAndSts>
</pain.002.001.02>
</Document>
Payment information accepted
This status report message occurs at the Group Header level, OriginalGroupInformationAndStatus (<OrgnlGrpInfAndSts>), and provides status information for the whole payment initiation.
Please note that for the pain.002.001.02 version, the specifications does not support providing transaction level information.
The sample below shows an ACCP (AcceptedCustomerProfile) status report, indicating that all preceding checks such as technical validation and customer profile were successful and therefore the payment initiation has been executed.
The following is an example of file:
<?xml version="1.0" encoding="UTF-8"?>
<Document
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.002.001.02">
<pain.002.001.02>
<GrpHdr>
<MsgId>4bcf1ff52b5c3dcb553659750072cdee</MsgId>
<CreDtTm>2023-06-29T12:15:00</CreDtTm>
</GrpHdr>
<OrgnlGrpInfAndSts>
<OrgnlMsgId>c10036a6891a4ebfb71999e14fb0b63e</OrgnlMsgId>
<OrgnlMsgNmId>pain.001.001.02</OrgnlMsgNmId>
<OrgnlCreDtTm>2023-06-29T12:15:00</OrgnlCreDtTm>
<OrgnlNbOfTxs>1</OrgnlNbOfTxs>
<GrpSts>ACCP</GrpSts>
</OrgnlGrpInfAndSts>
</pain.002.001.02>
</Document>
Transaction rejected
This status report message occurs at the transaction level, TransactionInformationAndStatus (<TxInfAndSts>), and provides status information for each single transaction that is part of the status report message.
The sample below shows a RJCT (rejection) status report, indicating that an individual transaction included in the payment initiation has been rejected.
The following is an example of file in the above format version:
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.002.001.02">
<pain.002.001.02>
<GrpHdr>
</GrpHdr>
<OrgnlGrpInfAndSts>
<OrgnlMsgId>c10036a6891a4ebfb71999e14fb0b63e</OrgnlMsgId>
<OrgnlMsgNmId>pain.001.001.02</OrgnlMsgNmId>
<OrgnlCreDtTm>2023-06-29T12:15:00</OrgnlCreDtTm>
<OrgnlNbOfTxs>1</OrgnlNbOfTxs>
<OrgnlCtrlSum>5.00</OrgnlCtrlSum>
<GrpSts>RJCT</GrpSts>
</OrgnlGrpInfAndSts>
<TxInfAndSts>
<OrgnlPmtInfId>b6bcde669c341680b6a0fbb14296a253</OrgnlPmtInfId>
<OrgnlEndToEndId>0c9f51f432c47139d83994888b10750d</OrgnlEndToEndId>
<TxSts>RJCT</TxSts>
<StsRsnInf>
<StsRsn>
<Cd>NARR</Cd>
</StsRsn>
<AddtlStsRsnInf>Either Ustrd or Strd must be present, but not both</AddtlStsRsnInf>
</StsRsnInf>
<OrgnlTxRef>
<Amt>
<InstdAmt Ccy="EUR">5.00</InstdAmt>
</Amt>
<ReqdExctnDt>2023-07-18</ReqdExctnDt>
<Dbtr>
<Nm>Procounter debtor</Nm>
<PstlAdr>
<AdrTp>BIZZ</AdrTp>
<StrtNm>Some street</StrtNm>
<PstCd>00530</PstCd>
<TwnNm>Helsinki</TwnNm>
<Ctry>FI</Ctry>
</PstlAdr>
<Id>
<OrgId>
<BkPtyId>021937564</BkPtyId>
</OrgId>
</Id>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>FI4357804120035651</IBAN>
</Id>
</DbtrAcct>
</OrgnlTxRef>
</TxInfAndSts>
</pain.002.001.02>
</Document>
Pain.002.001.03 files
The Payment Status Report in the XML format is based on the message description pain.002.001.03 published by the International Organization for Standardization (ISO).
Message approved (ACTC)
This status report message occurs at the Group Header level, OriginalGroupInformationAndStatus (<OrgnlGrpInfAndSts>), and it’s related to the syntax and compliance validations of the payment order message.
The sample below shows an ACTC (AcceptedTechnicalValidation) status report, indicating that authentication and syntactical and semantical validation were successful. Holvi will process the payment order message further for back-end processing and perform content (business) validation.
The following is an example of file:
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.002.001.03">
<CstmrPmtStsRpt>
<GrpHdr>
</GrpHdr>
<OrgnlGrpInfAndSts>
<OrgnlMsgId>Message-ID-4711</OrgnlMsgId>
<OrgnlMsgNmId>pain.001.001.03</OrgnlMsgNmId>
<OrgnlNbOfTxs>2</OrgnlNbOfTxs>
<OrgnlCtrlSum>6655.86</OrgnlCtrlSum>
<GrpSts>ACTC</GrpSts>
</OrgnlGrpInfAndSts>
</CstmrPmtStsRpt>
</Document>
Message rejected (RJCT)
This status report message occurs at the Group Header level, OriginalGroupInformationAndStatus (<OrgnlGrpInfAndSts>), and it’s related to the syntax and compliance validations of the payment order message.
The sample below shows a RJCT (rejection) status report, indicating that payment initiation has been rejected. The whole pain.001.001.03 message must be corrected and re-sent to Holvi.
The following is an example of file:
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.002.001.03">
<CstmrPmtStsRpt>
<GrpHdr>
</GrpHdr>
<OrgnlGrpInfAndSts>
<OrgnlMsgId>Message-ID-4711</OrgnlMsgId>
<OrgnlMsgNmId>pain.001.001.03</OrgnlMsgNmId>
<OrgnlNbOfTxs>2</OrgnlNbOfTxs>
<OrgnlCtrlSum>6655.86</OrgnlCtrlSum>
<GrpSts>RJCT</GrpSts>
</OrgnlGrpInfAndSts>
</CstmrPmtStsRpt>
</Document>
Payment information accepted
This status report message occurs at the payment information level, OriginalPaymentInformationAndStatus (<OrgnlPmtInfAndSts>).
The sample below shows a ACCP (AcceptedCustomerProfile) status report, indicating that all preceding checks such as technical validation and customer profile were successful and therefore the payment initiation has been accepted for execution.
The following is an example of file:
<?xml version="1.0" encoding="UTF-8"?>
<Document
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.002.001.03">
<CstmrPmtStsRpt>
<GrpHdr>
<MsgId>feb511436b5998bf881c85b823458659</MsgId>
<CreDtTm>2023-06-29T12:15:00</CreDtTm>
</GrpHdr>
<OrgnlGrpInfAndSts>
<OrgnlMsgId>c10036a6891a4ebfb71999e14fb0b63e</OrgnlMsgId>
<OrgnlMsgNmId>pain.001.001.03</OrgnlMsgNmId>
<OrgnlNbOfTxs>1</OrgnlNbOfTxs>
<OrgnlCtrlSum>100.00</OrgnlCtrlSum>
<GrpSts>ACCP</GrpSts>
</OrgnlGrpInfAndSts>
<OrgnlPmtInfAndSts>
<OrgnlPmtInfId>c10036a6891a4ebfb71999e14fb0b63e</OrgnlPmtInfId>
<PmtInfSts>ACCP</PmtInfSts>
</OrgnlPmtInfAndSts>
</CstmrPmtStsRpt>
</Document>
Transaction rejected
This status report message occurs at the transaction level, TransactionInformationAndStatus (<TxInfAndSts>), and provides status information for each single transaction that is part of the status report message.
The sample below shows a RJCT (rejection) status report, indicating that an individual transaction included in the payment initiation has been rejected.
Whenever an error is found on only one or some credit transactions, then PART (partly) will be used to indicate that not all underlying transactions have been rejected.
Note. Holvi may also use the code ACWC (accepted with change) to indicate that the payment was accepted but the requested execution date has been changed due to cut-off time.
The following is an example of file in the above format version:
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.002.001.03">
<CstmrPmtStsRpt>
<GrpHdr>
</GrpHdr>
<OrgnlGrpInfAndSts>
<OrgnlMsgId>Message-ID-4711</OrgnlMsgId>
<OrgnlMsgNmId>pain.001.001.03</OrgnlMsgNmId>
<OrgnlNbOfTxs>2</OrgnlNbOfTxs>
<OrgnlCtrlSum>6655.86</OrgnlCtrlSum>
<GrpSts>PART</GrpSts>
</OrgnlGrpInfAndSts>
<OrgnlPmtInfAndSts>
<OrgnlPmtInfId>Payment-Information-ID-4711</OrgnlPmtInfId>
<PmtInfSts>PART</PmtInfSts>
<TxInfAndSts>
<OrgnlEndToEndId>OriginatorID1234</OrgnlEndToEndId>
<TxSts>ACSP</TxSts>
<OrgnlTxRef>
<Amt>
<InstdAmt Ccy="EUR">6543.14</InstdAmt>
</Amt>
<ReqdExctnDt>2023-07-18</ReqdExctnDt>
<Dbtr>
<Nm>Debtor Name</Nm>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>DE87200500001234567890</IBAN>
</Id>
</DbtrAcct>
</OrgnlTxRef>
</TxInfAndSts>
<TxInfAndSts>
<OrgnlEndToEndId>OriginatorID1235</OrgnlEndToEndId>
<TxSts>RJCT</TxSts>
<StsRsnInf>
<Rsn>
<Cd>NARR</Cd>
</Rsn>
<AddtlInf>Either Ustrd or Strd must be present, but not both</AddtlInf>
</StsRsnInf>
<OrgnlTxRef>
<Amt>
<InstdAmt Ccy="EUR">112.72</InstdAmt>
</Amt>
<ReqdExctnDt>2023-07-18</ReqdExctnDt>
<Dbtr>
<Nm>Debtor Name</Nm>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>DE87200500001234567890</IBAN>
</Id>
</DbtrAcct>
</OrgnlTxRef>
</TxInfAndSts>
</OrgnlPmtInfAndSts>
</CstmrPmtStsRpt>
</Document>
Payment information rejected
This status report message occurs at the payment information level, OriginalPaymentInformationAndStatus (<OrgnlPmtInfAndSts>), indicating that Holvi has identified an error on the payment level.
If the status report includes a RJCT (rejected) then all the underlying credit transactions are consequently rejected and the customer is expected to correct any error and send the payment order message again to Holvi.
The following is an example of file in the above format version:
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.002.001.03">
<CstmrPmtStsRpt>
<GrpHdr>
</GrpHdr>
<OrgnlGrpInfAndSts>
<OrgnlMsgId>Message-ID-4711</OrgnlMsgId>
<OrgnlMsgNmId>pain.001.001.03</OrgnlMsgNmId>
<OrgnlNbOfTxs>2</OrgnlNbOfTxs>
<OrgnlCtrlSum>6655.86</OrgnlCtrlSum>
<GrpSts>RJCT</GrpSts>
</OrgnlGrpInfAndSts>
<OrgnlPmtInfAndSts>
<OrgnlPmtInfId>Payment-Information-ID-4711</OrgnlPmtInfId>
<PmtInfSts>RJCT</PmtInfSts>
<StsRsnInf>
<Rsn>
<Cd>DU02</Cd>
</Rsn>
<AddtlInf>Payment information ID is not unique</AddtlInf>
</StsRsnInf>
</OrgnlPmtInfAndSts>
</CstmrPmtStsRpt>
</Document>
Processing flow
The following diagram summarises at a high level the processing of the received pain.001 files and some of the payment status reports that may be generated by Holvi:
List of technical validation errors
Below is a list of Payment Status Reports statuses, codes and messages that may be returned by Holvi depending on the outcome of the processing of a received pain.001 file:
-
File already exists
- Group status: RJCT
- Error code: DU01
- Error message: Message ID is not unique
-
Pain processing not enabled for this account
- Group status = RJCT
- Payment information status: RJCT
- Error code: AG01
- Error message: No bank connection exists for this payment account
-
Pain processing not active for this account
- Group status = RJCT
- Payment information status: RJCT
- Error code: AG01
- Error message: Payment Instructions are not enabled for this payment account
-
Business required for the payment validation and ID is missing
- Group status = RJCT
- Payment information status: RJCT
- Error code: NARR
- Error message: Missing debtor business ID
-
Business required for the payment validation and ID format is wrong
- Group status = RJCT
- Payment information status: RJCT
- Error code: NARR
- Error message: The provided debtor business ID is not valid for debtor account
-
Payment information ID is duplicate
- Group status = RJCT
- Payment information status: RJCT
- Error code: DU02
- Error message: Payment information ID is not unique
-
Payment information method is not "TRF"
- Group status = RJCT
- Payment information status: RJCT
- Error code: NARR
- Error message: Only PmtMtd=TRF is supported
-
Payment information service level is not "SEPA"
- Group status = RJCT
- Payment information status: RJCT
- Error code: FF04
- Error message: Only SvcLvl=SEPA is supported
-
Payment information charge bearer is not "SLEV"
- Group status = RJCT
- Payment information status: RJCT
- Error code: NARR
- Error message: Only ChrgBr=SLEV is supported
-
Payment information requested execution date is older than 60 days
- Group status = RJCT
- Payment information status: RJCT
- Error code: CH04
- Error message: The requested execution date must be at most 60 days in the past
-
Payment information requested execution date more than 365 days
- Group status = RJCT
- Payment information status: RJCT
- Error code: CH03
- Error message: The requested execution date must be at most 365 days in the future
-
Payment batch is rejected
- Group status = RJCT
- Payment information status: RJCT
-
Transaction has wrong IBAN
- Group status = PART
- Payment information status: PART
- Transaction status: RJCT
- Error code: AC03
- Error message: Creditor IBAN validation failed
-
Transaction has currency which is not supported (EUR)
- Group status = PART
- Payment information status: PART
- Transaction status: RJCT
- Error code: CURR
- Error message: Only EUR is accepted as currency
-
Transaction IBAN country and BIC country do not match
- Group status = PART
- Payment information status: PART
- Transaction status: RJCT
- Error code: RC07
- Error message: Creditor BIC is invalid
-
Transaction IBAN country is a non supported SEPA country
- Group status = PART
- Payment information status: PART
- Transaction status: RJCT
- Error code: AC03
- Error message: Creditor IBAN is not within SEPA
-
Transaction IBAN country is not allowed
- Group status = PART
- Payment information status: PART
- Transaction status: RJCT
- Error code: MS03
- Error message: Creditor IBAN country is not allowed
-
Transaction amount is invalid (e.g. negative)
- Group status = PART
- Payment information status: PART
- Transaction status: RJCT
- Error code: AM09
- Error message: The payment amount is invalid
-
Transaction has both structured and unstructured references
- Group status = PART
- Payment information status: PART
- Transaction status: RJCT
- Error code: NARR
- Error message: Either Ustrd or Strd must be present, but not both
-
Transaction end to end ID already exists for the same connection
- Group status = PART
- Payment information status: PART
- Transaction status: RJCT
- Error code: DU04
- Error message: End to end ID is not unique
-
Transaction instruction ID already exists for the same connection
- Group status = PART
- Payment information status: PART
- Transaction status: RJCT
- Error code: DU05
- Error message: Instruction ID is not unique
-
Transaction instruction payment date cannot be calculated
- Group status = PART
- Payment information status: PART
- Transaction status: RJCT
- Error code: CH04
- Error message: Payment date in the past is not allowed OR Payment date as today is not allowed after cut-off