InvoiceTaxReportV01

auth.034.001.01

The InvoiceTaxReport message is sent by tax responsible to tax authority. Tax authorities require corporates to report their sales based value added tax (VAT). This message is targeted to this reporting based on information in sales invoices and card transactions.

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
%% InvoiceTaxReportV01 recursion level 0 with max 0
InvoiceTaxReportV01 *-- "1..1" TaxReportHeader1 : InvoiceTaxReportHeader
InvoiceTaxReportV01 *-- "1..1" TaxReport1 : TaxReport
InvoiceTaxReportV01 *-- "0..1" SupplementaryData1 : SupplementaryData
  

Now, we will zero-in one-by-one on each of these building blocks.

InvoiceTaxReportHeader building block

Defines message level identification, number of individual tax reports and tax authority. Defines message level identification, number of individual tax reports and tax authority. For comparison, see the ISO20022 official specification

classDiagram
   direction tb
%% TaxReportHeader1 recursion level 0 with max 1
class TaxReportHeader1{
    NumberOfTaxReports IsoNumber
}
TaxReportHeader1 *-- "1..1" MessageIdentification1 : MessageIdentification
TaxReportHeader1 *-- "0..0" TaxOrganisationIdentification1 : TaxAuthority
%% MessageIdentification1 recursion level 1 with max 1
class MessageIdentification1{
    Identification IsoMax35Text
    CreationDateTime IsoISODateTime
}
%% TaxOrganisationIdentification1 recursion level 1 with max 1
class TaxOrganisationIdentification1{
    Name IsoMax140Text
}
TaxOrganisationIdentification1 *-- "0..1" PostalAddress6 : PostalAddress
TaxOrganisationIdentification1 *-- "0..1" ContactDetails2 : ContactDetails
  

TaxReportHeader1 members

Member name Description Data Type / Multiplicity
MessageIdentification Unique message identification. MessageIdentification1 - Required 1..1
NumberOfTaxReports Number of TaxReports in this message. Seller can send all TaxReports in the same file. IsoNumber - Optional 0..1
TaxAuthority Party to which the TaxReport is delivered. This message block contains party details for a specific tax authority. TaxOrganisationIdentification1 - Unknown 0..0

TaxReport building block

Contains all needed party details for tax agency (sender of the TaxReport) and tax authority (receiver of the TaxReport) and the details of the reported sales transaction and calculated tax related that specific business transaction. Contains all needed party details for tax agency (sender of the TaxReport) and tax authority (receiver of the TaxReport) and the details of the reported sales transaction and calculated tax related that specific business transaction. For comparison, see the ISO20022 official specification

classDiagram
   direction tb
