InvoiceFinancingRequestV01

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:

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&#xD;&#xA;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.&#xD;&#xA;Usage&#xD;&#xA;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.&#xD;&#xA;For every invoice it is always possible to identify a supplier and a buyer.&#xD;&#xA;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.&#xD;&#xA;This caters for example in the scenario of a collection agency initiating all requests on behalf of a large corporate.&#xD;&#xA;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.&#xD;&#xA;The InvoiceFinancingRequest message is used to exchange:&#xD;&#xA;- One instance of general information related to the invoice financing request;&#xD;&#xA;- One instance of information for each single invoice financing request;&#xD;&#xA;- Optionally, one instance of information for each single instalment to be financed.&#xD;&#xA;The message can be used in a direct or a relay scenario:&#xD;&#xA;- In a direct scenario, the message is sent directly to the First Agent. The First Agent is the account servicer of the Financing Requestor;&#xD;&#xA;- 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&#xA;is not present, then InvoiceRequestInformation/Supplier/IBAN must be present.&#xA;."
    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.