Skip to main content

Compliance questions

Denmark
No. As of 2026, Denmark has no B2B or B2C e-invoicing transmission mandate. The Digital Bookkeeping Act requires businesses to use certified systems that are capable of sending and receiving structured e-invoices (Peppol BIS 3.0 and OIOUBL), but it does not require that every invoice is actually sent electronically. You must be ready to e-invoice, but you are not yet obligated to do so for B2B or B2C transactions.E-invoicing is only mandatory for B2G — all invoices to Danish public authorities must be submitted electronically via NemHandel or the Peppol network. A domestic e-reporting obligation covering B2B is expected around 2028, ahead of the EU ViDA requirements, though nothing has been formally announced.
NemHandel
NemHandel is Denmark’s national e-invoicing network, managed by the Danish Business Authority (Erhvervsstyrelsen). It has been mandatory for invoices to Danish public authorities since February 2005 — the first B2G e-invoicing mandate in Europe. Recipients are identified in the NemHandelsregisteret (NHR), which is integrated with the Peppol SML, and documents travel through a decentralized network of access points.
The NemHandel Denmark app converts GOBL invoices and credit notes to OIOUBL 2.1, Denmark’s national e-invoicing standard and CIUS under EN 16931. OIOUBL 3.0 was formally cancelled in January 2026; 2.1 remains in force until July 2029, validated against Schematron v1.17.2 (mandatory since May 18, 2026), before Denmark migrates to the unified NemHandel BIS 4 standard by mid-2029. Denmark also accepts Peppol BIS Billing 3.0 for B2G — if you prefer to send BIS over the Peppol network, use the Peppol app instead.
No. Denmark has no B2B transmission mandate — only invoices to public authorities must be electronic. However, the Digital Bookkeeping Act requires businesses to use systems capable of sending and receiving e-invoices in OIOUBL and Peppol BIS formats, and many Danish companies exchange B2B invoices over NemHandel voluntarily because the infrastructure is already in place.
Peppol
Mandatory dates vary by country. Belgium requires structured B2B e-invoicing — Peppol BIS by default — from January 2026. Germany is phasing in B2B e-invoicing between 2025 and 2028. France’s Factur-X via Peppol applies once the PA reform takes effect. Outside mandates, Peppol delivery is voluntary but increasingly expected for B2G and cross-border trade.
Yes. Every document exchanged on Peppol BIS uses a UBL or CII syntax that conforms to the EN16931 European e-invoicing standard, plus the relevant Peppol BIS specification. Invopop generates compliant XML automatically when you use the Peppol app.
Peppol is a federated network — anyone could otherwise register a Participant ID for a company they don’t represent. Proof of ownership ties the Participant ID to a verifiable contact at the company, which is what allows the registration to be published on the SML.
Requirements vary by Authority. In Belgium, for example, the supplier must provide a recent extract from the Banque-Carrefour des Entreprises (KBO/BCE) plus a signed mandate. Invopop walks the registering party through the local requirements during the registration wizard.
Yes — a Peppol BIS document delivered through a certified Access Point is treated as the legal e-invoice in any country that recognises Peppol. The signed UBL or CII XML is the authoritative record; archive it alongside any human-readable rendering you generate.
Retention is set by each country’s tax authority — typically 7 to 10 years in the EU. Invopop preserves the original XML and any generated PDF in the silo entry so you can satisfy local archival requirements wherever you operate.

Invoicing questions

