The MessageRefId must be in the correct format: [CountryCode of the sending jurisdiction] [ReportingPeriod] [CountryCode of the receiving jurisdiction] [UniqueID]
The structure of the MessageRefId is not in the correct format. Please ensure the MessageRefID follows structure defined in the GIR User Guide, and resubmit the file.
Implementation
targets:
- /globe:GLOBE_OECD/globe:MessageSpec/globe:MessageRefId
Not yet implemented: the rule engine does not yet support this check. It would need to confirm that the parts of the MessageRefId (the sending and receiving jurisdictions and the reporting period) match the values actually used in the message, not just the overall format.
The GIR Message Header has a duplicate MessageRefID value that was received on a previous file.
Please replace the MessageRefID field value with a new unique value (not containing all blanks), and resubmit the file.
Implementation
targets:
- /globe:GLOBE_OECD/globe:MessageSpec/globe:MessageRefId
Not yet implemented: the rule engine does not yet support this check. Detecting a MessageRefId that was already received in an earlier file requires information from previous submissions, which is not available when validating a single document.
The ReportingPeriod YYYY value must be less than or equal to current year
Reporting period year must be less than or equal to current year.
Implementation
targets:
- /globe:GLOBE_OECD/globe:MessageSpec/globe:ReportingPeriod
Not yet implemented: the rule engine does not yet support this check. It needs to know the current year (today's date), which is not part of the filing.
A message can contain either new records (OECD1) or corrections (OECD2 or OECD3), but should not contain a mixture of both.
This message contains a mix of new records (OECD1) and corrections (OECD2/OECD3). Please ensure the DocTypeIndic elements contain either new records (OECD1) or corrections (OECD2 or OECD3), but not a mixture of both.
Implementation
targets:
- /globe:GLOBE_OECD
when: //stf:DocTypeIndic = 'OECD1'
absent: //stf:DocTypeIndic[. = 'OECD2' or . = 'OECD3']
The rule is a whole-message property, not a per-element one, so the test is a document-wide condition, therefore the target has been adjusted to the root element of the message.
When DocTypeIndic is OECD2 or OECD3, the record must concern the same sub section (FilingInfo, General section, Summary, JuridictionSection or UTPRAttribution) as the CorrDocRefId.
The correction or deletion refers to a record of an other sub section.
Implementation
targets:
- //stf:DocTypeIndic
Not yet implemented: the rule engine does not yet support this check. A correction (OECD2/OECD3) refers back to a record in an earlier submission, and confirming it concerns the same sub-section requires that earlier record, which is not part of the current document.
The same DocRefID cannot be corrected or deleted twice in the same message.
The same DocRefID cannot be corrected or deleted twice in the same message, therefore each CorrDocRefID must be unique within the same message.
Implementation
targets:
- /globe:GLOBE_OECD
distinct: //stf:CorrDocRefId
Uniqueness is scoped to the whole message, so the target is the message root and `distinct` collects every CorrDocRefId in it.
The DocRefID is already used for another record.
The provided DocRefID has already been used for a pre-existing record, please relodge and ensure that the provided DocRefID is in accordance with the OECD GIR XML Schema User Guide and is 'unique in time and space'.
Implementation
targets:
- //stf:DocRefId
Not yet implemented: the rule engine does not yet support this check. Detecting a DocRefId already used for another record requires information from other submissions, which is not available when validating a single document.
The CorrDocRefId refers to an unknown record.
The CorrDocRefId provided does not match to an existing record of a DocRefId, please relodge the file and ensure that the CorrDocRefId is an exact match to the DocRefId of the element which is subject to a correction
Implementation
targets:
- //stf:CorrDocRefId
Not yet implemented: the rule engine does not yet support this check. Resolving a CorrDocRefId against the records already received requires information from previous submissions.
The CorrDocRefID must relate to the latest instance of the DocRefID. The CorrDocRefID cannot reference an invalidated or outdated version of the DocRefID (i.e. CorrDocRefID refers to the DocRefID of the original record, while a subsequent correction has been received which has a new DocRefID/CorrDocRefID)
The corrected record is no longer valid (invalidated or outdated by a previous correction message). As a consequence, no further information should have been received on this version of the record.
Implementation
targets:
- //stf:CorrDocRefId
Not yet implemented: the rule engine does not yet support this check. Confirming that a CorrDocRefId points to the most recent, still-valid version of a record requires the history of previous submissions.
The FilingInfo cannot be deleted without deleting all related GeneralSection, Summary, JurisdictionSection and UTPRAttribution records
To delete the FilingInfo please ensure that a deletion request has been sent for all associated GeneralSection, Summary, JurisdictionSection and UTPRAttribution records.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:FilingInfo/globe:DocSpec/stf:DocTypeIndic
when: . = 'OECD3'
absent: ancestor::globe:GLOBEBody/*[self::globe:GeneralSection or
self::globe:Summary or self::globe:JurisdictionSection or
self::globe:UTPRAttribution]/globe:DocSpec/stf:DocTypeIndic[. != 'OECD3']
The DocRefId must be in the correct format: [CountryCode of the sending jurisdiction] [ReportingYear][UniqueID]
The structure of the DocRefId is not in the correct format.
Implementation
targets:
- //stf:DocRefId
Not yet implemented: the rule engine does not yet support this check. It would need to confirm that the parts of the DocRefId (the sending jurisdiction and the reporting year) match the values actually used, not just the overall format.
When DocTypeIndic is OECD1 or OECD0, the CorrDocRefId field must be omitted.
When an element has DocTypeIndic of OECD1 or OECD0, which indicates that a new lodgment or a resend is being made, the CorrDocRefId field must not be completed.
Implementation
targets:
- //globe:DocSpec
when: stf:DocTypeIndic = 'OECD0' or stf:DocTypeIndic = 'OECD1'
absent: stf:CorrDocRefId
Targets the DocSpec (the CorrDocRefId's parent) rather than the CorrDocRefId itself, so the consequence "CorrDocRefId must be omitted" can be expressed as an `absent` check (a target on the CorrDocRefId could never observe its own absence).
The Resend option may only be used with respect to the FilingInfo element. The value of OECD0 is not an acceptable input in the DocTypeIndic for the GeneralSection, Summary, JurisdictionSection, UTPRAttribution
OECD0 is only a valid input for the DocTypeIndic of the FilingInfo and should not be used for any other element.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:DocSpec/stf:DocTypeIndic
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:Summary/globe:DocSpec/stf:DocTypeIndic
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:DocSpec/stf:DocTypeIndic
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:UTPRAttribution/globe:DocSpec/stf:DocTypeIndic
notEquals:
expected: "'OECD0'"
When the DocTypeIndic is OECD0 for the FilingInfo, The DocRefID must be the same as the DocRefID that was used for the latest version of the FilingInfo
An unknown or invalid DocRefID was specified for the Resend option (OECD0).
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:FilingInfo/globe:DocSpec/stf:DocRefId
Not yet implemented: the rule engine does not yet support this check. It requires the DocRefId of the latest version of the record from earlier submissions, which is not part of the current document.
The corrected element does not specify any CorrDocRefId (OECD2/3 without CorrDocRefId data).
When DocTypeIndic is "OECD2" or "OECD3", CorrDocRefId must be provided.
Implementation
targets:
- //globe:DocSpec
when: stf:DocTypeIndic = 'OECD2' or stf:DocTypeIndic = 'OECD3'
present: stf:CorrDocRefId
If the value of FilingInfo DoctypeIndic element is OECD0, if General Section is provided, the value of General Section DocTypeIndic element must not be OECD1.
A new General Section can’t be filed if one already exists. Please process with a correction or deletion if the General Section has to be modified.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:DocSpec/stf:DocTypeIndic
when: ../../../globe:FilingInfo/globe:DocSpec/stf:DocTypeIndic = 'OECD0'
notEquals:
expected: "'OECD1'"
If the value of FilingInfo DoctypeIndic element is OECD1, the GeneralSection must be provided.
Each new GIR filing must contain a GeneralSection.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody
when: globe:FilingInfo/globe:DocSpec/stf:DocTypeIndic = 'OECD1'
present: globe:GeneralSection
At least one Country ISO Code in RecJurCode must be the same as the ReceivingCountry.
At least one Country ISO Code in RecJurCode must be the same as the ReceivingCountry.
Implementation
targets:
- /globe:GLOBE_OECD
when: //globe:RecJurCode
equals:
actual: //globe:RecJurCode
expected: /globe:GLOBE_OECD/globe:MessageSpec/globe:ReceivingCountry
Whole-message existence check (one of the many RecJurCode must match the single ReceivingCountry), so the target is the message root rather than each RecJurCode and `equals` is satisfied when any RecJurCode value equals ReceivingCountry. Guarded on the presence of RecJurCode because every RecJurCode-bearing section is optional in the schema, so a FilingInfo-only message (e.g. a resend or deletion) is valid and carries no RecJurCode for this routing rule to apply to.
Where the Role of the Filing CE is GIR403, GIR404, GIR405, then the GIR is only a local lodgement and must not be exchanged.
The RecJurCode should be (name of the local jurisdiction) as the FilingCE role provide suggests that the GIR is only a local lodgment and must not be exchanged.
Implementation
targets:
- //globe:RecJurCode
when: ancestor::globe:GLOBEBody/globe:FilingInfo/globe:FilingCE/globe:Role[. =
'GIR403' or . = 'GIR404' or . = 'GIR405']
equals:
expected: ancestor::globe:GLOBEBody/globe:FilingInfo/globe:FilingCE/globe:ResCountryCode
"Local jurisdiction" is read as the FilingCE ResCountryCode (the filer's residence, tied to the Transmitting Country by 60023). When the same GLOBEBody's FilingCE Role is a local-lodgement role (GIR403/404/405), every RecJurCode in that GLOBEBody must equal that ResCountryCode; the FilingCE is reached via ancestor::globe:GLOBEBody so each filing is checked against its own role/residence.
Period start date must not be later than the Period end date
Period start date must be earlier than or same as Period end date.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:FilingInfo/globe:Period/globe:Start
atMost:
expected: ../globe:End
type: date
Reporting Period End Date must not be later than the Reporting Period in the Message Header.
The Reporting Period End Date must not be a date which is beyond the Reporting Period date in the MessageHeader
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:FilingInfo/globe:Period/globe:End
atMost:
expected: /globe:GLOBE_OECD/globe:MessageSpec/globe:ReportingPeriod
type: date
When the role is GIR401, the FilingCE TIN should match at least one of the TINs provided in the ID of the UPE element, whether it is OtherUPE or ExcludedUPE
When the UPE is lodging the GIR, then the contents of the FilingCE must match at least one of the TINs provided in the UPE element (either the OtherUPE or ExcludedUPE)
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:FilingInfo/globe:FilingCE/globe:TIN
when: ../globe:Role = 'GIR401'
in:
- ancestor::globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:UPE/globe:ExcludedUPE/globe:ID/globe:TIN
- ancestor::globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:UPE/globe:OtherUPE/globe:ID/globe:TIN
Matched by TIN value: `in` holds when the FilingCE TIN equals any ExcludedUPE or OtherUPE ID/TIN. The UPE TINs are reached via ancestor::globe:GLOBEBody so the FilingCE is matched against its own filing's corporate structure.
The ResCountryCode of the FilingCE must match to the TransmittingCountry
The ResCountryCode of the FilingCE must match to the TransmittingCountry
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:FilingInfo/globe:FilingCE/globe:ResCountryCode
equals:
expected: /globe:GLOBE_OECD/globe:MessageSpec/globe:TransmittingCountry
If the Summary contains any of the following elements: SafeHarbour, ETRRange, SBIE, QDMTTut, GLoBETut, then the JurWithTaxingRights/JurisdictionName must be provided.
If the Summary contains any of the following elements: SafeHarbour, ETRRange, SBIE, QDMTTut, GLoBETut, then the JurWithTaxingRights/JurisdictionName must be provided.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:Summary
when: globe:SafeHarbour or globe:ETRRange or globe:SBIE or globe:QDMTTut or
globe:GLoBETut
present: globe:JurWithTaxingRights/globe:JurisdictionName
Targets the Summary element, not Summary/JurWithTaxingRights, so the violation where JurWithTaxingRights/JurisdictionName is entirely absent is still detected (a target on the absent element would simply not match and pass vacuously).
The ETRRate must be equal to the integer value reported at the AdjustedCoveredTax/Total element DIVIDED by the integer reported at the NetGlobeIncome/Total element. This rule does not apply if the NetGloBEIncome in the jurisdiction is zero (or negative). If AdjustedCoveredTax/Total element is not provided, then value assumed to be 0.
The ETRRate must equal AdjustedCoveredTax/Total (Divided by) NetGlobeIncome/Total
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:ETRRate
when: ../globe:NetGlobeIncome/globe:Total > 0
almostEquals:
expected: sum(../globe:AdjustedCoveredTax/globe:Total) div
../globe:NetGlobeIncome/globe:Total
Guarded on a positive NetGlobeIncome, the case the rule says it applies to (this also avoids the divide-by-zero); a missing AdjustedCoveredTax/Total is summed to 0 per the rule.
TopUpTax must equal the following calculation: (TopUpTaxPercentage * ExcessProfits) + (NONArt.4.1.5/AdditionalTopUpTax + Art4.1.5/AdditionalTopUpTax) - QDMTT/Amount. If any elements are not provided, these should be treated as a 0 value.
Note that AdditionalTopUpTax is an optional field and as such, if no AdditionalTopUpTax element is provided, the calculation should then be read as: (TopUpTaxPercentage * ExcessProfits) + 0 - QDMTT/Amount
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:TopUpTax
almostEquals:
expected: sum(../globe:TopUpTaxPercentage) * sum(../globe:ExcessProfits) +
sum(../globe:AdditionalTopUpTax/globe:NONArt4.1.5/globe:AdditionalTopUpTax)
+ sum(../globe:AdditionalTopUpTax/globe:Art4.1.5/globe:AdditionalTopUpTax) -
sum(../globe:QDMTT/globe:Amount)
Every operand is summed so a missing element counts as 0 per the rule.
The IIR/ParentEntity/TopUpTax integer must equal the following calculation: IIR/ParentEntity/TopUpTaxShare - IIROffSet
The IIR/ParentEntity/TopUpTax integer must equal the following calculation: TopUpTaxShare - IIROffSet
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:LowTaxJurisdiction/globe:LTCE/globe:IIR/globe:ParentEntity/globe:TopUpTax
almostEquals:
expected: ../globe:TopUpTaxShare - sum(../globe:IIROffSet)
The Total must equal the following calculation: AdjustedFANIL/FANIL + (sum of all MainEntityPEandFTE/Additions elements) - (sum of all MainEntityPEandFTE/Reductions elements)
The Total must equal the following calculation: AdjustedFANIL/FANIL + (sum of all MainEntityPEandFTE/Additions elements) - (sum of all MainEntityPEandFTE/Reductions elements)
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:CEComputation/globe:AdjustedFANIL/globe:Total
almostEquals:
expected: sum(../globe:FANIL) +
sum(../globe:Adjustment/globe:MainEntityPEandFTE/globe:Additions) +
sum(../globe:Adjustment/globe:MainEntityPEandFTE/globe:Reductions)
As the Reductions elements are supposed to be negative we assume that the SUM of all Additions and Reduction elements has to be calculated.
If TypeOfTIN is GIR3004 then TIN must contain the text 'NOTIN', flag Unknown must be TRUE and IssuedBy must not be provided
If TypeOfTIN is GIR3004 then TIN must contain the text 'NOTIN', flag Unknown must be TRUE and IssuedBy must not be provided
Implementation
targets:
- //globe:TIN
when: "@TypeOfTIN = 'GIR3004'"
allOf:
- equals:
expected: "'NOTIN'"
- isTrue: "@unknown"
- absent: "@issuedBy"
If TIN value is 'NOTIN' then TypeOfTIN must be GIR3004, flag Unknown must be TRUE and IssuedBy must not be provided.
If TIN value is 'NOTIN' then TypeOfTIN must be GIR3004, flag Unknown must be TRUE and IssuedBy must not be provided.
Implementation
targets:
- //globe:TIN
when: . = 'NOTIN'
allOf:
- equals:
actual: "@TypeOfTIN"
expected: "'GIR3004'"
- isTrue: "@unknown"
- absent: "@issuedBy"
If flag Unknown is TRUE then TIN must be NOTIN, TypeOfTIN must be GIR3004 and IssuedBy must not be provided.
If flag Unknown is TRUE then TIN must be NOTIN, TypeOfTIN must be GIR3004 and IssuedBy must not be provided.
Implementation
targets:
- //globe:TIN
when:
isTrue: "@unknown"
allOf:
- equals:
expected: "'NOTIN'"
- equals:
actual: "@TypeOfTIN"
expected: "'GIR3004'"
- absent: "@issuedBy"
Where the TIN has the issuedby value of (local jurisdiction), then the TIN should be a valid TIN per the local jurisdiction
This validation is only to be applied by the jurisdiction issuing the TIN unless a TIN validation tool is available.
Implementation
targets:
- //globe:TIN
Not yet implemented: the rule engine does not yet support this check. Confirming that a TIN is valid for its jurisdiction requires each jurisdiction's own tax-number rules, which are reference data outside the filing.
Attributes issuedBy and TypeofTIN must always be present, except that issued By is not required when TypeOfTIN is GIR3003 or GIR3004.
Attributes issuedBy and TypeofTIN must always be present, except that issuedBy is not required when TypeOfTIN is GIR3003 or GIR3004.
Implementation
targets:
- //globe:TIN
allOf:
- present: "@TypeOfTIN"
- when: not(@TypeOfTIN = 'GIR3003' or @TypeOfTIN = 'GIR3004')
present: "@issuedBy"
The following TIN elements must not be completed using TypeofTIN GIR3004 and must not be flagged Unknown:
The following TIN elements must not be completed using TypeofTIN GIR3004 and must not be flagged Unknown: GeneralSection/CorporateStructure/UPE/ExcludedUPE/ID/TIN GeneralSection/CorporateStructure/UPE/OtherUPE/ID/TIN GeneralSection/CorporateStructure/CE/ID/TIN (except when GloBEStatus contains the value of GIR316 or GIR318) GeneralSection/CorporateStructure/CE/QIIR/Exception/TIN JurisdictionSection/GLoBETax/ETR/ETRStatus/ETRComputation/CEComputation/Elections/AggregatedReporting/TaxConsolGroupTIN
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:UPE/globe:ExcludedUPE/globe:ID/globe:TIN
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:UPE/globe:OtherUPE/globe:ID/globe:TIN
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:CE/globe:ID/globe:TIN
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:CE/globe:QIIR/globe:Exception/globe:TIN
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:CEComputation/globe:Elections/globe:AggregatedReporting/globe:TaxConsolGroupTIN
when: not(../../self::globe:CE and (../globe:GlobeStatus = 'GIR316' or
../globe:GlobeStatus = 'GIR318'))
allOf:
- notEquals:
actual: "@TypeOfTIN"
expected: "'GIR3004'"
- absent: "@unknown[. = 'true' or . = '1']"
The GloBEStatus GIR316/GIR318 exception applies only to the CE/ID/TIN target, so the guard restricts it to a TIN whose grandparent is a CE (../../self::globe:CE). The unknown-flag check uses a value predicate so both xsd:boolean lexical forms ('true'/'1') count as flagged.
Where the TypeofTIN entered is GIR3003 a reference must be created in the format [P2JJYYYYMMDDCCCXXX where P2 is constant, JJ is the ISO Code of the jurisdiction of location of the Constituent Entity, YYYYMMDD refers to the date of creation of the reference, CCC is a three letter reference to the company or group, and XXX is a unique number for the entity within the GIR e.g. 001, 002, 003 to differentiate between multiple entites with designated references in the same report]. This reference is superseded only in the case that a government or administration issues a tax reference or functional equivalent for the entity.
Where the TypeofTIN entered is GIR3003 a reference must be created in the format [P2JJYYYYMMDDCCCXXX where P2 is constant, JJ is the ISO Code of the jurisdiction of location of the Constituent Entity, YYYYMMDD refers to the date of creation of the reference, CCC is a three letter reference to the company or group, and XXX is a unique number for the entity within the GIR e.g. 001, 002, 003 to differentiate between multiple entites with designated references in the same report]. This reference is superseded only in the case that a government or administration issues a tax reference or functional equivalent for the entity.
Implementation
targets:
- //globe:TIN
when: "@TypeOfTIN = 'GIR3003'"
matches:
expected: "'^P2[A-Z]{2}[0-9]{8}[A-Z]{3}[0-9]{3}$'"
Only the structural format is checked: P2 (constant), two letters (JJ jurisdiction code), eight digits (YYYYMMDD), three letters (CCC company reference) and three digits (XXX sequence). The letter groups assume the uppercase ISO/reference convention. The semantic parts are out of scope for a per-element format check: JJ is not correlated to the entity's actual jurisdiction, XXX uniqueness across entities is a separate cross-record concern, and the supersession case cannot be validated.
The Jurisdiction reported in the RecJurCode must be the UPE jurisdiction or one of the Jurisdictions reported in the JurisdictionName element of the repeatable JurWithTaxingRights element indicating the names of the jurisdictions that have taxing rights in respect of the jurisdiction for which the Jurisdictional Section is being prepared.
The Jurisdiction reported in the RecJurCode must be the UPE jurisdiction or one of the jurisdictions reported in the JurisdictionName element of the repeatable JurWithTaxingRights element.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:UTPRAttribution/globe:RecJurCode
in:
- ancestor::globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:UPE/globe:ExcludedUPE/globe:ID/globe:ResCountryCode
- ancestor::globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:UPE/globe:OtherUPE/globe:ID/globe:ResCountryCode
- ancestor::globe:GLOBEBody/globe:JurisdictionSection/globe:JurWithTaxingRights/globe:JurisdictionName
The UPE jurisdiction is the ResCountryCode of whichever UPE form is present (ExcludedUPE or OtherUPE ID). The JurisdictionName is matched against any JurWithTaxingRights in the GLOBEBody's JurisdictionSection(s) rather than a single jurisdiction-specific section.
The UPE GloBEStatus should not accept the following values: GIR305, GIR307, GIR308, GIR309, GIR312, GIR313, GIR314, GIR315, GIR317, GIR318
An Invalid GloBE Status of the UPE was provided. Please ensure that the GloBEStatus of the UPE align with note 1.3.1.6 of the GIR.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:UPE/globe:ExcludedUPE/globe:ID/globe:GlobeStatus
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:UPE/globe:OtherUPE/globe:ID/globe:GlobeStatus
notIn:
- "'GIR305'"
- "'GIR307'"
- "'GIR308'"
- "'GIR309'"
- "'GIR312'"
- "'GIR313'"
- "'GIR314'"
- "'GIR315'"
- "'GIR317'"
- "'GIR318'"
Only one value is allowed for the ResCountryCode of the UPE/OtherUPE
The Filing Constituent Entity shall report the 2-character alphabetic country code based on the ISO 3166-1 Alpha 2 standard for the jurisdiction where the UPE/OtherUPE is located for GloBE purposes.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:UPE/globe:OtherUPE/globe:ID
absent: globe:ResCountryCode[2]
The schema allows unbounded ResCountryCode; targeting the ID and asserting no second occurrence enforces the "only one value" restriction.
Only one value is allowed for the ResCountryCode of the CE
The Filing Constituent Entity shall report the 2-character alphabetic country code based on the ISO 3166-1 Alpha 2 standard for the jurisdiction where the CE is located for GloBE purposes.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:CE/globe:ID
absent: globe:ResCountryCode[2]
The schema allows unbounded ResCountryCode; targeting the ID and asserting no second occurrence enforces the "only one value" restriction.
All Entities (i.e. ExcludedUPE, OtherUPE or CEs) with residence in same Jurisdiction (same ResCountryCode) must have same Rules, unless the Rules element contains the Value GIR204 (QDMTT).
The ‘rules’ should be completed in accordance with GIR Note 1.3.2.1.3. Where the rules apply to all entities with residence in the same jurisdiction, the Rules Value should be the same. The rules value might be different where the QDMTT in that jurisdiction treats certain entities differently (e.g. where the QDMTT does not apply to investment entities, meaning that where GloBEStatus = GIR310, the rules value of GIR204 might not be an exact match.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:UPE/globe:ExcludedUPE/globe:ID/globe:Rules
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:UPE/globe:OtherUPE/globe:ID/globe:Rules
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:CE/globe:ID/globe:Rules
Not yet implemented: the rule engine does not yet support this check. It would need to group all entities resident in the same jurisdiction and compare their full set of Rules values (allowing the GIR204 exception), a comparison across entities the engine cannot yet express.
When the GloBEStatus contains the value of GIR313, the value of GIR314 must not also be reported for the same CE
A CE element has been completed with a GloBE Status which indicates that an entity is both a JV and a JV Subsidiary, please ensure that the GloBEStatus of the same CE does not contain GIR313 and GIR314
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:CE/globe:ID/globe:GlobeStatus
when: . = 'GIR313'
absent: ../globe:GlobeStatus[. = 'GIR314']
When the GloBEStatus contains the value of GIR307, the value of GIR308 must not also be reported for the same CE
A CE has been identified as having the GloBE Status of both a Minority-Owned Parent Entity and a Minority-Owned Subsidiary, please ensure that the GloBEStatus of the same CE does not contain GIR307 and GIR308
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:CE/globe:ID/globe:GlobeStatus
when: . = 'GIR307'
absent: ../globe:GlobeStatus[. = 'GIR308']
When the GloBEStatus contains the value of GIR308, then there must be another CE in the corporate structure which contains the value of GIR307 (i.e. when CE/ID/GloBEStatus = GIR308, must also be a separate CE element which contains CE/ID/GloBEStatus=GIR307)
A Minority-Owned Subsidiary has been identified in the Corporate Structue and there is no other CE reported in the corporate Structure which is a Minority-Owned ParentEntity.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:CE
when: globe:ID/globe:GlobeStatus = 'GIR308'
present: (preceding-sibling::globe:CE |
following-sibling::globe:CE)/globe:ID/globe:GlobeStatus[. = 'GIR307']
Targets each CE carrying GIR308 and looks for GIR307 on its sibling CEs. The sibling axes exclude the target itself, so "another CE" is enforced.
When the GloBEStatus contains the value of GIR307, the value of GIR309 should also be reported in the GloBEStatus
A Minority-Owned Parent Entity must also be a Minority-Owned Constituent Entity, as a result when the value of GIR307 is selected for the GloBEStatus then the value of GIR309 must also be provided.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:CE/globe:ID/globe:GlobeStatus
when: . = 'GIR307'
present: ../globe:GlobeStatus[. = 'GIR309']
When the GloBEStatus contains the value of GIR308, the value of GIR309 should also be reported in the GloBEStatus
A Minority-Owned Subsidiary must also be a Minority-Owned Constituent Entity, as a result when GIR308 is selected for the GloBEStatus then the value of GIR309 must also be selected
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:CE/globe:ID/globe:GlobeStatus
when: . = 'GIR308'
present: ../globe:GlobeStatus[. = 'GIR309']
When the GloBEStatus contains the value of GIR305, the value of GIR306 must not also be reported for the same CE
A CE has been identified as having the GloBEStatus of both a Permanent Establishment and a Main entity, whereas the same CE cannot have the GloBE Status of PE and ME.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:CE/globe:ID/globe:GlobeStatus
when: . = 'GIR305'
absent: ../globe:GlobeStatus[. = 'GIR306']
When the GloBEStatus contains the value of GIR305, then there must be another CE which contains the GloBEStatus of GIR306 (i.e. when CE/ID/GloBEStatus = GIR305, there must also be a separate CE element which contains CE/ID/GloBEStatus = GIR306)
A permanent establishment has been reported in the Corporate Structure of the GIR, and no main entity has been reported.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:CE
when: globe:ID/globe:GlobeStatus = 'GIR305'
present: (preceding-sibling::globe:CE |
following-sibling::globe:CE)/globe:ID/globe:GlobeStatus[. = 'GIR306']
Same shape as 70015 (GIR308 -> GIR307): targets each CE carrying GIR305 and looks for GIR306 on its sibling CEs. The sibling axes exclude the target itself, so the rule enforces "another CE".
If the GloBEStatus contains the value of GIR316 or GIR318, then there should be no other value in the GloBEStatus (if GloBEStatus = GIR316 - GloBEStatus can only contain the value of GIR316 and if GloBEStatus = GIR318 - GloBEStatus can only contain the value of GIR318)
A Non-Group member or excluded entity was reported in the GloBEStatus and at least one additional GloBEStatus was reported. When the CE element has the GloBEStatus of GIR316 or GIR318, it can only contain the single value in the GloBEStatus (i.e. only GIR316 or only GIR318)
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:CE/globe:ID/globe:GlobeStatus
when: . = 'GIR316' or . = 'GIR318'
absent: ../globe:GlobeStatus[2]
The schema allows unbounded GlobeStatus; once one carries GIR316/GIR318, asserting no second occurrence enforces the "no other value" restriction.
The GloBEStatus element cannot contain the value of GIR316 or GIR318, unless there is a completed OwnershipChange for the CE element (i.e., when CorporateStructure/CE/ID/TIN matches to CorporateStructure/CE/OwnershipChange/PreOwnership/TIN).
The GloBE Status of a CE can only contain the value of 'Excluded Entity' or 'Non-Group Member' when there has been a change in the GloBE Status of the reported CE. Therefore, there must be a completed OwnerhshipChange element which indicates the GloBE Status before the entity became an Excluded Entity or a 'Non-Group Member'
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:CE
when: globe:ID/globe:GlobeStatus = 'GIR316' or globe:ID/globe:GlobeStatus = 'GIR318'
present: globe:OwnershipChange
Targets the CE (the common parent of its GlobeStatus and OwnershipChange) so both operands are plain child paths. The rule's TIN-match parenthetical only re-states that the OwnershipChange belongs to the same CE, which the nesting already guarantees, so a presence check on the CE's own OwnershipChange suffices.
The ChangeDate must not be a date which takes place before the Period Start date as reported in the Filing Info
An ownership change has a change date which takes place before the reporting fiscal year
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:CE/globe:OwnershipChange/globe:ChangeDate
atLeast:
expected: ancestor::globe:GLOBEBody/globe:FilingInfo/globe:Period/globe:Start
type: date
Period Start is reached via ancestor::globe:GLOBEBody so that in a multi-filing message each ChangeDate is checked against its own filing's period.
The ChangeDate must not be a date which takes place after the Period End date as reported in the Filing Info
An ownership change has a change date which takes place after the reporting fiscal year
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:CE/globe:OwnershipChange/globe:ChangeDate
atMost:
expected: ancestor::globe:GLOBEBody/globe:FilingInfo/globe:Period/globe:End
type: date
Mirror of 70022 against Period End (same ancestor::globe:GLOBEBody scoping).
The PreOwnership must not be completed when the PreGlobeStatus has the value of GIR719
Where an entity was an excluded entity before the change, then the PreOwnership element should not be completed.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:CE/globe:OwnershipChange
when: globe:PreGlobeStatus = 'GIR719'
absent: globe:PreOwnership
Targets the common OwnershipChange ancestor (not the PreOwnership the spec cites) since the rule asserts that element's absence. PreGlobeStatus is repeatable, so the guard's node-set `=` fires when any value is GIR719.
When the OwnershipType contains the value of GIR805 or GIR806, then the TypeOfTIN must contain the value GIR3004 and the TIN must contain the text, 'NOTIN'
When the OwnershipType indicates that the ownership interests are held in the aggregate by Non-Group Members or Excluded Entities, the TIN should not reported and as such the TypeOfTIN must be GIR3004.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:CE/globe:OwnershipChange/globe:PreOwnership/globe:TIN
when: ../globe:OwnershipType = 'GIR805' or ../globe:OwnershipType = 'GIR806'
allOf:
- equals:
expected: "'NOTIN'"
- equals:
actual: "@TypeOfTIN"
expected: "'GIR3004'"
When the GloBEStatus contains the value of GIR305, then the OwnershipPercentage must equal 100%
The ownership percentage of a PE must equal 100%
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:CE/globe:Ownership/globe:OwnershipPercentage
when: ancestor::globe:CE[1]/globe:ID/globe:GlobeStatus = 'GIR305'
equals:
expected: 1
When the GloBEStatus contains the value of GIR318, then the OwnershipPercentage should have the value of 0%, the TIN value should be NOTIN and OwnershipType should be GIR806.
When the GloBEStatus is a 'Non-Group Member' as a result of completion of the OwnershipChange element, then Ownershipercentage as reported in the OwnershipElement should be 0%
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:CE/globe:Ownership
when: parent::globe:CE/globe:ID/globe:GlobeStatus = 'GIR318'
allOf:
- equals:
actual: globe:OwnershipPercentage
expected: 0
- equals:
actual: globe:TIN
expected: "'NOTIN'"
- equals:
actual: globe:OwnershipType
expected: "'GIR806'"
This specification defines 3 conditions on three different elements which does not quite fit in the standard format of the validation rules. Therefore we combined the 3 target path into a single one which selects the common parent element.
Unless the GloBEStatus contains the value of GIR318, then the OwnershipPercentage must not be 0%
The OwnershipPercentage should not be 0% unless the reported ownership percentage is in respect of a Non-Group Member.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:CE/globe:Ownership/globe:OwnershipPercentage
when: not(ancestor::globe:CE[1]/globe:ID/globe:GlobeStatus = 'GIR318')
notEquals:
expected: 0
When the OwnershipType contains the value of GIR801, then the Ownership/TIN provided in the Ownership element must match at least one of the TINs that was reported in either the OtherUPE/ID/TIN or ExcludedUPE/ID/TIN
The ownership type was identified as being the UPE, the TIN of the UPE provided at label 1.3.2.1.9 does match the TIN reported at 1.3.1.4. Please ensure that the ownership TIN matches to a TIN reported in the corporate structure.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:CE/globe:Ownership/globe:TIN
when: ../globe:OwnershipType = 'GIR801'
in:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:UPE/globe:ExcludedUPE/globe:ID/globe:TIN
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:UPE/globe:OtherUPE/globe:ID/globe:TIN
When the OwnershipType contains the value of GIR802, GIR803 or GIR804, then the Ownership/TIN provided in the Ownership element must match to a TIN that was reported in the CE element via the ID/TIN.
The ownership type was identified as being a CE, JV or JV Subsidiary, the TIN provided at label 1.3.2.1.9 does not match to a TIN reported in the corporate structure at 1.3.2.1.5. Please ensure that the ownership TIN matches to a TIN reported in the corporate structure.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:CE/globe:Ownership/globe:TIN
when: ../globe:OwnershipType = 'GIR802' or ../globe:OwnershipType = 'GIR803' or
../globe:OwnershipType = 'GIR804'
in:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:CE/globe:ID/globe:TIN
When the CorporateStructure/CE/ID/GloBEStatus contains the value of GIR305, then the Ownership/TIN must be equal at least one TIN of the entity which reported the GloBEStatus of GIR306 either in CorporateStructure/CE/ID/GloBEStatus, or CorporateStructure/UPE/OtherUPE/ID/GlobeStatus.
The ownership TIN of a CE identified as being a PE is not held by a CE which is a main entity
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:CE/globe:Ownership/globe:TIN
when: ancestor::globe:CE[1]/globe:ID/globe:GlobeStatus = 'GIR305'
in:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:CE/globe:ID[globe:GlobeStatus
= 'GIR306']/globe:TIN
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:UPE/globe:OtherUPE/globe:ID[globe:GlobeStatus
= 'GIR306']/globe:TIN
The guard scopes to the PE that owns this Ownership (ancestor::CE[1]/ID/GlobeStatus = GIR305). The "different entity — the main entity" requirement is carried by the GIR306 status predicate on the candidate TINs, not by sibling-axis self-exclusion: the owning CE is GIR305, so it can never appear in the GIR306-filtered candidate set. Candidates are drawn from both a CE/ID and an OtherUPE/ID reporting GIR306.
When the QIIR element is provided, then the Rules element as provided in the CE element must contain either GIR201 or GIR202
The QIIR element has been provided for a CE which is in a jurisdiction which does not have a QIIR selected in the Rules element.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:CE/globe:QIIR
present: ../globe:ID/globe:Rules[. = 'GIR201' or . = 'GIR202']
The TIN provided must match with a TIN reported for any other CE in the CorporateStructure.
The TIN provided to identify either the POPE or IPE does not match with an existing TIN in the corporate structure
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:CE/globe:QIIR/globe:Exception/globe:TIN
in:
- ancestor::globe:CE[1]/preceding-sibling::globe:CE/globe:ID/globe:TIN
- ancestor::globe:CE[1]/following-sibling::globe:CE/globe:ID/globe:TIN
"Any other CE" is carried by the axes, not by a separate uniqueness rule: the candidates are the ID/TINs of the owning CE's preceding/following sibling CEs (ancestor::CE[1]/(preceding-sibling|following-sibling)::CE), so a lone CE whose Exception/TIN equals its own ID/TIN is correctly rejected because no sibling matches. Same self-exclusion pattern as 70015/70019.
If the POPE-IPE element has the value of “GIR902–IPE" and the Exception element is completed because an exception applies, the Art.2.1.3 element must have the status of TRUE
The exception under article 2.1.3 should be selected in relation to identifying another IPE which is required to apply the QIIR
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:CE/globe:QIIR
when: globe:POPE-IPE = 'GIR902' and globe:Exception
isTrue: globe:Exception/globe:ExceptionRule/globe:Art2.1.3
Targets the common QIIR ancestor (not the Art2.1.3 leaf the spec cites) so the guard requires a completed Exception explicitly and the consequence still fails when GIR902 selects Art2.1.5 instead (Art2.1.3 then missing). POPE-IPE carries the bare enum value 'GIR902' (the spec's 'GIR902-IPE' label appends the #9 enumeration's "IPE" description).
If the POPE-IPE element has the value of “GIR901–POPE" and the Exception element is completed because an exception applies, the Art.2.1.5 element must have the status of TRUE
The exception under article 2.1.5 should be selected in relation to identifying another POPE which is required to apply the QIIR
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:CE/globe:QIIR
when: globe:POPE-IPE = 'GIR901' and globe:Exception
isTrue: globe:Exception/globe:ExceptionRule/globe:Art2.1.5
Targets the common QIIR ancestor (not the Art2.1.5 leaf the spec cites) so the guard requires a completed Exception explicitly and the consequence still fails when GIR901 selects Art2.1.3 instead (Art2.1.5 then missing). POPE-IPE carries the bare enum value 'GIR901' (the spec's 'GIR901-POPE' label appends the #9 enumeration's "POPE" description).
If there is more than one Subgroup per Jurisdiction the whole Summary must be repeated. The subgroup element can be different as the computation can be different for each subgroup.
If more than one Subgroup element is provided, then the number of Subgroup elements must match the number of Summary sections provided for that Jurisdiction. For example, if there are 3 Subgroup elements reported for a jurisdiction, then there must be 3 Summary sections for that jurisdiction, each one with 3 reported Subgroup elements.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:Summary/globe:Jurisdiction/globe:Subgroup
Not yet implemented: the rule engine does not yet support this check. It would need to count the Summary sections provided for a jurisdiction and compare that to the number of subgroups, a count across the whole filing the engine cannot yet express.
Where a subgroup element is completed in the 'Summary', then Subgroup element in the 'JurisdictionSection' should also be completed. The TIN must match to the corresponding TIN in the JurisdictionSection/GLoBETax/ETR/SubGroup. Rule only applicable where a JurisdictionSection which relates to the same 'Jurisdiction' of the Summary is provided (i.e., where Summary/Jurisdiction/JurisdictionName = JurisdictionSection/Jurisdiction).
The summary section for a jurisdiction indicates that there is a subgroup with a separate ETR or Top-up Tax computation, while for the same jurisdiction in the Jurisdiction Section, no separate set of subgroup calculations has been provided.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:Summary/globe:Jurisdiction/globe:Subgroup/globe:TIN
when: ../../globe:JurisdictionName =
/globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:Jurisdiction
in:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:SubGroup/globe:TIN
Targets the Summary subgroup TIN (the trigger), not the JurisdictionSection SubGroup/TIN the spec path cites, so the consequence "a matching JurisdictionSection subgroup exists" is a membership check on one context. The guard restricts the rule to a Summary jurisdiction that actually has a JurisdictionSection (Summary/Jurisdiction/JurisdictionName = JurisdictionSection/Jurisdiction, by existential node-set equality). The TIN is matched against all JurisdictionSection ETR SubGroup TINs rather than only the matching jurisdiction's; subgroup TINs are unique across jurisdictions, so a value-only match pins the jurisdiction too (same assumption as 70045). Note the spec's casing: Summary/Subgroup vs ETR/SubGroup.
When the ReportingPeriod or Period End Date is later than 30/06/2028, then the SafeHarbour element cannot have the input of GIR1203, GIR1204 or GIR1205.
The Transitional CbCR Safe Harbour has been selected for a reporting fiscal year that is beyond the transitional period
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:Summary/globe:SafeHarbour
when: translate(ancestor::globe:GLOBE_OECD/globe:MessageSpec/globe:ReportingPeriod,
'-', '') > 20280630 or
translate(ancestor::globe:GLOBEBody/globe:FilingInfo/globe:Period/globe:End,
'-', '') > 20280630
notIn:
- "'GIR1203'"
- "'GIR1204'"
- "'GIR1205'"
Either the MessageSpec ReportingPeriod or the FilingInfo Period/End being later than the 30/06/2028 transitional cut-off triggers the restriction, so the guard ORs both. Both are YYYY-MM-DD, so translate() strips the dashes to compare them as integers against 20280630 (a missing date becomes NaN and is silently non-triggering; the cut-off date itself is not "later", so the compare is strict). The forbidden inputs are checked with notIn against the target SafeHarbour value.
When the ReportingPeriod or Period End Date is later than 31/12/2026, then the SafeHarbour element cannot have the input of GIR1206
The Transitional UTPR Safe Harbour has been selected for a reporting fiscal year that is beyond the transitional period.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:Summary/globe:SafeHarbour
when: translate(ancestor::globe:GLOBE_OECD/globe:MessageSpec/globe:ReportingPeriod,
'-', '') > 20261231 or
translate(ancestor::globe:GLOBEBody/globe:FilingInfo/globe:Period/globe:End,
'-', '') > 20261231
notEquals:
expected: "'GIR1206'"
Same shape as 70038 with the UTPR Safe Harbour cut-off of 31/12/2026: either the MessageSpec ReportingPeriod or the FilingInfo Period/End being later triggers the restriction, translate() strips the YYYY-MM-DD dashes for an integer compare against 20261231 (strict, so the cut-off date itself is allowed). A single forbidden input reads better as notEquals than a one-element notIn.
The SafeHarbour element can only have the input of GIR1206 in the UPE jurisdiction. (i.e., Summary/Jurisdiction/JurisdictionName must be equal to the ResCountryCode reported in the UPE ID, so equal to CorporateStructure/UPE/OtherUPE/ID/ResCountryCode)
The Transitional UTPR Safe Harbour has been applied in a jurisdiction which is not the UPE Jurisdiction
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:Summary/globe:SafeHarbour
when: . = 'GIR1206'
equals:
actual: ../globe:Jurisdiction/globe:JurisdictionName
expected: ancestor::globe:GLOBEBody/globe:GeneralSection/globe:CorporateStructure/globe:UPE/*/globe:ID/globe:ResCountryCode
GIR1206 is only valid in the UPE jurisdiction, so when the target SafeHarbour is GIR1206 the Summary's Jurisdiction/JurisdictionName must equal a UPE ResCountryCode. The UPE ID sits under either ExcludedUPE or OtherUPE, so the path wildcards that choice (UPE/*/ID/ResCountryCode); equals is an existential node-set match, so any one UPE jurisdiction satisfies it.
When the FilingInfo CFSofUPE has the input of GIR502 or GIR504, then SafeHarbour element cannot have the input of GIR1207, GIR1208 or GIR1209.
The Non-material Constituent Entity (NMCE) Simplified Calculations can only be completed where the UPE prepares Consolidated Financial Statements as defined by paragraphs (a) and (c) of the Consolidated Financial Statements definition in Article 10.1.1
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:Summary/globe:SafeHarbour
when: ancestor::globe:GLOBEBody/globe:FilingInfo/globe:AccountingInfo/globe:CFSofUPE
= 'GIR502' or
ancestor::globe:GLOBEBody/globe:FilingInfo/globe:AccountingInfo/globe:CFSofUPE
= 'GIR504'
notIn:
- "'GIR1207'"
- "'GIR1208'"
- "'GIR1209'"
The NMCE Simplified Calculations (GIR1207/1208/1209) are only available when the UPE prepares qualifying Consolidated Financial Statements, i.e. CFSofUPE is not GIR502 or GIR504. The guard reaches the FilingInfo AccountingInfo CFSofUPE and notIn forbids those three inputs on the target SafeHarbour value.
If the JurWithTaxingRights element is completed, and the Safe Harbour element is not completed or only has the value of GIR1206, then the elements ETRRange, SBIE, QDMTTut and GloBETut must be completed
If one or several jurisdictions have taxing rights, and no Safe Harbour is applied or only the UTPR Safe Harbour is applied, then all other elements of the summary section must be completed
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:Summary
when: globe:JurWithTaxingRights and (not(globe:SafeHarbour) or
count(globe:SafeHarbour[. != 'GIR1206']) = 0)
allOf:
- present: globe:ETRRange
- present: globe:SBIE
- present: globe:QDMTTut
- present: globe:GLoBETut
If the JurWithTaxingRights element is completed, and the Safe Harbour element has the value of GIR1202, then the elements ETRRange, SBIE and QDMTTut must be completed
As a QDMTT SafeHarbour has been applied for the jurisdiction, then all other elements except GloBETut of the summary section must be completed
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:Summary
when: globe:JurWithTaxingRights and globe:SafeHarbour = 'GIR1202'
allOf:
- present: globe:ETRRange
- present: globe:SBIE
- present: globe:QDMTTut
When the ETRStatus is completed, it must contain at least one of ETRException or ETRComputation.
Part 2 or Part 3 of the GIR must be completed
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus
present: globe:ETRException | globe:ETRComputation
When the SafeHarbour element has the input of GIR1203, GIR1204 or GIR1205 for a jurisdiction (or for a subgroup), then the TransitionalCbCRSafeHarbour element for that jurisdiction (or for that subgroup) must be completed (i.e., where the Summary/Jurisdiction/JurisdictionName = JurisdictionSection/Jurisdiction, or if Summary/Jurisdiction/Subgroup is completed, then also match where Summary/Jurisdiction/Subgroup/TIN = JurisdictionSection/GLoBETax/ETR/SubGroup/TIN)
A Transitional CbCR Safe Harbour has been selected in the summary section of the GIR, but no corresponding TransitionalCbCR element with the relevant CbCR calculations for the Tested Jurisdiction has been provided
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR
when: ancestor::globe:GLOBEBody/globe:Summary[(globe:SafeHarbour = 'GIR1203' or
globe:SafeHarbour = 'GIR1204' or globe:SafeHarbour =
'GIR1205')][not(globe:Jurisdiction/globe:Subgroup)]/globe:Jurisdiction/globe:JurisdictionName
= ancestor::globe:JurisdictionSection/globe:Jurisdiction or
ancestor::globe:GLOBEBody/globe:Summary[(globe:SafeHarbour = 'GIR1203' or
globe:SafeHarbour = 'GIR1204' or globe:SafeHarbour =
'GIR1205')][globe:Jurisdiction/globe:Subgroup]/globe:Jurisdiction/globe:Subgroup/globe:TIN
= globe:SubGroup/globe:TIN
present: globe:ETRStatus/globe:ETRException/globe:TransitionalCbCRSafeHarbour
The SafeHarbour input lives in the Summary while the dependent element lives in the JurisdictionSection, so the target is the ETR (a stable context with a usable Jurisdiction and SubGroup/TIN) and the guard correlates back to the Summary by existential node-set equality. The spec's two-level key becomes two clauses: a Summary carrying the input code with no Subgroup matches by jurisdiction (Summary/Jurisdiction/JurisdictionName = JurisdictionSection/Jurisdiction); a Summary with a Subgroup matches by TIN against this ETR's own SubGroup/TIN (Summary/Jurisdiction/Subgroup/TIN = ETR/SubGroup/TIN). Comparing the TIN against this specific ETR pins the jurisdiction too, assuming subgroup TINs are unique across jurisdictions.
When the TransitionalCbCRSafeHarbour is completed for a jurisdiction, then Subgroup element of the ETR must be completed, the TypeofSubGroup must contain either GIR1607 or GIR1608.
The TypeofSubgroup element must be completed and it cannot contain a value other than GIR1607 or GIR1608.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR
when: globe:ETRStatus/globe:ETRException/globe:TransitionalCbCRSafeHarbour
present: globe:SubGroup/globe:TypeofSubGroup[. = 'GIR1607' or . = 'GIR1608']
When the SafeHarbour element has the input of GIR1203 for a jurisdiction (or for a subgroup), then the revenue element must be completed for that jurisdiction (or for that subgroup) (i.e., where the Summary/Jurisdiction/JurisdictionName = JurisdictionSection/Jurisdiction, or if Summary/Jurisdiction/Subgroup is completed, then also match where Summary/Jurisdiction/Subgroup/TIN = JurisdictionSection/GLoBETax/ETR/SubGroup/TIN)
As the Deminimis CbCR safe harbour has been completed, the Revenue element for the tested jurisdiction must also be provided
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR
when: ancestor::globe:GLOBEBody/globe:Summary[globe:SafeHarbour =
'GIR1203'][not(globe:Jurisdiction/globe:Subgroup)]/globe:Jurisdiction/globe:JurisdictionName
= ancestor::globe:JurisdictionSection/globe:Jurisdiction or
ancestor::globe:GLOBEBody/globe:Summary[globe:SafeHarbour =
'GIR1203'][globe:Jurisdiction/globe:Subgroup]/globe:Jurisdiction/globe:Subgroup/globe:TIN
= globe:SubGroup/globe:TIN
present: globe:ETRStatus/globe:ETRException/globe:TransitionalCbCRSafeHarbour/globe:Revenue
Targets the ETR and correlates back to the Summary by the two-clause existential match described in rule 70045 (jurisdiction for non-subgroup Summaries, SubGroup/ TIN for subgroup Summaries), keyed on the GIR1203 input.
When the SafeHarbour element has the input of GIR1204 for a jurisdiction (or for a subgroup), then the IncomeTax element must be completed for that jurisdiction (or for that subgroup) (i.e., where the Summary/Jurisdiction/JurisdictionName = JurisdictionSection/Jurisdiction, or if Summary/Jurisdiction/Subgroup is completed, then also match where Summary/Jurisdiction/Subgroup/TIN = JurisdictionSection/GLoBETax/ETR/SubGroup/TIN)
As the Simplified ETR Test has been selected for the Tested Jurisdiction, the IncomeTax element must also be provided.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR
when: ancestor::globe:GLOBEBody/globe:Summary[globe:SafeHarbour =
'GIR1204'][not(globe:Jurisdiction/globe:Subgroup)]/globe:Jurisdiction/globe:JurisdictionName
= ancestor::globe:JurisdictionSection/globe:Jurisdiction or
ancestor::globe:GLOBEBody/globe:Summary[globe:SafeHarbour =
'GIR1204'][globe:Jurisdiction/globe:Subgroup]/globe:Jurisdiction/globe:Subgroup/globe:TIN
= globe:SubGroup/globe:TIN
present: globe:ETRStatus/globe:ETRException/globe:TransitionalCbCRSafeHarbour/globe:IncomeTax
Targets the ETR and correlates back to the Summary by the two-clause existential match described in rule 70045 (jurisdiction for non-subgroup Summaries, SubGroup/ TIN for subgroup Summaries), keyed on the GIR1204 input.
When the SafeHarbour element has the input of GIR1206 for a jurisdiction (or for a subgroup), then the UTPRSafeHarbour element must be completed for that jurisdiction (or for that subgroup). (i.e., where the Summary/Jurisdiction/JurisdictionName = JurisdictionSection/Jurisdiction, or if Summary/Jurisdiction/Subgroup is completed, then also match where Summary/Jurisdiction/Subgroup/TIN = JurisdictionSection/GLoBETax/ETR/SubGroup/TIN)
The UTPR safe harbour has been selected for a jurisdiction, therefore the UTPRSafeHarbour element must be completed and the CIT rate provided.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR
when: ancestor::globe:GLOBEBody/globe:Summary[globe:SafeHarbour =
'GIR1206'][not(globe:Jurisdiction/globe:Subgroup)]/globe:Jurisdiction/globe:JurisdictionName
= ancestor::globe:JurisdictionSection/globe:Jurisdiction or
ancestor::globe:GLOBEBody/globe:Summary[globe:SafeHarbour =
'GIR1206'][globe:Jurisdiction/globe:Subgroup]/globe:Jurisdiction/globe:Subgroup/globe:TIN
= globe:SubGroup/globe:TIN
present: globe:ETRStatus/globe:ETRException/globe:UTPRSafeHarbour
Targets the ETR and correlates back to the Summary by the two-clause existential match described in rule 70045 (jurisdiction for non-subgroup Summaries, SubGroup/ TIN for subgroup Summaries), keyed on the GIR1206 input.
When the SafeHarbour element has the input of GIR1207, GIR1208 or GIR1209 for a jurisdiction (or for a subgroup), then the Non-MaterialCE element must be completed for that jurisdiction (or for that subgroup) (i.e., where the Summary/Jurisdiction/JurisdictionName = JurisdictionSection/Jurisdiction, or if Summary/Jurisdiction/Subgroup is completed, then also match where Summary/Jurisdiction/Subgroup/TIN = JurisdictionSection/GLoBETax/ETR/SubGroup/TIN)
When the SafeHarbour element has the input of GIR1207, GIR1208 or GIR1209 for a jurisdiction (or for a subgroup), then the Non-MaterialCE element must be completed for that jurisdiction (or for that subgroup)
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR
when: ancestor::globe:GLOBEBody/globe:Summary[(globe:SafeHarbour = 'GIR1207' or
globe:SafeHarbour = 'GIR1208' or globe:SafeHarbour =
'GIR1209')][not(globe:Jurisdiction/globe:Subgroup)]/globe:Jurisdiction/globe:JurisdictionName
= ancestor::globe:JurisdictionSection/globe:Jurisdiction or
ancestor::globe:GLOBEBody/globe:Summary[(globe:SafeHarbour = 'GIR1207' or
globe:SafeHarbour = 'GIR1208' or globe:SafeHarbour =
'GIR1209')][globe:Jurisdiction/globe:Subgroup]/globe:Jurisdiction/globe:Subgroup/globe:TIN
= globe:SubGroup/globe:TIN
present: globe:ETRStatus/globe:ETRComputation/globe:Non-MaterialCE
Targets the ETR and correlates back to the Summary by the two-clause existential match described in rule 70045 (jurisdiction for non-subgroup Summaries, SubGroup/ TIN for subgroup Summaries), keyed on the GIR1207, GIR1208 or GIR1209 input.
When the SafeHarbour element has the input of GIR1208 for a jurisdiction (or for a subgroup), then the AggregateSimplified element must be completed for that jurisdiction (or for that subgroup) (i.e., where the Summary/Jurisdiction/JurisdictionName = JurisdictionSection/Jurisdiction, or if Summary/Jurisdiction/Subgroup is completed, then also match where Summary/Jurisdiction/Subgroup/TIN = JurisdictionSection/GLoBETax/ETR/SubGroup/TIN)
When the SafeHarbour element has the input of GIR1208 for a jurisdiction (or for a subgroup), then the AggregateSimplified element must be completed for that jurisdiction (or for that subgroup)
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR
when: ancestor::globe:GLOBEBody/globe:Summary[globe:SafeHarbour =
'GIR1208'][not(globe:Jurisdiction/globe:Subgroup)]/globe:Jurisdiction/globe:JurisdictionName
= ancestor::globe:JurisdictionSection/globe:Jurisdiction or
ancestor::globe:GLOBEBody/globe:Summary[globe:SafeHarbour =
'GIR1208'][globe:Jurisdiction/globe:Subgroup]/globe:Jurisdiction/globe:Subgroup/globe:TIN
= globe:SubGroup/globe:TIN
present: globe:ETRStatus/globe:ETRComputation/globe:Non-MaterialCE/globe:RFY/globe:AggregateSimplified
Targets the ETR and correlates back to the Summary by the two-clause existential match described in rule 70045 (jurisdiction for non-subgroup Summaries, SubGroup/ TIN for subgroup Summaries), keyed on the GIR1208 input.
When the SafeHarbour element has the input of GIR1209 for a jurisdiction (or for a subgroup), then the SubstanceExclusion element must be completed for that jurisdiction (or for that subgroup) (i.e., where the Summary/Jurisdiction/JurisdictionName = JurisdictionSection/Jurisdiction, or if Summary/Jurisdiction/Subgroup is completed, then also match where Summary/Jurisdiction/Subgroup/TIN = JurisdictionSection/GLoBETax/ETR/SubGroup/TIN)
The Routine Profit Test for NMCEs requires the SubstanceExclusion element to be completed
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR
when: ancestor::globe:GLOBEBody/globe:Summary[globe:SafeHarbour =
'GIR1209'][not(globe:Jurisdiction/globe:Subgroup)]/globe:Jurisdiction/globe:JurisdictionName
= ancestor::globe:JurisdictionSection/globe:Jurisdiction or
ancestor::globe:GLOBEBody/globe:Summary[globe:SafeHarbour =
'GIR1209'][globe:Jurisdiction/globe:Subgroup]/globe:Jurisdiction/globe:Subgroup/globe:TIN
= globe:SubGroup/globe:TIN
present: globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:SubstanceExclusion
Targets the ETR and correlates back to the Summary by the two-clause existential match described in rule 70045 (jurisdiction for non-subgroup Summaries, SubGroup/ TIN for subgroup Summaries), keyed on the GIR1209 input.
When the SafeHarbour element has the input of GIR1205 for a jurisdiction (or for a subgroup) then the SubstanceExclusion element must be completed for that jurisdiction (or for a subgroup). Unless the Profit element is either 0 or a negative value (i.e., where the Summary/Jurisdiction/JurisdictionName = JurisdictionSection/Jurisdiction, or if Summary/Jurisdiction/Subgroup is completed, then also match where Summary/Jurisdiction/Subgroup/TIN = JurisdictionSection/GLOBETax/ETR/SubGroup/TIN)
The Routine Profits Test for the Transitional CbCR safe harbour must be completed, unless the Profit for the jurisdiction is 0 or a negative value.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR
when: (ancestor::globe:GLOBEBody/globe:Summary[globe:SafeHarbour =
'GIR1205'][not(globe:Jurisdiction/globe:Subgroup)]/globe:Jurisdiction/globe:JurisdictionName
= ancestor::globe:JurisdictionSection/globe:Jurisdiction or
ancestor::globe:GLOBEBody/globe:Summary[globe:SafeHarbour =
'GIR1205'][globe:Jurisdiction/globe:Subgroup]/globe:Jurisdiction/globe:Subgroup/globe:TIN
= globe:SubGroup/globe:TIN) and
globe:ETRStatus/globe:ETRException/globe:TransitionalCbCRSafeHarbour/globe:Profit
> 0
present: globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:SubstanceExclusion
Targets the ETR and correlates back to the Summary by the two-clause existential match described in rule 70045 (jurisdiction for non-subgroup Summaries, SubGroup/ TIN for subgroup Summaries), keyed on the GIR1205 input. The Profit exception is local to the ETR, so the guard also requires this ETR's TransitionalCbCRSafeHarbour/Profit to be positive (a Profit of 0 or negative leaves the rule vacuous).
RevocationYear is only to be provided when the status is FALSE
RevocationYear is only to be provided when the status is FALSE. When the Status is TRUE, the election has been made and has not been revoked. When the Status is FALSE, this indicates that the election has been revoked, as such the RevocationYear is only to be provided when the status is FALSE.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:Election/*
when:
isTrue: globe:Status
absent: globe:RevocationYear
Encoded as the contrapositive: target each Election child (not its own RevocationYear, whose absence can't be asserted from itself), and when its Status is TRUE the RevocationYear must be absent. The Status guard uses isTrue so both boolean lexical forms ('true'/'1') are handled; Election children that carry no Status (e.g. the plain-boolean elections) fail the guard and are vacuously satisfied.
The OutstandingBalance should be equal to the following calculation: QualOwnerIntentBalance + Additions - Reductions
The OutStandingBalance amount does not equal the provided figures.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:Election/globe:Art3.2.1.c/globe:OutstandingBalance
almostEquals:
expected: ../globe:QualOwnerIntentBalance + ../globe:Additions - ../globe:Reductions
RevocationYear is only to be provided when the status is FALSE
RevocationYear is only to be provided when the status is FALSE. When the Status is TRUE, the election has been made and has not been revoked. When the Status is FALSE, this indicates that the election has been revoked, as such the RevocationYear is only to be provided when the status is FALSE.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:CEComputation/globe:Elections/*
when:
isTrue: globe:Status
absent: globe:RevocationYear
Encoded as the contrapositive: target each Elections child (not its own RevocationYear, whose absence can't be asserted from itself), and when its Status is TRUE the RevocationYear must be absent. The Status guard uses isTrue so both boolean lexical forms ('true'/'1') are handled; Elections children that carry no Status (e.g. AggregatedReporting, the plain-boolean elections) fail the guard and are vacuously satisfied.
If the AggregatedReporting element is completed, then the CEComputations TIN should match the TaxConsol Group TIN.
The TIN provided for the CE Computations must match to a TIN of the tax consolidated group used for purposes of Covered Taxes in the jurisdiction, if available.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:CEComputation/globe:TIN
when: ../globe:Elections/globe:AggregatedReporting
equals:
expected: ../globe:Elections/globe:AggregatedReporting/globe:TaxConsolGroupTIN
The InvestmentEntityTIN must not match the CEComputations TIN
The CE who is making the election under article 7.6 must be different from the investment entity who the election is made in respect of (i.e. label 3.2.4.5.1 of the GIR must be different from 3.2.4.5.2.)
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:CEComputation/globe:Elections/globe:Art7.6/globe:InvestmentEntityTIN
notEquals:
expected: ancestor::globe:CEComputation/globe:TIN
Each code for this AdjustmentItem element cannot be used more than once per ETR element in the Jurisdiction Section.
Each code for this AdjustmentItem element cannot be used more than once per ETR element in the Jurisdiction Section.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR
distinct: globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:NetGlobeIncome/globe:Adjustments/globe:AdjustmentItem
Targets the ETR so the uniqueness check is scoped per ETR element; the operand selects the AdjustmentItem at this location.
When the 'AdjustmentItem' element contains the value GIR2025 then the 'IntShippingIncome' element must be completed
An adjustment under article 3.3 has been made without completing the relevant table at 3.2.4.4.a.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:NetGlobeIncome
when: globe:Adjustments/globe:AdjustmentItem = 'GIR2025'
present: globe:IntShippingIncome
Targets the common NetGlobeIncome ancestor (not the IntShippingIncome the spec cites — you can't assert the presence of your own target) so the guard can read the sibling AdjustmentItem code. AdjustmentItem is repeatable, so the node-set `=` guard fires when any Adjustments carries GIR2025.
When the 'Art4.6.1' election has the value of TRUE, the AdjustmentItem for the AdjustedCoveredTax must contain GIR2711 and the 'amount' must be a negative
When the 'Art4.6.1' election has the value of TRUE, the AdjustmentItem for the AdjustedCoveredTax must contain GIR2711 and the 'amount' must be a negative
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:AdjustedCoveredTax/globe:Adjustments
when:
isTrue: ancestor::globe:ETR/globe:Election/globe:Art4.6.1
allOf:
- equals:
actual: globe:AdjustmentItem
expected: "'GIR2711'"
- lessThan:
actual: globe:Amount
expected: 0
If the AdjustmentItem element has the value of GIR2720, then the total of the AdjustedCoveredTax for the jurisdiction cannot be a negative.
The Excess Negative Tax Expense cannot reduce the AdjustedCoveredTaxes for a jurisdiction below 0
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:AdjustedCoveredTax/globe:Total
when: ../globe:Adjustments/globe:AdjustmentItem = 'GIR2720'
atLeast:
expected: 0
Each code for this AdjustmentItem element cannot be used more than once per ETR element in the Jurisdiction Section.
Each code for this AdjustmentItem element cannot be used more than once per ETR element in the Jurisdiction Section.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR
distinct: globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:AdjustedCoveredTax/globe:Adjustments/globe:AdjustmentItem
Targets the ETR so the uniqueness check is scoped per ETR element; the operand selects the AdjustmentItem at this location.
The PostFilingAdjust/ DeferTaxAsset / Total should equal to the following calculation: sum of all ‘PostFilingAdjust / DeferTaxAsset / AmountAttributed / Amount’
The PostFilingAdjust / DeferTaxAsset / Total should equal to the following calculation: sum of all ‘PostFilingAdjust / DeferTaxAsset / AmountAttributed / Amount’
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:AdjustedCoveredTax/globe:PostFilingAdjust/globe:DeferTaxAsset/globe:Total
almostEquals:
expected: sum(../globe:AmountAttributed/globe:Amount)
The PostFilingAdjust / CoveredTaxRefund / Total should equal to the following calculation: Sum of all ‘PostFilingAdjust/ CoveredTaxRefund / AmountAttributed / Amount’
The PostFilingAdjust / CoveredTaxRefund / Total should equal to the following calculation: Sum of all ‘PostFilingAdjust/ CoveredTaxRefund / AmountAttributed / Amount’
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:AdjustedCoveredTax/globe:PostFilingAdjust/globe:CoveredTaxRefund/globe:Total
almostEquals:
expected: sum(../globe:AmountAttributed/globe:Amount)
The Year should correspond to or be before the YYYY value reported in the Period Start Date
The provided year for the Loss Carry Back must be a prior Fiscal Year and must be the same as or prior to the Reporting Fiscal Year.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:AdjustedCoveredTax/globe:PostFilingAdjust/globe:DeferTaxAsset/globe:AmountAttributed/globe:Year
atMost:
expected: ancestor::globe:GLOBEBody/globe:FilingInfo/globe:Period/globe:Start
type: year
Compared by year only (both operands are xsd:date). Period Start is reached via ancestor::globe:GLOBEBody (per-filing). The spec's second cited path (Period/Start) is a reference, not a target, so it was dropped from targets.
If more than one AmountAttributed is provided, the years cannot be the same
If more than one AmountAttributed is provided, the years cannot be the same
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:AdjustedCoveredTax/globe:PostFilingAdjust/globe:DeferTaxAsset
distinct: globe:AmountAttributed/globe:Year
Targets DeferTaxAsset so uniqueness is scoped to its AmountAttributed entries. Year is an xsd:date reported at year granularity (YYYY-01-01) in the corpus, so distinctness of the date string is distinctness of the year.
The Year should correspond to or be before the YYYY value reported in the Period Start Date
The provided year for the Loss Carry Back must be a prior Fiscal Year and must be the same as or prior to the Reporting Fiscal Year.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:AdjustedCoveredTax/globe:PostFilingAdjust/globe:CoveredTaxRefund/globe:AmountAttributed/globe:Year
atMost:
expected: ancestor::globe:GLOBEBody/globe:FilingInfo/globe:Period/globe:Start
type: year
If more than one AmountAttributed is provided, the years cannot be the same
If more than one AmountAttributed is provided, the years cannot be the same
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:AdjustedCoveredTax/globe:PostFilingAdjust/globe:CoveredTaxRefund
distinct: globe:AmountAttributed/globe:Year
Targets CoveredTaxRefund so uniqueness is scoped to its AmountAttributed entries. Year is an xsd:date reported at year granularity (YYYY-01-01) in the corpus, so distinctness of the date string is distinctness of the year.
The year cannot be a date which is after the Period End Date
The deemed distribution tax election under article 7.3.1 has been elected for a year which is not the Reporting Fiscal Year or a prior Fiscal Year
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:AdjustedCoveredTax/globe:DeemedDistTax/globe:Election/globe:Recapture/globe:Year
atMost:
expected: ancestor::globe:GLOBEBody/globe:FilingInfo/globe:Period/globe:End
type: year
Assumes a year-only comparison, reading the Recapture Year as a fiscal year against the Period End year, scoped via ancestor::globe:GLOBEBody.
The year cannot contain a date which is 4 years or more before the Period End Date (i.e. Reporting Fiscal Year and previous 3 Fiscal Years)
The year cannot contain a date which is 4 years or more before the Period End Date (i.e. Reporting Fiscal Year and previous 3 Fiscal Years)
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:AdjustedCoveredTax/globe:DeemedDistTax/globe:Election/globe:Recapture/globe:Year
atLeast:
expected: ancestor::globe:GLOBEBody/globe:FilingInfo/globe:Period/globe:End
type: year
offset: -3
Lower bound only; 70070 covers the upper bound. "4 years or more before" maps to year >= Period End year - 3 (offset -3).
The EndAmount is equal to the following calculation: StartAmount - TotalDDT
The EndAmount is equal to the following calculation: StartAmount - TotalDDT
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:AdjustedCoveredTax/globe:DeemedDistTax/globe:Election/globe:Recapture/globe:EndAmount
almostEquals:
expected: ../globe:StartAmount - ../globe:TotalDDT
The EndAmount must not be a negative.
The EndAmount must not be a negative.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:AdjustedCoveredTax/globe:DeemedDistTax/globe:Election/globe:Recapture/globe:EndAmount
atLeast:
expected: 0
The TotalDDT is equal to the following calculation: DDTYear-0 + DDTYear-1 + DDTYear-2 + DDTYear-3
The TotalDDT is equal to the following calculation: DDTYear-0 + DDTYear-1 + DDTYear-2 + DDTYear-3
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:AdjustedCoveredTax/globe:DeemedDistTax/globe:Election/globe:Recapture/globe:TotalDDT
almostEquals:
expected: sum(../globe:DDTYear-0) + sum(../globe:DDTYear-1) +
sum(../globe:DDTYear-2) + sum(../globe:DDTYear-3)
When the Year equals YYYY value reported in the Period End Date, then the following elements should be completed by entering "0": DDTYear-0, DDTYear-1, DDTYear-2 and DDTYear-3
When the Year equals YYYY value reported in the Period End Date, then the following elements should be completed by entering "0": DDTYear-0, DDTYear-1, DDTYear-2 and DDTYear-3
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:AdjustedCoveredTax/globe:DeemedDistTax/globe:Election/globe:Recapture/globe:DDTYear-0
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:AdjustedCoveredTax/globe:DeemedDistTax/globe:Election/globe:Recapture/globe:DDTYear-1
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:AdjustedCoveredTax/globe:DeemedDistTax/globe:Election/globe:Recapture/globe:DDTYear-2
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:AdjustedCoveredTax/globe:DeemedDistTax/globe:Election/globe:Recapture/globe:DDTYear-3
when:
equals:
actual: ../globe:Year
expected: ancestor::globe:GLOBEBody/globe:FilingInfo/globe:Period/globe:End
type: year
equals:
expected: 0
The four DDTYear-N are separate targets so each is checked independently; the `when` guard compares the sibling Recapture/Year against Period End by year.
The TransBlendCFC total should equal the following calculation: Sum of all 'AggAllocTax'
The TransBlendCFC total should equal the following calculation: Sum of all 'AggAllocTax'
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:AdjustedCoveredTax/globe:TransBlendCFC/globe:Total
almostEquals:
expected: sum(../globe:CFCJur/globe:Allocation/globe:AggAllocTax)
The total element should be equal to the following calculation: PreRecast + Recast/Lower - Recast/Higher If Recast/Lower and/or Recast/Higher is not provided, then assumed to be 0.
The total element should be equal to the following calculation: PreRecast + Recast/Lower - Recast/Higher If Recast/Lower and/or Recast/Higher is not provided, then assumed to be 0.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:AdjustedCoveredTax/globe:DeferTaxAdjustAmt/globe:Total
almostEquals:
expected: ../globe:PreRecast + sum(../globe:Recast/globe:Lower) -
sum(../globe:Recast/globe:Higher)
The BefRecastAdjust element should be equal to the following calculation: DefTaxAmt - DiffCarryValue + GLoBEValue.
The BefRecastAdjust element should be equal to the following calculation: DefTaxAmt - DiffCarryValue + GLoBEValue
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:AdjustedCoveredTax/globe:DeferTaxAdjustAmt/globe:BefRecastAdjust
almostEquals:
expected: ../globe:DefTaxAmt - ../globe:DiffCarryValue + ../globe:GLoBEValue
The PreRecast element should be equal to the following calculation: BefRecastAdjust + TotalAdjust
The PreRecast element should be equal to the following calculation: BefRecastAdjust + TotalAdjust
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:AdjustedCoveredTax/globe:DeferTaxAdjustAmt/globe:PreRecast
almostEquals:
expected: ../globe:BefRecastAdjust + ../globe:TotalAdjust
Each code for this AdjustmentItem element cannot be used more than once per ETR element in the Jurisdiction Section.
Each code for this AdjustmentItem element cannot be used more than once per ETR element in the Jurisdiction Section.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR
distinct: globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:AdjustedCoveredTax/globe:DeferTaxAdjustAmt/globe:Adjustments/globe:AdjustmentItem
Targets the ETR so the uniqueness check is scoped per ETR element; the operand selects the AdjustmentItem at this location.
The total element should be equal to the following calculation: DeferredTaxAssetStart - DeferredTaxAssetExcluded OR DeferredTaxAssetRecast - DeferredTaxAssetExcluded
The total element should be equal to the following calculation: DeferredTaxAssetStart - DeferredTaxAssetExcluded OR DeferredTaxAssetRecast - DeferredTaxAssetExcluded
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:AdjustedCoveredTax/globe:DeferTaxAdjustAmt/globe:Transition/globe:DeferredTaxAssets/globe:Total
almostEquals:
expected: ../globe:DeferredTaxAssetStart + ../globe:DeferredTaxAssetRecast -
../globe:DeferredTaxAssetExcluded
When the DeferredTaxAssets element is provided, then one of DeferredTaxAssetStart or DeferredTaxAssetRecast must contain the value of ‘0’
To calculate the Deferred tax assets taken into account for GloBE purposes, ensure that either the DeferredTaxAsset at the start of the year or the DefferedTaxAsset recast at the minimum rate is used, both values cannot be used. Therefore, ensure that when calculating the DeferredTaxAsset/total element, that one of DeferredTaxAssetStart or DeferredTaxAssetRecast contains the value of 0
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:AdjustedCoveredTax/globe:DeferTaxAdjustAmt/globe:Transition/globe:DeferredTaxAssets
anyOf:
- equals:
actual: globe:DeferredTaxAssetStart
expected: 0
- equals:
actual: globe:DeferredTaxAssetRecast
expected: 0
The Remaining value should equal the following calculation: PriorYearBalance + GeneratedInRFY - UtilizedInRFY
The Remaining value should equal the following calculation: PriorYearBalance + GeneratedInRFY - UtilizedInRFY
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:ExcessNegTaxExpense/globe:Remaining
almostEquals:
expected: ../globe:PriorYearBalance + ../globe:GeneratedInRFY - ../globe:UtilizedInRFY
If the AdjustmentItem element has the value of GIR2719, then the value reported in the 'amount' element should be the same as the integer reported in the GeneratedInRFY element
In the 'Adjusted Covered Tax' element, a lodger can select from a list of possible adjustments, and must report the following 'Name of adjustment (enumeration) and the amount of said adjustment. If the selected 'adjustment' has the 'AdjustmentItem' value of 'GIR2719', then the value which is entered into the 'amount' element should be an exact match to the integer reported in the GeneratedInRFY element.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:AdjustedCoveredTax/globe:Adjustments/globe:Amount
when: ../globe:AdjustmentItem = 'GIR2719'
equals:
expected: ancestor::globe:OverallComputation/globe:ExcessNegTaxExpense/globe:GeneratedInRFY
If the AdjustmentItem element has the value of GIR2720, then the value reported in the 'amount' element should be the same as the integer reported in the UtilizedInRFY element
If the AdjustedItem element has the value of GIR2720, then the value reported in the 'amount' element should be the same as the integer reported in the UtilizedInRFY element
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:AdjustedCoveredTax/globe:Adjustments/globe:Amount
when: ../globe:AdjustmentItem = 'GIR2720'
equals:
expected: ancestor::globe:OverallComputation/globe:ExcessNegTaxExpense/globe:UtilizedInRFY
Targets the Adjustments/Amount (not the spec-cited AdjustmentItem) so the checked value is the target `.` and the message names Amount; the guard reads the sibling AdjustmentItem.
The ExcessProfits integer is equal to the following calculation: NetGlobeIncome/Total - SubstanceExclusion/Total. If SubstanceExclusion/Total is not provided, then should be treated as a 0 value. If the NetGlobeIncome/Total - SubstanceExclusion/Total results in a number less than 0, then ExcessProfits must equal to 0.
The ExcessProfits integer is equal to the following calculation: NetGlobeIncome/Total - SubstanceExclusion/Total. If SubstanceExclusion/Total is not provided, then should be treated as a 0 value. If the NetGlobeIncome/Total - SubstanceExclusion/Total results in a number less than 0, then ExcessProfits must equal to 0.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:ExcessProfits
anyOf:
- almostEquals:
expected: ../globe:NetGlobeIncome/globe:Total -
sum(../globe:SubstanceExclusion/globe:Total)
- allOf:
- atMost:
actual: ../globe:NetGlobeIncome/globe:Total -
sum(../globe:SubstanceExclusion/globe:Total)
expected: 0
- equals:
expected: 0
ExcessProfits is the difference floored at 0: it equals NetGlobeIncome/Total - SubstanceExclusion/Total, or 0 when that difference is negative (SubstanceExclusion/Total summed so a missing value counts as 0).
The Total integer for the SubstanceExclusion is equal to the following calculation: PayrollCost * PayrollMarkUp + TangibleAssetValue * TangibleAssetMarkup
The Total integer for the SubstanceExclusion is equal to the following calculation: PayrollCost * PayrollMarkUp + TangibleAssetValue * TangibleAssetMarkup
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:SubstanceExclusion/globe:Total
almostEquals:
expected: ../globe:PayrollCost * ../globe:PayrollMarkUp +
../globe:TangibleAssetValue * ../globe:TangibleAssetMarkup
The Art4.1.5 element must be completed if the OverallComputation/NetGlobeIncome/Total is a negative value
The Art4.1.5 element must be completed if the OverallComputation/NetGlobeIncome/Total is a negative value
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:AdditionalTopUpTax
when: ../globe:NetGlobeIncome/globe:Total < 0
present: globe:Art4.1.5
Targets AdditionalTopUpTax (not Art4.1.5 itself) so the consequence can assert presence of Art4.1.5 when the sibling NetGlobeIncome/Total is negative.
The AdjustedCoveredTax value should be a negative value
The AdjustedCoveredTax value should be a negative value
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:AdditionalTopUpTax/globe:Art4.1.5/globe:AdjustedCoveredTax
lessThan:
expected: 0
The GlobeLoss element must be the same as OverallComputation/NetGlobeIncome/Total value.
The GlobeLoss element must be the same as OverallComputation/NetGlobeIncome/Total value.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:AdditionalTopUpTax/globe:Art4.1.5/globe:GlobeLoss
equals:
expected: ancestor::globe:OverallComputation/globe:NetGlobeIncome/globe:Total
The ExpectedAdjustedCoveredTax must be equal to the following calculation: GlobeLoss * 15%
The ExpectedAdjustedCoveredTax must be equal to the following calculation: GlobeLoss * 15%
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:AdditionalTopUpTax/globe:Art4.1.5/globe:ExpectedAdjustedCoveredTax
almostEquals:
expected: ../globe:GlobeLoss * 0.15
The AdditionalTopUpTax integer is equal to the following calculation: ExpectedAdjustedCoveredTax – AdjustedCoveredTax. If the ExpectedAdjustedCoveredTax - AdjustedCoveredTax results in a number less than 0, then AdditionalTopUpTax must equal to 0.
The AdditionalTopUpTax integer is equal to the following calculation: ExpectedAdjustedCoveredTax – AdjustedCoveredTax. If the ExpectedAdjustedCoveredTax - AdjustedCoveredTax results in a number less than 0, then AdditionalTopUpTax must equal to 0.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:AdditionalTopUpTax/globe:Art4.1.5/globe:AdditionalTopUpTax
anyOf:
- almostEquals:
expected: ../globe:ExpectedAdjustedCoveredTax - ../globe:AdjustedCoveredTax
- allOf:
- atMost:
actual: ../globe:ExpectedAdjustedCoveredTax - ../globe:AdjustedCoveredTax
expected: 0
- equals:
expected: 0
AdditionalTopUpTax is the difference floored at 0: it equals ExpectedAdjustedCoveredTax - AdjustedCoveredTax, or 0 when that difference is negative.
The Year must not be greater than the YYYY value reported in the Period End Date
The Year must not be greater than the YYYY value reported in the Period End Date
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:AdditionalTopUpTax/globe:NONArt4.1.5/globe:Year
atMost:
expected: ancestor::globe:GLOBEBody/globe:FilingInfo/globe:Period/globe:End
type: year
When the Articles contain the value of GIR2605, then the Year should be at least '4 years' before the YYYY value reported in the Period End Date.
When the Articles contain the value of GIR2605, then the Year should be at least '4 years' before the YYYY value reported in the Period End Date
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:AdditionalTopUpTax/globe:NONArt4.1.5/globe:Year
when: ../globe:Articles = 'GIR2605'
atMost:
expected: ancestor::globe:GLOBEBody/globe:FilingInfo/globe:Period/globe:End
type: year
offset: -4
Gated on the sibling Articles (repeatable, so the guard matches if any equals GIR2605). "At least 4 years before" maps to year <= Period End year - 4.
When the Articles contain the value of GIR2602, then the Year should be the fifth Fiscal Year preceding the YYYY value reported in the Period End Date.
When the Articles contain the value of GIR2602, then the Year should be the fifth Fiscal Year preceding the YYYY value reported in the Period End Date
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:AdditionalTopUpTax/globe:NONArt4.1.5/globe:Year
when: ../globe:Articles = 'GIR2602'
equals:
expected: ancestor::globe:GLOBEBody/globe:FilingInfo/globe:Period/globe:End
type: year
offset: -5
AdditionalTopUpTax is calculated as follows: Recalculated/TopUpTax - Previous/TopUpTax
AdditionalTopUpTax is calculated as follows: Recalculated/TopUpTax - Previous/TopUpTax
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:OverallComputation/globe:AdditionalTopUpTax/globe:NONArt4.1.5/globe:AdditionalTopUpTax
almostEquals:
expected: ../globe:Recalculated/globe:TopUpTax - ../globe:Previous/globe:TopUpTax
The InclusionRatio must equal the following calculation: (NetGlobeIncome - OtherOwnershipAllocation) DIVIDED by NetGlobeIncome
The InclusionRatio must equal the following calculation: (NetGlobeIncome - OtherOwnershipAllocation) DIVIDED by NetGlobeIncome
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:LowTaxJurisdiction/globe:LTCE/globe:IIR/globe:ParentEntity/globe:InclusionRatio
when: ancestor::globe:IIR/globe:NetGlobeIncome != 0
almostEquals:
expected: (ancestor::globe:IIR/globe:NetGlobeIncome -
sum(../globe:OtherOwnershipAllocation)) div
ancestor::globe:IIR/globe:NetGlobeIncome
Guarded on a non-zero NetGlobeIncome since the ratio is otherwise undefined (divide-by-zero); OtherOwnershipAllocation is summed so a missing value is 0.
The IIR/ParentEntity/TopUpTaxShare must equal the following calculation: IIR/TopUpTax * InclusionRatio
The IIR/ParentEntity/TopUpTaxShare must equal the following calculation: TopUpTax * InclusionRatio
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:LowTaxJurisdiction/globe:LTCE/globe:IIR/globe:ParentEntity/globe:TopUpTaxShare
almostEquals:
expected: ancestor::globe:IIR/globe:TopUpTax * ../globe:InclusionRatio
The sum of 'UTPRTopUpTaxAttributed' should be equal to the sum of TotalUTPRTopUpTax amount in the JurisdictionSection element in respect to all jurisdictions.
The sum of 'UTPRTopUpTaxAttributed' should be equal to the sum of TotalUTPRTopUpTax amount in the JurisdictionSection element in respect to all jurisdictions.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody
almostEquals:
actual: sum(globe:UTPRAttribution/globe:Attribution/globe:UTPRTopUpTaxAttributed)
expected: sum(globe:JurisdictionSection/globe:LowTaxJurisdiction/globe:UTPR/globe:UTPRCalculation/globe:TotalUTPRTopUpTax)
A whole-message aggregate (sum across all jurisdictions), so the target is the GLOBEBody to give the two sums a single context.
When the UTPRCalculation is provided and the TotalUTPRTopUpTax element contains a value greater than 0 then the UTPRAttribution must be completed.
A UTPR Top up tax has been reported and the corresponding attribution of the UTRP has not been reported. Please complete the UTPRAttribution element.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:LowTaxJurisdiction/globe:UTPR/globe:UTPRCalculation
when: globe:TotalUTPRTopUpTax > 0
present: ancestor::globe:GLOBEBody/globe:UTPRAttribution
Targets the UTPRCalculation (so the gating value is a child of the context) and reaches the message-level UTPRAttribution via the GLOBEBody ancestor. Targeting UTPRCalculation covers "is provided"; the TotalUTPRTopUpTax > 0 guard covers the value condition.
The Employees must be completed unless the UTPRTopUpTaxCarryForward contains the value of '0'
The employees element must be completed as there is no carry forward amount that still needs to be allocated to this jurisdiction
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:UTPRAttribution/globe:Attribution
when: globe:UTPRTopUpTaxCarryForward != 0
present: globe:Employees
The TangibleAssetValue must be completed unless the UTPRTopUpTaxCarryForward contains the value of '0'
The TangibleAssetValue element must be completed as there is no carry forward amount that still needs to be allocated to this jurisdiction
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:UTPRAttribution/globe:Attribution
when: globe:UTPRTopUpTaxCarryForward != 0
present: globe:TangibleAssetValue
The UTPRPercentage must be 0% when the UTPRTopUpTaxCarryForward is greater than 0. If the UTPRTopUpTaxCarryForward is 0, then the UTPRPercentage can only be 0% when all UTPR jurisdictions have a UTPR Percentage of 0 in the Reporting Fiscal Year.
The UTPRPercentage must be 0% when the UTPRTopUpTaxCarryForward is greater than 0. If the UTPRTopUpTaxCarryForward is 0, then the UTPRPercentage can only be 0% when all UTPR jurisdictions have a UTPR Percentage of 0 in the Reporting Fiscal Year.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:UTPRAttribution/globe:Attribution/globe:UTPRPercentage
allOf:
- when: ../globe:UTPRTopUpTaxCarryForward > 0
equals:
expected: 0
- when: ../globe:UTPRTopUpTaxCarryForward = 0 and . = 0
absent: /globe:GLOBE_OECD/globe:GLOBEBody/globe:UTPRAttribution/globe:Attribution/globe:UTPRPercentage[.
!= 0]
The OECD text bundles two checks that share the UTPRPercentage target but use different guards, so they are combined with allOf, each branch carrying its own when (a branch whose guard is false passes vacuously). Branch 1: when the sibling UTPRTopUpTaxCarryForward > 0, the UTPRPercentage must be 0. Branch 2: when carry-forward = 0 and this UTPRPercentage is itself 0, every UTPRAttribution percentage in the message must also be 0 — i.e. no non-zero one is present — encoding "a 0% is valid only when all jurisdictions are 0% that year".
The UTPRTopUpTaxCarriedForward cannot be a negative value.
The UTPRTopUpTaxCarriedForward must be a positive value
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:UTPRAttribution/globe:Attribution/globe:UTPRTopUpTaxCarriedForward
atLeast:
expected: 0
The UTPRTopUpTaxCarriedForward is equal to the following calculation UTPRTopUpTaxCarryForward + UTPRTopUpTaxAttributed - AddCashTaxExpense
The UTPRTopUpTaxCarriedForward is equal to the following calculation UTPRTopUpTaxCarryForward + UTPRTopUpTaxAttributed - AddCashTaxExpense
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:UTPRAttribution/globe:Attribution/globe:UTPRTopUpTaxCarriedForward
almostEquals:
expected: sum(../globe:UTPRTopUpTaxCarryForward) +
sum(../globe:UTPRTopUpTaxAttributed) - sum(../globe:AddCashTaxExpense)
The OtherTIN must not be the same as the CEComputations/TIN.
The OtherTIN must not be the same as the CEComputations/TIN.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:CEComputation/globe:AdjustedFANIL/globe:Adjustment/globe:CrossBorderAdjustments/globe:OtherTIN
notEquals:
expected: ancestor::globe:CEComputation/globe:TIN
Where the Exception element is TRUE, then the CrossBorderAdjustements must not be provided for that CEComputation section.
When the UPE is wholly owned by holders of Ownership Interests in respect of which Article 7.1 applies, and the Filing Constituent Entity reported “exception, wholly-owned” in column 3.2.4.1.d.5, the Filing Constituent Entity shall not complete Table 3.2.4.1.c with respect to the UPE (and with respect to Tax Transparent Entities wholly owned by the UPE through a Tax Transparent Structure and located in the UPE jurisdiction to which Article 3.5.1(b) applies). (see note 3.2.4.1.c of the GIR)
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:CEComputation/globe:AdjustedFANIL/globe:Adjustment/globe:CrossBorderAdjustments
absent: ../globe:UPEAdjustments/globe:Reductions/globe:Exception[. = 'true' or . = '1']
The path in the specification wrongly contains the Total element.
When the 'Basis' is GIR1901, GIR1902, GIR1905, GIR1906 then the 'EntityOwner/TaxRate' element or ‘IndOwners/TaxRate’ element must be completed
When the 'Basis' is GIR1901, GIR1902, GIR1905, GIR1906 then the 'EntityOwner/TaxRate' element or ‘IndOwners/TaxRate’ element must be completed
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:CEComputation/globe:AdjustedFANIL/globe:Adjustment/globe:UPEAdjustments
when: globe:Basis = 'GIR1901' or globe:Basis = 'GIR1902' or globe:Basis =
'GIR1905' or globe:Basis = 'GIR1906'
anyOf:
- present: globe:IdentificationOfOwners/globe:IndOwners/globe:TaxRate
- present: globe:IdentificationOfOwners/globe:EntityOwner/globe:TaxRate
When the 'Basis' is GIR1907 then the 'ResCountryCode' element must be completed (i.e. the choice must be 'IndOwners')
When the 'Basis' is GIR1907 then the 'ResCountryCode' element must be completed (i.e. the choice must be 'IndOwners')
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:CEComputation/globe:AdjustedFANIL/globe:Adjustment/globe:UPEAdjustments
when: globe:Basis = 'GIR1907'
present: globe:IdentificationOfOwners/globe:IndOwners/globe:ResCountryCode
When the 'Basis' is GIR1903 or GIR1908, then the IndOwners element must be completed
When the 'Basis' is GIR1903 or GIR1908, then the IndOwners element must be completed
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:CEComputation/globe:AdjustedFANIL/globe:Adjustment/globe:UPEAdjustments
when: globe:Basis = 'GIR1903' or globe:Basis = 'GIR1908'
present: globe:IdentificationOfOwners/globe:IndOwners
When the 'Basis' is GIR1904 or GIR1909, then the 'ExTypeOfEntity' must be completed (i.e. the choice must be 'EntityOwner')
When the 'Basis' is GIR1904 or GIR1909, then the 'ExTypeOfEntity' must be completed (i.e. the choice must be 'EntityOwner')
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:CEComputation/globe:AdjustedFANIL/globe:Adjustment/globe:UPEAdjustments
when: globe:Basis = 'GIR1904' or globe:Basis = 'GIR1909'
present: globe:IdentificationOfOwners/globe:EntityOwner/globe:ExTypeOfEntity
When the 'Basis' is GIR1904, then the 'ExTypeOfEntity' must not contain the value of GIR2805.
When the 'Basis' is GIR1904, then the 'ExTypeOfEntity' must not contain the value of GIR2805.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:CEComputation/globe:AdjustedFANIL/globe:Adjustment/globe:UPEAdjustments
when: globe:Basis = 'GIR1904'
notEquals:
actual: globe:IdentificationOfOwners/globe:EntityOwner/globe:ExTypeOfEntity
expected: "'GIR2805'"
Only the value is checked here; ExTypeOfEntity's presence under GIR1904 is already enforced by 70111. notEquals on an absent ExTypeOfEntity is vacuously satisfied, so this rule purely guards against the GIR2805 value.
When the 'Basis' is GIR1909, then the 'ExTypeOfEntity' must not contain the value of GIR2804.
When the 'Basis' is GIR1909, then the 'ExTypeOfEntity' must not contain the value of GIR2804.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:CEComputation/globe:AdjustedFANIL/globe:Adjustment/globe:UPEAdjustments
when: globe:Basis = 'GIR1909'
notEquals:
actual: globe:IdentificationOfOwners/globe:EntityOwner/globe:ExTypeOfEntity
expected: "'GIR2804'"
Only the value is checked here; ExTypeOfEntity's presence under GIR1909 is already enforced by 70111. notEquals on an absent ExTypeOfEntity is vacuously satisfied, so this rule purely guards against the GIR2804 value.
If two values are provided for the'Amount', then one value must be negative and the other value positive (i.e. both values of the integer cannot be positive or negative)
If two values are provided for the'Amount', then one value must be negative and the other value positive (i.e. both values of the integer cannot be positive or negative)
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:CEComputation/globe:NetGlobeIncome/globe:Adjustments
when: count(globe:Amount) = 2
allOf:
- present: globe:Amount[. < 0]
- present: globe:Amount[. > 0]
"One negative and one positive" is expressed as the presence of an Amount < 0 and the presence of an Amount > 0; combined with the count = 2 guard this forces exactly one of each sign (and rejects a 0, which is neither).
When the 'AdjustmentItem' element contains the value GIR2022 and/or GIR2023 then the 'UPEAdjustments' element must be completed
An adjustment under article 7.1 or 7.2 can only be selected when the table at 3.2.4.1.d has been completed.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:CEComputation
when: globe:NetGlobeIncome/globe:Adjustments/globe:AdjustmentItem = 'GIR2022' or
globe:NetGlobeIncome/globe:Adjustments/globe:AdjustmentItem = 'GIR2023'
present: globe:AdjustedFANIL/globe:Adjustment/globe:UPEAdjustments
We use the common parent element as a target otherwise we cannot check for the non-existence of the UPEAdjustments element.
When the 'AdjustmentItem' element contains the value GIR2025 then the 'IntShippingIncome' element must be completed
An adjustment under article 3.3 has been made without completing the relevant table at 3.2.4.4.a.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:CEComputation/globe:NetGlobeIncome
when: globe:Adjustments/globe:AdjustmentItem = 'GIR2025'
present: globe:IntShippingIncome
We use the common parent element as a target otherwise we cannot check for the non-existence of the IntShippingIncome element.
When the 'AdjustmentItem' element contains the value GIR2024 then the 'Art7.6' element must be completed
An adjustment under article 7.6 has been made without completing the relevant table at 3.2.4.5.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:CEComputation
when: globe:NetGlobeIncome/globe:Adjustments/globe:AdjustmentItem = 'GIR2024'
present: globe:Elections/globe:Art7.6
We use the common parent element as a target otherwise we cannot check for the non-existence of the Art7.6 element.
If two values are provided for the'Amount', then one value must be negative and the other value positive (i.e. both values of the integer cannot be positive or negative)
If two values are provided for the'Amount', then one value must be negative and the other value positive (i.e. both values of the integer cannot be positive or negative)
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:CEComputation/globe:AdjustedCoveredTax/globe:Adjustments
when: count(globe:Amount) = 2
allOf:
- present: globe:Amount[. < 0]
- present: globe:Amount[. > 0]
"One negative and one positive" is expressed as the presence of an Amount < 0 and the presence of an Amount > 0; combined with the count = 2 guard this forces exactly one of each sign (and rejects a 0, which is neither).
Each code for this AdjustmentItem element cannot be used more than once per ETR element in the Jurisdiction Section.
Each code for this AdjustmentItem element cannot be used more than once per ETR element in the Jurisdiction Section.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR
distinct: globe:ETRStatus/globe:ETRComputation/globe:CEComputation/globe:AdjustedCoveredTax/globe:Adjustments/globe:AdjustmentItem
Targets the ETR so the uniqueness check is scoped per ETR element (across all of its CEComputations, per the literal "per ETR" wording); the operand selects the AdjustmentItem at this location.
The Total element shall equal the following calculation: DeferTaxExpense + Sum of all values reported in Adjustments/Amount + Recast/Higher + Recast/Lower (if any element is not provided, it is treated as a 0 value)
The Total element shall equal the following calculation: DeferTaxExpense + Sum of all values reported in Adjustments/Amount + Recast/Higher + Recast/Lower (if any element is not provided, it is treated as a 0 value)
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:CEComputation/globe:AdjustedCoveredTax/globe:DeferTaxAdjustAmt/globe:Total
almostEquals:
expected: sum(../globe:DeferTaxExpense) + sum(../globe:Adjustment/globe:Amount)
+ sum(../globe:Adjustment/globe:Recast/globe:Higher) +
sum(../globe:Adjustment/globe:Recast/globe:Lower)
According to the schema the Recast element is nested in Adjustment.
Each code for this AdjustmentItem element cannot be used more than once per ETR element in the Jurisdiction Section.
Each code for this AdjustmentItem element cannot be used more than once per ETR element in the Jurisdiction Section.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR
distinct: globe:ETRStatus/globe:ETRComputation/globe:CEComputation/globe:AdjustedCoveredTax/globe:DeferTaxAdjustAmt/globe:Adjustment/globe:AdjustmentItem
Targets the ETR so the uniqueness check is scoped per ETR element (across all of its CEComputations, per the literal "per ETR" wording); the operand selects the AdjustmentItem at this location.
If two values are provided for the Amount element, then one value must be negative and the other value must be positive (i.e. the values of the integer cannot be both positive or negative)
If two values are provided for the Amount element, then one value must be negative and the other value must be positive (i.e. the values of the integer cannot be both positive or negative)
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:CEComputation/globe:AdjustedCoveredTax/globe:DeferTaxAdjustAmt/globe:Adjustment
when: count(globe:Amount) = 2
allOf:
- present: globe:Amount[. < 0]
- present: globe:Amount[. > 0]
Targets the Adjustment (parent of Amount) so the count = 2 guard and the two sign-presence checks are evaluated once per Adjustment rather than once per Amount; see 70114 for the same "one negative and one positive" idiom.
The Additions element must not have a negative value.
The Additions element must not have a negative value.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:CEComputation/globe:AdjustedIncomeTax/globe:CrossAllocation/globe:Additions
atLeast:
expected: 0
The Reductions element must not be a positive value.
The Reductions element must not be a positive value.
Implementation
targets:
- /globe:GLOBE_OECD/globe:GLOBEBody/globe:JurisdictionSection/globe:GLoBETax/globe:ETR/globe:ETRStatus/globe:ETRComputation/globe:CEComputation/globe:AdjustedIncomeTax/globe:CrossAllocation/globe:Reductions
atMost:
expected: 0