camt.007.002.01
Scope The Request To Modify Payment message is sent by a case creator/case assigner to a case assignee. This message is used to request the modification of characteristics of an original payment instruction. Usage The Request To Modify Payment message must be answered with a:
- Resolution Of Investigation message with a positive final outcome when the case assignee can perform the requested modification
- Resolution Of Investigation message with a negative final outcome when the case assignee may perform the requested modification but fails to do so (too late, irrevocable instruction, one requested element cannot be modified.)
- Reject Case Assignment message when the case assignee is unable or not authorised to perform the requested modification
- 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. The Request To Modify Payment message covers one and only one original instruction at a time. If several original payment instructions need to be modified, then multiple Request To Modify Payment messages must be sent. The Request To Modify Payment message can be sent to request the modification of one or several elements of the original payment instruction. If many elements need to be modified, it is recommended to cancel the original payment instruction and initiate a new one. The Request To Modify Payment must be processed on an all or nothing basis. If one of the elements to be modified cannot be altered, the assignment must be rejected in full by means of a negative Resolution Of Investigation message. (See section on Resolution Of Investigation for more details.) The Request To Modify Payment message must never be sent to request the modification of the currency of the original payment instruction. If the currency is wrong, use Request To Cancel Payment message to cancel it and issue and a new payment instruction. The Request To Modify Payment message may be forwarded to subsequent case assignee(s). When a Request To Modify Payment message is used to decrease the amount of the original payment instruction, the modification will trigger a return of funds from the case assignee to the case creator. The assignee may indicate, within the Resolution Of Investigation message, the amount to be returned, the date it is or will be returned and the channel through which the return will be done. The Request To Modify Payment message must never be sent to request the increase of the amount of the original payment instruction. To increase the amount in a payment, the debtor can do one of the following:
- Cancel the first payment using a Request To Cancel Payment message and make a new payment with a higher and correct amount.
- Simply send a second payment with the supplementary amount. Depending on the requested modification(s) and the processing stage of the original payment instruction, the processing of a request to modify payment case may end with one of the following:
- an Additional Payment Information message sent to the creditor of the original payment instruction
- a Debit Authorisation Request message sent to the creditor of the original payment instruction
- a Request To Cancel Payment message sent to a subsequent case assignee The Request To Modify Payment message can be sent to correct characteristics of an original payment instruction following receipt of an Unable To Apply message. In this scenario, the case identification will remain the same. The RequestToModifyPayment message has the following main characteristics: The case creator assigns a unique case identification. This information will be passed unchanged to all subsequent case assignee(s). Lowering the amount of an original payment instruction for which cover is provided by a separate instruction will systematically mean the modification of the whole transaction, including the cover. The case assignee performing the amount modification must initiate the return of funds in excess to the case creator. The modification of the agent’s or agents’ information on an original payment instruction for which cover is provided by a separate instruction will systematically mean the whole transaction is modified, i.e., the cover is executed through the agent(s) mentioned in the Request To Modify Payment message. The cover payment must not be modified separately. The modification of a payment instruction can be initiated by either the debtor or any subsequent agent in the payment processing chain. The case creator provides the information to be modified in line with agreements made with the case assignee. If the case assignee needs in turn to assign the case to a subsequent case assignee, the requested modification(s) must be in line with the agreement made with the next case assignee and a Notification Of Case Assignment message must be sent to the case assigner. Otherwise, the request to modify payment case must be rejected (by means of a negative Resolution Of Investigation message).
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 %% RequestToModifyPayment recursion level 0 with max 0 RequestToModifyPayment *-- "1..1" CaseAssignment : Assignment RequestToModifyPayment *-- "1..1" Case : Case RequestToModifyPayment *-- "1..1" PaymentInstructionExtract : Underlying RequestToModifyPayment *-- "1..1" RequestedModification : Modification
Now, we will zero-in one-by-one on each of these building blocks.
Assignment building block
Identifies the assignment. 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 Transaction to modify. 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 |
Modification building block
Contains the requested modifications. For comparison, see the ISO20022 official specification
classDiagram direction tb %% RequestedModification recursion level 0 with max 1 class RequestedModification{ RelatedReference IsoMax35Text BankOperationCode SWIFTServiceLevel2Code InstructionCode Instruction1Code RequestedExecutionDate IsoISODate ValueDate IsoISODate InterbankSettledAmount IsoCurrencyAndAmount DetailsOfCharges ChargeBearer1Code SenderToReceiverInformation IsoMax35Text } RequestedModification *-- "0..1" PartyIdentification1 : Debtor RequestedModification *-- "0..1" CashAccount3 : DebtorAccount RequestedModification *-- "0..1" BranchAndFinancialInstitutionIdentification : IntermediarySettlementAgent RequestedModification *-- "0..1" BranchAndFinancialInstitutionIdentification : LastSettlementAgent RequestedModification *-- "0..1" IPaymentSchemeChoice : PaymentScheme RequestedModification *-- "0..1" CashAccount3 : BeneficiaryInstitutionAccount RequestedModification *-- "0..1" PartyIdentification1 : Creditor RequestedModification *-- "0..1" CashAccount3 : CreditorAccount RequestedModification *-- "0..1" IRemittanceInformation3Choice : RemittanceInformation RequestedModification *-- "0..1" IPurposeChoice : Purpose RequestedModification *-- "0..1" InstructionForFinalAgent : InstructionForFinalAgent %% PartyIdentification1 recursion level 1 with max 1 class PartyIdentification1{ Name IsoMax70Text } PartyIdentification1 *-- "0..1" PostalAddress1 : PostalAddress PartyIdentification1 *-- "0..1" IParty1Choice : Identification %% CashAccount3 recursion level 1 with max 1 class CashAccount3{ Type CashAccountType3Code Currency CurrencyCode Name IsoMax70Text } CashAccount3 *-- "1..1" IAccountIdentification1Choice : Identification %% BranchAndFinancialInstitutionIdentification recursion level 1 with max 1 BranchAndFinancialInstitutionIdentification *-- "1..1" FinancialInstitutionIdentification1 : FinancialInstitutionIdentification BranchAndFinancialInstitutionIdentification *-- "0..1" BranchData : BranchIdentification %% BranchAndFinancialInstitutionIdentification recursion level 1 with max 1 BranchAndFinancialInstitutionIdentification *-- "1..1" FinancialInstitutionIdentification1 : FinancialInstitutionIdentification BranchAndFinancialInstitutionIdentification *-- "0..1" BranchData : BranchIdentification %% IPaymentSchemeChoice recursion level 1 with max 1 %% CashAccount3 recursion level 1 with max 1 class CashAccount3{ Type CashAccountType3Code Currency CurrencyCode Name IsoMax70Text } CashAccount3 *-- "1..1" IAccountIdentification1Choice : Identification %% PartyIdentification1 recursion level 1 with max 1 class PartyIdentification1{ Name IsoMax70Text } PartyIdentification1 *-- "0..1" PostalAddress1 : PostalAddress PartyIdentification1 *-- "0..1" IParty1Choice : Identification %% CashAccount3 recursion level 1 with max 1 class CashAccount3{ Type CashAccountType3Code Currency CurrencyCode Name IsoMax70Text } CashAccount3 *-- "1..1" IAccountIdentification1Choice : Identification %% IRemittanceInformation3Choice recursion level 1 with max 1 %% IPurposeChoice recursion level 1 with max 1 %% InstructionForFinalAgent recursion level 1 with max 1 class InstructionForFinalAgent{ Code Instruction3Code Proprietary IsoMax140Text }
RequestedModification members
Member name | Description | Data Type / Multiplicity |
---|---|---|
RelatedReference | Reference relating to a linked payment instruction or agreement which is meaningful to both parties (eg, the content of field 21 in a cover instruction). | IsoMax35Text - Optional 0..1 |
BankOperationCode | SWIFT defined service level applies to the payment instruction. | SWIFTServiceLevel2Code - Optional 0..1 |
InstructionCode | Further information related to the processing of the payment instruction. The instruction can relate to a level of service between the bank and the customer, or give instructions to and for specific parties in the payment chain. | Instruction1Code - Optional 0..1 |
RequestedExecutionDate | Date and time the debtor requests the clearing agent to process the payment instruction. | IsoISODate - Optional 0..1 |
ValueDate | Date on which the amount of money ceases to be available to the agent that owes it and when the amount of money becomes available to the agent to which it is due. | IsoISODate - Optional 0..1 |
InterbankSettledAmount | Amount of money moved between the instructing agent and the instructed agent. | IsoCurrencyAndAmount - Optional 0..1 |
Debtor | Debtor or Ordering customer of the payment instruction. | PartyIdentification1 - Optional 0..1 |
DebtorAccount | Account to or from which a cash entry is made. | CashAccount3 - Optional 0..1 |
IntermediarySettlementAgent | Party that executes a cash transfer received via a clearing agent or on request of an agreement party. | BranchAndFinancialInstitutionIdentification - Optional 0..1 |
LastSettlementAgent | Party that executes a cash transfer received via a clearing agent or on request of an agreement party. | BranchAndFinancialInstitutionIdentification - Optional 0..1 |
PaymentScheme | Specification of a pre-agreed offering between clearing agents, or the channel through which the payment instruction is to be processed. This payment scheme can point to a specific rulebook governing the rules of clearing and settlement between two parties. | IPaymentSchemeChoice - Optional 0..1 |
BeneficiaryInstitutionAccount | Account to or from which a cash entry is made. | CashAccount3 - Optional 0..1 |
Creditor | Entity involved in an activity. | PartyIdentification1 - Optional 0..1 |
CreditorAccount | Account to or from which a cash entry is made. | CashAccount3 - Optional 0..1 |
RemittanceInformation | Structured information that enables the matching, ie, reconciliation, of a payment with the items that the payment is intended to settle, such as commercial invoices in an account receivable system. | IRemittanceInformation3Choice - Optional 0..1 |
Purpose | Underlying reason for the payment transaction. | IPurposeChoice - Optional 0..1 |
InstructionForFinalAgent | Further information related to the processing of the payment instruction. The instruction can relate to a level of service between the bank and the customer, or give instructions to and for specific parties in the payment chain. | InstructionForFinalAgent - Optional 0..1 |
DetailsOfCharges | Party(ies) liable for a charge associated with the transfer of cash. | ChargeBearer1Code - Optional 0..1 |
SenderToReceiverInformation | Unformatted information from the sender to the receiver. | IsoMax35Text - Collection 0..6 |
Extensibility and generalization considerations
To facilitate generalized design patterns in the system, the RequestToModifyPayment implementation follows a specific implementaiton pattern. First of all, RequestToModifyPayment impleemnts IOuterRecord indicating it is the outermost logical part of the message definition. Like all message wrappers, RequestToModifyPaymentDocument implements IOuterDocument. Because RequestToModifyPayment implements IOuterDocument, it is a suitable template parameter for IOuterDocument, and causes the internal ‘Message’ to be of type RequestToModifyPayment.
classDiagram class IOuterRecord RequestToModifyPayment --|> IOuterRecord : Implements RequestToModifyPaymentDocument --|> IOuterDocument~RequestToModifyPayment~ : Implements class IOuterDocument~RequestToModifyPayment~ { RequestToModifyPayment Message }
Document wrapper for serialization
The only real purpose RequestToModifyPaymentDocument serves is to cause the document to be serialized into the ‘urn:iso:std:iso:20022:tech:xsd:camt.007.002.01’ namespace. Therefore, it will probably be the usual practice to build the message and construct this wrapper at the last minute using RequestToModifyPayment.ToDocument() method. The returned RequestToModifyPaymentDocument value will serialize correctly according to ISO 20022 standards.
classDiagram RequestToModifyPaymentDocument *-- RequestToModifyPayment : 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.007.002.01">
<camt.007.002.01>
<Assgnmt>
<!-- Assignment inner content -->
</Assgnmt>
<Case>
<!-- Case inner content -->
</Case>
<Undrlyg>
<!-- Underlying inner content -->
</Undrlyg>
<Mod>
<!-- Modification inner content -->
</Mod>
</camt.007.002.01>
</Document>
Data from ISO specification
This is the technical data from the specification document.
<messageDefinition
xmi:id="_TqYjoNE_Ed-BzquC8wXy7w_-1237266490"
name="RequestToModifyPayment"
definition="Scope
The Request To Modify Payment message is sent by a case creator/case assigner to a case assignee.
This message is used to request the modification of characteristics of an original payment instruction.
Usage
The Request To Modify Payment message must be answered with a:
- Resolution Of Investigation message with a positive final outcome when the case assignee can perform the requested modification
- Resolution Of Investigation message with a negative final outcome when the case assignee may perform the requested modification but fails to do so (too late, irrevocable instruction, one requested element cannot be modified.)
- Reject Case Assignment message when the case assignee is unable or not authorised to perform the requested modification
- 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.
The Request To Modify Payment message covers one and only one original instruction at a time. If several original payment instructions need to be modified, then multiple Request To Modify Payment messages must be sent.
The Request To Modify Payment message can be sent to request the modification of one or several elements of the original payment instruction. If many elements need to be modified, it is recommended to cancel the original payment instruction and initiate a new one.
The Request To Modify Payment must be processed on an all or nothing basis. If one of the elements to be modified cannot be altered, the assignment must be rejected in full by means of a negative Resolution Of Investigation message. (See section on Resolution Of Investigation for more details.)
The Request To Modify Payment message must never be sent to request the modification of the currency of the original payment instruction. If the currency is wrong, use Request To Cancel Payment message to cancel it and issue and a new payment instruction.
The Request To Modify Payment message may be forwarded to subsequent case assignee(s).
When a Request To Modify Payment message is used to decrease the amount of the original payment instruction, the modification will trigger a return of funds from the case assignee to the case creator. The assignee may indicate, within the Resolution Of Investigation message, the amount to be returned, the date it is or will be returned and the channel through which the return will be done.
The Request To Modify Payment message must never be sent to request the increase of the amount of the original payment instruction. To increase the amount in a payment, the debtor can do one of the following:
- Cancel the first payment using a Request To Cancel Payment message and make a new payment with a higher and correct amount.
- Simply send a second payment with the supplementary amount.
Depending on the requested modification(s) and the processing stage of the original payment instruction, the processing of a request to modify payment case may end with one of the following:
- an Additional Payment Information message sent to the creditor of the original payment instruction
- a Debit Authorisation Request message sent to the creditor of the original payment instruction
- a Request To Cancel Payment message sent to a subsequent case assignee
The Request To Modify Payment message can be sent to correct characteristics of an original payment instruction following receipt of an Unable To Apply message. In this scenario, the case identification will remain the same.
The RequestToModifyPayment message has the following main characteristics:
The case creator assigns a unique case identification. This information will be passed unchanged to all subsequent case assignee(s).
Lowering the amount of an original payment instruction for which cover is provided by a separate instruction will systematically mean the modification of the whole transaction, including the cover. The case assignee performing the amount modification must initiate the return of funds in excess to the case creator.
The modification of the agent's or agents' information on an original payment instruction for which cover is provided by a separate instruction will systematically mean the whole transaction is modified, i.e., the cover is executed through the agent(s) mentioned in the Request To Modify Payment message. The cover payment must not be modified separately.
The modification of a payment instruction can be initiated by either the debtor or any subsequent agent in the payment processing chain.
The case creator provides the information to be modified in line with agreements made with the case assignee. If the case assignee needs in turn to assign the case to a subsequent case assignee, the requested modification(s) must be in line with the agreement made with the next case assignee and a Notification Of Case Assignment message must be sent to the case assigner. Otherwise, the request to modify payment case must be rejected (by means of a negative Resolution Of Investigation message)."
registrationStatus="Registered"
messageSet="_urpIICeJEeOCeO5e7islRQ"
xmlName="camt.007.002.01"
xmlTag="camt.007.002.01"
rootElement="Document"
xmlns:xmi="http://www.omg.org/XMI">
<messageBuildingBlock
xmi:id="_TqYjodE_Ed-BzquC8wXy7w_515281163"
name="Assignment"
definition="Identifies the assignment."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="Assgnmt"
complexType="_T9Dpetp-Ed-ak6NoX_4Aeg_588710247" />
<messageBuildingBlock
xmi:id="_TqYjotE_Ed-BzquC8wXy7w_528211388"
name="Case"
definition="Identifies the case."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="Case"
complexType="_SpAnotp-Ed-ak6NoX_4Aeg_136183535" />
<messageBuildingBlock
xmi:id="_TqYjo9E_Ed-BzquC8wXy7w_742468770"
name="Underlying"
definition="Identifies the Payment Transaction to modify."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="Undrlyg"
complexType="_VQgOUtp-Ed-ak6NoX_4Aeg_-769020295" />
<messageBuildingBlock
xmi:id="_TqYjpNE_Ed-BzquC8wXy7w_800648039"
name="Modification"
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="Mod"
complexType="_PgTKQdp-Ed-ak6NoX_4Aeg_-1564522942" />
<messageDefinitionIdentifier
businessArea="camt"
messageFunctionality="007"
flavour="002"
version="01" />
</messageDefinition>
ISO Building Blocks
The following items are used as building blocks to construct this message.