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.