SAF-T — accounting reporting mandatory (on demand) since 2020
SAF-T stands for Standard Audit File for Tax: a standardised export format for accounting data, originally defined by the OECD. For newcomers: picture a "universal PDF of your general ledger" that any tax administration can read. In Norway, SAF-T Financial is mandatory on demand from the administration since 1 January 2020: it is not a real-time feed, but a file you must produce during an audit.
History — from the OECD standard to the 2020 mandate
The OECD published the SAF-T recommendation in 2005 to standardise accounting exports during tax audits. Norway published its SAF-T Financial specification via Skatteetaten in 2016, with a long voluntary period. On 1 January 2020 the file became mandatory on demand: a company does not send it spontaneously every month, but must be able to generate it if Skatteetaten requests it (typically during an audit).
2005 | The OECD publishes the SAF-T (Standard Audit File for Tax)
| v1.0 recommendation — a standardised accounting export
| format for tax audits.
|
2016 | Skatteetaten (Norwegian tax administration) publishes the
| Norwegian SAF-T Financial specification and a voluntary
| usage period.
|
2017-2019 | Pilots and accounting-software testing. The NO SAF-T
| Financial schema stabilises (standardised VAT codes).
|
2020 | 1 January: SAF-T Financial becomes MANDATORY on demand.
| Any entity required to keep digital accounting must be able
| to produce the file when Skatteetaten requests it.
|
2022 | The new MVA-melding (digital VAT return) builds on the SAF-T
| VAT codes — convergence of reporting + accounting.
|
2023-2026 | SAF-T Financial maintained. Extension work (Cash Register,
| Payroll) and alignment with the DRR/ViDA trajectory. Governance — Skatteetaten
Skatteetaten (the Norwegian Tax Administration) publishes and maintains the SAF-T Financial schema, the standardised VAT codes, the standardised accounts (StandardAccountID) and the technical documentation. The legal basis sits in the bookkeeping act and regulation (Bokføringsloven / Bokføringsforskriften), which require accounting systems to be able to export in SAF-T format.
Skatteetaten also coordinates the use of SAF-T codes with the MVA-melding (digital VAT return, see the MVA page), so that accounting and tax reporting speak the same code vocabulary since 2022.
Technical schema — SAF-T Financial XML
The NO SAF-T Financial file is an XML structured in two main blocks:
- Header — company identity (organisasjonsnummer), period, currency, schema version.
- MasterFiles — chart of accounts (GeneralLedgerAccounts) mapped to the standardised accounts, VAT table (TaxTable), customers (Customers), suppliers (Suppliers).
- GeneralLedgerEntries — the detailed accounting entries, journal by journal, line by line.
The key Norwegian point is the StandardAccountID: each internal account must be mapped to a standardised account (2- or 4-digit model), which lets Skatteetaten compare heterogeneous ledgers.
<?xml version="1.0" encoding="UTF-8"?>
<AuditFile xmlns="urn:StandardAuditFile-Taxation-Financial:NO">
<Header>
<AuditFileVersion>1.10</AuditFileVersion>
<AuditFileCountry>NO</AuditFileCountry>
<Company>
<RegistrationNumber>991825827</RegistrationNumber>
<Name>Bergen Maritime Engineering AS</Name>
</Company>
<DefaultCurrencyCode>NOK</DefaultCurrencyCode>
<SelectionCriteria>
<PeriodStart>1</PeriodStart>
<PeriodStartYear>2026</PeriodStartYear>
<PeriodEnd>12</PeriodEnd>
<PeriodEndYear>2026</PeriodEndYear>
</SelectionCriteria>
</Header>
<MasterFiles>
<GeneralLedgerAccounts>
<Account>
<AccountID>3000</AccountID>
<AccountDescription>Salgsinntekt, avgiftspliktig</AccountDescription>
<StandardAccountID>30</StandardAccountID>
</Account>
</GeneralLedgerAccounts>
<TaxTable>
<TaxTableEntry>
<TaxCode>3</TaxCode> <!-- MVA 25% output -->
<Description>Utgaaende mva, hoy sats</Description>
<StandardTaxCode>3</StandardTaxCode>
<Percentage>25</Percentage>
</TaxTableEntry>
</TaxTable>
</MasterFiles>
</AuditFile> SAF-T NO vs Portugal vs Poland JPK
| Dimension | SAF-T Norway | SAF-T Portugal | JPK Poland |
|---|---|---|---|
| Base | OECD SAF-T | OECD SAF-T | OECD SAF-T (derived) |
| Frequency | On demand (audit) | Periodic + invoicing | Mandatory monthly |
| Scope | Financial (accounting) | Accounting + invoicing | JPK_VAT, JPK_FA, etc. |
| VAT codes | Standardised Skatteetaten | Standardised AT | Standardised MF |
| Standard accounts | StandardAccountID | SNC chart | Polish chart |
| Since | 2020 (mandatory) | 2008+ | 2016-2018 |
Adoption — who is affected
- Companies with digital accounting. The obligation targets entities required to keep accounts whose entries are electronic, above turnover and entry-volume thresholds.
- Accounting software vendors. All major products on the Norwegian market (Visma, Tripletex, PowerOffice, Unimicro, Fiken) natively generate SAF-T Financial.
- Firms and auditors. The file has become the standard exchange tool during audits and assurance engagements.
- VAT convergence. Since 2022 the same codes feed the MVA-melding — SAF-T adoption is now inseparable from VAT reporting.
Common pitfalls
- Assuming SAF-T = monthly submission. In Norway it is produced on demand. The periodicity is the MVA-melding, not SAF-T Financial.
- Forgetting the StandardAccountID mapping. A chart of accounts without mapping to the standardised accounts makes the file invalid.
- Wrong VAT codes. Using internal codes not aligned with the Skatteetaten standard table breaks consistency with the MVA-melding.
- Encoding / characters. UTF-8 mandatory; badly encoded æ, ø, å break the import on the administration side.
- Confusing SAF-T and e-invoice. SAF-T is an accounting export, EHF is a transactional invoice. Two distinct worlds.