Build a Country-by-Country Report (CbCR / DAC4, XML)
Skill: Convert MNE group financial data into the CbC XML report (DAC4)
Region: European Union (EU-wide) Category: Tax — Country-by-Country Reporting (DAC4, Council Directive (EU) 2016/881; OECD BEPS Action 13) Does: Takes a multinational enterprise (MNE) group's per-jurisdiction financial and tax data and produces the Country-by-Country Report as the OECD CbC XML that the ultimate parent (or surrogate) files with its tax authority for automatic exchange across the EU and partner jurisdictions. Standard: Council Directive (EU) 2016/881 (DAC4) · OECD CbC XML Schema v2.0 & User Guide (BEPS Action 13)
CbCR applies to MNE groups with consolidated revenue ≥ €750 million. The report has three tables — Table 1 (per-jurisdiction financials), Table 2 (constituent entities + main activities), Table 3 (additional information) — encoded in the OECD CbC XML v2.0 schema. Filed within 12 months of the fiscal year-end; the EU also requires a separate public CbCR (Directive (EU) 2021/2101) which is a different, narrower disclosure. Confirm the active schema version before generating.
When this applies
- MNE group with consolidated group revenue ≥ €750m in the preceding fiscal year.
- Filed by the Ultimate Parent Entity (or a Surrogate Parent / local filing entity) in its residence jurisdiction.
- Annual, due within 12 months of fiscal year-end; a CbCR notification (filing entity/role) is usually due earlier.
Input data required
| Group | Fields |
|---|---|
| MessageSpec | SendingEntityIN, TransmittingCountry, ReceivingCountry, MessageType (CBC), ReportingPeriod, MessageRefId, MessageTypeIndic |
| ReportingEntity | name, TIN + country, role (CBC701 UPE / CBC702 Surrogate / CBC703 Local filing), reporting period |
| Per jurisdiction (Table 1) | ResCountryCode, Revenues (Unrelated, Related, Total), Profit/Loss before tax, Income Tax Paid (cash), Income Tax Accrued, Stated Capital, Accumulated Earnings, Number of Employees, Tangible Assets (non-cash), summary currCode |
| Constituent entities (Table 2) | name, TIN, incorporation country if different, business activity codes (CBC501…CBC513) |
| Additional info (Table 3) | free-text AdditionalInfo |
Document structure (CbC XML v2.0)
CBC_OECD (version="2.0")
├── MessageSpec (Ids, ReceivingCountry, ReportingPeriod, MessageTypeIndic CBC401/402)
└── CbcBody
├── ReportingEntity (Name, TIN, ReportingRole CBC701/702/703, ReportingPeriod, DocSpec)
├── CbcReports ... (one per jurisdiction → Table 1)
│ ├── DocSpec
│ ├── ResCountryCode
│ ├── Summary (Revenues Unrelated/Related/Total, ProfitOrLoss, TaxPaid, TaxAccrued,
│ │ Capital, Earnings, NbEmployees, Assets — each with currCode)
│ └── ConstEntities ... (Table 2: ConstEntity Name/TIN, IncorpCountryCode, BizActivities CBC50x)
└── AdditionalInfo ... (Table 3)
Calculation rules / logic
- Table 1 is aggregated per tax jurisdiction across all constituent entities resident there (not consolidated, not per-entity) using a consistent data source (consolidation pack, separate statutory accounts, or internal management accounts — disclose which in Table 3).
- Revenues Total = Unrelated + Related party revenues; intra-jurisdiction payments are excluded from revenues.
NbEmployeeson a full-time-equivalent basis; monetary amounts in a singlecurrCode.- Business activities use codes
CBC501(R&D) …CBC513(other) withCBC512requiring text in Table 3. MessageTypeIndic=CBC401new data /CBC402corrections; corrections reuseDocRefId/CorrDocRefIdwithDocTypeIndicOECD2/OECD3.
Worked example (one jurisdiction, outline)
<CBC_OECD version="2.0" xmlns="urn:oecd:ties:cbc:v2">
<MessageSpec>
<TransmittingCountry>FR</TransmittingCountry>
<ReceivingCountry>FR</ReceivingCountry>
<MessageType>CBC</MessageType>
<ReportingPeriod>2025-12-31</ReportingPeriod>
<MessageRefId>FR2026CBC0001</MessageRefId>
<MessageTypeIndic>CBC401</MessageTypeIndic>
</MessageSpec>
<CbcBody>
<ReportingEntity>
<Entity><ResCountryCode>FR</ResCountryCode><TIN issuedBy="FR">123456789</TIN>
<Name>Groupe Example SA</Name></Entity>
<ReportingRole>CBC701</ReportingRole>
<DocSpec><DocTypeIndic>OECD1</DocTypeIndic><DocRefId>FR2026CBC0001-RE</DocRefId></DocSpec>
</ReportingEntity>
<CbcReports>
<DocSpec><DocTypeIndic>OECD1</DocTypeIndic><DocRefId>FR2026CBC0001-DE</DocRefId></DocSpec>
<ResCountryCode>DE</ResCountryCode>
<Summary>
<Revenues><Unrelated currCode="EUR">80000000</Unrelated><Related currCode="EUR">20000000</Related><Total currCode="EUR">100000000</Total></Revenues>
<ProfitOrLoss currCode="EUR">12000000</ProfitOrLoss>
<TaxPaid currCode="EUR">3000000</TaxPaid>
<TaxAccrued currCode="EUR">3200000</TaxAccrued>
<NbEmployees>320</NbEmployees>
</Summary>
<ConstEntities><ConstEntity><Entity><ResCountryCode>DE</ResCountryCode><TIN issuedBy="DE">DE123456789</TIN><Name>Example GmbH</Name></Entity>
<BizActivities>CBC503</BizActivities></ConstEntity></ConstEntities>
</CbcReports>
</CbcBody>
</CBC_OECD>
Validation checklist
- Group consolidated revenue ≥ €750m threshold met;
ReportingRole(UPE/Surrogate/Local) correct - Table 1 aggregated per jurisdiction, single
currCode, all summary measures present - Table 2 constituent entities with TIN and business-activity codes; Table 3 names the data source
-
MessageTypeIndic/DocTypeIndic/DocRefIdset; corrections referenceCorrDocRefId - Validates against CbC XML v2.0 XSD; filed within 12 months and notification lodged
Last updated: 2026-06-04 — confirm the active CbC XML schema version, business-activity codes, and your Member State's filing/notification rules (and the separate public CbCR under Directive (EU) 2021/2101) against current European Commission / OECD specifications before use.