> ## Documentation Index
> Fetch the complete documentation index at: https://invopop-dk.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# NemHandel Denmark

> Register suppliers and exchange OIOUBL invoices over Denmark's NemHandel network.

<Tabs>
  <Tab title="Description">
    <Columns cols="2">
      <div class="flex flex-col grow items-center justify-center">
        <Card title="Register suppliers" icon="https://assets.invopop.com/flags/dk.svg" href="/guides/dk-nemhandel-supplier" horizontal>
          Supplier registration guide ›
        </Card>

        <Card title="Issue invoices" icon="https://assets.invopop.com/flags/dk.svg" href="/guides/dk-nemhandel" horizontal>
          Issuing guide ›
        </Card>
      </div>

      |           |                                |
      | --------- | ------------------------------ |
      | Developer | [Invopop](https://invopop.com) |
      | Category  | Government                     |
      | Scope     | B2G, B2B                       |
      | System    | NemHandel (Erhvervsstyrelsen)  |
      | Country   | [Denmark](/compliance/denmark) |
    </Columns>

    [NemHandel](https://erhvervsstyrelsen.dk/nemhandel) is Denmark's national e-invoicing network, managed by the Danish Business Authority (*Erhvervsstyrelsen*). Invoicing Danish public authorities through it has been mandatory since 2005 — the first B2G mandate in Europe — and Danish businesses exchange B2B invoices over the same infrastructure, with the Digital Bookkeeping Act requiring every business system to be e-invoicing-capable.

    The NemHandel Denmark app converts GOBL invoices and credit notes to **OIOUBL 2.1**, Denmark's UBL-based national format, and exchanges them over the network: outbound documents are delivered through Invopop's NemHandel access point, and documents addressed to your registered suppliers are imported back into your workspace automatically.

    Supplier onboarding is handled end to end in a workflow: the supplier's representative signs the authorization agreement through a hosted signing page, and once approved the party is registered as a NemHandel participant.

    <Note>
      Danish public authorities also accept Peppol BIS Billing 3.0 over the Peppol network. If you don't specifically need OIOUBL or NemHandel participant registration, the [Peppol app](/apps/peppol) is usually the simpler option.
    </Note>

    #### Key features

    * **Workflow automation:** Convert, deliver, and import documents with no-code workflows.
    * **OIOUBL 2.1:** Danish CIUS of EN 16931, generated and parsed natively from GOBL.
    * **Supplier onboarding:** Hosted authorization agreement signing and participant registration.
    * **Receiving:** Documents delivered to registered suppliers are converted to GOBL and stored with their original XML and attachments.

    Check out the guides below to get started:

    * [Supplier registration](/guides/dk-nemhandel-supplier) · [Issuing invoices](/guides/dk-nemhandel)

    ## FAQ

    Invoicing questions

    <AccordionGroup>
      <Accordion title="How are invoices routed to the right recipient?">
        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.
      </Accordion>

      <Accordion title="How do I correct or cancel an invoice sent to NemHandel?">
        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.
      </Accordion>

      <Accordion title="Which payment means does OIOUBL support?">
        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.
      </Accordion>

      <Accordion title="When is an invoice considered sent?">
        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.
      </Accordion>
    </AccordionGroup>

    Registering supplier questions

    <AccordionGroup>
      <Accordion title="What is the NemHandel authorization agreement?">
        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.
      </Accordion>

      <Accordion title="Who should sign the agreement?">
        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.
      </Accordion>

      <Accordion title="Can I run the registration workflow more than once?">
        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.
      </Accordion>
    </AccordionGroup>

    Receiving questions

    <AccordionGroup>
      <Accordion title="How do invoices received via NemHandel reach my workspace?">
        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).
      </Accordion>

      <Accordion title="What happens if a received document fails to import?">
        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.
      </Accordion>
    </AccordionGroup>

    More answers in our [Denmark FAQ](/faq/denmark) section
  </Tab>

  <Tab title="Actions">
    The following workflow actions will be available once you install and enable this app:

    Invoicing

    <Card title="Convert to OIOUBL" icon="https://assets.invopop.com/flags/dk.svg" horizontal>
      Convert a GOBL invoice or credit note to an OIOUBL 2.1 document, attached to the entry under the `oioubl` file key.
    </Card>

    <Card title="Send invoice to NemHandel" icon="https://assets.invopop.com/flags/dk.svg" horizontal>
      Submit the converted OIOUBL document to the network, queueing until delivery is confirmed.
    </Card>

    <Card title="Import invoice from NemHandel" icon="https://assets.invopop.com/flags/dk.svg" horizontal>
      Fetch a received OIOUBL document, convert it to GOBL, and store it with the original XML and any embedded attachments.
    </Card>

    Registration

    <Card title="Sign agreement for Denmark" icon="https://assets.invopop.com/flags/dk.svg" horizontal>
      Publish a public signing link in the party's `meta` for the supplier's representative to sign the NemHandel authorization agreement.
    </Card>

    <Card title="Wait for Denmark agreement approval" icon="https://assets.invopop.com/flags/dk.svg" horizontal>
      Pause the workflow until the signed agreement is approved.
    </Card>

    <Card title="Register party with NemHandel" icon="https://assets.invopop.com/flags/dk.svg" horizontal>
      Register the party as a NemHandel participant so it can send and receive documents on the network.
    </Card>

    <Card title="Unregister party from Denmark" icon="https://assets.invopop.com/flags/dk.svg" horizontal>
      Release the party's NemHandel registration so it no longer sends or receives invoices.
    </Card>
  </Tab>

  <Tab title="Workflows">
    Invoice workflows

    <AccordionGroup>
      <Accordion title="NemHandel send invoice">
        ```json Example NemHandel send invoice workflow theme={"system"}
        {
            "name": "NemHandel send invoice",
            "description": "Convert an invoice to OIOUBL and send it over the NemHandel network",
            "schema": "bill/invoice",
            "steps": [
                {
                    "id": "e3ad87b2-88d1-11f1-8000-920007eb4d91",
                    "name": "Set state",
                    "provider": "silo.state",
                    "summary": "Set state to `processing`{.state .processing}",
                    "config": {
                        "state": "processing"
                    }
                },
                {
                    "id": "e3add26c-88d1-11f1-8000-920007eb4d91",
                    "name": "Add sequential code",
                    "provider": "sequence.enumerate",
                    "summary": "Dynamic · NemHandel · 000001",
                    "config": {
                        "name": "NemHandel",
                        "padding": 6,
                        "start": 1
                    }
                },
                {
                    "id": "e3ae403a-88d1-11f1-8000-920007eb4d91",
                    "name": "Sign Envelope",
                    "provider": "silo.close"
                },
                {
                    "id": "e3afc3a6-88d1-11f1-8000-920007eb4d91",
                    "name": "Generate OIOUBL",
                    "provider": "gov-dk.convert",
                    "summary": "OIOUBL 2.1 Invoice/CreditNote"
                },
                {
                    "id": "e3aea606-88d1-11f1-8000-920007eb4d91",
                    "name": "Send to NemHandel",
                    "provider": "gov-dk.send",
                    "summary": "Submits and queues until eCourier confirms delivery"
                },
                {
                    "id": "e3af29be-88d1-11f1-8000-920007eb4d91",
                    "name": "Set state",
                    "provider": "silo.state",
                    "summary": "Set state to `sent`{.state .sent}",
                    "config": {
                        "state": "sent"
                    }
                }
            ],
            "rescue": [
                {
                    "id": "e3af4e58-88d1-11f1-8000-920007eb4d91",
                    "name": "Set state",
                    "provider": "silo.state",
                    "summary": "Set state to `error`{.state .error}",
                    "config": {
                        "state": "error"
                    }
                }
            ]
        }
        ```
      </Accordion>

      <Accordion title="NemHandel import invoice">
        ```json Example NemHandel import invoice workflow theme={"system"}
        {
            "name": "NemHandel import invoice",
            "description": "Import a received OIOUBL document delivered via NemHandel",
            "schema": "bill/invoice",
            "steps": [
                {
                    "id": "a1c0f2df-4f6a-11f1-9c2d-0242ac120010",
                    "name": "Import invoice from NemHandel",
                    "provider": "gov-dk.import",
                    "summary": "Fetches, parses OIOUBL, and converts to GOBL in one step"
                },
                {
                    "id": "a1c0f2e2-4f6a-11f1-9c2d-0242ac120010",
                    "name": "Set state",
                    "provider": "silo.state",
                    "summary": "Set state to `registered`{.state .registered}",
                    "config": {
                        "state": "registered"
                    }
                }
            ],
            "rescue": [
                {
                    "id": "a1c0f2e3-4f6a-11f1-9c2d-0242ac120010",
                    "name": "Set state",
                    "provider": "silo.state",
                    "summary": "Set state to `error`{.state .error}",
                    "config": {
                        "state": "error"
                    }
                }
            ]
        }
        ```
      </Accordion>
    </AccordionGroup>

    Party workflows

    <AccordionGroup>
      <Accordion title="NemHandel register party">
        ```json Example NemHandel register party workflow theme={"system"}
        {
            "name": "NemHandel register party",
            "description": "Register a party to send and receive invoices via NemHandel",
            "schema": "org/party",
            "steps": [
                {
                    "id": "c3e2b400-4f6a-11f1-9c2d-0242ac120012",
                    "name": "Set state",
                    "provider": "silo.state",
                    "summary": "Set state to `processing`{.state .processing}",
                    "config": {
                        "state": "processing"
                    }
                },
                {
                    "id": "e3af78f6-88d1-11f1-8000-920007eb4d91",
                    "name": "Sign agreement for Denmark",
                    "provider": "gov-dk.sign"
                },
                {
                    "id": "e3af9d5e-88d1-11f1-8000-920007eb4d91",
                    "name": "Wait for Denmark agreement approval",
                    "provider": "gov-dk.wait.approval"
                },
                {
                    "id": "c3e2b401-4f6a-11f1-9c2d-0242ac120012",
                    "name": "Register party with NemHandel",
                    "provider": "gov-dk.register"
                },
                {
                    "id": "c3e2b402-4f6a-11f1-9c2d-0242ac120012",
                    "name": "Set state",
                    "provider": "silo.state",
                    "summary": "Set state to `registered`{.state .registered}",
                    "config": {
                        "state": "registered"
                    }
                }
            ],
            "rescue": [
                {
                    "id": "c3e2b403-4f6a-11f1-9c2d-0242ac120012",
                    "name": "Set state",
                    "provider": "silo.state",
                    "summary": "Set state to `error`{.state .error}",
                    "config": {
                        "state": "error"
                    }
                }
            ]
        }
        ```
      </Accordion>

      <Accordion title="Unregister from NemHandel">
        ```json Example unregister from NemHandel theme={"system"}

        {
            "name": "Unregister from NemHandel",
            "description": "Release a party's NemHandel registration so it no longer sends or receives invoices",
            "schema": "org/party",
            "steps": [
                {
                    "id": "b0ebea5e-8907-11f1-8000-920007eb4d91",
                    "name": "Set state",
                    "provider": "silo.state",
                    "summary": "Set state to `processing`{.state .processing}",
                    "config": {
                        "state": "processing"
                    }
                },
                {
                    "id": "b0ec50f2-8907-11f1-8000-920007eb4d91",
                    "name": "Unregister party from NemHandel",
                    "provider": "gov-dk.unregister"
                },
                {
                    "id": "b0ecc1fe-8907-11f1-8000-920007eb4d91",
                    "name": "Set state",
                    "provider": "silo.state",
                    "summary": "Set state to `void`{.state .void}",
                    "config": {
                        "state": "void"
                    }
                }
            ],
            "rescue": [
                {
                    "id": "b0ed13f2-8907-11f1-8000-920007eb4d91",
                    "name": "Set state",
                    "provider": "silo.state",
                    "summary": "Set state to `error`{.state .error}",
                    "config": {
                        "state": "error"
                    }
                }
            ]
        }
        ```
      </Accordion>
    </AccordionGroup>
  </Tab>

  <Tab title="Documents">
    <AccordionGroup>
      <Accordion title="Denmark supplier">
        A Danish supplier needs its 8-digit CVR number as the tax ID — the NemHandel participant identifier is derived from it automatically.

        ```json Denmark supplier example theme={"system"}
        {
            "$schema": "https://gobl.org/draft-0/org/party",
            "name": "Tavleleverandøren ApS",
            "tax_id": {
                "country": "DK",
                "code": "16356700"
            },
            "people": [
                {
                    "name": {
                        "given": "Hugo Jensen"
                    }
                }
            ],
            "addresses": [
                {
                    "num": "11",
                    "street": "Leverandørvej",
                    "locality": "Dyssegård",
                    "code": "2870",
                    "country": "DK"
                }
            ],
            "emails": [
                {
                    "addr": "faktura@tavleleverandoren.dk"
                }
            ]
        }
        ```
      </Accordion>

      <Accordion title="Denmark customer (business)">
        A Danish business customer is also identified by its CVR number alone.

        ```json Denmark customer example theme={"system"}
        {
            "$schema": "https://gobl.org/draft-0/org/party",
            "name": "Nordisk Handel A/S",
            "tax_id": {
                "country": "DK",
                "code": "13585628"
            },
            "people": [
                {
                    "name": {
                        "given": "Mette Sørensen"
                    }
                }
            ],
            "addresses": [
                {
                    "num": "42",
                    "street": "Østergade",
                    "locality": "København K",
                    "code": "1100",
                    "country": "DK"
                }
            ],
            "emails": [
                {
                    "addr": "bogholderi@nordiskhandel.dk"
                }
            ]
        }
        ```
      </Accordion>

      <Accordion title="Denmark customer (public institution)">
        Public institutions are addressed by their EAN/GLN number, declared as a legal identity and a `GLN:` endpoint.

        ```json Denmark public institution customer example theme={"system"}
        {
            "$schema": "https://gobl.org/draft-0/org/party",
            "name": "Den Lille Skole",
            "identities": [
                {
                    "scope": "legal",
                    "code": "5798009883735",
                    "ext": {
                        "iso-scheme-id": "GLN"
                    }
                }
            ],
            "endpoints": [
                {
                    "uri": "GLN:5798009883735"
                }
            ],
            "people": [
                {
                    "name": {
                        "given": "Hans Hansen"
                    }
                }
            ],
            "addresses": [
                {
                    "num": "10",
                    "street": "Fredericiavej",
                    "locality": "Helsingør",
                    "code": "3000",
                    "country": "DK"
                }
            ],
            "emails": [
                {
                    "addr": "faktura@denlilleskole.dk"
                }
            ]
        }
        ```
      </Accordion>
    </AccordionGroup>

    <AccordionGroup>
      <Accordion title="Example invoice to a public institution (B2G)">
        In this example, we're issuing an invoice from a Danish supplier to a public institution — the classic NemHandel use case. Public entities are identified by their EAN/GLN number in the NemHandelsregisteret.

        Notice:

        * The `dk-oioubl-v2` addon validates and normalizes the document using the OIOUBL 2.1 rules, and pulls in the `eu-en16931-v2017` addon 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:CVR` endpoint from it automatically.
        * The `debit-transfer` payment key maps to UNTDID payment means `31` (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.

        <CodeGroup>
          ```json B2G invoice (GLN customer) theme={"system"}
          {
            "$schema": "https://gobl.org/draft-0/bill/invoice",
            "$addons": [
              "dk-oioubl-v2"
            ],
            "series": "NH",
            "code": "0042",
            "currency": "DKK",
            "supplier": {
              "name": "Tavleleverandøren ApS",
              "tax_id": {
                "country": "DK",
                "code": "16356700"
              },
              "people": [
                {
                  "name": {
                    "given": "Hugo Jensen"
                  }
                }
              ],
              "addresses": [
                {
                  "num": "11",
                  "street": "Leverandørvej",
                  "locality": "Dyssegård",
                  "code": "2870",
                  "country": "DK"
                }
              ],
              "emails": [
                {
                  "addr": "faktura@tavleleverandoren.dk"
                }
              ]
            },
            "customer": {
              "name": "Den Lille Skole",
              "identities": [
                {
                  "scope": "legal",
                  "code": "5798009883735",
                  "ext": {
                    "iso-scheme-id": "GLN"
                  }
                }
              ],
              "endpoints": [
                {
                  "uri": "GLN:5798009883735"
                }
              ],
              "people": [
                {
                  "name": {
                    "given": "Hans Hansen"
                  }
                }
              ],
              "addresses": [
                {
                  "num": "10",
                  "street": "Fredericiavej",
                  "locality": "Helsingør",
                  "code": "3000",
                  "country": "DK"
                }
              ],
              "emails": [
                {
                  "addr": "faktura@denlilleskole.dk"
                }
              ]
            },
            "lines": [
              {
                "quantity": "1",
                "item": {
                  "name": "Hejsetavle",
                  "price": "5000.00",
                  "unit": "item"
                },
                "taxes": [
                  {
                    "cat": "VAT",
                    "rate": "standard"
                  }
                ]
              },
              {
                "quantity": "2",
                "item": {
                  "name": "Beslag",
                  "price": "25.00",
                  "unit": "item"
                },
                "taxes": [
                  {
                    "cat": "VAT",
                    "rate": "standard"
                  }
                ]
              }
            ],
            "ordering": {
              "cost": "5250124502"
            },
            "payment": {
              "instructions": {
                "key": "debit-transfer",
                "credit_transfer": [
                  {
                    "iban": "DK5000400440116243",
                    "bic": "DABADKKK"
                  }
                ]
              }
            }
          }
          ```

          ```json Built version theme={"system"}
          {
          	"$schema": "https://gobl.org/draft-0/bill/invoice",
          	"$regime": "DK",
          	"$addons": [
          		"eu-en16931-v2017",
          		"dk-oioubl-v2"
          	],
          	"type": "standard",
          	"series": "NH",
          	"code": "0042",
          	"issue_date": "2026-07-28",
          	"currency": "DKK",
          	"tax": {
          		"rounding": "currency",
          		"ext": {
          			"untdid-document-type": "380"
          		}
          	},
          	"supplier": {
          		"name": "Tavleleverandøren ApS",
          		"tax_id": {
          			"country": "DK",
          			"code": "16356700"
          		},
          		"identities": [
          			{
          				"scope": "legal",
          				"code": "16356700"
          			}
          		],
          		"people": [
          			{
          				"name": {
          					"given": "Hugo Jensen"
          				}
          			}
          		],
          		"endpoints": [
          			{
          				"uri": "DK:CVR:16356700"
          			}
          		],
          		"addresses": [
          			{
          				"num": "11",
          				"street": "Leverandørvej",
          				"locality": "Dyssegård",
          				"code": "2870",
          				"country": "DK"
          			}
          		],
          		"emails": [
          			{
          				"addr": "faktura@tavleleverandoren.dk"
          			}
          		]
          	},
          	"customer": {
          		"name": "Den Lille Skole",
          		"identities": [
          			{
          				"scope": "legal",
          				"code": "5798009883735",
          				"ext": {
          					"iso-scheme-id": "GLN"
          				}
          			}
          		],
          		"people": [
          			{
          				"name": {
          					"given": "Hans Hansen"
          				}
          			}
          		],
          		"endpoints": [
          			{
          				"uri": "GLN:5798009883735"
          			}
          		],
          		"addresses": [
          			{
          				"num": "10",
          				"street": "Fredericiavej",
          				"locality": "Helsingør",
          				"code": "3000",
          				"country": "DK"
          			}
          		],
          		"emails": [
          			{
          				"addr": "faktura@denlilleskole.dk"
          			}
          		]
          	},
          	"lines": [
          		{
          			"i": 1,
          			"quantity": "1",
          			"item": {
          				"name": "Hejsetavle",
          				"price": "5000.00",
          				"unit": "item"
          			},
          			"sum": "5000.00",
          			"taxes": [
          				{
          					"cat": "VAT",
          					"key": "standard",
          					"rate": "general",
          					"percent": "25.0%"
          				}
          			],
          			"total": "5000.00"
          		},
          		{
          			"i": 2,
          			"quantity": "2",
          			"item": {
          				"name": "Beslag",
          				"price": "25.00",
          				"unit": "item"
          			},
          			"sum": "50.00",
          			"taxes": [
          				{
          					"cat": "VAT",
          					"key": "standard",
          					"rate": "general",
          					"percent": "25.0%"
          				}
          			],
          			"total": "50.00"
          		}
          	],
          	"ordering": {
          		"cost": "5250124502"
          	},
          	"payment": {
          		"instructions": {
          			"key": "debit-transfer",
          			"credit_transfer": [
          				{
          					"iban": "DK5000400440116243",
          					"bic": "DABADKKK"
          				}
          			],
          			"ext": {
          				"untdid-payment-means": "31"
          			}
          		}
          	},
          	"totals": {
          		"sum": "5050.00",
          		"total": "5050.00",
          		"taxes": {
          			"categories": [
          				{
          					"code": "VAT",
          					"rates": [
          						{
          							"key": "standard",
          							"base": "5050.00",
          							"percent": "25.0%",
          							"amount": "1262.50"
          						}
          					],
          					"amount": "1262.50"
          				}
          			],
          			"sum": "1262.50"
          		},
          		"tax": "1262.50",
          		"total_with_tax": "6312.50",
          		"payable": "6312.50"
          	}
          }
          ```
        </CodeGroup>
      </Accordion>

      <Accordion title="Example invoice between businesses (B2B)">
        In this example, we're issuing an invoice from one Danish company to another. Both parties are identified by their CVR numbers alone.

        Notice:

        * Neither party declares endpoints or inboxes explicitly; the `dk-oioubl-v2` addon derives each participant identifier (`DK:CVR:<number>`) from the Danish tax ID.
        * Only the [VAT rate](https://docs.gobl.org/regimes/dk) (`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.

        <CodeGroup>
          ```json B2B invoice (CVR customer) theme={"system"}
          {
            "$schema": "https://gobl.org/draft-0/bill/invoice",
            "$addons": [
              "dk-oioubl-v2"
            ],
            "series": "NH",
            "code": "0043",
            "currency": "DKK",
            "supplier": {
              "name": "Tavleleverandøren ApS",
              "tax_id": {
                "country": "DK",
                "code": "16356700"
              },
              "people": [
                {
                  "name": {
                    "given": "Hugo Jensen"
                  }
                }
              ],
              "addresses": [
                {
                  "num": "11",
                  "street": "Leverandørvej",
                  "locality": "Dyssegård",
                  "code": "2870",
                  "country": "DK"
                }
              ],
              "emails": [
                {
                  "addr": "faktura@tavleleverandoren.dk"
                }
              ]
            },
            "customer": {
              "name": "Nordisk Handel A/S",
              "tax_id": {
                "country": "DK",
                "code": "13585628"
              },
              "people": [
                {
                  "name": {
                    "given": "Mette Sørensen"
                  }
                }
              ],
              "addresses": [
                {
                  "num": "42",
                  "street": "Østergade",
                  "locality": "København K",
                  "code": "1100",
                  "country": "DK"
                }
              ],
              "emails": [
                {
                  "addr": "bogholderi@nordiskhandel.dk"
                }
              ]
            },
            "lines": [
              {
                "quantity": "20",
                "item": {
                  "name": "Konsulenttimer",
                  "price": "900.00",
                  "unit": "h"
                },
                "taxes": [
                  {
                    "cat": "VAT",
                    "rate": "standard"
                  }
                ]
              }
            ],
            "payment": {
              "instructions": {
                "key": "debit-transfer",
                "credit_transfer": [
                  {
                    "iban": "DK5000400440116243",
                    "bic": "DABADKKK"
                  }
                ]
              }
            }
          }
          ```

          ```json Built version theme={"system"}
          {
          	"$schema": "https://gobl.org/draft-0/bill/invoice",
          	"$regime": "DK",
          	"$addons": [
          		"eu-en16931-v2017",
          		"dk-oioubl-v2"
          	],
          	"type": "standard",
          	"series": "NH",
          	"code": "0043",
          	"issue_date": "2026-07-28",
          	"currency": "DKK",
          	"tax": {
          		"rounding": "currency",
          		"ext": {
          			"untdid-document-type": "380"
          		}
          	},
          	"supplier": {
          		"name": "Tavleleverandøren ApS",
          		"tax_id": {
          			"country": "DK",
          			"code": "16356700"
          		},
          		"identities": [
          			{
          				"scope": "legal",
          				"code": "16356700"
          			}
          		],
          		"people": [
          			{
          				"name": {
          					"given": "Hugo Jensen"
          				}
          			}
          		],
          		"endpoints": [
          			{
          				"uri": "DK:CVR:16356700"
          			}
          		],
          		"addresses": [
          			{
          				"num": "11",
          				"street": "Leverandørvej",
          				"locality": "Dyssegård",
          				"code": "2870",
          				"country": "DK"
          			}
          		],
          		"emails": [
          			{
          				"addr": "faktura@tavleleverandoren.dk"
          			}
          		]
          	},
          	"customer": {
          		"name": "Nordisk Handel A/S",
          		"tax_id": {
          			"country": "DK",
          			"code": "13585628"
          		},
          		"identities": [
          			{
          				"scope": "legal",
          				"code": "13585628"
          			}
          		],
          		"people": [
          			{
          				"name": {
          					"given": "Mette Sørensen"
          				}
          			}
          		],
          		"endpoints": [
          			{
          				"uri": "DK:CVR:13585628"
          			}
          		],
          		"addresses": [
          			{
          				"num": "42",
          				"street": "Østergade",
          				"locality": "København K",
          				"code": "1100",
          				"country": "DK"
          			}
          		],
          		"emails": [
          			{
          				"addr": "bogholderi@nordiskhandel.dk"
          			}
          		]
          	},
          	"lines": [
          		{
          			"i": 1,
          			"quantity": "20",
          			"item": {
          				"name": "Konsulenttimer",
          				"price": "900.00",
          				"unit": "h"
          			},
          			"sum": "18000.00",
          			"taxes": [
          				{
          					"cat": "VAT",
          					"key": "standard",
          					"rate": "general",
          					"percent": "25.0%"
          				}
          			],
          			"total": "18000.00"
          		}
          	],
          	"payment": {
          		"instructions": {
          			"key": "debit-transfer",
          			"credit_transfer": [
          				{
          					"iban": "DK5000400440116243",
          					"bic": "DABADKKK"
          				}
          			],
          			"ext": {
          				"untdid-payment-means": "31"
          			}
          		}
          	},
          	"totals": {
          		"sum": "18000.00",
          		"total": "18000.00",
          		"taxes": {
          			"categories": [
          				{
          					"code": "VAT",
          					"rates": [
          						{
          							"key": "standard",
          							"base": "18000.00",
          							"percent": "25.0%",
          							"amount": "4500.00"
          						}
          					],
          					"amount": "4500.00"
          				}
          			],
          			"sum": "4500.00"
          		},
          		"tax": "4500.00",
          		"total_with_tax": "22500.00",
          		"payable": "22500.00"
          	}
          }
          ```
        </CodeGroup>
      </Accordion>

      <Accordion title="Example credit note">
        In this example, we're issuing a credit note that corrects a previously sent invoice. Corrections in Denmark are always credit notes — OIOUBL requires non-negative totals, so a negative invoice is not allowed.

        Notice:

        * The `type` is set to `credit-note`, which maps to UNTDID document type `381` on build.
        * The `preceding` array references the original invoice by `series`, `code`, and `issue_date`.
        * There are no totals or calculations; all these will be made automatically when uploading.

        <CodeGroup>
          ```json Credit note theme={"system"}
          {
            "$schema": "https://gobl.org/draft-0/bill/invoice",
            "$addons": [
              "dk-oioubl-v2"
            ],
            "type": "credit-note",
            "series": "NH",
            "code": "0044",
            "currency": "DKK",
            "preceding": [
              {
                "series": "NH",
                "code": "0043",
                "issue_date": "2026-07-01"
              }
            ],
            "supplier": {
              "name": "Tavleleverandøren ApS",
              "tax_id": {
                "country": "DK",
                "code": "16356700"
              },
              "people": [
                {
                  "name": {
                    "given": "Hugo Jensen"
                  }
                }
              ],
              "addresses": [
                {
                  "num": "11",
                  "street": "Leverandørvej",
                  "locality": "Dyssegård",
                  "code": "2870",
                  "country": "DK"
                }
              ],
              "emails": [
                {
                  "addr": "faktura@tavleleverandoren.dk"
                }
              ]
            },
            "customer": {
              "name": "Nordisk Handel A/S",
              "tax_id": {
                "country": "DK",
                "code": "13585628"
              },
              "people": [
                {
                  "name": {
                    "given": "Mette Sørensen"
                  }
                }
              ],
              "addresses": [
                {
                  "num": "42",
                  "street": "Østergade",
                  "locality": "København K",
                  "code": "1100",
                  "country": "DK"
                }
              ],
              "emails": [
                {
                  "addr": "bogholderi@nordiskhandel.dk"
                }
              ]
            },
            "lines": [
              {
                "quantity": "2",
                "item": {
                  "name": "Konsulenttimer",
                  "price": "900.00",
                  "unit": "h"
                },
                "taxes": [
                  {
                    "cat": "VAT",
                    "rate": "standard"
                  }
                ]
              }
            ]
          }
          ```

          ```json Built version theme={"system"}
          {
          	"$schema": "https://gobl.org/draft-0/bill/invoice",
          	"$regime": "DK",
          	"$addons": [
          		"eu-en16931-v2017",
          		"dk-oioubl-v2"
          	],
          	"type": "credit-note",
          	"series": "NH",
          	"code": "0044",
          	"issue_date": "2026-07-28",
          	"currency": "DKK",
          	"preceding": [
          		{
          			"issue_date": "2026-07-01",
          			"series": "NH",
          			"code": "0043"
          		}
          	],
          	"tax": {
          		"rounding": "currency",
          		"ext": {
          			"untdid-document-type": "381"
          		}
          	},
          	"supplier": {
          		"name": "Tavleleverandøren ApS",
          		"tax_id": {
          			"country": "DK",
          			"code": "16356700"
          		},
          		"identities": [
          			{
          				"scope": "legal",
          				"code": "16356700"
          			}
          		],
          		"people": [
          			{
          				"name": {
          					"given": "Hugo Jensen"
          				}
          			}
          		],
          		"endpoints": [
          			{
          				"uri": "DK:CVR:16356700"
          			}
          		],
          		"addresses": [
          			{
          				"num": "11",
          				"street": "Leverandørvej",
          				"locality": "Dyssegård",
          				"code": "2870",
          				"country": "DK"
          			}
          		],
          		"emails": [
          			{
          				"addr": "faktura@tavleleverandoren.dk"
          			}
          		]
          	},
          	"customer": {
          		"name": "Nordisk Handel A/S",
          		"tax_id": {
          			"country": "DK",
          			"code": "13585628"
          		},
          		"identities": [
          			{
          				"scope": "legal",
          				"code": "13585628"
          			}
          		],
          		"people": [
          			{
          				"name": {
          					"given": "Mette Sørensen"
          				}
          			}
          		],
          		"endpoints": [
          			{
          				"uri": "DK:CVR:13585628"
          			}
          		],
          		"addresses": [
          			{
          				"num": "42",
          				"street": "Østergade",
          				"locality": "København K",
          				"code": "1100",
          				"country": "DK"
          			}
          		],
          		"emails": [
          			{
          				"addr": "bogholderi@nordiskhandel.dk"
          			}
          		]
          	},
          	"lines": [
          		{
          			"i": 1,
          			"quantity": "2",
          			"item": {
          				"name": "Konsulenttimer",
          				"price": "900.00",
          				"unit": "h"
          			},
          			"sum": "1800.00",
          			"taxes": [
          				{
          					"cat": "VAT",
          					"key": "standard",
          					"rate": "general",
          					"percent": "25.0%"
          				}
          			],
          			"total": "1800.00"
          		}
          	],
          	"totals": {
          		"sum": "1800.00",
          		"total": "1800.00",
          		"taxes": {
          			"categories": [
          				{
          					"code": "VAT",
          					"rates": [
          						{
          							"key": "standard",
          							"base": "1800.00",
          							"percent": "25.0%",
          							"amount": "450.00"
          						}
          					],
          					"amount": "450.00"
          				}
          			],
          			"sum": "450.00"
          		},
          		"tax": "450.00",
          		"total_with_tax": "2250.00",
          		"payable": "2250.00"
          	}
          }
          ```
        </CodeGroup>
      </Accordion>
    </AccordionGroup>

    Copy and paste these documents into the [GOBL builder](https://build.gobl.org) in order to preview and verify them.
  </Tab>
</Tabs>

***

<AccordionGroup>
  <Accordion title="🇩🇰 Invopop resources for Denmark">
    |            |                                                                                                                                                                                                                                                                                        |
    | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | Compliance | <Icon icon="https://assets.invopop.com/flags/dk.svg" /> [Invoicing compliance in Denmark](/compliance/denmark)<br /> <Icon icon="timeline" /> [Compliance timeline](/timelines/denmark)                                                                                                |
    | Apps       | <Icon icon="https://assets.invopop.com/flags/dk.svg" /> [NemHandel Denmark](/apps/nemhandel-denmark)<br /> <Icon icon="https://assets.invopop.com/apps/peppol/icon.svg" /> [Peppol](/apps/peppol)                                                                                      |
    | Guides     | <Icon icon="book" /> [Supplier registration guide](/guides/dk-nemhandel-supplier)<br /> <Icon icon="book" /> [Issuing invoices guide](/guides/dk-nemhandel)<br /> <Icon icon="book" /> [Peppol guide](/guides/peppol)<br /> <Icon icon="book" /> [Chargebee guide](/guides/cb-denmark) |
    | FAQ        | <Icon icon="square-question" /> [Denmark FAQ](/faq/denmark)                                                                                                                                                                                                                            |
    | GOBL       | <Icon icon="https://assets.invopop.com/icons/gobl.svg" /> [Denmark Tax Regime](https://docs.gobl.org/regimes/dk)<br /> <Icon icon="https://assets.invopop.com/icons/gobl.svg" /> [EU EN 16931 Addon](https://docs.gobl.org/addons/eu-en16931-v2017)                                    |
    | GitHub     | <Icon icon="github" /> [gobl.dk.oioubl](https://github.com/invopop/gobl.dk.oioubl)<br /> <Icon icon="github" /> [gobl.ubl](https://github.com/invopop/gobl.ubl)                                                                                                                        |
  </Accordion>
</AccordionGroup>

<Card title="Participate in our community" icon="forumbee" href="https://community.invopop.com" arrow="true" horizontal>
  Ask and answer questions about the NemHandel Denmark app →
</Card>
