ediverse Explore the platform

Spotlight PEPPOL BIS Billing 3.0 The EU e-invoicing mandate is here — France Sept 2026, Belgium Jan 2026, Germany 2025.

Denmark — NemHandel, OIOUBL and PEPPOL switch

Denmark is Europe's pioneer of B2G e-invoicing: mandatory for every public sector supplier since 1 February 2005. The historic NemHandel network transports the OIOUBL format and is progressively migrating to PEPPOL BIS Billing 3.0. The 2022 Bogføringsloven extends digital invoicing to B2B over 2024-2028.

Regulatory timeline

  • 1 February 2005 — Mandatory B2G e-invoice. Public Payments Act makes electronic invoicing mandatory to the Danish public sector — first EU country to do it universally. OIOXML then OIOUBL format.
  • 1 May 2011 — OIOUBL 2.02. Full migration from OIOXML to OIOUBL (Danish UBL 2.0). Procurement-Bil and Procurement-BilSim (simple) profiles finalised.
  • 1 April 2019 — Transposition of EU Directive 2014/55. 2019 Order requires Danish contracting authorities to accept EN 16931 formats (PEPPOL BIS) in parallel with OIOUBL.
  • 1 May 2022 — Bogføringsloven Act 700/2022. The new Danish Accounting Act mandates certified digital accounting systems for companies, with 2024-2026 phasing.
  • 1 January 2024 — Bogføringsloven Phase 1. Mandatory certified digital accounting for non-personal companies (ApS, A/S, etc.) — ERP systems must support OIOUBL/PEPPOL in receipt and emission.
  • 15 December 2024 — OIOUBL 3.0. ERST publication of the new OIOUBL 3.0 aligned with EN 16931:2017+A1:2019 and PEPPOL BIS Billing 3.0; OIOUBL 2.x progressively deprecated.
  • 1 July 2026 — Bogføringsloven Phase 2 (announced). Extension to natural persons (sole traders, liberal professions) above DKK 300,000 annual turnover.
  • 2028 — Final phase (planned). Universal coverage with progressive DKK threshold lowering; ViDA convergence and ERST mandate under analysis.

Deep dives — 10 dedicated pages

Ten dedicated pages drill into every dimension of Danish e-invoicing — the historical 2005 universal B2G mandate (NemHandel, OIOUBL 3.0, Digital Bookkeeping Act and Bogføringsloven B2B 2024-2028), the technical specs (CVR / Erhvervsstyrelsen ICD 0184, PEPPOL DK access points, NemKonto + BetalingsService banking rail) and the real-world B2B usage in retail (Salling/Coop/Dagrofa), industrial EDI (Mærsk/Carlsberg/Novo Nordisk/Vestas/LEGO) and the 25% single-rate Moms VAT regime.

2024-2028 reform (B2G + B2B)

  • NemHandel — universal B2G mandate since 2005 · ERST platform operational since 1 February 2005, the worlds first universal B2G mandate. Bekendtgørelse 354/2005, ~20M B2G invoices/year for 3,000 administrations, OIOUBL and PEPPOL-BIS 3.0 accepted.
  • Bogføringsloven — B2B mandate in 3 phases 2024-2028 · LBK 1391/2022. Phase 1 (1 Jan 2024 — audited large enterprises), phase 2 (1 Jul 2026 — SMEs > 300k DKK), phase 3 (1 Jan 2028 — universal). Indirect e-invoice mandate via certified software.
  • OIOUBL 3.0 — Danish format on UBL 2.1 · Danish CIUS on OASIS UBL 2.1, V3.0 released late 2024. BilSim/OrdSim/CatSim profiles, ~140 BR-DK-* Schematron rules, strict EN 16931 alignment, PEPPOL-BIS 3.0 coexistence.
  • Digital Bookkeeping Act — certified software · ERST criteria (BEK 1592/2022), Standard systems (~80) vs Registered systems (~40). Visma e-conomic/Dinero/Billy/Uniconta/Dynamics 365 BC/SAP/Oracle NetSuite, 5-year retention, cloud allowed without geographic restriction.

