eliDocs
Country Guides

Denmark

Danish B2G + B2B e-invoicing with Beliq, Peppol BIS 3.0 UBL, EAS 0184 DIGSTORG / CVR routing, and the NemHandel / Erhvervsstyrelsen transmission boundary; the legacy OIOUBL format is documented but out of scope.

Denmark’s e-invoicing landscape uses standard Peppol BIS Billing 3.0 UBL (EN 16931) on the cross-border path. There is no national CIUS. Danish endpoint addressing uses CVR (Centrale Virksomhedsregister — the Danish company register) via Peppol EAS 0184 DIGSTORG. Denmark also maintains a legacy domestic XML format, OIOUBL, used historically for B2G via NemHandel — Beliq does not implement OIOUBL (see the OIOUBL section below). Authority: Erhvervsstyrelsen (Danish Business Authority).

So a Danish invoice in Beliq is a Peppol BIS invoice with Danish parties (EAS 0184). See the Peppol BIS format reference for the full element layout.

Mandate timing

Danish public-sector e-invoicing has run over NemHandel for years. The Bookkeeping Act (Bogføringsloven) then phased in a digital-bookkeeping capability requirement: businesses must run a registered system able to send and receive structured e-invoices, though it is not an obligation to actually exchange B2B e-invoices.

DateWhat changes
2005Public-sector e-invoicing goes live over NemHandel, later aligned to EN 16931.
1 July 2024Businesses that file annual reports must keep their books in a registered digital bookkeeping system able to send and receive structured e-invoices.
1 January 2026The digital-bookkeeping requirement extends to smaller (class A) businesses above a turnover threshold.

The Bookkeeping Act (Bogføringsloven) requires a digital bookkeeping system capable of structured e-invoicing; it is not an obligation to actually exchange B2B e-invoices. Annual-report filers were phased in through 2024 and 2025, and smaller class A businesses follow on 1 January 2026. Re-confirm the current thresholds with Erhvervsstyrelsen.

Last verified against the European Commission eInvoicing Denmark country page and Erhvervsstyrelsen (the Danish Business Authority) on 9 July 2026. Official source.

If you sell to Danish public-sector buyers today, you are already in scope. On the B2B side, the phased requirement is about your bookkeeping system’s capability, not a duty to exchange e-invoices. Denmark also converges with the EU-wide ViDA framework for cross-border B2B. For the dates beliq tracks across every covered country, see the mandate calendar.

What Beliq does today

  • Generate Danish Peppol invoices via standard: "peppol-bis" (profile peppol), addressed with the Danish CVR endpoint scheme (DK:DIGSTORG, Peppol EAS 0184). Secondary scheme 0096 (Danish Chamber of Commerce) is also accepted.
  • Validate and parse Peppol BIS UBL against the full EN 16931 + Peppol BIS 3.0 Schematron (peppolVersion in the response).
  • Compliance status for denmark_peppol is supported; it rides the fully-verified Peppol BIS pipeline (9 OpenPeppol positive examples + 227 negative test cases). Denmark adds no rules on the Peppol path, so there is no Denmark-specific corpus.

OIOUBL and NemHandel

NemHandel itself is the Danish B2G gateway. It accepts both OIOUBL (legacy) and Peppol BIS (modern). Routing via NemHandel for the Peppol path is Peppol-AP-routed BYOC — same shape as Belgium’s transmission story.

What Beliq does not do (Peppol transmission boundary)

Denmark’s network is the Peppol Network for the modern path. Beliq is not a Peppol Access Point. It does not:

  • Transmit invoices over Peppol or register you as a Danish Peppol participant.
  • Operate the 4-corner exchange on your behalf.
  • Submit invoices to NemHandel on your behalf (NemHandel submission is Peppol-AP-routed for the Peppol path; OIOUBL-only routing is BYOC).
  • Generate or validate OIOUBL documents.

You send Beliq’s UBL output through your chosen Access Point (BYOC). Beliq’s job ends at a correct, Peppol-valid document.

Integration architecture (Beliq vs Peppol Access Point vs NemHandel)

Concern In Beliq today Outside Beliq (your stack / partner)
Peppol BIS 3.0 UBL invoice XML Generate, Validate, Parse
Peppol Network transmission (4-corner) Not offered, see boundary above Your Access Point provider
NemHandel B2G submission (Peppol path) Not offered (Peppol-AP-routed BYOC) Your Access Point provider
OIOUBL generation / validation Not offered (legacy, BYOC) Your domestic invoicing software
NemHandel OIOUBL-only routing Not offered Your domestic invoicing software

Generating a Danish Peppol invoice

Address both parties with the Danish CVR endpoint scheme (DK:DIGSTORG, EAS 0184) via the peppol block. Use the 8-digit CVR for identification (not VAT id). Use DKK for the invoice currency. Provide either a buyerReference or an orderReference.

generate-denmark-peppol.sh
curl -X POST https://api.beliq.eu/v1/generate \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "standard": "peppol-bis",
    "profile": "peppol",
    "output": "xml",
    "invoice": {
      "number": "2026-0001",
      "issueDate": "2026-06-04",
      "currencyCode": "DKK",
      "buyerReference": "DK-PO-5511",
      "seller": {
        "name": "Test Sælger ApS",
        "peppol": { "schemeId": "0184", "id": "12345678" },
        "address": { "street": "Vesterbrogade 1", "city": "København", "postalCode": "1620", "countryCode": "DK" }
      },
      "buyer": {
        "name": "Test Køber ApS",
        "peppol": { "schemeId": "0184", "id": "87654321" },
        "address": { "street": "Strøget 2", "city": "Aarhus", "postalCode": "8000", "countryCode": "DK" }
      },
      "lines": [
        {
          "description": "Professional services",
          "quantity": 1,
          "unitCode": "C62",
          "unitPrice": 800.00,
          "lineTotal": 800.00,
          "vatRate": 25,
          "vatCategoryCode": "S"
        }
      ],
      "taxSummary": [
        { "vatCategoryCode": "S", "vatRate": 25, "taxableAmount": 800.00, "taxAmount": 200.00 }
      ],
      "totalNetAmount": 800.00,
      "totalTaxAmount": 200.00,
      "totalGrossAmount": 1000.00
    }
  }'

Validation behaviour

On /v1/validate and /v1/generate, Danish invoices run the full EN 16931 + Peppol BIS 3.0 Schematron; failures carry the relevant BR-* / PEPPOL-* rule id. The response reports profileDetected: "peppol" and a peppolVersion. CreditNote payloads are supported (documentType: "creditnote"). DKK currency round-trips cleanly through cbc:DocumentCurrencyCode.

Further reading