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.

Axxx

Accepted

The related payment message has been accepted by the instructed agent.
The following list is allowed:
ACTC: accepted technical validation
ACCP: accepted customer profile ACWC: accepted with change
ACSP: accepted settlement in progress
ACSC: accepted settlement completed

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 codeStatus nameDefinitionApplicable to
RCVDReceivedThe payment has been receivedpacs.008
ACCPAcceptedThe payment has been processed by the instructed agent.pacs.008, pacs.004, pacs.003
ACSPAccepted, settlement in progressThe payment has been processed by the instructed agent and is undergoing clearing and settlement.pacs.008
ACSCAccepted, settlement completedThe payment has been processed, cleared, and settled by the instructed agent.pacs.008
PDNGPendingThe payment has been put on hold and is waiting verification (e.g., compliance checks) and validation by the instructed agent.pacs.008
RJCTRejectedThe 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

OrgnlMsgId and OrgnlTxId
OrgnlMsgId and OrgnlUETR

2

OrgnlMsgId and OrgnlEndToEndId

3

OrgnlMsgId and OrgnlInstrId

4

OrgnlTxId or OrgnlUETR

5

OrgnlEndToEndId

6

OrgnlInstrId

7

OrgnlMsgId only if TxInfAndSts is absent

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 TxInfAndSts tag is present at least once, then the status of the individual payment referenced by TxInfAndSts is updated as follows :

  • RJCT: the individual payment is rejected
  • PDNG: the individual payment is pending
  • Axxx: depending on the payment scheme, the Axxx status will be considered as accepted (no payment status change) or executed

2

Evaluate payment group status next

If TxInfAndSts tag is present at least once, then the status of the group of payments referenced by GrpInfAndSts tag are updated as follows:

  • RJCT or ACCP: ignored as it has already been handled at transaction level
  • RCVD: not expected
  • PART: all remaining payments in the group that were not explicitly mentioned are executed

3

If there is no individual payment status level

If TxInfAndSts tag is absent, then the status of the group of payments referenced by GrpInfAndSts tag are updated as follows:

  • RJCT: all payments in the group are rejected
  • RCVD: ignored
  • Axxx: depending on the payment scheme, the Axxx status will be considered as accepted (no payment status change) or executed
  • PART: should not happen as transaction level detail is expected

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 pacs.008

No

In case of acceptance, no message is sent
In case of "rejection", a return should be performed instead

When receiving an instant payment pacs.008

Yes

Mambu Payments will send a PSR to notify the acceptance or rejection of the instant payment

When receiving a direct debit collection pacs.003

depends

In case of acceptance, no message is sent
In case of rejection, a reject pacs.002 can be issued before the settlement date

When receiving a return pacs.004

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

AB05

Timeout creditor agent

Transaction stopped due to timeout at the creditor agent

Instant payment only

AB06

Timeout instructed agent

Transaction stopped due to timeout at the instructed agent

Instant payment only

AB07

Offline agent

Agent of message is not online. Generic usage if it cannot be determined which agent is not online

Instant payment only

AB08

Offline creditor agent

Creditor agent is not online

Instant payment only

AB09

Error creditor agent

Transaction stopped due to error at the creditor agent

Instant payment only

AB10

Error instructed agent

Transaction stopped due to error at the instructed agent

Instant payment only

AC01

Incorrect account number

Account identifier invalid or incorrect

Instant payment
Direct debit

AC04

Closed account number

Account closed

Instant payment
Direct debit

AC06

Blocked account

Account blocked

Direct debit

AG01

Transaction forbidden

Operation forbidden on this account

Instant payment
Direct debit

AG02

Invalid bank operation code

Operation code / transaction code incorrect or invalid file format

Instant payment
Direct debit

AM02

Not allowed amount

Amount exceeds the maximum authorized amount

Instant payment
Direct debit

AM04

Insufficient funds

Insufficient funds on the account

Direct debit

AM05

Duplication

Duplicate payment

Direct debit

BE04

Missing creditor address

Account address invalid

Instant payment
Direct debit

CNOR

Creditor bank is not registered

Beneficiary PSP is not registered in the CSM

Instant payment
Direct debit

DNOR

Debtor bank is not registered

Originator PSP is not registered

Instant payment
Direct debit

FF01

Invalid file format

Operation / transaction code incorrect or invalid file format

Instant payment
Direct debit

FRAD

Fraudulent origin

Fraudulent originated credit transfer

Instant payment

MD01

No mandate

No valid mandate

Direct debit

MD02

Missing mandatory mandate information

Mandate data missing or incorrect.

Direct debit

MD07

End customer deceased

Beneficiary deceased

Instant payment
Direct debit

MS02

Not specified reason customer generated

By order of the beneficiary

Instant payment
Direct debit

MS03

Not specified reason agent generated

Reason not specified

Instant payment
Direct debit

RC01

Bank identifier incorrect

PSP identifier incorrect (i.e., invalid BIC)

Instant payment
Direct debit

RR01

Missing debtor account or identification

Regulatory reason

Instant payment
Direct debit

RR02

Missing debtor name or address

Regulatory reason

Instant payment
Direct debit

RR03

Missing creditor name or address

Regulatory reason

Instant payment
Direct debit

RR04

Regulatory reason

Regulatory reason

Instant payment
Direct debit

TECH

Technical problem

Technical problems resulting in erroneous payments

Instant payment
Direct debit