Introduction
NemHandel is Denmark’s national e-invoicing network, managed by the Danish Business Authority (Erhvervsstyrelsen). Invoices to Danish public authorities must be submitted through it — mandatory since 2005 — and Danish businesses exchange B2B invoices over the same infrastructure. Documents travel as OIOUBL 2.1, Denmark’s UBL-based national format. The NemHandel Denmark app converts GOBL invoices and credit notes to OIOUBL, delivers them over the network, and imports documents your suppliers receive. For onboarding suppliers, see the companion guide: Denmark: Supplier registration.Prerequisites
In order to complete this guide, you will need:- A registered supplier: follow the NemHandel supplier registration guide to connect the NemHandel Denmark app, sign the authorization agreement, and register the supplier on the network before issuing.
- Customer routing details: the EAN/GLN number for public institutions, or the CVR number for Danish companies.
- Line and item details, including quantity, price, and description. Denmark applies a single 25% VAT rate (moms) with no reduced rates.
Setup
Create the send workflow
NemHandel send invoice workflow
- Workflow
- Code
Create the import workflow
NemHandel import invoice workflow
- Workflow
- Code
Configure the NemHandel Denmark app
Send an invoice
Upload an invoice to the silo and run the NemHandel send invoice workflow on it, either from the Console or via the API.sent state means the recipient’s access point accepted the document.
Correct an invoice
There is no cancellation mechanism on the NemHandel network. To correct a delivered invoice, issue a credit note referencing the original in itspreceding array and run the same send workflow on it — OIOUBL requires non-negative totals, so corrections are always credit notes in Denmark. See the example credit note below.
Example invoices
The following examples are GOBL documents you can copy and paste directly into the Invopop Console or store via the API as silo entries. Then, run the NemHandel send invoice workflow created during setup. GOBL Invoices sent to NemHandel require the following properties:$schemato be set tohttps://gobl.org/draft-0/bill/invoicesupplier.tax_id.countryto be set toDK, with the supplier’s 8-digit CVR number as the code- customer routing: an explicit
GLN:endpoint for public institutions, or a Danishtax_idfrom which the participant is derived - the
dk-oioubl-v2addon; the app adds it automatically during conversion if it’s missing, but declaring it up front validates the document at upload time
Example invoice to a public institution (B2G)
Example invoice to a public institution (B2G)
- The
dk-oioubl-v2addon validates and normalizes the document using the OIOUBL 2.1 rules, and pulls in theeu-en16931-v2017addon automatically. - The customer carries a GLN legal identity and a
GLN:endpoint — this is how the document is routed to the institution on the NemHandel network. - The supplier only sets its CVR number as the tax ID; the addon derives the
DK:CVRendpoint from it automatically. - The
debit-transferpayment key maps to UNTDID payment means31(IBAN transfer), one of the codes OIOUBL allows. A BIC is required alongside the IBAN. - There are no totals or calculations; all these will be made automatically when uploading.
Example invoice between businesses (B2B)
Example invoice between businesses (B2B)
- Neither party declares endpoints or inboxes explicitly; the
dk-oioubl-v2addon derives each participant identifier (DK:CVR:<number>) from the Danish tax ID. - Only the VAT rate (
standard) is specified on the lines; Denmark’s single 25% rate and the amounts are calculated on build. - There are no totals or calculations; all these will be made automatically when uploading.
Example credit note
Example credit note
- The
typeis set tocredit-note, which maps to UNTDID document type381on build. - The
precedingarray references the original invoice byseries,code, andissue_date. - There are no totals or calculations; all these will be made automatically when uploading.
FAQ
Invoicing questionsHow are invoices routed to the right recipient?
How are invoices routed to the right recipient?
GLN:5798009883735 for a public institution’s EAN/GLN number), that identifier is used. If a Danish customer only carries a CVR number in its tax ID, the dk-oioubl-v2 GOBL addon derives the participant identifier (DK:CVR:<number>) automatically. Explicit endpoints always win over derived ones.How do I correct or cancel an invoice sent to NemHandel?
How do I correct or cancel an invoice sent to NemHandel?
preceding array. OIOUBL requires non-negative totals, so corrections in Denmark are always credit notes — a negative invoice will fail validation. There is no cancellation mechanism on the network itself: once delivered, a document can only be countered by a credit note.Which payment means does OIOUBL support?
Which payment means does OIOUBL support?
debit-transfer for IBAN bank transfers (code 31, requires a BIC), domestic Danish bank transfers (code 42, account number plus bank registration number), Giro (code 50), and FIK (code 93). A generic credit-transfer (code 30) is rejected by the format.When is an invoice considered sent?
When is an invoice considered sent?
sent once the network reports the document as delivered, so a sent entry means the recipient’s access point accepted it.How do invoices received via NemHandel reach my workspace?
How do invoices received via NemHandel reach my workspace?
What happens if a received document fails to import?
What happens if a received document fails to import?
🇩🇰 Invopop resources for Denmark
🇩🇰 Invopop resources for Denmark