NemHandel
Documents on NemHandel are addressed by participant identifier. If the customer declares an endpoint (for example 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.
Issue a credit note referencing the original invoice in the 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.
OIOUBL restricts the UNTDID 4461 payment means codes to a fixed list. The most common mappings from GOBL are 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.
The send step submits the OIOUBL document to the network and then queues until the delivery is confirmed by Invopop’s NemHandel access point. The workflow’s state only advances to sent once the network reports the document as delivered, so a sent entry means the recipient’s access point accepted it.
Peppol
In countries where Peppol is the standard but not mandatory, you may still need to issue an e-invoice when the recipient isn’t on the network. Both parties can agree on an alternative transfer method, but the invoice must still be EN16931 compliant.Recommended approach:
  • Set up a separate workflow that generates the XML without the send-Peppol-document step
  • Or reuse your existing workflow without the customer Peppol ID — the send step is automatically skipped
  • Fetch the generated XML and deliver it through the agreed channel, typically email
B2C invoices typically lack the structured customer information required for Peppol delivery, and most consumers don’t have inboxes. Use a conditional workflow:
  1. Add an If/Else step that checks for a customer inbox using count(customer.inboxes, true) > 0.
  2. On the false branch, generate a PDF and email it to the customer, then stop the flow.
This routes B2B invoices through Peppol while keeping a smooth path for consumers.
If a job fails with KO and receiver not found in the peppol network, treat it like an invalid email address — the recipient simply isn’t reachable on Peppol. Add the Lookup Participant ID step (ideally in a separate validation workflow run against customer data) so you catch missing IDs before generating the invoice.
No. The regime is automatically derived from the supplier’s settings, which is the recommended approach for Peppol — leave it unset on the document.
See the eu-en16931-v2017 addon for the field and validation rules Peppol BIS Billing 3.0 builds on, and the Peppol app reference for supported document types and Participant ID schemes.

Registering supplier questions

NemHandel
Before a company can be registered on NemHandel, its representative must sign an authorization agreement allowing Invopop and its NemHandel access point to exchange documents on the company’s behalf. The registration workflow publishes a public signing link on the party entry; the representative opens it, fills in their name, role, and contact email, signs, and the agreement is submitted for approval. The workflow waits until the agreement is approved before registering the participant.
Someone entitled to represent the company — typically a director or another person with signing authority. The signer provides their full name, their role in the company, and a contact email, and can sign by typing or drawing their signature.
Yes. The registration steps are safe to re-run: an already-signed agreement or an already-registered participant is detected and skipped, so retrying a failed or interrupted registration won’t create duplicates.
Peppol
Upload the company as a party (Console → Parties → Suppliers → + New Supplier, or via the Create an Entry API) with name, tax_id, address, and email. Then run it through the party registration workflow — the contact will receive a registration wizard link to provide proof of ownership.Once approved, the party is registered on the Peppol network (SMP+SML+Peppol visibility by default with the ubl-invoice doc group) and ready to receive invoices.
A supplier with that Participant ID already exists in your workspace. Either reuse the existing party or, if it really is a new entity, check whether it should be registered under an alternative scheme (for example Belgium’s 9925 VAT scheme rather than the default 0208).
Register them through different silo entries, even though they represent the same legal party. The supplier must upload proof of ownership for each inbox.
Unique identifiers for entities on the Peppol network, made up of two parts:
  • Scheme — identifies the type of identifier (e.g. 9920 for Spanish VAT, 0208 for Belgian KBO/BCE)
  • Code — the actual identification number
Participant IDs are usually based on VAT numbers or local business identifiers, and Invopop can derive them automatically from a Tax ID. Some countries support multiple schemes — Belgium, for example, defaults to 0208 but some entities are only registered under 9925 (VAT). If you hit a “receiver not found” error, the recipient may be registered under an alternative scheme.
Peppol Party visibility determines what you can send and receive:
  • smp — SMP only, for testing
  • smp+sml — SMP and SML, useful when you only want to send
  • smp+sml+peppol — SMP, SML, and the Peppol Directory, recommended for both sending and receiving (and for being discoverable in the Directory)
In general, use the highest visibility available.

Receiving questions

NemHandel
Once a party is registered, documents addressed to its participant identifier are delivered to Invopop’s access point. Each delivery triggers the import workflow you selected in the NemHandel Denmark app’s configuration: the import step fetches the OIOUBL document, converts it to GOBL, creates the silo entry, and attaches the original XML along with any embedded binary attachments (such as PDFs).
Deliveries are only acknowledged to the network after the import completes, so a transient failure leaves the document ready to be retried. An hourly reconciliation loop also picks up any deliveries missed by the real-time path. Documents that can never be processed are flagged for review instead of being retried forever.
Peppol
Register the recipient as a Peppol participant with Invopop as their Access Point. Incoming documents are routed through your configured Import workflow, which converts the UBL or CII payload to GOBL and stores the entry in the Expenses folder.
Yes. Either format can be removed based on your needs. The default template includes both for comprehensiveness, but if you’re certain you’ll only receive invoices in one syntax, dropping the other simplifies the workflow and reduces the apps you need to activate.
The Import workflow’s UBL and CII parser steps map the inbound XML into a GOBL invoice. From there you can route it to webhooks, Google Drive, accounting integrations, or any other destination — the GOBL representation is the single source of truth for downstream processing.

Participate in our community

Ask and answer questions about Denmark’s regulation →