FRA XBRL filer manual (platform edition)
How the platform produces, accepts and checks XBRL. It follows the XBRL International specifications and current regulator practice (ESMA ESEF, SEC EDGAR, EBA), adapted for the Egyptian Financial Regulatory Authority.
1. Specifications
| Area | Specification |
|---|---|
| Instances | XBRL 2.1, Dimensions 1.0 |
| Inline reports | Inline XBRL 1.1. The platform writes Transformation Registry 4 (ixt = http://www.xbrl.org/inlineXBRL/transformation/2020-02-12: ixt:num-dot-decimal, ixt:fixed-zero). Uploaded reports may use TR4 or TR5 (…/2022-02-16) — number formats (num-dot-decimal, num-comma-decimal, num-unit-decimal, the TR5 -apos variants, fixed-zero), date formats (date-day-month-year, date-year-month-day, date-monthname-day-year-en, …) and fixed-true / fixed-false / fixed-empty; TR1–3 names are still read. A format outside the registry is refused (XBRL-003). |
| Calculations | Calculations 1.1, round-to-nearest (c11r) |
| Assertions | Formula 1.0 (value assertions), Generic Messages, Assertion Severity 2.0 |
| JSON / CSV | Open Information Model 1.0: xBRL-JSON and xBRL-CSV |
| Packaging | Taxonomy Packages 1.0; Report Packages 1.0 (.xbri inline, .xbr non-inline) |
| Labels and links | Generic Links 1.0, Generic Labels 1.0 (link-role and assertion labels) |
| Enumerations | Extensible Enumerations 2.0 |
| Duplicate facts | XII Working Group Note, 2025-01-14 |
Next versions (Taxonomy Packages 1.1, Report Packages 1.1, Project Tavi): docs/xbrl/ROADMAP.md.
2. Taxonomy
- Base: IFRS Accounting Taxonomy 2025-03-27 (
https://xbrl.ifrs.org/taxonomy/2025-03-27/ifrs-full). Only the element schema is imported, as ESEF does, not the IFRS entry point: the IFRS calculation networks (for example, both balance-sheet layouts) are not the filer's. - FRA extension: published by the platform at
/xbrl/taxonomy/{version}/…and as a Taxonomy Package at/xbrl/taxonomy/fra-taxonomy-{version}.zip(both with CORS, section 2.7).
2.1 Namespaces (XB-TAX-002)
One namespace and one schema ({prefix}-{version}.xsd) per supervised domain, under
http://xbrl.fra.gov.eg/taxonomy/{version}/{prefix}:
| Prefix | Domain | Examples |
|---|---|---|
fra |
FRA core: register data, filing indicators, report-level facts, enumerations | FRALicenseNumber, SectorClassification, RegulatedSector, AuditOrReviewStatus, ReportingPeriodicity, FRAFilingTemplateCode |
fra-ins |
Insurance | GrossPremiumWritten, SolvencyRatio, InsuranceTechReserves, classes of business axis |
fra-brk |
Brokerage and capital market intermediaries | NetCapitalRequirement, ClientSegregatedFunds |
fra-lse |
Financial leasing (and mortgage finance) | LeasingPortfolioGross, NPLRatio, MortgageFinancePortfolioGross |
fra-fct |
Factoring | FactoringPortfolioGross, FactoringTurnover |
fra-cfn |
Consumer finance | ConsumerFinancePortfolioGross, ConsumerFinanceNonPerformingRatio |
fra-mfi |
Microfinance | MicrofinancePortfolioGross, NumberOfActiveBorrowers, PortfolioAtRisk30Days |
fra-fnd |
Investment funds | NetAssetValue, NetAssetValuePerUnit, NumberOfUnitsOutstanding |
fra-egs |
Egyptian Accounting Standards differences from IFRS (section 2.9), each anchored to IFRS | EmployeesAndBoardProfitDistributionRecognisedInEquity, ForeignExchangeDifferencesRecognisedInOtherComprehensiveIncomeUnderEas13SpecialTreatment |
egx |
Egyptian Exchange listing items | DividendWithholdingTax, NumberOfListedShares |
The elements a domain declares are its templates' fields plus the curated list in
resources/xbrl/extension-elements.php (types, period types, balances, labels, documentation).
Legacy prefixes fra-ci and fra-eas. The platform's pre-2025 concept registry (served by
GET /api/v1/xbrl/concepts and used by the KPI services) is unchanged, but its prefixes are not namespaces
of this taxonomy and no filing is tagged with them. Their equivalence to published elements is in
resources/xbrl/legacy-aliases.php, published as fra-{version}-legacy-aliases.json (equivalent, closest
with the difference noted, or none — e.g. fra-eas:EBITDA, a non-GAAP measure with no element).
2.2 Entry points per report type (XB-TAX-003)
A report type is template × sector × consolidated/separate × periodicity, on IAS 1 and on IFRS 18 (section 10). Each has its own entry point:
fra-{version}-{template}[-ifrs18].{sector}.{basis}.{periodicity}.xsd — e.g.
fra-2025-fra-fin-insurance.ins.consolidated.annual.xsd, fra-2025-fra-fin-cis-ifrs18.egx.consolidated.interim.xsd.
| Axis | Values | Decided by |
|---|---|---|
| sector | gen, ins, brk, lse, fct, cfn, mfi, fnd, egx (xbrl.entry_points.sectors) |
the filing's FRA sector code (else the company's); a template restricted to some sectors has entry points for those only; an unknown sector is gen |
| basis | consolidated, separate |
the template (XBRL_SEPARATE_TEMPLATES, default ^FRA-FIN-NC) |
| periodicity | annual, interim, event |
the template's filing frequency (quarterly / half-yearly templates have both annual and interim) and the filing's period (a full year is annual) |
A report-type entry point loads only its own networks: the template's presentation, calculation and
definition networks; the document-and-entity-information (cover) network; its sector's supplement network
(the elements of that sector's namespace); the notes network (text blocks) on annual entry points only;
and the formula assertions that apply to that set of elements (…{sector}_for.xml, or the template's
…report_for.xml when the sector adds none — e.g. only insurance entry points carry FRA_INS_SOLVENCY).
The basis is enforced by the hypercube: a consolidated template's figures cannot carry SeparateMember; a
separate template's must (the consolidated default member is not usable).
Every filing references its report-type entry point (artifacts.report_type on the document). The
per-template entry points (fra-{version}-{template}[-ifrs18].xsd) remain published so filings generated
before still resolve, and Channel D recognises both forms. fra-entry-{version}.xsd is the whole taxonomy
(IAS 1), for browsing. XBRL_REPORT_TYPE_ENTRY_POINTS=false reverts filings to the per-template entry points.
- Dimension defaults are declared once, in
fra-{version}_def-defaults.xml, which every entry point loads. - Loading IFRS: IFRS element definitions are loaded from the IFRS Foundation's published schema with
php artisan fra:xbrl:import-ifrs.
2.3 Labels (XB-TAX-004)
fra-{version}_lab-ar.xmlgives an Arabic standard label to every element any network uses, IFRS elements included: the wording of the template field tagged with it, else FRA's dimension and note tables, elseresources/xbrl/ifrs-labels-ar.php. English labels of IFRS elements are the IFRS Foundation's (both IFRS label linkbases are referenced);fra-{version}_lab-en.xmllabels every extension element.- Documentation labels (Arabic and English) on every extension element, citing the source (FRA rule,
IAS / IFRS S2 paragraph); terse labels where a short caption helps (e.g.
AuditOrReviewStatus); total labels on the totals of the calculation networks, used as the presentation arc'spreferredLabelon total lines. - Provenance:
fra-{version}-labels-review.csvlists the source of every Arabic IFRS label:template,fra, ormt— machine-assisted translation, to be reviewed by FRA's terminology committee. No element is left without an Arabic label (a test enforces it).
2.4 Link roles and generic labels
Extended link roles follow the Link Role Registry conventions used by IFRS and ESEF: a URI under the
taxonomy namespace and a definition [sort code] Group - Title (Document, Statement, Disclosure,
Supplement, Enumeration), defined once in fra-roles-{version}.xsd. Each role has Arabic and English
generic labels (Generic Labels 1.0) in fra-{version}_gla-{ar,en}.xml; each formula assertion has
Arabic and English generic labels naming it.
2.5 Enumerations (Extensible Enumerations 2.0)
List-valued disclosures are enum2:enumerationItemType elements whose value is a member of a domain
network in its own role (fra-{version}_enum_def.xml, linked from fra-{version}.xsd):
| Element | Domain → members |
|---|---|
fra:AuditOrReviewStatus |
AuditStatusDomain → AuditedMember, ReviewedMember, UnauditedMember |
fra:RegulatedSector |
RegulatedSectorDomain → one member per sector group (InsuranceSectorMember, MicrofinanceSectorMember…) |
fra:ReportingPeriodicity |
ReportingPeriodicityDomain → AnnualReportMember, InterimReportMember, EventDrivenReportMember |
ifrs-full:NatureOfFinancialStatements (IFRS) |
ConsolidatedMember, SeparateMember |
In XBRL 2.1 and Inline XBRL the value is the member's expanded name ({namespace}#{localName}); in
xBRL-JSON and xBRL-CSV it is the member QName (ifrs-full:SeparateMember), as OIM requires.
2.6 Regional mapping table (XB-TAX-010, XB-TAX-013)
fra-{version}-regional-alignment.csv / .json (in the package) and the public page
/xbrl/taxonomy/alignment (?format=csv|json) list every element the taxonomy uses with:
source_taxonomy,source_edition,source_verified— the taxonomy and edition that declare it (IFRS Accounting Taxonomy 2025-03-27, IFRS Sustainability Disclosure Taxonomy 2024-04-26, FRA taxonomy {version}) and whether it is declared in the imported schema of that edition;ifrs_elementandmatch—exact(it is the IFRS element),wider/narrower(the IFRS anchor of an FRA extension element, section 2.9),none;- per regulator (KSA, UAE, OMN, JOR) a status and the regulator's element:
verified(the regulator's taxonomy, loaded withphp artisan fra:xbrl:import-regional {KSA|UAE|OMN|JOR} --dir=<unpacked package> --taxonomy=… --edition=…, declares or imports the same element in the same namespace),verified-other-edition,absent,unverified(the regulator's taxonomy is not loaded — the expected element is not assumed to exist) ornone.
No regional taxonomy package is bundled with the platform: until FRA loads one, its column reads unverified.
2.7 Hosting (XB-TAX-009)
Files (.xsd, .xml, and the .csv / .json resources), packages and the index are served with
Access-Control-Allow-Origin: *, Access-Control-Allow-Methods: GET, HEAD, OPTIONS and exposed
Content-Disposition, X-Content-SHA256; OPTIONS preflight answers 204.
2.8 Sustainability entry point (XB-TAX-011)
fra-{version}-issb.xsd is a separate entry point for sustainability-related disclosures on the official
IFRS Sustainability Disclosure Taxonomy (IFRS Foundation, edition 2024-04-26, namespace
https://xbrl.ifrs.org/taxonomy/2024-04-26/ifrs-sds, prefix ifrs-sds): it imports the official core schema
(https://xbrl.ifrs.org/taxonomy/ifrs_sds/2024-04-26/ifrs_sds/ifrs_sds-cor_2024-04-26.xsd) and English label
linkbase, and presents the IFRS S1/S2 elements FRA uses (statement of compliance, governance, strategy and
risk management, Scope 1/2/3 GHG emissions, climate-related transition and physical risks, capital
deployment, carbon price, remuneration, carbon credits — resources/xbrl/issb-elements.php), with FRA
Arabic labels (fra-{version}-issb_lab-ar.xml), and the platform's ESG/carbon template elements beside them.
Element names, item types and period types are copied from the official schema; php artisan fra:xbrl:import-issb loads the full official element list and fails if the list ever drifts from it.
fra-{version}-issb-mapping.json maps the template elements to the official ones (exact, wider, none)
and the fra-issb stand-ins of taxonomy versions before 2026.10.15 to their official replacements. Other entry
points do not load the ISSB schema.
2.9 EAS differences and anchoring (XB-TAX-001)
The FRA entry points import the IFRS element schema only, never the IFRS entry points' calculation
networks. The IFRS 2025 calculation networks are nevertheless imported (fra:xbrl:import-ifrs reads every
cal_*.xml the IFRS entry point links) as reference data: each FRA calculation relationship is classified
against them (ifrs-same, ifrs-descendant, fra-only, weight-conflict) in
fra-{version}-ifrs-calculation-alignment.csv.
Where the Egyptian Accounting Standards treat a line item differently from IFRS and IFRS therefore has no
element, the fra-egs namespace declares one, with Arabic and English labels and documentation of the
difference: employees' share of profit and board remuneration distributed from equity (Companies Law 159 of
1981; IAS 19 treats it as an expense) and its payment in financing cash flows, and the exchange differences of
the EAS 13 special treatment (recognised in OCI or capitalised). The template lines concerned are tagged with
them (XBRL_EAS_EXTENSIONS, default on). Where IFRS has the element, no extension is made (legal reserve:
ifrs-full:StatutoryReserve; transfer to it: IncreaseDecreaseThroughTransferToStatutoryReserve).
Every extension element carries an anchoring decision (resources/xbrl/extension-anchors.php): the closest
IFRS element, wider or narrower, published as fra-{version}_def-anchoring.xml with the arcrole
http://xbrl.fra.gov.eg/arcrole/wider-narrower (declared in fra-roles-{version}.xsd#wider-narrower with cyclesAllowed="undirected", definition wider-narrower (anchoring of extension elements) and usedOn link:definitionArc — a filer extension that declares the arcrole itself must declare exactly this, XBRL 2.1 §5.1.4 — the arcrole filer
extensions use, section 4), or none with the reason (register data, prudential measures).
2.10 FRA-authored rules as Formula assertions (FR-VAL-005)
Rules FRA staff publish in the admin rule stores (financial validation rules: arithmetic over line items
within a tolerance; XBRL validation rules: a {Concept} expression against a threshold) are translated into
XBRL Formula 1.0 value assertions FRA_ADMIN_<code> in the formula linkbases of the entry points they apply
to (template- and sector-scoped), with Arabic and English messages and severity. A line item named by label is
resolved to the element the templates tag it with; a rule is published only when every operand resolves to
exactly one element. fra-{version}-admin-rules-formula.json lists every rule with its assertion test or the
reason it cannot be expressed (ambiguous label, no element, one element at two dates, structural check with no
expression…). Drafts and retired rules are never published.
3. Report conventions
| Item | Rule |
|---|---|
| Entity identifier | LEI under http://standards.iso.org/iso/17442 when the company has one; otherwise the FRA licence number under http://xbrl.fra.gov.eg/entity/license. |
| Periods | One duration context per fiscal year and one instant context per year end, for the current and the comparative year. |
| Units | iso4217:EGP (or the presentation currency) for amounts (xbrli:monetaryItemType); xbrli:shares for share counts (xbrli:sharesItemType); iso4217:EGP / xbrli:shares for per-share amounts (dtr-types:perShareItemType); xbrli:pure for ratios and percentages (decimal fractions, 0.15 = 15 %); utr:tCO2e (UTR, namespace http://www.xbrl.org/2009/utr) for greenhouse-gas emissions, whose elements are typed dtr-types:ghgEmissionsItemType (Data Types Registry http://www.xbrl.org/dtr/type/2022-03-31, imported by the FRA schemas that use it) — the UTR binds tCO2e to that item type, so an emission tagged as a plain decimal would fail the Units Registry check (Arelle --utr). |
| Signs | Values are tagged in the element's natural sign. Expenses and cash outflows printed as negatives are tagged positive; their balance attribute says they reduce the total. A loss, negative equity or a net outflow stays negative. |
| Precision | decimals only, never precision. Amounts are tagged in units; decimals comes from the declared presentation scale (XB-GEN-005), any power of ten: the filer's statement (filing page «مقياس عرض المبالغ», API reporting_flags.presentation_scale = 3 for thousands, 6 for millions…), else the scale printed on the extracted page («القيمة بالألف جنيه»), else the template field's unit («EGP thousands», «ألف جنيه»). A figure printed with fraction digits keeps that accuracy: 12.5 in millions → value 12500000, decimals="-5". Only when nothing is declared is the rounding inferred from the figures — the report then carries the finding FRA.rounding.inferred. LevelOfRoundingUsedInFinancialStatements states the scale (Units, Thousands, Millions, Billions, or 10^n units). |
| Report-level facts | Name of the reporting entity, domicile, presentation currency, level of rounding, end of reporting period, period covered, consolidated/separate basis (ifrs-full:NatureOfFinancialStatements), audit/review status (fra:AuditOrReviewStatus: as stated by the filing, else an accredited auditor's seal — annual audited, interim reviewed — else the template: one the auditor signs is audited annually and reviewed in the interim, XBRL_AUDIT_STATUS_FALLBACK), FRA licence number and sector classification (always emitted: xsi:nil when the register has none — the FRA_REQ_* existence assertions then report it), supervised sector (fra:RegulatedSector), periodicity, template code, and the comparability flags below. |
| Hyperinflation and currency changes (XB-TAX-012) | Every report states fra:HyperinflationaryEconomyIndicator (IAS 29), fra:ChangeInPresentationCurrencyIndicator (IAS 21) and fra:ComparativeInformationRestatedIndicator; with IAS 29 also the IFRS restatement flag and LevelOfPriceIndex; with a currency change the previous currency and the reason. Comparatives in the statements are the restated / re-presented figures, in the current presentation currency (the default member of RetrospectiveApplicationAndRetrospectiveRestatementAxis); amounts as previously reported are tagged PreviouslyStatedMember in the currency they were reported in, and the adjustment (…CorrectionsOfPriorPeriodErrors…, policy change or error correction member) only when both are in the same currency. Flags come from disclosure_submissions.xbrl_reporting_flags (JSON), else the same keys (xbrl_ prefixed) in the filing's form data. They are captured on every channel (XB-TAX-011): the creation wizard and the filing page («بيانات العرض والمراجعة لتقرير XBRL»), the structured API (reporting_flags in the Channel B payload), and — for an uploaded XBRL report (Channel D) — derived from its own facts. They are validated (IAS 29 requires the price index; a currency change requires the previous ISO currency, different from the current one; a report stating a flag without its value carries FRA.ias29.priceIndex / FRA.ias21.priorCurrency) and shown to the FRA reviewer on the filing. |
| File name | <entity id>-<period end>-<reference> (.xhtml, .xbri, .xml, .json, -facts.csv + -metadata.json, .xbr). |
| Dimensions | Explicit members in the context segment (section 12). A default member is never reported. |
4. Filing XBRL (Channel D)
A company files an XBRL report produced by its own tagging tool in two ways, with the same intake and the same validation:
- Portal: in the filing wizard, upload an Inline XBRL report (
.xhtml/.html), an XBRL 2.1 instance (.xbrl/.xml), xBRL-JSON (.json) or a report package (.xbri/.xbr/.zip). An xBRL-CSV report and a multi-document Inline XBRL report are uploaded as a package (section 15). - API:
POST /api/v1/filings/submitwith the report (or the raw bytes of the package) as the encrypted plaintext. A report that references an FRA entry point, any package and any xBRL-JSON/CSV report is read in standard mode (xbrl_mode: standard). The IR platform's earlier format —fra:DynamicField_Nfacts without an FRA entry point — is still accepted as a legacy mode (xbrl_mode: legacy_dynamic_fields, facts read by label, not validated as standard XBRL) while the FRA keepsXBRL_API_LEGACY_MODE=allow; withrejectit is refused (legacy_format_rejected). New integrations must use standard mode.
How the report is read:
- Template: taken from the FRA entry point the report references (IAS 1 or IFRS 18); a report on its own extension schema is traced through that schema's import; otherwise the template chosen in the wizard.
- Entity: the report's identifier must match the company's FRA licence number or LEI (
FRA-102). The check is never skipped: a company whose profile has neither is refused (FRA-103) until it completes its profile, unless the FRA recorded an override for it (php artisan fra:xbrl:entity-override). - Mapping:
- facts are bound to template fields by element, period and dimension members, never by label — the same tagging the platform generates (section 12);
- current and comparative year are told apart by date; an opening balance is the day before the period;
- an IFRS 18 element fills the field of its IAS 1 counterpart and vice versa;
- a deprecated element is read as its replacement, with a warning (
FRA-126, section 11); - two facts that bind to the same field and period with different values are an error (
FRA-124) — the platform never keeps «the first value»; - dimensional detail with no template field (
FRA-127) and elements with no template field (FRA-123) are reported as warnings.
- Result: a report with any error is refused with the list of findings; nothing is filed. A report with warnings only is filed and its warnings are shown to the company and to the FRA reviewer. Every validation is stored (per filing version) and is part of the FRA validation report (section 5).
5. Validation
Every report is validated in the layers of the FRA RFP (§7.5), in this order. Each finding carries a
numbered rule id, its layer, its severity and its message in Arabic and English. The rule set is
versioned (XBRL_RULES_VERSION, currently 2026.10.1) and published as a machine-readable rules file:
GET /xbrl/filer-manual/rules.json— JSON:version,layers,policies(Calculations 1.1, duplicates, anchoring) andrules[]withid,layer,severity(andseverity_nowunder the current configuration),message.ar/message.en(with{placeholders}),description,effective_from,effective_to,specification,configurable_byand the earlier native codes (legacy_codes). The same file is kept in the repository asdocs/xbrl/fra-xbrl-rules.json(php artisan fra:xbrl:rules-export; CI checks it is up to date).- This manual is served at
GET /xbrl/filer-manual/manual(and…/manual.md).
Severities: error — the report is refused; warning — accepted, to be explained or corrected; info — information only.
5.1 Layers
- Package safety — the upload is untrusted (section 15).
- XBRL conformance — the platform's own reading (XBRL 2.1, Inline XBRL 1.1 incl. document sets,
continuations and exclusions, OIM) and Arelle on the uploaded report itself, against the FRA entry
point it references, resolved from the frozen FRA taxonomy package of that version. Arelle runs
sandboxed: offline (
XBRL_INTAKE_ARELLE_OFFLINE, taxonomies only from the FRA package,XBRL_ARELLE_PACKAGESand the warm cache), with a hard timeout (XBRL_INTAKE_ARELLE_TIMEOUT), on a private temporary copy. Any Arelle error (XBRL-100, with the Arelle message code) refuses the report. Where Arelle is not configured the run is reported (XBRL-102) — a warning, or an error whenXBRL_INTAKE_ARELLE_REQUIRED=true. - Calculations 1.1 — round-to-nearest intervals from
decimals, on the calculation network of the referenced entry point, and the balance-sheet identity. - Duplicate facts — XII WGN 2025-01-14: complete and consistent duplicates are accepted (
DUP-003); inconsistent duplicates are errors (DUP-001,DUP-002). - FRA filing rules —
FRA-101…FRA-128. - Data quality — DQC-style rules
DQ-001…DQ-006. - FRA business rules —
FRA-001…FRA-006,FRA-W001(on the published document of the filing) and the solvency assertionFRA_INS_SOLVENCY.
5.2 Calculations 1.1 policy
A total is consistent when the interval its decimals allow overlaps the interval of the weighted sum
of its items reported in the same context and unit; a total with no item reported is not checked. The
FRA policy for an inconsistency (CALC-001, XBRL_CALC_POLICY):
| Policy | Severity |
|---|---|
tiered (default) |
error when the difference exceeds XBRL_CALC_ERROR_THRESHOLD (0.5 %) of the larger of the total and the sum of its items; warning below — a rounding-sized difference is explained, a material one is corrected. |
error |
every inconsistency is an error. |
warning |
no inconsistency blocks the filing. |
Arelle's own Calculations 1.1 messages on the upload are reported under CALC-001 too; the platform's
check gives the tiered verdict with the amounts.
5.3 Extension elements and anchoring
A filer may declare its own elements in an extension schema inside its report package (as ESEF filers
do). Every extension line item (a concrete xbrli:item that is not a domain member) must be
anchored in the filer's definition linkbase: a definitionArc with the arcrole
http://xbrl.fra.gov.eg/arcrole/wider-narrower (the ESEF arcrole
http://www.esma.europa.eu/xbrl/esef/arcrole/wider-narrower is accepted too) from an IFRS or FRA element
(the wider one) to the extension element (the narrower one). The anchor must have the same data type as
the extension, or a type it derives from (monetaryItemType → monetaryItemType or decimalItemType).
Unanchored: FRA-114; incompatible type: FRA-115; an element in an unknown namespace without schema:
FRA-116. Severity: XBRL_ANCHORING_SEVERITY (default error).
5.4 Rules
<!-- generated from RuleBook (php artisan fra:xbrl:rules-export); keep in step with rules.json -->Package safety (package)
| Rule | Severity | Rule (EN) | القاعدة (AR) |
|---|---|---|---|
PKG-001 |
error | Report packages (.xbri, .xbr, .zip) must be valid ZIP archives. | الملف ليس أرشيف ZIP مقروءاً. |
PKG-002 |
error | Entry names must be relative, without "..", drive letters, backslashes or NUL (path traversal). | مسار غير آمن داخل الحزمة: …. |
PKG-003 |
error (XBRL_PKG_MAX_ENTRIES) | Entry-count limit (XBRL_PKG_MAX_ENTRIES). | الحزمة تحتوي على … ملفاً؛ الحد الأقصى …. |
PKG-004 |
error (XBRL_PKG_MAX_UNCOMPRESSED, XBRL_PKG_MAX_ENTRY) | The ACTUAL inflated bytes are counted while reading: an entry larger than its header declares, larger than XBRL_PKG_MAX_ENTRY, or a package larger than XBRL_PKG_MAX_UNCOMPRESSED is refused. | حجم الحزمة بعد فك الضغط يتجاوز الحد المسموح عند … (… بايت، الحد …). |
PKG-005 |
error (XBRL_PKG_MAX_RATIO) | Per-entry inflated/compressed ratio, judged on the header and again on the bytes actually inflated. | نسبة ضغط الملف … هي …:1 (الحد …:1) — رُفض كقنبلة ضغط محتملة. |
PKG-006 |
error | Nested archives are refused by extension and by content signature (ZIP, gzip, 7z, RAR, bzip2, xz, CAB). | أرشيف داخل الحزمة: …. لا تُقبل الأرشيفات المتداخلة. |
PKG-007 |
error | Entries whose Unix mode is a symbolic link are refused. | رابط رمزي داخل الحزمة: …. |
PKG-008 |
error | Report Packages 1.0 report discovery found no report. | لا يوجد تقرير داخل الحزمة (المتوقع: reports/.xhtml أو reports/.xbrl أو reports/*.json). |
PKG-009 |
error | Report Packages 1.0: the HTML documents of one directory form one Inline XBRL document set; any other report file is a separate report. A filing is one report — an ambiguous package is refused, never guessed. | الحزمة تحتوي على … تقارير (…)؛ يجب أن يحتوي الإيداع على تقرير واحد فقط. |
PKG-010 |
error | The documentType must be a Report Packages 1.0 type; an .xbri package holds an Inline XBRL report and an .xbr package a non-inline one. | ملف META-INF/reportPackage.json غير صالح أو لا يطابق الحزمة: …. |
XBRL specification conformance (xbrl)
| Rule | Severity | Rule (EN) | القاعدة (AR) |
|---|---|---|---|
XBRL-001 |
error | The report must be well-formed XML/XHTML (XBRL 2.1 or Inline XBRL 1.1), xBRL-JSON or an xBRL-CSV package. | الملف ليس تقرير XBRL سليماً: …. |
XBRL-002 |
error | Every fact must reference a context of the report (or of the document set). | البند … يشير إلى سياق غير معرّف …. |
XBRL-003 |
error | Numeric facts must be readable with their Transformation Registry format. | رقم غير مقروء «…» للبند … (الصيغة …). |
XBRL-004 |
error | Fact names are QNames whose prefix must be declared. | بادئة غير معرّفة في اسم البند …. |
XBRL-005 |
error | continuedAt must reference an ix:continuation in the document set, without cycles, and each continuation may be used once. | سلسلة ix:continuation غير مكتملة للبند …: …. |
XBRL-006 |
error | Every numeric fact must reference a unit of the report. | البند الرقمي … يشير إلى وحدة غير معرّفة …. |
XBRL-007 |
error | xBRL-JSON/xBRL-CSV reports must be complete in one metadata file (no extends, no property groups). | بنية OIM غير مدعومة أو غير صالحة: …. |
XBRL-008 |
error | Context, unit and continuation ids are unique across the whole document set. | المعرّف … مستخدم لأكثر من عنصر في مجموعة مستندات XBRL المضمّنة. |
XBRL-100 |
error | An error reported by Arelle when the uploaded report is validated against the FRA entry point it references (XBRL 2.1, Dimensions 1.0, Inline XBRL 1.1, OIM, Report Packages). The Arelle message code is given as arelle_code. | خطأ في مطابقة مواصفات XBRL (…): …. |
XBRL-101 |
warning | A warning reported by Arelle on the uploaded report. | تحذير في مطابقة مواصفات XBRL (…): …. |
XBRL-102 |
warning (XBRL_INTAKE_ARELLE_REQUIRED) | Arelle is not configured or did not answer. When XBRL_INTAKE_ARELLE_REQUIRED=true this is an error and the report is not accepted. | لم يعمل المدقق المرجعي (Arelle): …. |
Calculations 1.1 (calculation)
| Rule | Severity | Rule (EN) | القاعدة (AR) |
|---|---|---|---|
CALC-001 |
tiered (XBRL_CALC_POLICY, XBRL_CALC_ERROR_THRESHOLD) | A total lies outside the Calculations 1.1 rounding interval of its items (round-to-nearest). FRA policy (XBRL_CALC_POLICY): tiered — an ERROR when the difference exceeds XBRL_CALC_ERROR_THRESHOLD (0.5 %) of the larger of the total and the sum, otherwise a WARNING; "error" or "warning" apply one severity to all. | «…» (…) = … بينما مجموع بنوده … (فرق …؛ Calculations 1.1، decimals …). |
CALC-002 |
error | The balance-sheet identity (formula assertions FRA_BS_IDENTITY / FRA_BS_IDENTITY_EL), within the rounding interval. | إجمالي الأصول … لا يساوي الالتزامات + حقوق الملكية … في …. |
CALC-003 |
warning | Segments and insurance classes against the figure without the axis; reconciling items must be explained (IFRS 8.28). | مجموع أعضاء … للبند … لا يساوي إجمالي المنشأة (…). |
Duplicate facts (duplicates)
| Rule | Severity | Rule (EN) | القاعدة (AR) |
|---|---|---|---|
DUP-001 |
error | Numeric duplicates (same concept, period, dimensions, unit) whose values differ once rounded to the least precise decimals. Complete and consistent duplicates are accepted. | بيانات مكررة غير متسقة للبند … (……): …. |
DUP-002 |
error | Non-numeric duplicates (same concept, period, dimensions, language) with different values. | بيانات نصية مكررة غير متسقة للبند … (……، اللغة …). |
DUP-003 |
info | Complete or consistent duplicates (the more precise value rounds to the less precise one) are allowed. | … بيانات مكررة متسقة للبند … (…)؛ مقبولة. |
FRA filing rules (filing)
| Rule | Severity | Rule (EN) | القاعدة (AR) |
|---|---|---|---|
FRA-101 |
error | The entity identifier is an LEI (ISO 17442) or the FRA licence number. | مخطط معرّف المنشأة … غير مقبول؛ استخدم … (LEI) أو … (رقم ترخيص الهيئة). |
FRA-102 |
error | The report must be about the filing company. | معرّف المنشأة في التقرير (…) لا يطابق رقم ترخيص الشركة لدى الهيئة أو رمز LEI. |
FRA-103 |
error | The entity check is never skipped: without a licence number or LEI on the profile the report is refused unless the FRA recorded an override for the company. | ملف الشركة لا يتضمن رقم ترخيص الهيئة ولا رمز LEI، فلا يمكن التحقق من معرّف المنشأة في التقرير. أكمل ملف الشركة (رقم الترخيص أو LEI) قبل الإيداع بصيغة XBRL. |
FRA-104 |
error | Every context of a report identifies the same entity. | التقرير يستخدم أكثر من معرّف منشأة: …. |
FRA-105 |
error | The schemaRef is an FRA entry point fra-{version}-{template}[-ifrs18].xsd, directly or through the filer's extension schema that imports it. | التقرير لا يشير إلى نقطة دخول من تصنيف الهيئة (schemaRef: …). |
FRA-106 |
error | One report, one template, one entry point. | التقرير يشير إلى أكثر من نقطة دخول من تصنيف الهيئة: …. |
FRA-107 |
error | The entry point must belong to a released (or the configured) FRA taxonomy version. | إصدار تصنيف الهيئة … الذي يشير إليه التقرير ليس إصداراً منشوراً. |
FRA-108 |
error | Durations start before they end; dates are valid xs:date values. | فترة غير صالحة في السياق …: …. |
FRA-109 |
warning | The current period of the report is the filing's fiscal year. | آخر فترة في التقرير تنتهي في … وليس في السنة المالية … المختارة للإيداع. |
FRA-110 |
error | Units: iso4217 currencies for amounts, xbrli:shares for shares, currency/shares for per-share amounts, xbrli:pure for ratios. | البند النقدي … يستخدم الوحدة …؛ المبالغ النقدية تستخدم عملة ISO 4217 (iso4217:XXX). |
FRA-111 |
error | A report has one presentation currency. | البنود النقدية مقدَّمة بأكثر من عملة: …. |
FRA-112 |
error | Numeric facts carry decimals, never precision (as in ESEF). | البند … يستخدم الخاصية precision؛ استخدم decimals فقط. |
FRA-113 |
error | Every non-nil numeric fact states its accuracy with decimals. | البند الرقمي … بدون الخاصية decimals. |
FRA-114 |
error (XBRL_ANCHORING_SEVERITY) | ESEF-style anchoring: every extension line item is linked in the filer's definition linkbase, with a wider-narrower arc (arcrole http://xbrl.fra.gov.eg/arcrole/wider-narrower or the ESEF one), to an IFRS/FRA element. Domain members are exempt. Severity: XBRL_ANCHORING_SEVERITY. | عنصر الامتداد … غير مرتبط (anchoring) بعنصر من IFRS أو تصنيف الهيئة بعلاقة wider-narrower. |
FRA-115 |
error (XBRL_ANCHORING_SEVERITY) | The anchor must have the same data type as the extension element, or one the extension's type is derived from (the extension is the same or narrower). | عنصر الامتداد … (…) مرتبط بالعنصر … (…) ونوع بياناته ليس مماثلاً ولا أعم. |
FRA-116 |
error | An element in an unknown namespace must be declared in the extension schema shipped in the report package. | العنصر … غير معرّف في IFRS ولا في تصنيف الهيئة ولا في مخطط امتداد الإيداع. |
FRA-117 |
error | Facts use concrete elements of the referenced taxonomies. | العنصر … غير موجود في تصنيف IFRS … أو تصنيف الهيئة، أو أنه مجرد (abstract). |
FRA-118 |
error | Name of the reporting entity, presentation currency, end of reporting period and level of rounding are mandatory. | البيان الإلزامي على مستوى التقرير … غير موجود. |
FRA-119 |
warning | Text blocks (notes and policies) keep their formatting: escape="true" in Inline XBRL; a note must use an IFRS text-block element. | كتلة النص … غير موسومة كـ XHTML مُهرَّب (ix:nonNumeric escape="true"). |
FRA-120 |
error | A tagged note or policy must carry its text. | كتلة النص … فارغة. |
FRA-121 |
warning | Package and report naming convention (filer manual §3, packaging). | اسم الملف … لا يتبع الصيغة <معرّف المنشأة>-<نهاية الفترة>-<المرجع>. |
FRA-122 |
error | Facts are bound to template fields by element, period and dimension members; a report with no bound figure files nothing. | لم يُطابَق أي رقم في التقرير مع بنود النموذج … للسنة …. |
FRA-123 |
warning | Unmapped facts are reported, never dropped silently (XB-IN-004). | … عنصراً موسوماً ليس له حقل في النموذج: …. |
FRA-124 |
error | Two facts that bind to the same field and period (an element and its IFRS 18/IAS 1 counterpart, or a deprecated element and its replacement) must agree. | قيمتان مختلفتان موسومتان لحقل النموذج … (…): …. |
FRA-125 |
error | The template comes from the entry point the report references. | لم يُحدَّد نموذج الإفصاح: التقرير لا يشير إلى نقطة دخول نموذج من تصنيف الهيئة ولم يُختر نموذج. |
FRA-126 |
warning | Elements deprecated by the binding taxonomy version (filer manual §11). | عناصر ملغاة قُرئت بالعناصر البديلة: …. |
FRA-127 |
warning | Detail with no template line is reported. | … بياناً تفصيلياً بالأبعاد (قطاعات، فروع…) ليس له حقل في النموذج ولم يُنقل. |
FRA-128 |
info | Block tagging phase-in (filer manual §13). | الإيداع يتضمن إيضاحات لكنه خارج نطاق مرحلة وسم الإيضاحات. |
Data quality (data_quality)
| Rule | Severity | Rule (EN) | القاعدة (AR) |
|---|---|---|---|
DQ-001 |
warning | Sign rule after DQC_0015/DQC_0080: assets, liabilities, revenue, inventories, capital… are never negative. | «…» مقدَّم بقيمة سالبة (…) وهو بند لا يكون سالباً عادةً — راجع الإشارة. |
DQ-002 |
warning (XBRL_DQ_SCALE_FACTOR) | Likely scale error: a figure about 1,000 times (XBRL_DQ_SCALE_FACTOR or more) its comparative or the reverse. | «…» = … يساوي … ضعف قيمة المقارنة … — راجع مقياس الأرقام (بالآلاف / بالوحدات). |
DQ-003 |
error (XBRL_DQ_MAX_MONETARY) | Implausible magnitude for any FRA filer (XBRL_DQ_MAX_MONETARY). | «…» = … قيمة كبيرة بشكل غير معقول (الحد …). |
DQ-004 |
error | Period type of the element (instant/duration) and of the context must agree. | العنصر … من نوع فترة … لكنه مقدَّم بفترة …. |
DQ-005 |
warning | DQC-style percent rule for percentItemType elements and pure ratios. | «…» = …: نسبة أكبر من 1 (100٪) — تُوسَم النسب ككسور عشرية (0.15 تعني 15٪). |
DQ-006 |
warning | A value more precise than its decimals usually means a scale or rounding error. | «…» = … ليس من مضاعفات 10^… رغم أن decimals="…". |
FRA business rules (business)
| Rule | Severity | Rule (EN) | القاعدة (AR) |
|---|---|---|---|
FRA-001 |
error | FRA licence number and sector classification (FRAValidationRules). | بند الهيئة الإلزامي غير موجود: …. |
FRA-002 |
error | Asset subtotal identity (FRAValidationRules). | إجمالي الأصول لا يساوي الأصول المتداولة + غير المتداولة. |
FRA-003 |
error | Assets = equity + liabilities (FRAValidationRules). | معادلة الميزانية غير متحققة. |
FRA-004 |
error | FRAValidationRules. | لا يجوز أن يكون إجمالي الأصول سالباً. |
FRA-005 |
error | Insurance sector (FRAValidationRules). | نسبة الملاءة المالية للتأمين أقل من 100٪. |
FRA-006 |
error | FRAValidationRules. | يجب أن تسبق بداية الفترة نهايتها. |
FRA-W001 |
warning | Carbon disclosure rule (FRAValidationRules). | تعويضات الكربون غير كافية. |
FRA_INS_SOLVENCY |
configurable (XBRL_SOLVENCY_SEVERITY) | Formula assertion FRA_INS_SOLVENCY (XBRL_SOLVENCY_MINIMUM, XBRL_SOLVENCY_SEVERITY). | نسبة الملاءة المالية …٪ أقل من الحد الأدنى المقرر. |
5.5 Results
Results are stored per filing version and shown on the filing page, at /xbrl/filings/{id}/checks and in
the FRA validation report (/fra/xbrl-documents/{id}/validation), exportable as JSON (…/validation/json)
and PDF (…/validation/pdf): the report as filed (intake) and the published document (native checks,
Arelle — messages, per-assertion results, xBRL-CSV pass — and the FRA business rules), bilingual, never
recomputed or overwritten by the export.
Arelle on the published packages (when XBRL_ARELLE_CMD or XBRL_ARELLE_SERVICE_URL is set): each report
package is checked against XBRL 2.1, Dimensions 1.0, Inline XBRL 1.1, Calculations 1.1 and duplicate facts,
the formula assertions of its entry point are executed (--formula=run, section 9), the xBRL-CSV package
is validated as a second report, and an interactive viewer (ixbrl-viewer) is generated for the filing. The
stored report (arelle.report) holds the messages, the per-assertion results (assertions), the CSV pass
(csv), how Arelle ran (mode, fallback), the time of all runs (total_ms) and the one-off validation
of the taxonomy entry point (taxonomy_check, section 7).
6. Endpoints
| Path | Content |
|---|---|
GET /xbrl/taxonomy |
Public taxonomy versions (released and in consultation), with packages, hashes and deprecations (JSON). |
GET /xbrl/taxonomy/{version}/{file} |
Taxonomy files of a released version (public): .xsd, .xml, and the .csv / .json resources (alignment, legacy aliases, ISSB mapping, label review). CORS. |
GET /xbrl/taxonomy/alignment |
Regional alignment table (page; ?format=csv or json). |
GET /xbrl/taxonomy/fra-taxonomy-{version}.zip |
Taxonomy Package (public). …-{version}-DRAFT.zip while in consultation. |
GET /xbrl/filings |
Index of accepted filings, with links to every format (JSON, public). |
GET /xbrl/filings/{id}/{xhtml,xbri,xml,json,csv,xbr,viewer,checks} |
Public once accepted. Before that: FRA staff, the filer, and its appointed auditor. |
GET /xbrl/filings/{id}/{file}.xsd, …_def.xml, …_lab.xml |
The filing's own extension (company segments), same access. |
POST /xbrl/filings/{id}/publish |
Regenerate the report on its taxonomy version (FRA staff and the filer); regenerate=1 moves it to the version in force for its period. |
POST /company/disclosures/{id}/xbrl-notes[/{note}], …/xbrl-notes/import-pdf |
The company's notes editor (create / PUT / DELETE, import from the source PDF) — editable filings only. |
GET /xbrl/filer-manual/manual, …/manual.md, …/rules.json |
This manual and the machine-readable rules file (public). |
POST /api/v1/xbrl/test-filing |
Test filing: full validation, nothing filed (section 16). |
GET /fra/xbrl-documents/{id}/validation[/json|/pdf] |
FRA validation report of a filing version (section 5.5). |
POST /company/disclosures/{id}/xbrl-dimensions |
The company's segment and insurance-class figures (replaces the filing's grids). |
7. Operations
- Configuration:
config/xbrl.php. SetXBRL_ARELLE_CMDto thearelleCmdLineof a virtualenv witharelle-releaseandixbrl-viewer.XBRL_ARELLE_CACHEsets the taxonomy cache folder (defaultstorage/app/arelle-cache; a cache that does not persist costs ~45 s per run). - Arelle performance (NFR-PERF-002):
XBRL_ARELLE_SERVICE_URL— a long-livedarelleCmdLine --webserveron the loopback, called over HTTP, the CLI as fallback;XBRL_ARELLE_OFFLINE(no network once the cache is warm);XBRL_ARELLE_PACKAGES(extra taxonomy packages,|-separated);XBRL_ARELLE_BASE_VALIDATION(once: each FRA entry point is validated in full once per package content, reports then run with--baseTaxonomyValidation=none;always);XBRL_ARELLE_SERVICE_TIMEOUT.php artisan fra:xbrl:arelle-warmfills the cache. Measurements, the systemd unit and the install steps:docs/ops/arelle-service.md. - Block tagging:
XBRL_BLOCK_TAGGING(on/off),XBRL_BLOCK_TAGGING_SCOPE(annualdefault,all,none),XBRL_NOTE_MAX_CHARS(section 13). - When reports are published: when a filing reaches FRA and when it is accepted (queued), and on demand from the filing page.
- Viewer script:
public/vendor/ixbrl-viewer/ixbrlviewer.js(Apache-2.0), shared by every viewer. - Other settings:
XBRL_ARELLE_FORMULA(run/none),XBRL_SOLVENCY_MINIMUM,XBRL_SOLVENCY_SEVERITY,XBRL_IFRS18_EFFECTIVE_FROM,XBRL_SEPARATE_TEMPLATES.
8. xBRL-CSV
Every filing is also published as xBRL-CSV (OIM 1.0, documentType https://xbrl.org/2021/xbrl-csv):
<name>-metadata.json—documentInfo(namespaces,taxonomy= the entry point or the filing's own extension), one table templatefactsand the tablefacts→<name>-facts.csv.<name>-facts.csv— one row per fact:id,concept,period(OIM form: an XBRL date is the end of that day),unit(empty for text and forxbrli:pure, as OIM requires),decimals,language, onedim_<axis>column per axis the report uses,value. All butvalueare parameter columns referenced by the template's dimensions ($concept,$period…); an empty cell leaves the property out.<name>.xbr— the two files in a non-inline Report Package 1.0 (https://xbrl.org/report-package/2023/xbr), validated by Arelle with the report.
Channel D reads xBRL-CSV from a package: template- and column-level dimensions, decimals, $column
references, report-level dimensions/parameters, #none and #nil. Property groups and extends
are not supported and are reported.
9. Formula assertions
Each entry point carries a Formula 1.0 linkbase (fra-{version}-{code}[-ifrs18]_for.xml, referenced from
the entry point) with value assertions on the dimensional aspect model with implicit filtering (facts are
compared within one context: same period, same members):
| Id | Severity | Test | Where |
|---|---|---|---|
FRA_BS_IDENTITY |
error | abs($Assets - ($Liabilities + $Equity)) ≤ the sum of the facts' rounding half-intervals (½·10^-decimals, via xfi:decimals) |
templates with Assets, Liabilities and Equity — every year end, both periods |
FRA_BS_IDENTITY_EL |
error | Assets = Equity and liabilities, same tolerance | templates with that total |
FRA_BS_ASSETS / FRA_BS_LIABILITIES |
totals (XBRL_FORMULA_TOTALS_SEVERITY, default warning) |
Assets = current + non-current; Liabilities = current + non-current | statements of financial position |
FRA_BS_EQUITY |
totals | Equity = owners of the parent + non-controlling interests | consolidated statements of financial position |
FRA_PL_GROSS_PROFIT |
totals | Gross profit = revenue − cost of sales | income statements |
FRA_PL_TAX |
totals | Profit = profit before tax − income tax (not when a discontinued-operations line exists) | income statements |
FRA_PL_ATTRIBUTION / FRA_CI_ATTRIBUTION |
totals | Profit / comprehensive income = owners of the parent + NCI | consolidated income statements |
FRA_PL_EQUITY_TIE |
totals | Comprehensive income = profit + OCI (the P&L figure that enters the changes in equity) | templates with the three |
FRA_CF_NET_CHANGE |
totals | Net change in cash = operating + investing + financing (with or without the FX effect) | cash flow statements |
FRA_CF_CASH_ROLL |
totals | Closing cash = opening cash (instant at the period's start, pf:instantDuration) + net change (± FX): ties the cash flow statement to the cash of the statement of financial position |
cash flow statements |
FRA_INS_SOLVENCY |
warning (XBRL_SOLVENCY_SEVERITY) |
$SolvencyRatio ge 100 (XBRL_SOLVENCY_MINIMUM; the element is filed in percent) |
insurance entry points with fra-ins:SolvencyRatio |
FRA_SIGN_NONNEGATIVE |
XBRL_FORMULA_SIGN_SEVERITY (warning) |
$Value ge 0 for elements that are never negative (DQC_0080 pattern: assets, revenue, inventories, PP&E, issued capital, expenses tagged in their natural sign…) |
every entry point using one |
FRA_REQ_ENTITY_NAME, FRA_REQ_CURRENCY, FRA_REQ_PERIOD_END, FRA_REQ_BASIS, FRA_REQ_AUDIT_STATUS, FRA_REQ_LICENCE, FRA_REQ_SECTOR |
XBRL_FORMULA_EXISTENCE_SEVERITY (error) |
existence assertions: the report-level fact is reported (a nil licence counts as missing) | report-type entry points |
Every assertion has Arabic and English generic labels naming it, an Arabic and an English message for
satisfied and for unsatisfied evaluations (XPath expressions in braces print the figures and the date), and
its severity is an assertion-unsatisfied-severity arc to http://www.xbrl.org/2022/severities.xml. Tolerance
is always the sum of the facts' rounding half-intervals. All of them are executed by Arelle on generated
reports in the platform's test suite (tests/Feature/Rfp3/Xbrltax/XbrltaxArelleTest), including failing cases.
XULE is not used. Formula 1.0 is the XBRL International Recommendation implemented by every certified processor, and the FRA rules are value assertions it expresses directly; XULE is the XBRL US rule language (DQC rules) with essentially a single implementation. Rules that need procedural logic remain in the platform's native checks.
10. IFRS 18 entry points
IFRS 18 replaces IAS 1 for periods beginning on or after 1 January 2027. Each template has an IFRS 18 entry point whose presentation and calculation use the IFRS 18 element where it differs from IAS 1 (all present in the IFRS Accounting Taxonomy 2025, same balance and period type):
| IAS 1 element | IFRS 18 element |
|---|---|
ProfitLossFromOperatingActivities |
OperatingProfitLossOperating |
OtherIncome |
OtherOperatingIncomeOperating |
OtherExpenseByFunction |
OtherOperatingExpensesOperating |
DepreciationAndAmortisationExpense |
DepreciationAndAmortisationExpenseOperating |
ImpairmentLossRecognisedInProfitOrLoss |
ImpairmentLossReversalOfImpairmentLossRecognisedInProfitOrLossOperating |
InvestmentIncome |
InvestmentIncomeInvesting |
RevenueFromDividends |
RevenueFromDividendsInvesting |
Finance income and costs stay on their IAS 1 elements: under IFRS 18 they split between the investing and financing categories according to what produced them, which the template does not record.
A filing is generated on the IFRS 18 entry point when its period begins on or after
XBRL_IFRS18_EFFECTIVE_FROM (default 2027-01-01), or when the company elected early application
(corporate_profiles.ifrs18_early_adoption, recorded by FRA on the taxonomy versions screen). The inline
report states the framework; Channel D accepts both.
11. Taxonomy lifecycle
FRA administers taxonomy versions at fra/xbrl-taxonomy/versions:
- Draft — version label (digits, letters, dots), release notes in Arabic and English, consultation window, effective date, and the elements the version deprecates with their replacements (or none) and the reason. Staff can download the draft package.
- Consultation — needs the window; the package (with the version's own deprecations applied) is public
at
/xbrl/taxonomy/fra-taxonomy-{version}-DRAFT.zip, marked DRAFT in its name, metadata and aDRAFT-NOT-FOR-FILING.txtnotice. Its files are not served individually. - Approved — by an officer with
settings.managewho is not the version's author (maker-checker). The final package is built, frozen on disk and its SHA-256 recorded; it is served at/xbrl/taxonomy/{version}/…and asfra-taxonomy-{version}.zip(headerX-Content-SHA256). - Effective — the previous effective version becomes superseded; it stays public so older filings still resolve.
A new version is a new namespace (http://xbrl.fra.gov.eg/taxonomy/{version}/…). A version label without a
lifecycle record (the configured one, before FRA registers it) is served live from the templates. Deprecations
of approved, effective and superseded versions bind: generation tags the field with the replacement (finding
FRA.concept.deprecated) and intake reads the old element as the new one with a warning. Viewing needs
taxonomies.view, editing taxonomies.manage, approval settings.manage.
Which version a filing is generated on.
- The version in force for its period: of the effective and superseded versions, the one whose
effective date is the latest on or before the filing's period end (a superseded version still binds the
periods before its successor took effect: a FY 2025 report filed in 2026 stays on the 2025 taxonomy).
Without one — no lifecycle yet, or a period ending before the first released version — the version in
XBRL_FRA_VERSION. Approved versions do not bind until made effective. - The version is recorded on the XBRL document (
taxonomy_version, andartifacts.fra_version) and shown on the filing's XBRL panel («تصنيف الهيئة {version}»). - Re-publishing keeps it. A filing is re-published (after a correction, a format change, a notes edit) on
the version its latest document was generated with — never silently moved to a newer one. Moving it is an
explicit regeneration: the panel offers «الإنشاء على الإصدار الساري {version}» when the version in force
differs (
POST /xbrl/filings/{id}/publishwithregenerate=1). - Only the deprecations of versions effective on or before the filing's version apply to it.
- Arelle validates the report against that version's package — the frozen package of a released version,
the live one (stored once per content) for the configured version — and its files are served per version at
/xbrl/taxonomy/{version}/….GET /xbrl/taxonomyreports ascurrentthe version in force today.
12. Dimensions
Each template's definition linkbase (…_def.xml, in the template's role) makes the statement heading the
primary item of a closed hypercube (contextElement="segment") and every template element its domain member.
The statement of changes in equity also has a calculation network: ChangesInEquity = its movements
(profit, OCI, dividends −, issue of equity, transfers…), checked within each component's context.
| Axis | Members | Used |
|---|---|---|
ifrs-full:ConsolidatedAndSeparateFinancialStatementsAxis |
ConsolidatedMember (default), SeparateMember |
every template; non-consolidated templates (XBRL_SEPARATE_TEMPLATES, default ^FRA-FIN-NC) report SeparateMember (their hypercube makes the default unusable), consolidated ones report nothing (their hypercube has no SeparateMember) |
ifrs-full:CategoriesOfRelatedPartiesAxis |
CategoriesOfRelatedPartiesDomain (default) → ParentMember, SubsidiariesMember, AssociatesMember, JointVenturesWhereEntityIsVenturerMember, KeyManagementPersonnelOfEntityOrParentMember, OtherRelatedPartiesMember (IAS 24.19) |
related-party templates (XBRL_RELATED_PARTY_TEMPLATES, default `RPT |
ifrs-full:RetrospectiveApplicationAndRetrospectiveRestatementAxis |
RestatedMember («currently stated», default) → PreviouslyStatedMember, IncreaseDecreaseDueToChangesInAccountingPolicyAndCorrectionsOfPriorPeriodErrorsMember → policy-change / error-correction members |
financial statement templates (XBRL_RESTATEMENT_TEMPLATES, default ^FRA-FIN-): a comparative line filed with previously_stated (and optionally restatement_reason) — section 3 |
ifrs-full:ComponentsOfEquityAxis |
ComponentsOfEquityDomain (default) → EquityAttributableToOwnersOfParentMember → IssuedCapitalMember, SharePremiumMember, TreasurySharesMember, OtherReservesMember, RetainedEarningsMember; NoncontrollingInterestsMember |
statements of changes in equity |
ifrs-full:SegmentsAxis |
SegmentsDomain (default) → the company's segments |
income statement and insurance templates |
fra-ins:ClassesOfInsuranceBusinessAxis |
ClassesOfInsuranceBusinessDomain (default) → motor, fire and property, marine, engineering, health, life, other (Arabic and English labels) |
insurance templates |
-
Statement of changes in equity. The templates file one column per year: opening balances by component, movements, closing balances. A component balance is tagged
ifrs-full:Equitywith itsComponentsOfEquityAxismember — at the day before the period for an opening balance, at the period end for a closing one (this year's opening is last year's closing: one fact). Total equity carries no member. Movements the templates tag with balance or cash-flow elements get the IFRS movement element of the component they change (dividends →DividendsRecognisedAsDistributionsToOwnersOfParent[retained earnings], transfers →IncreaseDecreaseThroughTransfersAndOtherChangesEquity[other reserves], capital increase →IssueOfEquity[issued capital], treasury shares, NCI changes). There is no calculation network: sums across an axis are not calculations. -
Segments. A line filed with a segment (
segmenton the extracted line) gets a member declared in the filing's own extension (<name>.xsdimporting the template's entry point,_def.xmlplacing the members underSegmentsDomainin the template's role,_lab.xmlwith Arabic and English labels), as ESEF filers do. The report references that schema; the files travel in the packages and are served next to the report. -
Insurance classes. A line filed with a class of business (
insurance_class: motor, fire, marine, engineering, health, life, other — or the Arabic name) gets itsfra-insmember. -
Entering segment and class figures. On the filing page (section «بيانات XBRL الإضافية», while the filing is a draft or returned for amendment) the company fills two grids:
- Operating segments — each segment's Arabic and English name (the English name, Latin characters, gives
the member's local name, e.g.
RetailSegmentMember; an Arabic-only name gets a stable hashed one) and its figures for the current and prior year for the IFRS 8 measures its template carries: revenue (Revenue/RevenueFromContractsWithCustomers), profit before tax, profit (ProfitLoss), total assets, total liabilities. Offered only on templates whose hypercube has the segments axis (a profit-or-loss statement or insurance elements) — the hypercube is closed, so a figure on any other element would be dimensionally invalid. - Insurance classes — the seven FRA classes (
fra-ins:…Member) × the template's monetaryfra-insfigures (gross written premium, net claims incurred, technical reserves). Ratios are not entered by class.
Empty cells are not reported (they are not zeros); printed negatives
(50,000)and Arabic digits are accepted. On an axis the company filled, these figures replace any detail lines the extraction produced on that axis. The page shows, per figure and year, the sum of the members against the entity's own figure; the native checks raiseFRA.segments.reconcile/FRA.insuranceClasses.reconcile(warning) when they differ beyond rounding — reconciling items are allowed by IFRS 8.28 but must be explained. Calculations 1.1 relationships of the template apply within each member's context as for the entity figures (natively and in Arelle): e.g. a segment reporting both profit before tax and its components is checked. - Operating segments — each segment's Arabic and English name (the English name, Latin characters, gives
the member's local name, e.g.
-
Contexts carry the members in all syntaxes (XBRL 2.1, Inline XBRL, xBRL-JSON, xBRL-CSV); context ids name them (
I20251231_Separate_IssuedCapital), and the platform's checks key facts by the full context.
13. Block tagging of the notes (XB-GEN-007)
Every note and accounting policy of an annual filing is tagged in the XBRL report as an IFRS text block
(dtr-types:textBlockItemType), as ESEF requires:
- Where the text comes from. The filing page (section «بيانات XBRL الإضافية») keeps one entry per note:
kind (note / accounting policy), number, Arabic and English caption, the IFRS element, and the text.
«استخراج الإيضاحات من ملف PDF» proposes them from the source PDF: the extraction's notes catalogue (note
number → page, caption, kept in the extraction job's
doc_intelligence) locates each note, and its text is the PDF's text layer from its heading to the next note's heading (visual-order Arabic lines restored, page numbers dropped). A scanned PDF has no text layer and no catalogue: nothing is proposed and the company pastes the notes. Imported notes are marked «من ملف PDF — يحتاج مراجعة»; existing note numbers are kept. - Text format. A blank line separates paragraphs; a line break is kept. A run of lines with tabs (pasted
from a spreadsheet) or
|(a markdown table; the|---|separator row is dropped) is a table. - Which element. The company may choose the element; otherwise the caption decides, through a table of
84 elements of the IFRS Accounting Taxonomy 2025 (each name checked against
full_ifrs-cor_2025-03-27.xsd) with the Arabic and English caption words of the notes Egyptian filers publish: general information, basis of preparation, judgements and estimates, property plant and equipment, investment property, intangible assets, subsidiaries, associates, financial investments, inventories, receivables, cash, issued capital, reserves, borrowings, leases, provisions, employee benefits, payables, income and deferred tax, contingencies, revenue, cost of sales, administrative expenses, finance income/costs, EPS, dividends, related parties, fair value, risk and capital management, insurance contracts, reinsurance, events after the reporting period… (50 note elements) and 33DescriptionOfAccountingPolicyFor…elements. Captions are compared after folding Arabic letter forms and joined prepositions («للأصول» = «الأصول»). A caption saying «السياسة المحاسبية» is a policy. Unrecognised notes go toifrs-full:DisclosureOfAdditionalInformationExplanatory, unrecognised policies toifrs-full:DisclosureOfMaterialAccountingPolicyInformationExplanatory. - One fact per element. Notes tagged with the same element (two provisions notes, the unrecognised ones)
form one fact: in Inline XBRL an
ix:nonNumericon the first andix:continuationon the others, chained bycontinuedAt; elsewhere their XHTML concatenated in report order. - Syntaxes. Inline XBRL: a «الإيضاحات المتممة للقوائم المالية» section after the statements, each note
under its caption, its body inside
ix:nonNumeric escape="true"(xml:langfrom the text) — the value is the escaped XHTML of the content. xBRL-XML: the escaped XHTML (<p>…</p><table>…</table>) as the fact value; xBRL-JSON and xBRL-CSV: the same string, withlanguage. The context is the current period, on the template's consolidation member (separate statements:SeparateMember), like its figures. Text-block facts are not repeated inix:hidden. The facts table keeps the first 60,000 bytes of a long note (the report files keep it whole). - Phase-in.
XBRL_BLOCK_TAGGING_SCOPE=annual(default): filings covering a full year (no quarter, a period of at least eleven months). Interim filings keep their notes but they are not tagged (findingFRA.notes.phaseIn, info) until FRA setsall.XBRL_BLOCK_TAGGING=falseturns block tagging off. - Validation. Arelle validates the text blocks with the report (Inline XBRL rules for escaped content and continuations): 0 errors on the demo filings.
14. Format versions
XbrlPublisher::FORMAT and FraTaxonomy::FORMAT are 2026.10.14 (2026.10.10: report-type entry points,
enumerations, report-level and comparability facts, formula rules; 2026.10.14: decimals from the declared
presentation scale, the XB-TAX-011 reporting flags, dtr-types:ghgEmissionsItemType for emissions): documents of
an earlier format are regenerated on their own taxonomy version when next served. A golden-file test
(XbrlWriterGoldenAndViewerTest, tests/Fixtures/xbrl/golden/writer-output.json) fails when a writer's output
changes without a FORMAT bump.
Deterministic generation (XB-GEN-008). The files carry no generation timestamp: the same facts and the same
generator version give byte-identical Inline XBRL, XBRL 2.1, xBRL-JSON, xBRL-CSV and report packages (zip
entries have a fixed timestamp and order), and the taxonomy package is byte-identical for the same templates
(tp:publicationDate is XBRL_FRA_PUBLICATION_DATE, else the day the templates last changed). When and by
which generator a document was produced is recorded on the document row (artifacts.generated_at,
artifacts.generator), outside the files and the facts hash.
15. Packaging and naming
Report packages (Report Packages 1.0): a ZIP with a single top-level directory,
META-INF/reportPackage.json (documentType https://xbrl.org/report-package/2023/xbri for an Inline
XBRL report, …/xbr for a non-inline one; .xbri/.xbr must match — PKG-010) and the report under
reports/:
- a report file directly in
reports/is one report; - a multi-document Inline XBRL report (an Inline XBRL Document Set) goes in a subdirectory:
reports/<report name>/part1.xhtml,part2.xhtml, … — all the HTML documents of that directory form one report; contexts, units andix:continuationelements may sit in any document of the set (ids are unique across the set,XBRL-008),ix:excludecontent is not part of a fact; - the filer's extension schema and linkbases sit next to the report;
- one filing is one report: a package with more than one report (for example two documents directly
in
reports/, or an inline report and an XBRL 2.1 instance) is refused (PKG-009) — the platform never picks one.
Untrusted-upload limits (XII guidance on safe handling of report packages; configurable):
| Check | Rule | Default |
|---|---|---|
| Entry count | PKG-003 |
300 (XBRL_PKG_MAX_ENTRIES) |
| Actual inflated size of the package, counted while reading | PKG-004 |
60 MB (XBRL_PKG_MAX_UNCOMPRESSED) |
| Actual inflated size of one entry (and never more than its header declares) | PKG-004 |
40 MB (XBRL_PKG_MAX_ENTRY) |
| Compression ratio of one entry (zip bomb) | PKG-005 |
100:1 above 1 MB (XBRL_PKG_MAX_RATIO, XBRL_PKG_RATIO_MIN_BYTES) |
| Path traversal, absolute/drive paths, backslashes | PKG-002 |
always |
| Archives inside the archive (by extension and by content) | PKG-006 |
always |
| Symbolic-link entries | PKG-007 |
always |
| Malware scan of the upload (portal, API, test filing) | — | always (ClamAV) |
Nothing is extracted to disk; XML is parsed without network access.
Naming (FRA-121, warning): <entity id>-<period end>-<reference>, e.g.
FRA-LIC-0001-2025-12-31-annual.xbri; the same stem for .xhtml, .xbrl, .json.
16. Submission and the test-filing service
- Test filing —
POST /api/v1/xbrl/test-filing(OAuth scopefiling:submit, sandbox and production credentials): send the report asmultipart/form-data(file) or JSON (file_name,content_base64), optionallytemplate_code(when the report references no template entry point) andfiscal_year. The platform runs exactly the validation of a submission and returns the validation report — nothing is filed (filed: false). The response (XbrlTestFilingResultin the OpenAPI document at/api/v1/openapi.json) holdsvalidation:valid,status(passed/warnings/failed),summary,layers[]andfindings[](rule_id,layer,severity,message.ar,message.en,concept,context,period,arelle_code,document…) — the rule ids of the rules file. - Submission —
POST /api/v1/filings/submit(encrypted envelope) or the portal upload. A refused report returns 422xbrl_validation_failedwith the samevalidationreport. - Review — the FRA reviewer sees the stored validation of the filed report next to the published document's checks (section 5.5).
17. Conformance
- FRA conformance suite (
tests/conformance/xbrl,index.json): good sample filings and at least one bad sample for every rule of the rule book (section 5 — all 69 ids; a test fails the build when a rule has none), run through the intake byphp artisan fra:xbrl:conformance(--arelleto add Arelle,--only=B-PKG-*), which writes a JSON results report and fails when a sample does not produce exactly the expected rule ids. Samples for the business rules applied to the published document (FRA-001…FRA-006,FRA-W001) run those rules on the sample's facts ("stage": "published"); the two Arelle-only rules (XBRL-100,XBRL-101) have samples that are checked when Arelle runs and are reported as skipped otherwise. CI runs the native suite on every change and the whole suite (good and bad samples) again with Arelle. - XII conformance suites:
php artisan fra:xbrl:xii-conformanceruns Arelle against the XBRL International suites found inXBRL_XII_CONFORMANCE_DIRand stores the per-variation results (docs/xbrl/CONFORMANCE.mdexplains how to download them; they are not committed).