%% TaxReport1 recursion level 0 with max 1
TaxReport1 *-- "1..1" GroupHeader69 : TaxReportHeader
TaxReport1 *-- "1..1" PartyIdentification72 : Seller
TaxReport1 *-- "0..1" PartyIdentification72 : Buyer
TaxReport1 *-- "1..1" TradeSettlement2 : TradeSettlement
TaxReport1 *-- "0..0" PartyIdentification72 : OtherParty
TaxReport1 *-- "0..0" AdditionalInformation1 : AdditionalInformation
TaxReport1 *-- "0..0" DocumentGeneralInformation2 : AdditionalReference
TaxReport1 *-- "0..0" SupplementaryData1 : SupplementaryData
%% GroupHeader69 recursion level 1 with max 1
class GroupHeader69{
    Identification IsoMax35Text
    IssuedDate IsoISODate
    ReportCategory ExternalDocumentType1Code
    TaxReportPurpose ExternalDocumentType1Code
    OriginalIdentification IsoMax35Text
    LanguageCode LanguageCode
}
GroupHeader69 *-- "0..1" PartyIdentification116 : SellerTaxRepresentative
GroupHeader69 *-- "0..1" PartyIdentification116 : BuyerTaxRepresentative
%% PartyIdentification72 recursion level 1 with max 1
PartyIdentification72 *-- "1..1" PartyIdentification43 : PartyIdentification
PartyIdentification72 *-- "0..1" LegalOrganisation1 : LegalOrganisation
PartyIdentification72 *-- "0..1" TaxParty1 : TaxParty
%% PartyIdentification72 recursion level 1 with max 1
PartyIdentification72 *-- "1..1" PartyIdentification43 : PartyIdentification
PartyIdentification72 *-- "0..1" LegalOrganisation1 : LegalOrganisation
PartyIdentification72 *-- "0..1" TaxParty1 : TaxParty
%% TradeSettlement2 recursion level 1 with max 1
class TradeSettlement2{
    DueDate IsoISODate
    DuePayableAmount IsoCurrencyAndAmount
    DeliveryDate IsoISODate
    TaxTotalAmount IsoCurrencyAndAmount
    ExemptionReasonCode IsoMax4Text
    ExemptionReason IsoMax500Text
}
TradeSettlement2 *-- "0..1" CreditorReferenceInformation2 : PaymentReference
TradeSettlement2 *-- "0..1" CurrencyReference3 : InvoiceCurrencyExchange
TradeSettlement2 *-- "0..1" Period2 : BillingPeriod
TradeSettlement2 *-- "0..0" SettlementSubTotalCalculatedTax2 : SubTotalCalculatedTax
TradeSettlement2 *-- "0..0" EarlyPayment1 : EarlyPayments
%% PartyIdentification72 recursion level 1 with max 1
PartyIdentification72 *-- "1..1" PartyIdentification43 : PartyIdentification
PartyIdentification72 *-- "0..1" LegalOrganisation1 : LegalOrganisation
PartyIdentification72 *-- "0..1" TaxParty1 : TaxParty
%% AdditionalInformation1 recursion level 1 with max 1
class AdditionalInformation1{
    InformationValue IsoMax350Text
}
AdditionalInformation1 *-- "1..1" IInformationType1Choice : InformationType
%% DocumentGeneralInformation2 recursion level 1 with max 1
class DocumentGeneralInformation2{
    DocumentType ExternalDocumentType1Code
    DocumentNumber IsoMax35Text
    SenderReceiverSequenceIdentification IsoMax140Text
    IssueDate IsoISODate
    URL IsoMax256Text
}
DocumentGeneralInformation2 *-- "0..0" BinaryFile1 : AttachedBinaryFile
%% SupplementaryData1 recursion level 1 with max 1
class SupplementaryData1{
    PlaceAndName IsoMax350Text
}
SupplementaryData1 *-- "1..1" IsoSupplementaryDataEnvelope1 : Envelope
  

TaxReport1 members

Member name Description Data Type / Multiplicity
TaxReportHeader Basic report details. GroupHeader69 - Required 1..1
Seller Tax reporting agent, for example seller. Responsible to issue tax reporting to tax authority. PartyIdentification72 - Required 1..1
Buyer Specifies the buyer of goods/service reported in this message. PartyIdentification72 - Optional 0..1
TradeSettlement Contains the details of the business transactions reported in the message. TradeSettlement2 - Required 1..1
OtherParty Reserved for parties that may be required by a specific tax authority. PartyIdentification72 - Unknown 0..0
AdditionalInformation Additional reference like site key or identifier. AdditionalInformation1 - Unknown 0..0
AdditionalReference Structure to deliver link to external attachment or deliver base64-coded attachment inside message. DocumentGeneralInformation2 - Unknown 0..0
SupplementaryData Additional information that can not be captured in the structured fields and/or any other specific block. SupplementaryData1 - Unknown 0..0

SupplementaryData building block

Additional information that can not be captured in the structured fields and/or any other specific block. Additional information that can not be captured in the structured fields and/or any other specific block. For comparison, see the ISO20022 official specification

classDiagram
   direction tb
%% SupplementaryData1 recursion level 0 with max 1
class SupplementaryData1{
    PlaceAndName IsoMax350Text
}
SupplementaryData1 *-- "1..1" IsoSupplementaryDataEnvelope1 : Envelope
%% IsoSupplementaryDataEnvelope1 recursion level 1 with max 1
  

SupplementaryData1 members

Member name Description Data Type / Multiplicity
PlaceAndName Unambiguous reference to the location where the supplementary data must be inserted in the message instance. In the case of XML, this is expressed by a valid XPath. IsoMax350Text - Optional 0..1
Envelope Technical element wrapping the supplementary data. IsoSupplementaryDataEnvelope1 - Required 1..1

