Skip to main content
Denmark uses the Peppol network and the Peppol BIS Billing UBL format. However, unlike Belgium, Danish Peppol participant IDs come in a wide variety of schemes — GLN numbers, CVR numbers, and others — and they don’t all derive from the VAT number. This makes automatic lookup unreliable, so this workflow does not include a Lookup Peppol participant step. You will need to set the Peppol ID directly on each customer as a custom field. If you do want to use automatic lookup for some customers, you can add the lookup step from the generic Peppol template. This guide assumes you have already connected the Chargebee app and completed the general setup — see the Chargebee overview first if you haven’t. Required apps: Peppol, OASIS UBL
Before processing any invoices, you must register your supplier on the Peppol network through Invopop. See the Peppol guide for full registration steps.

Workflow

Chargebee DK E-invoicing

Syncs with Chargebee and sends via Peppol to Danish customers, with automatic SEPA payment key handling.

Peppol participant ID

Since there is no automatic lookup, the Peppol Participant ID must be set on each Danish customer before any invoices are processed. Use Chargebee’s bulk operations to back-populate this field across all your Danish customers before going live.
The metadata keys listed above follow the Chargebee metadata format (hyphens, no cf_ prefix). If you prefer to use custom fields instead, replace hyphens with underscores and add the cf_ prefix. See Custom fields & metadata for details.

SEPA payment key

The workflow includes one Denmark-specific step: Fixing bank-transfer details. If Chargebee sends a credit-transfer payment instruction on the invoice, this step automatically converts it to credit-transfer+sepa. Plain credit-transfer is not accepted in Denmark — the more specific SEPA variant is required. If the invoice has no payment instructions, the step is skipped. That’s the only difference from a standard Peppol workflow.

FAQ

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 oasis-ubl-v2 addon and the Peppol app reference for required fields, supported document types, and Participant ID schemes.
More available in our Denmark FAQ section

Participate in our community

Ask and answer questions about your Chargebee integration →