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.