Athena — kb/erp-data-and-xaf-standards.md

ERP Data and XAF Auditfile Standards

Language / Taal: This document is the English version. Lees in het Nederlands

This document describes the XML Auditfile Financieel (XAF) standard, its relationship to the broader Dutch auditfile family and international SAF-T, how Exact Online and AFAS export XAF files, and practical data-quality considerations for using these files in an audit. The authoritative source for the XAF standard is the ODB (Ondersteuning Digitaal Berichtenverkeer) portal of the Belastingdienst at odb.belastingdienst.nl.


1. The Auditfile Family

The Dutch Belastingdienst maintains a family of standardized auditfile formats, each covering a different domain of financial record-keeping. The family is governed by the Auditfileplatform — a collaboration between the Belastingdienst, SRA, and commercial software vendors. The relevant auditfile types are:

| Code | Name | Domain | |---|---|---| | XAF | XML Auditfile Financieel | Financial bookkeeping (grootboek, journaalposten) | | XAS | XML Auditfile Salaris | Payroll records | | XAA | XML Auditfile Afrekensystemen | Point-of-sale / cash register systems | | XAB | XML Auditfile Taxi Boordcomputer | Taxi dispatch computers | | XAK | XML Auditfile Kansspelen op Afstand | Online gambling | | XAR | XML Auditfile Ritregistratiesystemen | Trip registration systems |

For financial statement audit purposes, the relevant file is always XAF. The XAS (payroll) file may be relevant for payroll-related substantive testing but is not part of the general ledger audit.

Governance note

An important correction to assumptions that may appear in older practitioner literature: the XAF standard was developed and is maintained by the Belastingdienst and the Auditfileplatform — not by NOAB (Nederlandse Organisatie van Administratie- en Belastingdeskundigen). NOAB is an unrelated professional body. Historical development credit for the first Dutch auditfile XML version goes to SRA (through Harold Kinds) in collaboration with the Belastingdienst; subsequent versions have been developed by the Auditfileplatform. The governance structure is confirmed by the ODB portal (datadump/belastingdienst/odb/auditfiles-achtergrondinformatie.*).


2. XAF Version History

| Version | Key characteristics | |---|---| | ASCII Auditfile (CLAIR 1.0) | Original Belastingdienst format — flat text, not XML | | XAF 1.0 (CLAIR 2.0) | First XML version; developed by SRA/Harold Kinds in collaboration with the Belastingdienst | | XAF 3.0 | Added sub-administrations and opening balance sections (ABZ-version) | | XAF 3.1 | Incremental updates | | XAF 3.2 | Added RGS integration and master data history; ~250 data elements | | XAF 4.0 | Current standard; reduced from ~250 to ~90 data elements; fully RGS-aligned; developed with stakeholder "sounding board group" |

Current point release: XAF 4.0.3 (confirmed via ODB portal, as of the source material collection date September 2026). Version 4.0.2 is also available.

Phase-out of old versions

The Belastingdienst ODB portal published a news item on 22 April 2026: "Uitfasering oude Auditfiles Financieel XAF per 01-01-2027" — the old XAF versions (pre-4.0) are being phased out effective 1 January 2027. From that date, only XAF 4.0 files will be accepted by the Belastingdienst for tax inspection purposes.