Technical specs

  • CVR — Erhvervsstyrelsen register and ICD 0184 · 8-digit identifier operated by ERST since 1990, ~700,000 active entities, P-numre for production units, PEPPOL ICD 0184, free public API cvrapi.dk + datacvr.virk.dk, monthly OpenData dump.
  • PEPPOL access points — 15 operators · Free public NemHandel (virk.dk) + 14 commercial: TrueCommerce, Pagero, Visma e-conomic, Basware, Tradeshift, EDICOM, IBX Capgemini, B2Brouter, GS1 Denmark, Aiia, Itella TietoEVRY, Storecove, Inposia, Comarch, Generix.
  • NemKonto and BetalingsService — banking rail · Central registry of citizen accounts since 2003 (~99% enrolment) + BetalingsService (Nets ~250M tx/year). FIK codes 71/73/04/15, SEPA SDD/SCT/Inst articulation, MobilePay (Vipps MobilePay post-2024).

Real-world B2B usage

  • EDIFACT retail Denmark · Salling Group (Føtex/Bilka/Netto) ~38%, Coop Danmark ~32%, Dagrofa ~12%, REMA 1000, Lidl DK. GS1 Denmark EANCOM 2002, ~180M messages/year, INVOIC migration to OIOUBL ongoing since 2024.
  • Industrial EDI — Mærsk, Carlsberg, Novo, Vestas, LEGO · Mærsk (#1 global shipowner, maritime EDIFACT IFTMIN/IFTSTA), Carlsberg (global brewing), Novo Nordisk (pharma insulin + HL7), Vestas (wind turbines on OFTP2 ENX), Grundfos (OAGi), LEGO Billund, Danfoss, Coloplast, ECCO, Pandora.
  • Moms — 25% single-rate VAT · Momsloven LBK 1021/2019, single 25% rate (one of 3 EU countries with no reduced rates alongside BG/EE). 50,000 DKK SME franchise, margin regime §§ 70-71, reverse charge § 46, OSS/IOSS, UNCL 5305 codes in OIOUBL.

Technical schema

The Danish ecosystem supports three interoperable formats: OIOUBL 2.1, OIOUBL 3.0 and PEPPOL BIS Billing 3.0. The NemHandel network transports via AS2, and PEPPOL via AS4. All Danish commercial Access Points support both to ease the transition.

  • OIOUBL 2.1: Danish UBL 2.1, CustomizationID = OIOUBL-2.1, Procurement-BilSim or Procurement-Bil profiles.
  • OIOUBL 3.0: UBL 2.1 aligned with EN 16931, CustomizationID = urn:cen.eu:en16931:2017#compliant#urn:nemhandel.dk:oioubl:3.0.
  • PEPPOL BIS Billing 3.0: standard PEPPOL UBL 2.1, used for cross-border and increasingly for domestic B2G.
  • CVR: 8 digits, company and authority identifier (usable in schemeID DK:CVR and 0096 in PEPPOL).
  • EAN-13 / GLN: unique location codes to address B2G authorities in NemHandel (schemeID DK:EAN or 0088 in PEPPOL).

Structure of an OIOUBL 2.1 invoice to ERST:

xmloioubl-2p1.xml
<?xml version="1.0" encoding="UTF-8"?>
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
         xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
         xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
  <cbc:UBLVersionID>2.1</cbc:UBLVersionID>
  <cbc:CustomizationID>OIOUBL-2.1</cbc:CustomizationID>
  <cbc:ProfileID>Procurement-BilSim-1.0</cbc:ProfileID>
  <cbc:ID>DK-2026-00000142</cbc:ID>
  <cbc:IssueDate>2026-04-15</cbc:IssueDate>
  <cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
  <cbc:DocumentCurrencyCode>DKK</cbc:DocumentCurrencyCode>
  <cac:AccountingSupplierParty>
    <cac:Party>
      <cbc:EndpointID schemeID="DK:CVR">DK12345678</cbc:EndpointID>
      <cac:PartyName><cbc:Name>Ediverse Demo Danmark ApS</cbc:Name></cac:PartyName>
      <cac:PartyTaxScheme>
        <cbc:CompanyID schemeID="DK:SE">DK12345678</cbc:CompanyID>
        <cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
      </cac:PartyTaxScheme>
    </cac:Party>
  </cac:AccountingSupplierParty>
  <cac:AccountingCustomerParty>
    <cac:Party>
      <cbc:EndpointID schemeID="DK:EAN">5798000000001</cbc:EndpointID>
      <cac:PartyName><cbc:Name>Erhvervsstyrelsen</cbc:Name></cac:PartyName>
      <cac:PartyTaxScheme>
        <cbc:CompanyID schemeID="DK:CVR">DK10150817</cbc:CompanyID>
        <cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
      </cac:PartyTaxScheme>
    </cac:Party>
  </cac:AccountingCustomerParty>
  <cac:TaxTotal>
    <cbc:TaxAmount currencyID="DKK">2500.00</cbc:TaxAmount>
  </cac:TaxTotal>
  <cac:LegalMonetaryTotal>
    <cbc:LineExtensionAmount currencyID="DKK">10000.00</cbc:LineExtensionAmount>
    <cbc:TaxExclusiveAmount currencyID="DKK">10000.00</cbc:TaxExclusiveAmount>
    <cbc:TaxInclusiveAmount currencyID="DKK">12500.00</cbc:TaxInclusiveAmount>
    <cbc:PayableAmount currencyID="DKK">12500.00</cbc:PayableAmount>
  </cac:LegalMonetaryTotal>
</Invoice>

Submission flow

NemHandel historically uses AS2 and a routing registry managed by ERST (registreringssoegning.nemhandel.dk) which associates every EAN/CVR with a Read Access Point (RAP). In PEPPOL, routing uses SML + SMP. Both networks coexist and a single Access Point can route on either.

textdk-nemhandel-flow.txt
┌──────────────┐    ┌────────────────────┐    ┌──────────────┐
│ Supplier     │───>│ NemHandel (Read    │───>│ Receiver     │
│ (ERP, OIOUBL │    │ Access Point) or   │    │ (KMD, SAP,   │
│  or PEPPOL)  │    │ PEPPOL AP          │    │  Microsoft)  │
└──────────────┘    └─────────┬──────────┘    └──────┬───────┘
                              │ AS2 / AS4             │
                              ▼                       ▼
                  ┌────────────────────┐    ┌──────────────┐
                  │ NemHandel registry │    │ Accounting   │
                  │ + Peppol SML/SMP   │    │ system       │
                  └────────────────────┘    └──────────────┘

On the receiving side, connected accounting systems (KMD, SAP, Microsoft Dynamics 365 BC, Visma, Economic, Dinero) consume OIOUBL or PEPPOL natively. The migration to OIOUBL 3.0 is planned 2026-2027 according to the ERST roadmap.

Validation

  • ERST — Erhvervsstyrelsen: erhvervsstyrelsen.dk — Danish Business Authority, CVR registry, NemHandel supervision.
  • NemHandel — Official portal: nemhandel.dk — registry, documentation, OIOUBL validator, accredited commercial RAPs.
  • SKAT — Skattestyrelsen: skat.dk — Tax Administration, VAT (Moms) rules, archiving.
  • Virk.dk — Business portal: virk.dk — business services, forms, returns.
  • Datafordeleren / CVR API: datacvr.virk.dk — public CVR/PNR lookup API.

Common pitfalls

  1. Mandatory EAN-13 (GLN) for B2G. To invoice a public authority in NemHandel, you need its EAN-13 code (sometimes called Lokationsnummer or GLN), not its CVR. The authority communicates the EAN-13 on the purchase order; without it, NemHandel routing fails. CVR comes as TaxScheme complement.
  2. OIOUBL 2.1 vs 3.0 vs PEPPOL BIS. During the 2024-2027 transition, three formats coexist. Verify the version supported by the recipient in the NemHandel registry or PEPPOL SMP before sending. An OIOUBL 3.0 sent to an Access Point only supporting 2.1 is silently rejected.
  3. Bogføringsloven — certified accounting system. Since 2024, ERPs used in Denmark must be registered with ERST as Bogføringsloven-compliant accounting systems. Public list on erhvervsstyrelsen.dk; an unlisted ERP may trigger administrative fines up to DKK 1.5M.
  4. NemHandel Forsendelseskode (envelope). NemHandel encapsulates OIOUBL in a StandardBusinessDocumentHeader (SBDH) envelope with specific headers (Sender/Receiver IdentifierType=EAN). An envelope error = AS2 rejection without OIOUBL content even processed.
  5. 5-year archiving Bogføringsloven. Retention is 5 years after the end of the fiscal year (Bogføringsloven § 12), to be kept in a format allowing ERST audit. OIOUBL or PEPPOL UBL acceptable; a PDF alone (without structured XML) is not compliant since 2024 for companies.