Add Denmark NemHandel guides, app page, and GOBL examples - #509
Add Denmark NemHandel guides, app page, and GOBL examples#509methodofaction wants to merge 7 commits into
Conversation
Documents the new gov-dk app end to end: - Guide pair: dk-nemhandel-supplier (agreement signing + registration) and dk-nemhandel (send, import, OIOUBL examples) - Denmark app page with actions, workflows, and documents tabs - Workflow snippet pairs for send/import/register/unregister - DK party and invoice examples built with the dk-oioubl-v2 addon - NemHandel FAQ leaves + composers; faq/denmark now uses page-faq - gov-dk provider icon (DK flag) in the workflow diagram component - Nav, resources table, and compliance cross-links Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Workflows to automatically generate PRs for you. |
There was a problem hiding this comment.
Pull request overview
Adds end-to-end documentation for Denmark’s NemHandel integration (gov-dk) across guides, an app catalogue page, reusable workflow snippets, FAQs, and Denmark-specific GOBL examples, integrating these into existing navigation and resource tables.
Changes:
- Added Denmark NemHandel guides (supplier onboarding + invoicing/receiving) and a new Denmark app page.
- Introduced DK workflow snippet pairs (MDX code +
*-data.mdx) and DK GOBL party/invoice examples (min + built). - Wired Denmark content into
docs.json, country resources, compliance page links, apps index, and workflow provider icon mapping.
Reviewed changes
Copilot reviewed 37 out of 37 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
snippets/workflows/dk/dk-unregister.mdx |
New NemHandel unregistration workflow template (MDX code). |
snippets/workflows/dk/dk-unregister-data.mdx |
Data export for rendering the unregistration workflow diagram. |
snippets/workflows/dk/dk-send.mdx |
New NemHandel invoice sending workflow template (MDX code). |
snippets/workflows/dk/dk-send-data.mdx |
Data export for rendering the send workflow diagram. |
snippets/workflows/dk/dk-register.mdx |
New NemHandel supplier registration workflow template (MDX code). |
snippets/workflows/dk/dk-register-data.mdx |
Data export for rendering the registration workflow diagram. |
snippets/workflows/dk/dk-import.mdx |
New NemHandel invoice import workflow template (MDX code). |
snippets/workflows/dk/dk-import-data.mdx |
Data export for rendering the import workflow diagram. |
snippets/tables/denmark-resources.mdx |
Updates Denmark resources table to link NemHandel app/guides + DK regime/addon resources. |
snippets/parties/dk/supplier.mdx |
Adds DK supplier org/party example snippet. |
snippets/parties/dk/customer.mdx |
Adds DK business customer org/party example snippet. |
snippets/parties/dk/customer-government.mdx |
Adds DK public-institution (GLN) customer example snippet. |
snippets/invoices/dk/nemhandel-credit-note.min.mdx |
Minimal DK credit note input example (GOBL). |
snippets/invoices/dk/nemhandel-credit-note.mdx |
Built DK credit note example output. |
snippets/invoices/dk/nemhandel-b2g.min.mdx |
Minimal DK B2G invoice input example (GLN customer). |
snippets/invoices/dk/nemhandel-b2g.mdx |
Built DK B2G invoice example output. |
snippets/invoices/dk/nemhandel-b2b.min.mdx |
Minimal DK B2B invoice input example (CVR customer). |
snippets/invoices/dk/nemhandel-b2b.mdx |
Built DK B2B invoice example output. |
snippets/invoices/dk/accordion.mdx |
Adds an accordion/CodeGroup wrapper to present DK invoice examples in docs. |
snippets/faqs/dk/leaves/nemhandel/supplier.mdx |
Adds NemHandel supplier onboarding FAQ leaf content. |
snippets/faqs/dk/leaves/nemhandel/receiving.mdx |
Adds NemHandel receiving/import FAQ leaf content. |
snippets/faqs/dk/leaves/nemhandel/invoicing.mdx |
Adds NemHandel invoicing/routing/corrections FAQ leaf content. |
snippets/faqs/dk/leaves/nemhandel/compliance.mdx |
Adds NemHandel compliance/format FAQ leaf content. |
snippets/faqs/dk/leaves/country/compliance.mdx |
Adds Denmark country-level compliance FAQ leaf (moved from inline FAQ page). |
snippets/faqs/dk/composers/page-faq.mdx |
New DK FAQ page composer assembling DK + NemHandel + Peppol leaves. |
snippets/faqs/dk/composers/guide-nemhandel-supplier.mdx |
DK supplier-guide FAQ composer. |
snippets/faqs/dk/composers/guide-nemhandel-invoicing.mdx |
DK invoicing/receiving-guide FAQ composer. |
snippets/faqs/dk/composers/app-nemhandel.mdx |
DK app-page FAQ composer. |
snippets/components/workflow.jsx |
Adds gov-dk provider icon mapping for workflow diagram rendering. |
skills/manage-faqs/SKILL.md |
Updates FAQ skill docs for DK nemhandel regime + mapping table. |
guides/dk-nemhandel.mdx |
New Denmark NemHandel invoicing + import guide; embeds workflows, examples, and FAQs. |
guides/dk-nemhandel-supplier.mdx |
New Denmark NemHandel supplier registration/unregistration guide; embeds workflows and FAQs. |
faq/denmark.mdx |
Refactors Denmark FAQ page to render via the new DK page-faq composer. |
docs.json |
Wires Denmark guides into navigation and adds Denmark app under Apps → Government. |
compliance/denmark.mdx |
Adds Denmark app link/card alongside Peppol on the Denmark compliance page. |
apps/index.mdx |
Adds Denmark card to the apps index listing. |
apps/denmark.mdx |
New Denmark app catalogue page with tabs (Description/Actions/Workflows/Documents) and embedded snippets. |
Comments suppressed due to low confidence (6)
snippets/invoices/dk/accordion.mdx:50
- Bullet point ends with “and,” which reads as a dangling conjunction and makes the list ungrammatical.
- the `preceding` array references the original invoice by `series`, `code`, and `issue_date`, and,
snippets/invoices/dk/accordion.mdx:34
- Bullet point ends with “and,” which reads as a dangling conjunction and makes the list ungrammatical.
- 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, and,
snippets/workflows/dk/dk-unregister.mdx:31
- Step name capitalization is inconsistent with other workflows ("Set state") and with its own summary ("Set state …").
snippets/workflows/dk/dk-unregister.mdx:42 - Step name capitalization is inconsistent with other workflows ("Set state") and with its own summary ("Set state …").
snippets/workflows/dk/dk-unregister-data.mdx:22 - Step name capitalization is inconsistent with other workflow data snippets ("Set state") and with its own summary ("Set state …").
snippets/workflows/dk/dk-unregister-data.mdx:33 - Step name capitalization is inconsistent with other workflow data snippets ("Set state") and with its own summary ("Set state …").
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| - we've added the `dk-oioubl-v2` addon; this 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, and, |
There was a problem hiding this comment.
Keeping as is — the trailing ", and," is the established convention across the invoice example accordions (38 occurrences, e.g. snippets/invoices/gr/accordion.mdx): the bullets read as one sentence flowing into the final "there are no totals" item.
🤖 Addressed by Claude Code
Matches the other workflow snippets and the steps' own summaries. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 37 out of 37 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (2)
apps/denmark.mdx:88
- The action card title “Unregister party from Denmark” is inconsistent with the workflow template/action name (“Unregister from NemHandel”). Using the same name across the action list and templates makes it easier to find the correct step in the Console picker.
<Card title="Unregister party from Denmark" icon="https://assets.invopop.com/flags/dk.svg" horizontal>
apps/denmark.mdx:72
- Action card titles should match the actual workflow action names used in the templates (and the step picker). In the Denmark send template the actions are named “Generate OIOUBL” and “Send to NemHandel”, but this page currently uses “Convert to OIOUBL” / “Send invoice to NemHandel”, which makes the docs harder to follow and contradicts the PR note about exact action naming.
This issue also appears on line 88 of the same file.
<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 eCourier confirms delivery.
The fenced-JSON .mdx is now the single hand-edited file per workflow; scripts/build-workflow-data.sh regenerates every -data.mdx companion (--check verifies, a source path argument creates a new one). Running it also picked up a drifted step name in dk-unregister. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 41 out of 41 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (1)
apps/denmark.mdx:88
- The action card title says "Unregister party from Denmark", but the associated workflow step/action elsewhere in this PR is consistently referred to as "Unregister … from NemHandel" (and the card description also references NemHandel). This inconsistency can confuse readers and makes it harder to match the action name to the workflow step.
<Card title="Unregister party from Denmark" icon="https://assets.invopop.com/flags/dk.svg" horizontal>
Corrections against current sources (nemhandel.dk, skat.dk, vatupdate): - Schematron: v1.17.2 hotfix, mandatory since 18 May 2026 (was "v1.17 from May 15, 2026", stated as upcoming) - Single-standard plan is now concrete: NemHandel BIS 4 announced Feb 2026, migration 2028 - mid-2029, OIOUBL 2.1 until July 2029 (replaces the "likely PINT or Danish CIUS, tbd" framing) - POS/ESR scope per skat.dk: turnover below DKK 10M, four sectors incl. restaurants and grocery/24-hour stores (was "DKK 50k-10M") - Softened the ~2028 domestic e-reporting estimate: not formally announced; Denmark's stated focus is ViDA readiness by 2030 Also adds Denmark app cards/links to the timeline updates, the Bookkeeping Act accordion, the country FAQ leaf, and a NemHandel mention on the Europe overview. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 43 out of 43 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (1)
apps/denmark.mdx:88
- The action card title says “Unregister party from Denmark”, but the underlying workflow step/provider is “Unregister party from NemHandel” (
gov-dk.unregister). Keeping the same wording across the app page and workflow snippets will avoid confusion when users look for the action in the Console step picker.
<Card title="Unregister party from Denmark" icon="https://assets.invopop.com/flags/dk.svg" horizontal>
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Workflows to automatically generate PRs for you. |
There was a problem hiding this comment.
Hi just a few points.
-
Do we want to mention ecourier?
-
I would maybe call it Nemhandel Denmark or something as Peppol is also available, and for pricing we would prefer people use Peppol probably.
-
In Example invoice the bullet points look a bit wonky (run on sentences between bullet points).
-
For the Agreement in Nemhandel supplier registration, we do require the document to be signed, and the testing network is official. I wouldt say the signed with test data, no legal effect as it could become problematic.
-
Unregistering removes the participant from the NemHandel registry. To onboard the same supplier again later, you’ll need to run the full registration workflow, including a new authorization agreement.Do we want to do this? Currently if it is same silo entry we reuse the agreement.
- Rename the app page to NemHandel Denmark (apps/nemhandel-denmark) and add a note steering B2G-only users toward the Peppol app - Drop eCourier from docs prose; workflow JSON step summaries keep it since they mirror the console templates - Rework the example-invoice bullets into self-contained sentences - Fix the sandbox agreement wording: signing is required in both environments and the test network is official - Correct the unregister warning: re-registering the same party entry reuses the signed authorization agreement Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Thanks @CarlosMari — all five points addressed in 5e01309:
🤖 Addressed by Claude Code |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 43 out of 43 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (2)
apps/nemhandel-denmark.mdx:92
- The action name here is inconsistent with the workflow/template step name ("Unregister party from NemHandel" in
snippets/workflows/dk/dk-unregister(.mdx|-data.mdx)). If these are meant to match the Console step picker and the workflow JSON, the title should use the same wording (NemHandel vs Denmark).
<Card title="Unregister party from Denmark" icon="https://assets.invopop.com/flags/dk.svg" horizontal>
docs.json:516
- The PR description says the new app page is at
/apps/denmark, but this navigation entry (and the added page file) uses/apps/nemhandel-denmarkand there is no/apps/denmarkpage/redirect in this PR. This mismatch can confuse reviewers and would break any links that follow the PR description.
"/apps/dian-colombia",
"/apps/france",
"/apps/ilyda-greece",
"/apps/nemhandel-denmark",
"/apps/poland",
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 43 out of 43 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (1)
apps/nemhandel-denmark.mdx:92
- The action title says "Unregister party from Denmark", but the workflow step and the description refer to NemHandel. This likely won’t match the Console step picker naming and is inconsistent with the other NemHandel action titles on this page.
<Card title="Unregister party from Denmark" icon="https://assets.invopop.com/flags/dk.svg" horizontal>
Keeps both the Denmark and Finland additions in the guides nav and the workflow diagram icon map. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
What
Documents the new gov-dk app (NemHandel integration via eCourier) end to end:
/guides/dk-nemhandel-supplier(authorization agreement signing → approval → participant registration, plus unregistration) and/guides/dk-nemhandel(send workflow, import of received documents, OIOUBL example invoices)./apps/nemhandel-denmark("NemHandel Denmark", renamed from /apps/denmark per review), country-umbrella archetype with Description / Actions / Workflows / Documents tabs. Action names match the Console step picker exactly; no pop-count badges since the app's actions show no credit cost yet.snippets/workflows/dk/pairs (send, import, register, unregister) mirroring the Console templates verbatim, incl. one title typo fix (register template's code block said "send invoice").snippets/parties/dk/(supplier, business customer, GLN public-institution customer) andsnippets/invoices/dk/(B2G, B2B, credit note) built with thedk-oioubl-v2addon. Built with a gobl CLI compiled from gobl.dev main +gobl.dk.oioubl(the addon isn't in the released CLI bundle yet).nemhandelregime leaves (compliance / invoicing / supplier / receiving) + guide and app composers;faq/denmark.mdxnow renders through apage-faqcomposer (inline question moved to the country compliance leaf); manage-faqs manifest/registry updated.gov-dk→ DK-flag entry in the workflow diagram's provider icon map (noapps/gov-dk/icon.svgon the CDN yet — swap in when published).Why
The Denmark integration (gov-dk + gobl.dk.oioubl) is landing and needs its guide family and app catalogue page, following the
create-country-guide/create-app-pageskills.Review notes
<dir>-<basename>convention:dk-dk-send,dk-dk-register,dk-dk-import,dk-dk-unregister— worth double-checking once the templates are deployed to Console.mint dev: both guides, the app page's four tabs, FAQ page, and compliance page all render;mint broken-linkspasses.🤖 Generated with Claude Code