Practical implication for audit work: entities using ERP systems that export only XAF 3.x (this includes AFAS Profit's default export path as of the datadump collection date) must upgrade their software or export configuration before January 2027 to maintain compliance. Auditors should confirm which XAF version their clients' systems produce and flag the phase-out deadline where relevant.


3. XAF 4.0 — Structure and Key Changes

Why the field count was reduced

XAF 3.2 had approximately 250 data elements. The primary reason for the reduction to ~90 in XAF 4.0 was that many 3.2 fields were found, in practice, to be inconsistently or incompletely populated by software vendors — they appeared in the schema but contained no meaningful data in most actual exports. The 4.0 redesign stripped the standard to the elements that are reliably populated, improving the practical utility of the file for both tax inspection and audit.

Alignment with RGS

XAF 4.0 is explicitly aligned with RGS (Referentie GrootboekSchema). This means the chart-of-accounts codes in a 4.0 file are expected to correspond to RGS codes, and the structure of the file reflects the RGS account taxonomy. This alignment makes it possible to perform automated account-level analysis (including BTW reconciliation and liquide middelen identification) using standardized account codes rather than entity-specific account names.

XSD schema access

The official XSD schema for XAF 4.0.3 is hosted at the ODB portal under odb.belastingdienst.nl/auditfiles/xmlauditfile-financieel-xaf-v-4-0-3/. The schema download requires authenticated login to the ODB portal — it is not publicly accessible without registration. Auditors and software vendors who need to validate XAF files against the schema must register with the ODB portal.

Relationship to SAF-T

The Netherlands is not a SAF-T (Standard Audit File for Tax) country. SAF-T is an OECD/IESBA standard adopted by countries including Norway, Portugal, France, and Poland. XAF and SAF-T serve the same fundamental purpose — structured electronic export of bookkeeping records for tax or audit inspection — but are technically distinct standards with different XML schemas and data element specifications. They are not interoperable: an XAF file cannot be used where a SAF-T file is expected, and vice versa.

Secondary practitioner sources suggest the Dutch auditfile effort predated and influenced the development of the international SAF-T standard, but this has not been independently corroborated by an OECD or Belastingdienst primary source and should be treated as unverified.


4. What the XAF File Contains

An XAF file contains a structured XML export of one company's bookkeeping for one full financial year (boekjaar). The standard structure includes:

Header section

  • Company identification (name, address, KvK number, BTW number)
  • Financial year start and end date
  • Audit file version
  • Software vendor and generating system details
  • Fiscal year and currency

Master data sections

  • Grootboekrekeningen (chart of accounts): all account codes with descriptions, account types (balans / resultaat), and RGS mapping (in XAF 4.0)
  • Klanten (customers/debtors): if the system maintains a separate debtor ledger
  • Leveranciers (suppliers/creditors): if the system maintains a separate creditor ledger
  • Dagboeken (journals/daybooks): list of journal types used (inkoop, verkoop, memoriaal, kas, bank, etc.)

Transaction sections

  • Journaalposten (journal entries): the complete set of general ledger postings for the year, each entry containing at minimum: period, journal code, entry number, posting date, account code, debit amount, credit amount, transaction description, and reference to source document

Note: XAF does not include the opening balance as a separate section — it begins with the period-1 transactions. The opening balance, if needed for audit purposes, must be derived from the prior-year closing XAF or from the ERP system directly (confirmed from AFAS documentation: "De beginbalans gaat hierbij niet mee").


5. Exact Online — XAF Export

Exact Online provides a dedicated XAF export function under Rapportages / Financieel / Auditfile XML. Key characteristics:

  • Generates an XAF file for the selected financial year and administration (one XAF per administration — if the entity has multiple administrations, each must be exported separately)
  • Export covers the full financial year (a partial year is not possible without customization)
  • The file is generated as an uncompressed .xaf file (XML format), which can be opened with any text or XML editor
  • Exact Online supports import of XAF files from other software for consolidation or reporting purposes, with a conversion table for mapping external account types to Exact's own account types

Exact Online's account type mapping uses four types internally: 1 = activa (assets), 2 = passiva (liabilities), 3 = opbrengsten (revenues), 4 = kosten (costs). When importing XAF from other systems, the auditor should verify that the type mapping is correctly configured.

Exact Online also supports BTW aangifte preparation and ICP-aangifte generation directly from the bookkeeping, based on the BTW-codes assigned to transactions.


6. AFAS Profit — XAF Export

AFAS Profit exports XAF via Financieel / Beheer / Auditbestand / Auditfile XML versie 3. Key characteristics and limitations:

  • AFAS exports XAF version 3 by default as of the datadump collection date. This means AFAS clients will need an upgrade or a configuration change to produce XAF 4.0 files before the January 2027 phase-out deadline.
  • The export covers one full financial year; a partial year is not possible.
  • AFAS places the export job in a queue (wachtrij); the user can continue working while the file is generated.
  • The file is a non-compressed .xaf file.
  • Opening balances are not included in the XAF export — consistent with the XAF standard itself.
  • AFAS supports import of XAF files from other systems (including Exact) using a conversion table for account type mapping.
  • AFAS also supports a separate XAS (Auditfile Salaris) export for payroll data.

AFAS provides a checklist for preparing an auditfile for tax inspection (datadump/afas/xaf-export/02-checklist-auditbestand-financieel.md), which covers: verifying company details (name, BTW number, address), confirming the financial year is fully closed, and confirming the BTW identification number matches the administration's tax registration.


7. RGS — Referentie GrootboekSchema

RGS (Referentie GrootboekSchema) is a standardized Dutch chart-of-accounts reference structure. It provides:

  • A hierarchical code structure for every bookkeeping account type in Dutch financial reporting
  • A mapping between account codes and the relevant items in the Dutch statutory financial statement layout (jaarrekening) under BW2 Titel 9
  • A mapping to XBRL taxonomy codes used in SBR (Standard Business Reporting) for digital filing of financial statements and tax returns

RGS codes follow a pattern: a letter prefix indicates the major category (B = balans, W = winst-en-verliesrekening, followed by a numeric hierarchy). Example: BVliq codes under the balance-sheet liquid-assets section would cover bank accounts; WBedkos codes under the costs section would cover operating expenses.

Why RGS matters for audit data analytics

When an entity's bookkeeping system is RGS-aligned and its XAF export includes RGS codes alongside entity-specific account codes, the auditor can:

  • Automatically identify all accounts classified as liquide middelen without relying on the entity's account naming conventions
  • Automatically identify all BTW accounts for VAT reconciliation
  • Compare account balances against expected ranges for the account type (analytical procedures under NV COS 520)
  • Validate that the financial statement presentation is consistent with the RGS classification

XAF 4.0's explicit RGS alignment makes this approach significantly more practical than in XAF 3.x.

SBR and jaarrekening filing

For entities required to file their annual accounts digitally (via SBR, Standard Business Reporting), RGS codes form the bridge between the bookkeeping system and the XBRL taxonomy. Software systems that are RGS-aligned can generate SBR-compatible filings directly from the bookkeeping. The Dutch standard for SBR filing uses the NL GAAP taxonomy (for BW2 entities) or the IFRS taxonomy (for IFRS reporters). The Belastingdienst also accepts SBR-formatted tax returns (vennootschapsbelasting, BTW) from certain taxpayers.


8. Data Quality Validation for Audit Use

Before using XAF data for audit procedures, the auditor must confirm that the data is complete, accurate, and relevant — this is the data validation step required by NBA Handreiking 1141 before any CAAT result can be treated as audit evidence.

Completeness checks

  • Total debits in the journal entries section equal total credits (the double-entry constraint must hold exactly)
  • Sum of all period movements plus opening balance equals closing balance per the trial balance
  • Number of journal entries matches the ERP system's own count (if the system reports this)
  • All dagboeken (journal types) expected for the entity are present in the master data section

Accuracy checks

  • Select a sample of individual journal entries and trace them back to the source transaction in the ERP (does the amount, date, description, and account code in the XAF match the ERP record?)
  • Confirm the company identification in the XAF header matches the entity being audited
  • Confirm the financial year start and end dates are correct

Relevance checks

  • Confirm the XAF covers the correct financial year and the correct administration (entity) — particularly important when the entity has multiple administrations (legal entities, cost centres, or sub-administrations)
  • Confirm that all balance-relevant accounts are included — the chart-of-accounts section should show no unexpected gaps

Handling missing or incomplete data

XAF 3.x files may have gaps in fields that were optional in earlier versions. If a required field for the audit procedure is empty in many records (e.g., posting user or document reference), the auditor should document this as a data limitation and assess whether alternative procedures can compensate. For XAF 4.0 files, the reduced field count means the included fields are more reliably populated, but the absence of fields that existed in 3.x (now removed) may create gaps if the auditor expected those elements.


9. Practical Audit Use Cases for XAF Data

The XAF journal entry population supports the following audit procedures when properly validated:

| Procedure | Relevant standard | What to look for in XAF | |---|---|---| | Journal entry testing (JET) | NV COS 240 §32–33 | Filter by posting date (weekends, year-end), amount (round numbers), description (blank/generic), account combination (unusual pairs) | | Analytical procedures | NV COS 520 | Sum by account and period; compare to prior year; compare to budget or external benchmark | | BTW reconciliation | NV COS 500; Wet OB 1968 | Filter entries with BTW-codes; sum by rubriek; compare to filed aangiften | | Liquide middelen testing | NV COS 500, 505 | Filter entries under RGS liquid asset codes; identify G-rekening accounts | | Duplicate transaction detection | NV COS 240 | Match on amount + supplier + date + account | | Benford analysis | NBA Handreiking 1141 | Run on full population of posted amounts (excluding structured amounts like salaries) | | Cut-off testing | NV COS 500 | Filter entries dated in last 10 business days of year plus first 10 business days of new year |


Sources

  • ODB portal pages: datadump/belastingdienst/odb/auditfiles-achtergrondinformatie.*, auditfiles-xaf40-achtergrond.*, auditfiles-index.*
  • AFAS XAF documentation: datadump/afas/xaf-export/01-auditfile-financieel-xaf.md, 02-checklist-auditbestand-financieel.md
  • Exact Online XAF documentation: datadump/exact-online/xaf-export/01-gegevens-exporteren-xml-formaat.md
  • docs/auditfile-nu-research.md (XAF version history and governance)
  • docs/erp-integration-exact-afas-research.md (Exact Online and AFAS integration details)
  • NBA Handreiking 1141 (data validation requirements before CAAT use)
  • NV COS 500, 520 (evidence reliability and analytical procedures standards)

Research gap noted: The XAF 4.0.3 XSD schema file itself is behind an authenticated ODB portal login and was not directly inspected. The data element descriptions in this document are based on the ODB background page and practitioner documentation, not on a direct read of the schema. For implementation purposes, the XSD must be obtained from the ODB portal directly.

Reacties

Nog geen reacties