RequestToModifyPayment

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:

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&#xD;&#xA;The Request To Modify Payment message is sent by a case creator/case assigner to a case assignee.&#xD;&#xA;This message is used to request the modification of characteristics of an original payment instruction.&#xD;&#xA;Usage&#xD;&#xA;The Request To Modify Payment message must be answered with a:&#xD;&#xA;- Resolution Of Investigation message with a positive final outcome when the case assignee can perform the requested modification&#xD;&#xA;- 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.)&#xD;&#xA;- Reject Case Assignment message when the case assignee is unable or not authorised to perform the requested modification&#xD;&#xA;- 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.&#xD;&#xA;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.&#xD;&#xA;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.&#xD;&#xA;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.)&#xD;&#xA;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.&#xD;&#xA;The Request To Modify Payment message may be forwarded to subsequent case assignee(s).&#xD;&#xA;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.&#xD;&#xA;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:&#xD;&#xA;- Cancel the first payment using a Request To Cancel Payment message and make a new payment with a higher and correct amount.&#xD;&#xA;- Simply send a second payment with the supplementary amount.&#xD;&#xA;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:&#xD;&#xA;- an Additional Payment Information message sent to the creditor of the original payment instruction&#xD;&#xA;- a Debit Authorisation Request message sent to the creditor of the original payment instruction&#xD;&#xA;- a Request To Cancel Payment message sent to a subsequent case assignee&#xD;&#xA;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.&#xD;&#xA;The RequestToModifyPayment message has the following main characteristics:&#xD;&#xA;The case creator assigns a unique case identification. This information will be passed unchanged to all subsequent case assignee(s).&#xD;&#xA;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.&#xD;&#xA;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.&#xD;&#xA;The modification of a payment instruction can be initiated by either the debtor or any subsequent agent in the payment processing chain.&#xD;&#xA;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.