Extensibility and generalization considerations

To facilitate generalized design patterns in the system, the InvoiceTaxReportV01 implementation follows a specific implementaiton pattern. First of all, InvoiceTaxReportV01 impleemnts IOuterRecord indicating it is the outermost logical part of the message definition. Like all message wrappers, InvoiceTaxReportV01Document implements IOuterDocument. Because InvoiceTaxReportV01 implements IOuterDocument, it is a suitable template parameter for IOuterDocument, and causes the internal ‘Message’ to be of type InvoiceTaxReportV01.

classDiagram
    class IOuterRecord
    InvoiceTaxReportV01 --|> IOuterRecord : Implements
    InvoiceTaxReportV01Document --|> IOuterDocument~InvoiceTaxReportV01~ : Implements
    class IOuterDocument~InvoiceTaxReportV01~ {
        InvoiceTaxReportV01 Message
     }
  

Document wrapper for serialization

The only real purpose InvoiceTaxReportV01Document serves is to cause the document to be serialized into the ‘urn:iso:std:iso:20022:tech:xsd:auth.034.001.01’ namespace. Therefore, it will probably be the usual practice to build the message and construct this wrapper at the last minute using InvoiceTaxReportV01.ToDocument() method. The returned InvoiceTaxReportV01Document value will serialize correctly according to ISO 20022 standards.

classDiagram
    InvoiceTaxReportV01Document *-- InvoiceTaxReportV01 : 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:auth.034.001.01">
    <InvcTaxRpt>
        <InvcTaxRptHdr>
            <!-- InvoiceTaxReportHeader inner content -->
        </InvcTaxRptHdr>
        <TaxRpt>
            <!-- TaxReport inner content -->
        </TaxRpt>
        <SplmtryData>
            <!-- SupplementaryData inner content -->
        </SplmtryData>
    </InvcTaxRpt>
</Document>

Data from ISO specification

This is the technical data from the specification document.

<messageDefinition
  xmi:id="_B5eQoFmrEeOQYsoJizpkVw"
  name="InvoiceTaxReportV01"
  definition="The InvoiceTaxReport message is sent by tax responsible to tax authority. Tax authorities require corporates to report their sales based value added tax (VAT). This message is targeted to this reporting based on information in sales invoices and card transactions."
  registrationStatus="Registered"
  messageSet="_i2UsEd9iEeSE_fKK4lPHMA"
  xmlTag="InvcTaxRpt"
  rootElement="Document"
  xmlns:xmi="http://www.omg.org/XMI">
  <doclet
    xmi:id="_B_3zkFmrEeOQYsoJizpkVw"
    type="purpose" />
  <messageBuildingBlock
    xmi:id="_riLtAGn0Eea5EcY2TpG1mw"
    name="InvoiceTaxReportHeader"
    definition="Defines message level identification, number of individual tax reports and tax authority."
    registrationStatus="Provisionally Registered"
    maxOccurs="1"
    minOccurs="1"
    xmlTag="InvcTaxRptHdr"
    complexType="_xtcK0WnzEea5EcY2TpG1mw" />
  <messageBuildingBlock
    xmi:id="_DiX4YFm8EeOQYsoJizpkVw"
    name="TaxReport"
    definition="Contains all needed party details for tax agency (sender of the TaxReport) and tax authority (receiver of the TaxReport) and the details of the reported sales transaction and calculated tax related that specific business transaction."
    registrationStatus="Provisionally Registered"
    minOccurs="1"
    xmlTag="TaxRpt"
    complexType="_oAv2w1m4EeOQYsoJizpkVw" />
  <messageBuildingBlock
    xmi:id="_YqO7oEjvEeaOe8w0NJ11wQ"
    name="SupplementaryData"
    definition="Additional information that can not be captured in the structured fields and/or any other specific block."
    registrationStatus="Provisionally Registered"
    minOccurs="0"
    xmlTag="SplmtryData"
    complexType="_Qn0zC9p-Ed-ak6NoX_4Aeg_468227563" />
  <messageDefinitionIdentifier
    businessArea="auth"
    messageFunctionality="034"
    flavour="001"
    version="01" />
</messageDefinition>

ISO Building Blocks

The following items are used as building blocks to construct this message.