pacs.002.001.10 XSD schema and business logic
Learn how to generate valid pacs.002.001.10 messages for your ISO 20022 message-based integration to Mambu Payments (formerly Numeral)
1. Usage
pacs.002.001.10 are FIToFIPaymentStatusReport (PSR) messages. They are used in two cases: when it concerns a payment pacs.008 or pacs.004 message, PSRs provide an update of the payment status at a point of time during its processing. When it concerns another type of message, it always indicates a rejection of that message.
Note that a given payment can have one or multiple pacs.002.001.10 messages. In case of multiple pacs.002.001.10 messages, they must be ordered to respect the lifecycle of a payment (see Payment order lifecycle and Return lifecycle). For instance, a payment order cannot be executed after it has been rejected.
The definitions and business rules below are applied by Mambu Payments. Your application should send pacs.002.001.10 complying with these definitions in business rules.
2. Message definition and structure
The pacs.002.001.10 message definition and structure is available here.
3. Business rules
3.1. Original Group Information and Status
3.1.1. Original message
The original message that a pacs.002.001.10 refers to is given by the Original Group Information and Status tag:
<FIToFIPmtStsRpt>
<!-- ... -->
<OrgnlGrpInfAndSts>
<OrgnlMsgId>originalMsgId</OrgnlMsgId> <!-- Original message id -->
<OrgnlMsgNmId>pacs.008</OrgnlMsgNmId> <!-- Original message name id -->
</OrgnlGrpInfAndSts>
<!-- ... -->
</FIToFIPmtStsRpt>3.1.2. Group status
The Group Status is located under the Original Group Information and Status tag OrgnlGrpInfAndSts.GrpSts. Accepted values are the following:
| Status code | Status name | Definition |
|---|---|---|
RCVD | Received | The related payment message has been received by the instructed agent. It has not yet been accepted or processed. |
ACCP | Accepted | The related payment message has been accepted by the instructed agent. |
RJCT | Rejected | All payments in the group have been rejected by the instructed agent. |
PDNG | Pending | All payments in the group are pending at the instructed agent side. |
PART | Partially accepted | Some payments have been accepted and others have been rejected. Payments rejected are included at the transaction level. |
If the group status is rejected, the reason of the rejection must be provided, either as an official ISO 20022 ExternalStatusReason1Code, or a proprietary code. Mambu payments will not interpret the reason code passed by the user.
The XML snippets below show a few examples of group status:
<FIToFIPmtStsRpt>
<!-- ... -->
<OrgnlGrpInfAndSts>
<GrpSts>ACCP</GrpSts>
</OrgnlGrpInfAndSts>
<!-- ... -->
</FIToFIPmtStsRpt><FIToFIPmtStsRpt>
<!-- ... -->
<OrgnlGrpInfAndSts>
<GrpSts>RJCT</GrpSts>
<StsRsnInf>
<Rsn> <!-- one of: code Cd or proprietary Prtry -->
<Cd></Cd> <!-- e.g. RR04: regulatory reason -->
<Prtry></Prtry>
</Rsn>
</StsRsnInf>
</OrgnlGrpInfAndSts>
<!-- ... -->
</FIToFIPmtStsRpt>3.2. Transaction information and status
There can be 0 to N occurrences of transaction in a PSR message, unless the Group Status is PART, in which case there must be at least one occurrence.
Note: the ISO 20022 language refers to "Transaction" which corresponds to a "Payment" in Mambu Payments.
3.2.1. Original Transaction information
The original payment identifiers are provided below. Note that all these fields are optional
<FIToFIPmtStsRpt>
<!-- ... -->
<TxInfAndSts>
<OrgnlInstrId></OrgnlInstrId> <!-- original payment instruction id -->
<OrgnlEndToEndId></OrgnlEndToEndId> <!-- original payment end to end id -->
<OrgnlTxId></OrgnlTxId> <!-- original payment transaction id -->
<OrgnlUETR></OrgnlUETR> <!-- original payment UETR -->
</TxInfAndSts>
</FIToFIPmtStsRpt>3.2.2. Transaction statuses
When applicable, individual payments are included in the Transaction Information and Status tag TxInfAndSts.TxSts. Accepted values are the following:
| Status code | Status name | Definition |
|---|---|---|
ACCP | Accepted | The payment has been processed by the instructed agent. |
ACSP | Accepted, settlement in progress | The payment has been processed by the instructed agent and is undergoing clearing and settlement. |
ACSC | Accepted, settlement completed | The payment has been processed, cleared, and settled by the instructed agent. |
RJCT | Rejected | The payment has been rejected by the instructed agent. |
PDNG | Pending | The payment has been put on hold and is waiting verification (e.g., compliance checks) and validation by the instructed agent. |
If the transaction status is rejected, the reason of the rejection must be provided, either as an official ISO 20022 ExternalStatusReason1Code, or a proprietary code. Mambu payments will not interpret the reason code passed by the user.
The XML snippets below show a few examples of transaction status:
<FIToFIPmtStsRpt>
<!-- ... -->
<TxInfAndSts>
<OrgnlInstrId></OrgnlInstrId> <!-- original payment instruction id -->
<OrgnlEndToEndId></OrgnlEndToEndId> <!-- original payment end to end id -->
<OrgnlTxId></OrgnlTxId> <!-- original payment transaction id -->
<OrgnlUETR></OrgnlUETR> <!-- original payment UETR -->
<TxSts>ACCP</TxSts>
</TxInfAndSts>
</FIToFIPmtStsRpt><FIToFIPmtStsRpt>
<!-- ... -->
<TxInfAndSts>
<OrgnlInstrId></OrgnlInstrId> <!-- original payment instruction id -->
<OrgnlEndToEndId></OrgnlEndToEndId> <!-- original payment end to end id -->
<OrgnlTxId></OrgnlTxId> <!-- original payment transaction id -->
<OrgnlUETR></OrgnlUETR> <!-- original payment UETR -->
<TxSts>RJCT</TxSts>
<StsRsnInf>
<Rsn> <!-- one of: code Cd or proprietary Prtry -->
<Cd></Cd> <!-- e.g. RR04: regulatory reason -->
<Prtry></Prtry>
</Rsn>
</StsRsnInf>
</TxInfAndSts>
</FIToFIPmtStsRpt>4. Mambu Payments Business rules
4.1. Identification of original payment
Mambu Payments will try to identify an original payment based on the following table in ascending order of priority:
Priority level | Combination |
|---|---|
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
If no original payment can be found, then the transaction occurrence in the PSR will be discarded.
4.2. Status priority processing
Mambu Payments will evaluate the status of a payment in this order:
Priority level | Description |
|---|---|
1 | If
|
2 | If
|
3 | If
|
(*): TBD
4.2.1. Implicit vs. explicit completion status
Updated about 12 hours ago
