camt.008.002.01
Scope The Request To Cancel Payment message is sent by a case creator/case assigner to a case assignee. This message is used to request the cancellation of an original payment instruction. Usage The Request To Cancel Payment message must be answered with a:
- Resolution Of Investigation message with a positive final outcome when the case assignee can perform the requested cancellation
- Resolution Of Investigation message with a negative final outcome when the case assignee may perform the requested cancellation but fails to do so (too late, irrevocable instruction.)
- Reject Case Assignment message when the case assignee is unable or not authorised to perform the requested cancellation
- Notification Of Case Assignment message to indicate whether the case assignee will take on the case himself or reassign the case to a subsequent party in the payment processing chain. A Request To Cancel Payment message concerns one and only one original payment instruction at a time. If several original payment instructions need to be cancelled, then multiple Request To Cancel Payment messages must be sent. When a case assignee successfully performs a cancellation, it must return the corresponding funds to the case assigner. It may provide some details about the return in the Resolution Of Investigation message. The processing of a request to cancel payment case may end with a Debit Authorisation Request message sent to the creditor by its account servicing institution. The Request To Cancel Payment message may be used to escalate a case after an unsuccessful request to modify the payment. In this scenario, the case identification remains the same as in the original Request To Modify Payment message and the element ReopenCaseIndication is set to ‘Yes’ or ’true’.
Message Construction
Every ISO20022 message has at the highest level what we call ‘building blocks’. Because the message is constructed as immutable records, the association is by composition. Below you can see the relationship between the message and its constituent building blocks: For comparison, see the ISO20022 official specification
classDiagram
direction LR
%% RequestToCancelPayment recursion level 0 with max 0
RequestToCancelPayment *-- "1..1" CaseAssignment : Assignment
RequestToCancelPayment *-- "1..1" Case : Case
RequestToCancelPayment *-- "1..1" PaymentInstructionExtract : Underlying
RequestToCancelPayment *-- "1..1" DebitAuthorisationDetails : Justification
Now, we will zero-in one-by-one on each of these building blocks.
Assignment building block
Identifies the assignment of a case from an assigner to an assignee. Represents the assignment of a case to a party. Assignment is a step in the overall process of managing a case. For comparison, see the ISO20022 official specification
classDiagram
direction tb
%% CaseAssignment recursion level 0 with max 1
class CaseAssignment{
Identification IsoMax35Text
Assigner IsoAnyBICIdentifier
Assignee IsoAnyBICIdentifier
CreationDateTime IsoISODateTime
}
CaseAssignment members
| Member name | Description | Data Type / Multiplicity |
|---|---|---|
| Identification | Identification of an assignment within a case. | IsoMax35Text - Required 1..1 |
| Assigner | Party that assigns the case to another party. This is also the sender of the message. | IsoAnyBICIdentifier - Required 1..1 |
| Assignee | Party that the case is assigned to. This is also the receiver of the message. | IsoAnyBICIdentifier - Required 1..1 |
| CreationDateTime | Date and time at which the assignment was created. | IsoISODateTime - Required 1..1 |
Case building block
Identifies the case. Information identifying a case. For comparison, see the ISO20022 official specification
classDiagram
direction tb
%% Case recursion level 0 with max 1
class Case{
Identification IsoMax35Text
Creator IsoAnyBICIdentifier
ReopenCaseIndication IsoYesNoIndicator
}
Case members
| Member name | Description | Data Type / Multiplicity |
|---|---|---|
| Identification | Unique id assigned by the case creator. | IsoMax35Text - Required 1..1 |
| Creator | Party that created the case. | IsoAnyBICIdentifier - Required 1..1 |
| ReopenCaseIndication | Set to yes if the case was closed and needs to be re-opened. | IsoYesNoIndicator - Optional 0..1 |
Underlying building block
Identifies the payment instruction to be cancelled. Details of a payment instruction. The information contained in this component is sufficient to retrieve a payment instruction. For comparison, see the ISO20022 official specification
classDiagram
direction tb
%% PaymentInstructionExtract recursion level 0 with max 1
class PaymentInstructionExtract{
AssignerInstructionIdentification IsoMax35Text
AssigneeInstructionIdentification IsoMax35Text
CurrencyAmount IsoCurrencyAndAmount
ValueDate IsoISODateTime
}
PaymentInstructionExtract members
| Member name | Description | Data Type / Multiplicity |
|---|---|---|
| AssignerInstructionIdentification | Identification of the payment instruction (eg, field 20 of an MT 103) when meaningful to the case assigner. | IsoMax35Text - Optional 0..1 |
| AssigneeInstructionIdentification | Identification of the payment instruction (eg, field 20 of an MT 103) when meaningful to the case assignee. | IsoMax35Text - Optional 0..1 |
| CurrencyAmount | Amount of the payment. Depending on the context it can be either the amount settled (UnableToApply) or the instructed amount (RequestToCancel, RequestToModify, ClaimNonReceipt). | IsoCurrencyAndAmount - Optional 0..1 |
| ValueDate | Value date of the payment. | IsoISODateTime - Optional 0..1 |
Justification building block
Defines the reason for requesting the cancellation. Provides the reason for requesting a debit authorisation as well as the amount of the requested debit. For comparison, see the ISO20022 official specification
classDiagram
direction tb
%% DebitAuthorisationDetails recursion level 0 with max 1
class DebitAuthorisationDetails{
CancellationReason CancellationReason1Code
AmountToDebit IsoCurrencyAndAmount
ValueDateToDebit IsoISODate
}
DebitAuthorisationDetails members
| Member name | Description | Data Type / Multiplicity |
|---|---|---|
| CancellationReason | Indicates the reason for cancellation. | CancellationReason1Code - Required 1..1 |
| AmountToDebit | Amount of money to be moved between the debtor and creditor, before deduction of charges, expressed in the currency as ordered by the initiating party. | IsoCurrencyAndAmount - Optional 0..1 |
| ValueDateToDebit | Value date for debiting the amount. | IsoISODate - Optional 0..1 |
Extensibility and generalization considerations
To facilitate generalized design patterns in the system, the RequestToCancelPayment implementation follows a specific implementaiton pattern. First of all, RequestToCancelPayment impleemnts IOuterRecord indicating it is the outermost logical part of the message definition. Like all message wrappers, RequestToCancelPaymentDocument implements IOuterDocument. Because RequestToCancelPayment implements IOuterDocument, it is a suitable template parameter for IOuterDocument, and causes the internal ‘Message’ to be of type RequestToCancelPayment.
classDiagram
class IOuterRecord
RequestToCancelPayment --|> IOuterRecord : Implements
RequestToCancelPaymentDocument --|> IOuterDocument~RequestToCancelPayment~ : Implements
class IOuterDocument~RequestToCancelPayment~ {
RequestToCancelPayment Message
}
Document wrapper for serialization
The only real purpose RequestToCancelPaymentDocument serves is to cause the document to be serialized into the ‘urn:iso:std:iso:20022:tech:xsd:camt.008.002.01’ namespace. Therefore, it will probably be the usual practice to build the message and construct this wrapper at the last minute using RequestToCancelPayment.ToDocument() method. The returned RequestToCancelPaymentDocument value will serialize correctly according to ISO 20022 standards.
classDiagram
RequestToCancelPaymentDocument *-- RequestToCancelPayment : Document
Sample of message format
This is an abbreviated version of what the message should look like.
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.008.002.01">
<camt.008.002.01>
<Assgnmt>
<!-- Assignment inner content -->
</Assgnmt>
<Case>
<!-- Case inner content -->
</Case>
<Undrlyg>
<!-- Underlying inner content -->
</Undrlyg>
<Justfn>
<!-- Justification inner content -->
</Justfn>
</camt.008.002.01>
</Document>
Data from ISO specification
This is the technical data from the specification document.
<messageDefinition
xmi:id="_SsPgaNE_Ed-BzquC8wXy7w_-319126459"
name="RequestToCancelPayment"
definition="Scope
The Request To Cancel Payment message is sent by a case creator/case assigner to a case assignee.
This message is used to request the cancellation of an original payment instruction.
Usage
The Request To Cancel Payment message must be answered with a:
- Resolution Of Investigation message with a positive final outcome when the case assignee can perform the requested cancellation
- Resolution Of Investigation message with a negative final outcome when the case assignee may perform the requested cancellation but fails to do so (too late, irrevocable instruction.)
- Reject Case Assignment message when the case assignee is unable or not authorised to perform the requested cancellation
- Notification Of Case Assignment message to indicate whether the case assignee will take on the case himself or reassign the case to a subsequent party in the payment processing chain.
A Request To Cancel Payment message concerns one and only one original payment instruction at a time. If several original payment instructions need to be cancelled, then multiple Request To Cancel Payment messages must be sent.
When a case assignee successfully performs a cancellation, it must return the corresponding funds to the case assigner. It may provide some details about the return in the Resolution Of Investigation message.
The processing of a request to cancel payment case may end with a Debit Authorisation Request message sent to the creditor by its account servicing institution.
The Request To Cancel Payment message may be used to escalate a case after an unsuccessful request to modify the payment. In this scenario, the case identification remains the same as in the original Request To Modify Payment message and the element ReopenCaseIndication is set to 'Yes' or 'true'."
registrationStatus="Registered"
messageSet="_urpIICeJEeOCeO5e7islRQ"
xmlName="camt.008.002.01"
xmlTag="camt.008.002.01"
rootElement="Document"
xmlns:xmi="http://www.omg.org/XMI">
<messageBuildingBlock
xmi:id="_SsPgadE_Ed-BzquC8wXy7w_402186084"
name="Assignment"
definition="Identifies the assignment of a case from an assigner to an assignee."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="Assgnmt"
complexType="_T9Dpetp-Ed-ak6NoX_4Aeg_588710247" />
<messageBuildingBlock
xmi:id="_SsZRYNE_Ed-BzquC8wXy7w_70459884"
name="Case"
definition="Identifies the case."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="Case"
complexType="_SpAnotp-Ed-ak6NoX_4Aeg_136183535" />
<messageBuildingBlock
xmi:id="_SsZRYdE_Ed-BzquC8wXy7w_74152854"
name="Underlying"
definition="Identifies the payment instruction to be cancelled."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="Undrlyg"
complexType="_VQgOUtp-Ed-ak6NoX_4Aeg_-769020295" />
<messageBuildingBlock
xmi:id="_SsZRYtE_Ed-BzquC8wXy7w_341710652"
name="Justification"
definition="Defines the reason for requesting the cancellation."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="Justfn"
complexType="_T9Wkbdp-Ed-ak6NoX_4Aeg_1878930583" />
<messageDefinitionIdentifier
businessArea="camt"
messageFunctionality="008"
flavour="002"
version="01" />
</messageDefinition>
ISO Building Blocks
The following items are used as building blocks to construct this message.