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 |
|---|---|---|
| Received | The related payment message has been received by the instructed agent. It has not yet been accepted or processed. |
| Accepted | The related payment message has been accepted by the instructed agent. |
| Rejected | All payments in the group have been rejected by the instructed agent. |
| Pending | All payments in the group are pending at the instructed agent side. |
| 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 | Applicable to |
|---|---|---|---|
RCVD | Received | The payment has been received | pacs.008 |
ACCP | Accepted | The payment has been processed by the instructed agent. | pacs.008, pacs.004, pacs.003 |
ACSP | Accepted, settlement in progress | The payment has been processed by the instructed agent and is undergoing clearing and settlement. | pacs.008 |
ACSC | Accepted, settlement completed | The payment has been processed, cleared, and settled by the instructed agent. | pacs.008 |
PDNG | Pending | The payment has been put on hold and is waiting verification (e.g., compliance checks) and validation by the instructed agent. | pacs.008 |
RJCT | Rejected | The message has been rejected by the instructed agent. | pacs.008, pacs.004, camt.056, camt.028, pacs.003, pacs.007 |
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 Rules for incoming PSR
4.1.1 Identification of original payment
Mambu Payments will try to identify an original payment based on the following table in 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.1.2. Status priority processing
Mambu Payments will evaluate the status of a payment in this order:
Priority level | Description |
|---|---|
1 | Evaluate individual payment status first if present If
|
2 | Evaluate payment group status next If
|
3 | If there is no individual payment status level If
|
4.1.3 Outgoing payment status lifecycle
The lifecycle below is a snapshot of the complete lifecycle available at: https://docs.numeral.io/reference/payment-order-lifecycle that focuses on the PSR statuses:
stateDiagram-v2 [*] --> sent sent --> sent: if RCVD or accepted Axxx status sent --> pending: if PDNG sent --> rejected: if RJCT pending --> executed: if executed Axxx status pending --> rejected: if RJCT sent --> executed: if executed Axxx status executed --> rejected: if RJCT
4.2 Rules for outgoing PSR
4.2.1 When does Mambu Payments send an outgoing PSR
Situation | Send outgoing PSR | Comment |
|---|---|---|
When receiving a credit transfer or RTGS payment | No | In case of acceptance, no message is sent |
When receiving an instant payment | Yes | Mambu Payments will send a PSR to notify the acceptance or rejection of the instant payment |
When receiving a direct debit collection | depends | In case of acceptance, no message is sent |
When receiving a return | No | A return cannot be accepted or rejected |
4.2.2 Outgoing PSR structure
Original payment identification
Mambu Payments will put any identification data received on the original payment message
PSR statuses
Mambu Payments will only send ACCP or RJCT status to notify the acceptance or rejection of a payment message. In case of rejection, the user needs to provide a rejection reason code among the list defined below.
4.2.3 Rejection reason codes
The authorized list of rejection reason codes is provided below. It is the user's responsibility to translate this reason code to the one expected by the scheme
Code | Description | Definition | Applicable operations |
|---|---|---|---|
| Timeout creditor agent | Transaction stopped due to timeout at the creditor agent | Instant payment only |
| Timeout instructed agent | Transaction stopped due to timeout at the instructed agent | Instant payment only |
| Offline agent | Agent of message is not online. Generic usage if it cannot be determined which agent is not online | Instant payment only |
| Offline creditor agent | Creditor agent is not online | Instant payment only |
| Error creditor agent | Transaction stopped due to error at the creditor agent | Instant payment only |
| Error instructed agent | Transaction stopped due to error at the instructed agent | Instant payment only |
| Incorrect account number | Account identifier invalid or incorrect | Instant payment |
| Closed account number | Account closed | Instant payment |
| Blocked account | Account blocked | Direct debit |
| Transaction forbidden | Operation forbidden on this account | Instant payment |
| Invalid bank operation code | Operation code / transaction code incorrect or invalid file format | Instant payment |
| Not allowed amount | Amount exceeds the maximum authorized amount | Instant payment |
| Insufficient funds | Insufficient funds on the account | Direct debit |
| Duplication | Duplicate payment | Direct debit |
| Missing creditor address | Account address invalid | Instant payment |
| Creditor bank is not registered | Beneficiary PSP is not registered in the CSM | Instant payment |
| Debtor bank is not registered | Originator PSP is not registered | Instant payment |
| Invalid file format | Operation / transaction code incorrect or invalid file format | Instant payment |
| Fraudulent origin | Fraudulent originated credit transfer | Instant payment |
| No mandate | No valid mandate | Direct debit |
| Missing mandatory mandate information | Mandate data missing or incorrect. | Direct debit |
| End customer deceased | Beneficiary deceased | Instant payment |
| Not specified reason customer generated | By order of the beneficiary | Instant payment |
| Not specified reason agent generated | Reason not specified | Instant payment |
| Bank identifier incorrect | PSP identifier incorrect (i.e., invalid BIC) | Instant payment |
| Missing debtor account or identification | Regulatory reason | Instant payment |
| Missing debtor name or address | Regulatory reason | Instant payment |
| Missing creditor name or address | Regulatory reason | Instant payment |
| Regulatory reason | Regulatory reason | Instant payment |
| Technical problem | Technical problems resulting in erroneous payments | Instant payment |
Updated about 1 month ago
