tsin.001.001.01
Scope The InvoiceFinancingRequest message is sent by Financing Requestor to the Intermediary Agent or First agent. It is used to request financing of a set of invoices, referenced in the request message itself. If the whole financing request (or a selection of single invoice requests included) is accepted, the amount financed by the First Agent will be credited either to the account specified in the financing request or to another account held by Financing Requestor to First Agent. Usage The InvoiceFinancingRequest message is issued by the Financing Requestor and represents a bulk financing request since it can contain one or more single financing requests, each request related to an invoice. For every invoice it is always possible to identify a supplier and a buyer. The subject playing the role of supplier can be different from the Financing Requestor; in this case the Financing Requestor is allowed to send the request message on behalf of the supplier itself. This caters for example in the scenario of a collection agency initiating all requests on behalf of a large corporate. In instances where an invoice is going to be paid by means of instalments, the Financing Requestor can request financing for one or more instalments related to the invoice payment. In this case, together with the general information related to the invoice, references about instalments to be financed are specified into the request message. The request message must contain information only about the instalments that the Financing Requestor wants to be financed. The InvoiceFinancingRequest message is used to exchange:
- One instance of general information related to the invoice financing request;
- One instance of information for each single invoice financing request;
- Optionally, one instance of information for each single instalment to be financed. The message can be used in a direct or a relay scenario:
- In a direct scenario, the message is sent directly to the First Agent. The First Agent is the account servicer of the Financing Requestor;
- In a relay scenario, the message is sent to an Intermediary Agent. The Intermediary Agent acts as an access point that will forward the InvoiceFinancingRequest message to the First Agent.
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
%% InvoiceFinancingRequestV01 recursion level 0 with max 0
InvoiceFinancingRequestV01 *-- "1..1" RequestGroupInformation1 : RequestGroupInformation
InvoiceFinancingRequestV01 *-- "1..1" InvoiceRequestInformation1 : InvoiceRequestInformation
Now, we will zero-in one-by-one on each of these building blocks.
RequestGroupInformation building block
Specifies a set of characteristics that unambiguously identify the invoice financing request, such as group identification, creation date time, number of single invoice financing requests. Set of characteristics that unambiguously identify the global invoice financing request. For comparison, see the ISO20022 official specification
classDiagram
direction tb
%% RequestGroupInformation1 recursion level 0 with max 1
class RequestGroupInformation1{
GroupIdentification IsoMax35Text
CreationDateTime IsoISODateTime
Authorisation IsoMax128Text
NumberOfInvoiceRequests IsoMax15NumericText
TotalBulkInvoiceAmount IsoActiveCurrencyAndAmount
Currency CurrencyCode
FinancingAgreement IsoMax350Text
}
RequestGroupInformation1 *-- "1..1" PartyIdentificationAndAccount6 : FinancingRequestor
RequestGroupInformation1 *-- "0..1" FinancialInstitutionIdentification6 : IntermediaryAgent
RequestGroupInformation1 *-- "1..1" FinancialInstitutionIdentification6 : FirstAgent
RequestGroupInformation1 *-- "0..0" AgreementClauses1 : AgreementClauses
RequestGroupInformation1 *-- "0..0" AdditionalInformation1 : AdditionalInformation
%% 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
%% AgreementClauses1 recursion level 1 with max 1
class AgreementClauses1{
Description IsoMax256Text
DocumentURL IsoMax350Text
}
%% AdditionalInformation1 recursion level 1 with max 1
class AdditionalInformation1{
InformationValue IsoMax350Text
}
AdditionalInformation1 *-- "1..1" IInformationType1Choice : InformationType
RequestGroupInformation1 members
| Member name | Description | Data Type / Multiplicity |
|---|---|---|
| GroupIdentification | Point to point reference assigned by the financing requestor to unambiguously identify the invoice financing request message. | |
| CreationDateTime | Date and time on which the invoice financing request was created. | IsoISODateTime - Required 1..1 |
| Authorisation | User identification or any user key that allows to check if the financing requestor is allowed to ask for invoice financing. | |
| NumberOfInvoiceRequests | Specifies the number of single invoice financing requests included in the bulk request message. | IsoMax15NumericText - Optional 0..1 |
| TotalBulkInvoiceAmount | Total amount of the bulk invoice financing request. It is composed by the sum of the total amounts of all invoices included in the financing request. | IsoActiveCurrencyAndAmount - Optional 0..1 |
| Currency | Reference currency of the invoice financing request. | CurrencyCode - Required 1..1 |
| FinancingAgreement | Specifies the financing method related to invoice financing (eg collection mandate). | IsoMax350Text - Optional 0..1 |
| FinancingRequestor | Party that requests the invoice financing, on behalf of a creditor. | PartyIdentificationAndAccount6 - Required 1..1 |
| IntermediaryAgent | Financial institution that receives the request from the financing requestor and forwards it to the first agent for execution. | FinancialInstitutionIdentification6 - Optional 0..1 |
| FirstAgent | Financial institution of financing requestor to which an invoice financing request is addressed. | FinancialInstitutionIdentification6 - Required 1..1 |
| AgreementClauses | Agreements between financing requestor and his bank concerning conditions about the service of invoice financing, based on specific contractual schemes. | AgreementClauses1 - Unknown 0..0 |
| AdditionalInformation | Additional information about the financing request. | AdditionalInformation1 - Unknown 0..0 |
InvoiceRequestInformation building block
Set of characteristics that unambiguously identify the single invoice financing request related to the entire invoice or a specific instalment of the invoice settlement, such as actors involved, invoice totals or payment method. Set of characteristics that unambiguously identify the single invoice financing request. For comparison, see the ISO20022 official specification
classDiagram
direction tb
%% InvoiceRequestInformation1 recursion level 0 with max 1
class InvoiceRequestInformation1{
CreditDebitNoteAmount IsoActiveCurrencyAndAmount
}
InvoiceRequestInformation1 *-- "1..1" DocumentGeneralInformation1 : InvoiceGeneralInformation
InvoiceRequestInformation1 *-- "1..1" InvoiceTotals1 : InvoiceTotalsInformation
InvoiceRequestInformation1 *-- "0..0" Instalment1 : InstalmentInformation
InvoiceRequestInformation1 *-- "0..1" IFinancingRateOrAmountChoice : RequestedAmount
InvoiceRequestInformation1 *-- "1..1" PartyAndAccountIdentificationAndContactInformation1 : Supplier
InvoiceRequestInformation1 *-- "1..1" PartyIdentificationAndContactInformation1 : Buyer
InvoiceRequestInformation1 *-- "1..1" PaymentInformation15 : InvoicePaymentInformation
InvoiceRequestInformation1 *-- "0..0" ReferredDocumentInformation2 : ReferredDocument
%% DocumentGeneralInformation1 recursion level 1 with max 1
class DocumentGeneralInformation1{
DocumentType DocumentType4Code
DocumentNumber IsoMax35Text
SenderReceiverSequenceIdentification IsoMax140Text
IssueDate IsoISODate
URL IsoMax256Text
}
%% InvoiceTotals1 recursion level 1 with max 1
class InvoiceTotals1{
TotalTaxableAmount IsoActiveCurrencyAndAmount
TotalTaxAmount IsoActiveCurrencyAndAmount
TotalInvoiceAmount IsoActiveCurrencyAndAmount
PaymentDueDate IsoISODate
}
InvoiceTotals1 *-- "0..1" Adjustment5 : Adjustment
%% Instalment1 recursion level 1 with max 1
class Instalment1{
SequenceIdentification IsoMax70Text
PaymentDueDate IsoISODate
Amount IsoActiveCurrencyAndAmount
}
%% IFinancingRateOrAmountChoice recursion level 1 with max 1
%% PartyAndAccountIdentificationAndContactInformation1 recursion level 1 with max 1
PartyAndAccountIdentificationAndContactInformation1 *-- "1..1" PartyIdentification8 : PartyIdentification
PartyAndAccountIdentificationAndContactInformation1 *-- "0..1" CashAccount7 : AccountIdentification
PartyAndAccountIdentificationAndContactInformation1 *-- "0..1" ContactIdentification1 : ContactInformation
%% PartyIdentificationAndContactInformation1 recursion level 1 with max 1
PartyIdentificationAndContactInformation1 *-- "1..1" PartyIdentification8 : PartyIdentification
PartyIdentificationAndContactInformation1 *-- "0..1" ContactIdentification1 : ContactInformation
%% PaymentInformation15 recursion level 1 with max 1
class PaymentInformation15{
PaymentMethod PaymentMethod4Code
}
PaymentInformation15 *-- "0..1" CashAccount7 : PaymentAccount
%% ReferredDocumentInformation2 recursion level 1 with max 1
class ReferredDocumentInformation2{
DocumentNumber IsoMax35Text
RelatedDate IsoISODate
DocumentAmount IsoActiveCurrencyAndAmount
}
ReferredDocumentInformation2 *-- "0..1" ReferredDocumentType1 : Type
InvoiceRequestInformation1 members
| Member name | Description | Data Type / Multiplicity |
|---|---|---|
| InvoiceGeneralInformation | General information that unambiguously identify the invoice to be financed, such as invoice type, invoice number and issue date. | DocumentGeneralInformation1 - Required 1..1 |
| InvoiceTotalsInformation | Specifies totals related to the invoice, such as total invoice amount and total tax amount. | InvoiceTotals1 - Required 1..1 |
| CreditDebitNoteAmount | Amount of credit/debit note related to the invoice to be financed. | IsoActiveCurrencyAndAmount - Optional 0..1 |
| InstalmentInformation | Details of a single instalment to be financed, related to an invoice settlement (amount, payment due date). | Instalment1 - Unknown 0..0 |
| RequestedAmount | Amount requested by the requestor party, related to a single invoice to be financed. | IFinancingRateOrAmountChoice - Optional 0..1 |
| Supplier | Person or organization that represents the creditor for the invoice to be financed. | PartyAndAccountIdentificationAndContactInformation1 - Required 1..1 |
| Buyer | Person or organization that represents the debtor for the invoice to be financed. | PartyIdentificationAndContactInformation1 - Required 1..1 |
| InvoicePaymentInformation | Specifies payment terms and conditions related to a single invoice to be financed, including identifier of possible account used for payment. | PaymentInformation15 - Required 1..1 |
| ReferredDocument | Information about a document related to the invoice to be financed, in structured form. | ReferredDocumentInformation2 - Unknown 0..0 |
Extensibility and generalization considerations
To facilitate generalized design patterns in the system, the InvoiceFinancingRequestV01 implementation follows a specific implementaiton pattern. First of all, InvoiceFinancingRequestV01 impleemnts IOuterRecord indicating it is the outermost logical part of the message definition. Like all message wrappers, InvoiceFinancingRequestV01Document implements IOuterDocument. Because InvoiceFinancingRequestV01 implements IOuterDocument, it is a suitable template parameter for IOuterDocument, and causes the internal ‘Message’ to be of type InvoiceFinancingRequestV01.
classDiagram
class IOuterRecord
InvoiceFinancingRequestV01 --|> IOuterRecord : Implements
InvoiceFinancingRequestV01Document --|> IOuterDocument~InvoiceFinancingRequestV01~ : Implements
class IOuterDocument~InvoiceFinancingRequestV01~ {
InvoiceFinancingRequestV01 Message
}
Document wrapper for serialization
The only real purpose InvoiceFinancingRequestV01Document serves is to cause the document to be serialized into the ‘urn:iso:std:iso:20022:tech:xsd:tsin.001.001.01’ namespace. Therefore, it will probably be the usual practice to build the message and construct this wrapper at the last minute using InvoiceFinancingRequestV01.ToDocument() method. The returned InvoiceFinancingRequestV01Document value will serialize correctly according to ISO 20022 standards.
classDiagram
InvoiceFinancingRequestV01Document *-- InvoiceFinancingRequestV01 : 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.001.001.01">
<InvcFincgReq>
<ReqGrpInf>
<!-- RequestGroupInformation inner content -->
</ReqGrpInf>
<InvcReqInf>
<!-- InvoiceRequestInformation inner content -->
</InvcReqInf>
</InvcFincgReq>
</Document>
Data from ISO specification
This is the technical data from the specification document.
<messageDefinition
xmi:id="_BU2DIH1LEeCF8NjrBemJWQ_-1652041162"
name="InvoiceFinancingRequestV01"
definition="Scope
The InvoiceFinancingRequest message is sent by Financing Requestor to the Intermediary Agent or First agent. It is used to request financing of a set of invoices, referenced in the request message itself. If the whole financing request (or a selection of single invoice requests included) is accepted, the amount financed by the First Agent will be credited either to the account specified in the financing request or to another account held by Financing Requestor to First Agent.
Usage
The InvoiceFinancingRequest message is issued by the Financing Requestor and represents a bulk financing request since it can contain one or more single financing requests, each request related to an invoice.
For every invoice it is always possible to identify a supplier and a buyer.
The subject playing the role of supplier can be different from the Financing Requestor; in this case the Financing Requestor is allowed to send the request message on behalf of the supplier itself.
This caters for example in the scenario of a collection agency initiating all requests on behalf of a large corporate.
In instances where an invoice is going to be paid by means of instalments, the Financing Requestor can request financing for one or more instalments related to the invoice payment. In this case, together with the general information related to the invoice, references about instalments to be financed are specified into the request message. The request message must contain information only about the instalments that the Financing Requestor wants to be financed.
The InvoiceFinancingRequest message is used to exchange:
- One instance of general information related to the invoice financing request;
- One instance of information for each single invoice financing request;
- Optionally, one instance of information for each single instalment to be financed.
The message can be used in a direct or a relay scenario:
- In a direct scenario, the message is sent directly to the First Agent. The First Agent is the account servicer of the Financing Requestor;
- In a relay scenario, the message is sent to an Intermediary Agent. The Intermediary Agent acts as an access point that will forward the InvoiceFinancingRequest message to the First Agent."
registrationStatus="Registered"
messageSet="_wRx2yE2rEeG_I4xRYCA_7g"
xmlTag="InvcFincgReq"
rootElement="Document"
xmlns:xmi="http://www.omg.org/XMI">
<constraint
xmi:id="_BU2DI31LEeCF8NjrBemJWQ_-1651121070"
name="Mandatory1Rule"
definition="If financing requester is not the same physical person of the supplier, then InvoiceRequestInformation/Supplier must be present."
registrationStatus="Provisionally Registered" />
<constraint
xmi:id="_BU2DJn1LEeCF8NjrBemJWQ_-1651121053"
name="Mandatory2Rule"
definition="If RequestGroupInformation/FinancingRequester/IBAN
is not present, then InvoiceRequestInformation/Supplier/IBAN must be present.
."
registrationStatus="Provisionally Registered" />
<constraint
xmi:id="_BU2DKX1LEeCF8NjrBemJWQ_-1651121035"
name="Homogeneity1Rule"
definition="The bulk invoice financing request must be homogeneous for account IBAN identifier."
registrationStatus="Provisionally Registered" />
<messageBuildingBlock
xmi:id="_BU2DIX1LEeCF8NjrBemJWQ_-1652041118"
name="RequestGroupInformation"
definition="Specifies a set of characteristics that unambiguously identify the invoice financing request, such as group identification, creation date time, number of single invoice financing requests."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="ReqGrpInf"
complexType="_TiYfoNp-Ed-ak6NoX_4Aeg_1465496511" />
<messageBuildingBlock
xmi:id="_BU2DIn1LEeCF8NjrBemJWQ_-1651121112"
name="InvoiceRequestInformation"
definition="Set of characteristics that unambiguously identify the single invoice financing request related to the entire invoice or a specific instalment of the invoice settlement, such as actors involved, invoice totals or payment method."
registrationStatus="Provisionally Registered"
minOccurs="1"
xmlTag="InvcReqInf"
complexType="_RYGZZdp-Ed-ak6NoX_4Aeg_909721344" />
<messageDefinitionIdentifier
businessArea="tsin"
messageFunctionality="001"
flavour="001"
version="01" />
</messageDefinition>
ISO Building Blocks
The following items are used as building blocks to construct this message.