tsin.002.001.01
Scope The InvoiceFinancingRequestStatus message is sent by the First Agent to the Financing Requestor, alternatively through an Intermediary Agent (relay scenario). It is used to inform the Financing Requestor about the positive or negative status of a financing request or a financing cancellation request. Usage The InvoiceFinancingRequestStatus message flows from the First Agent to the Financing Requestor (alternatively through an Intermediary Agent) to provide status information about a request previously sent. Its usage will always be governed by a bilateral agreement between the First Agent and the Financing Requestor. The InvoiceFinancingRequestStatus message can be used two fold:
- to provide information about the reception status (eg rejection, acceptance) of a request message. In this case the status message is the result of a technical validation performed by the First Agent on the request message received;
- to inform the Financing Requestor about the business status of the financing process initiated. In this case the First Agent can:
- communicate that a single financing request has been granted, is pending or has not been granted at all;
- inform that a financing cancellation request has been allowed or denied. Note. If the Financing Requestor requests financing for more than one instalment related to the same invoice, the First Agent can decide to finance only some of the instalments. In such case the status message contains details and status of every single instalment (financed, not financed). The message can be used in a direct or in a relay scenario:
- In a direct scenario, the message is sent directly by the First Agent to the Financing Requestor;
- In a relay scenario, the message is sent first by the First Agent to the Intermediary Agent, who forwards it to the Financing Requestor. The InvoiceFinancingRequestStatus message refers to the original request(s) by means of references and a set of data elements included into the original request.
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 %% InvoiceFinancingRequestStatusV01 recursion level 0 with max 0 InvoiceFinancingRequestStatusV01 *-- "1..1" MessageIdentification1 : StatusIdentification InvoiceFinancingRequestStatusV01 *-- "1..1" OriginalRequestInformation1 : OriginalRequestInformationAndStatus InvoiceFinancingRequestStatusV01 *-- "0..1" FinancingInformationAndStatus1 : FinancingInformationAndStatus
Now, we will zero-in one-by-one on each of these building blocks.
StatusIdentification building block
General information that unambiguously identify the invoice financing status report, such as status identification, creation date time. Identifies a message by a unique identifier and the date and time when the message was created by the sender. For comparison, see the ISO20022 official specification
classDiagram direction tb %% MessageIdentification1 recursion level 0 with max 1 class MessageIdentification1{ Identification IsoMax35Text CreationDateTime IsoISODateTime }
MessageIdentification1 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
Identification | Identification of the message. | IsoMax35Text - Required 1..1 |
CreationDateTime | Date of creation of the message. | IsoISODateTime - Required 1..1 |
OriginalRequestInformationAndStatus building block
Set of summary information that unambiguously identifies the original invoice financing (or cancellation) request to which the status is referred. The status of the original request is also given in this block. . Set of characteristics that unambiguously identify the original global invoice financing request. For comparison, see the ISO20022 official specification
classDiagram direction tb %% OriginalRequestInformation1 recursion level 0 with max 1 class OriginalRequestInformation1{ Identification IsoMax35Text CreationDateTime IsoISODateTime } OriginalRequestInformation1 *-- "0..1" PartyIdentificationAndAccount6 : FinancingRequestor OriginalRequestInformation1 *-- "0..1" FinancialInstitutionIdentification6 : IntermediaryAgent OriginalRequestInformation1 *-- "0..1" FinancialInstitutionIdentification6 : FirstAgent OriginalRequestInformation1 *-- "1..1" ValidationStatusInformation1 : ValidationStatusInformation OriginalRequestInformation1 *-- "0..1" CancellationStatusInformation1 : CancellationStatusInformation %% PartyIdentificationAndAccount6 recursion level 1 with max 1 PartyIdentificationAndAccount6 *-- "1..1" PartyIdentification25 : PartyIdentification PartyIdentificationAndAccount6 *-- "0..1" CashAccount7 : CreditAccount PartyIdentificationAndAccount6 *-- "0..1" CashAccount7 : FinancingAccount %% FinancialInstitutionIdentification6 recursion level 1 with max 1 class FinancialInstitutionIdentification6{ BIC IsoBICIdentifier } FinancialInstitutionIdentification6 *-- "0..1" IClearingSystemMemberIdentification2Choice : ClearingSystemMemberIdentification FinancialInstitutionIdentification6 *-- "0..1" GenericIdentification4 : ProprietaryIdentification %% FinancialInstitutionIdentification6 recursion level 1 with max 1 class FinancialInstitutionIdentification6{ BIC IsoBICIdentifier } FinancialInstitutionIdentification6 *-- "0..1" IClearingSystemMemberIdentification2Choice : ClearingSystemMemberIdentification FinancialInstitutionIdentification6 *-- "0..1" GenericIdentification4 : ProprietaryIdentification %% ValidationStatusInformation1 recursion level 1 with max 1 class ValidationStatusInformation1{ Status TechnicalValidationStatus1Code AdditionalStatusReasonInformation IsoMax105Text } ValidationStatusInformation1 *-- "0..1" IStatusReason4Choice : StatusReason %% CancellationStatusInformation1 recursion level 1 with max 1 class CancellationStatusInformation1{ Status CancellationStatus4Code AdditionalStatusReasonInformation IsoMax105Text } CancellationStatusInformation1 *-- "0..1" IStatusReason4Choice : StatusReason
OriginalRequestInformation1 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
Identification | Unique and unambiguous identifier of the original request message as assigned by the original sending party. | IsoMax35Text - Required 1..1 |
CreationDateTime | Date and time at which the original request message was created. | IsoISODateTime - Required 1..1 |
FinancingRequestor | Party that requests the invoice financing, on behalf of a creditor, as indicated in the original request message. | PartyIdentificationAndAccount6 - Optional 0..1 |
IntermediaryAgent | Financial institution that receives the request from the financing requestor and forwards it to the first agent for execution, as indicated in the original request message. | FinancialInstitutionIdentification6 - Optional 0..1 |
FirstAgent | Financial institution of financing requestor to which an invoice financing request is addressed, as indicated in the original request message. | FinancialInstitutionIdentification6 - Optional 0..1 |
ValidationStatusInformation | Information about the validation status of the request message. | ValidationStatusInformation1 - Required 1..1 |
CancellationStatusInformation | Information on the business status of the cancellation. | CancellationStatusInformation1 - Optional 0..1 |
FinancingInformationAndStatus building block
Information concerning the business status of a financing request. Financing information and status. For comparison, see the ISO20022 official specification
classDiagram direction tb %% FinancingInformationAndStatus1 recursion level 0 with max 1 FinancingInformationAndStatus1 *-- "1..1" FinancingAllowedSummary1 : FinancingAllowedSummary FinancingInformationAndStatus1 *-- "1..0" InvoiceFinancingDetails1 : InvoiceFinancingDetails %% FinancingAllowedSummary1 recursion level 1 with max 1 class FinancingAllowedSummary1{ FinancedItemNumber IsoNumber TotalAcceptedItemsAmount IsoActiveCurrencyAndAmount AppliedPercentage IsoPercentageRate TotalFinancedAmount IsoActiveCurrencyAndAmount } FinancingAllowedSummary1 *-- "0..1" FinancingDateDetails1 : FinancingDateDetails FinancingAllowedSummary1 *-- "0..1" CashAccount7 : CreditAccount FinancingAllowedSummary1 *-- "0..1" CashAccount7 : FinancingAccount %% InvoiceFinancingDetails1 recursion level 1 with max 1 InvoiceFinancingDetails1 *-- "1..1" OriginalInvoiceInformation1 : OriginalInvoiceInformation InvoiceFinancingDetails1 *-- "0..1" PartyIdentification8 : Supplier InvoiceFinancingDetails1 *-- "1..1" FinancingResult1 : InvoiceFinancingResult InvoiceFinancingDetails1 *-- "0..0" InstalmentFinancingInformation1 : InstalmentFinancingInformation
FinancingInformationAndStatus1 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
FinancingAllowedSummary | Specifies summary information about invoices/instalments financed, such as total amount financed, number of single requests accepted. | FinancingAllowedSummary1 - Required 1..1 |
InvoiceFinancingDetails | Specifies detailed information about single invoice/instalment financing result, such as result of request (financed or not financed), amount, percentage applied. | InvoiceFinancingDetails1 - Unknown 1..0 |
Extensibility and generalization considerations
To facilitate generalized design patterns in the system, the InvoiceFinancingRequestStatusV01 implementation follows a specific implementaiton pattern. First of all, InvoiceFinancingRequestStatusV01 impleemnts IOuterRecord indicating it is the outermost logical part of the message definition. Like all message wrappers, InvoiceFinancingRequestStatusV01Document implements IOuterDocument. Because InvoiceFinancingRequestStatusV01 implements IOuterDocument, it is a suitable template parameter for IOuterDocument, and causes the internal ‘Message’ to be of type InvoiceFinancingRequestStatusV01.
classDiagram class IOuterRecord InvoiceFinancingRequestStatusV01 --|> IOuterRecord : Implements InvoiceFinancingRequestStatusV01Document --|> IOuterDocument~InvoiceFinancingRequestStatusV01~ : Implements class IOuterDocument~InvoiceFinancingRequestStatusV01~ { InvoiceFinancingRequestStatusV01 Message }
Document wrapper for serialization
The only real purpose InvoiceFinancingRequestStatusV01Document serves is to cause the document to be serialized into the ‘urn:iso:std:iso:20022:tech:xsd:tsin.002.001.01’ namespace. Therefore, it will probably be the usual practice to build the message and construct this wrapper at the last minute using InvoiceFinancingRequestStatusV01.ToDocument() method. The returned InvoiceFinancingRequestStatusV01Document value will serialize correctly according to ISO 20022 standards.
classDiagram InvoiceFinancingRequestStatusV01Document *-- InvoiceFinancingRequestStatusV01 : 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:tsin.002.001.01">
<InvcFincgReqSts>
<StsId>
<!-- StatusIdentification inner content -->
</StsId>
<OrgnlReqInfAndSts>
<!-- OriginalRequestInformationAndStatus inner content -->
</OrgnlReqInfAndSts>
<FincgInfAndSts>
<!-- FinancingInformationAndStatus inner content -->
</FincgInfAndSts>
</InvcFincgReqSts>
</Document>
Data from ISO specification
This is the technical data from the specification document.
<messageDefinition
xmi:id="_BUZXMH1LEeCF8NjrBemJWQ_1543411923"
name="InvoiceFinancingRequestStatusV01"
definition="Scope
The InvoiceFinancingRequestStatus message is sent by the First Agent to the Financing Requestor, alternatively through an Intermediary Agent (relay scenario). It is used to inform the Financing Requestor about the positive or negative status of a financing request or a financing cancellation request.
Usage
The InvoiceFinancingRequestStatus message flows from the First Agent to the Financing Requestor (alternatively through an Intermediary Agent) to provide status information about a request previously sent.
Its usage will always be governed by a bilateral agreement between the First Agent and the Financing Requestor.
The InvoiceFinancingRequestStatus message can be used two fold:
- to provide information about the reception status (eg rejection, acceptance) of a request message. In this case the status message is the result of a technical validation performed by the First Agent on the request message received;
- to inform the Financing Requestor about the business status of the financing process initiated. In this case the First Agent can:
* communicate that a single financing request has been granted, is pending or has not been granted at all;
* inform that a financing cancellation request has been allowed or denied.
Note.
If the Financing Requestor requests financing for more than one instalment related to the same invoice, the First Agent can decide to finance only some of the instalments. In such case the status message contains details and status of every single instalment (financed, not financed).
The message can be used in a direct or in a relay scenario:
- In a direct scenario, the message is sent directly by the First Agent to the Financing Requestor;
- In a relay scenario, the message is sent first by the First Agent to the Intermediary Agent, who forwards it to the Financing Requestor.
The InvoiceFinancingRequestStatus message refers to the original request(s) by means of references and a set of data elements included into the original request."
registrationStatus="Registered"
messageSet="_wRx2yE2rEeG_I4xRYCA_7g"
xmlTag="InvcFincgReqSts"
rootElement="Document"
xmlns:xmi="http://www.omg.org/XMI">
<constraint
xmi:id="_BUZXNH1LEeCF8NjrBemJWQ_-571610005"
name="Request1Rule"
definition="If the status message refers to the technical validation result
related to a financing request, then only Status Identification and
Original Request Information blocks must be present.
If the status message refers to the business status related to a financing request, then the FinancingInformationAndStatus block is mandatory."
registrationStatus="Provisionally Registered" />
<constraint
xmi:id="_BUZXN31LEeCF8NjrBemJWQ_-229907851"
name="Cancellation1Rule"
definition="If the status message refers to the business status of cancellation request, then only Status Identification and Original Request Information must be present."
registrationStatus="Provisionally Registered" />
<constraint
xmi:id="_BUjIMn1LEeCF8NjrBemJWQ_-183730453"
name="Multiplicity1Rule"
definition="The status message must contain one occurrence of the InvoiceFinancingDetails block for every single invoice request present into the original bulk invoice financing request message."
registrationStatus="Provisionally Registered" />
<messageBuildingBlock
xmi:id="_BUZXMX1LEeCF8NjrBemJWQ_746296789"
name="StatusIdentification"
definition="General information that unambiguously identify the invoice financing status report, such as status identification, creation date time."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="StsId"
complexType="_Q7pG5Np-Ed-ak6NoX_4Aeg_-967008570" />
<messageBuildingBlock
xmi:id="_BUZXMn1LEeCF8NjrBemJWQ_1550684151"
name="OriginalRequestInformationAndStatus"
definition="Set of summary information that unambiguously identifies the original invoice financing (or cancellation) request to which the status is referred. The status of the original request is also given in this block.
."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="OrgnlReqInfAndSts"
complexType="_TiOuodp-Ed-ak6NoX_4Aeg_1502660608" />
<messageBuildingBlock
xmi:id="_BUZXM31LEeCF8NjrBemJWQ_740712719"
name="FinancingInformationAndStatus"
definition="Information concerning the business status of a financing request."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="0"
xmlTag="FincgInfAndSts"
complexType="_RYGZYtp-Ed-ak6NoX_4Aeg_645590457" />
<messageDefinitionIdentifier
businessArea="tsin"
messageFunctionality="002"
flavour="001"
version="01" />
</messageDefinition>
ISO Building Blocks
The following items are used as building blocks to construct this message.