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.