- ZUGFeRD is the most common choice for B2B invoicing. It has fewer validation constraints, which is why we always recommend embedding the XML inside a PDF — your customer receives a standard-looking PDF that also contains a machine-readable file. No per-customer setup is required.
- XRechnung is primarily used for B2G invoicing (invoicing public authorities). It has stricter validations and more required fields, but if your customers require it, Invopop fully supports it.
Using Chargebee’s email delivery
For Invopop to update the invoice in Chargebee and trigger Chargebee’s own email delivery to your customer, you will need a Full Access API key. Beyond that, the following conditions must be met in Chargebee — if any of these are not in place, Chargebee will not forward the generated PDF (or XML, in the case of XRechnung) to your customer:- The
SEND_EINVOICE_NOTIFICATIONfeature flag must be enabled on your Chargebee site. Contact your Chargebee representative to enable this. - The
cf_invopop_includecustom field must be present and set totrueon each customer you want to process. - Invoice and credit note email notifications must be enabled on your Chargebee site.
Workflows
- ZUGFeRD (B2B)
- XRechnung (B2G)
Chargebee ZUGFeRD
Syncs with Chargebee, downloads the Chargebee PDF, generates a ZUGFeRD XML, and embeds both into a single hybrid PDF.
Example Chargebee ZUGFeRD workflow
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.FAQ
How do I configure my workspace for German invoicing?
How do I configure my workspace for German invoicing?
Pick a format based on the recipient: XRechnung (UBL or CII) for B2G via Peppol, ZUGFeRD/Factur-X for B2B where a human-readable PDF is also wanted. Both are EN 16931-compliant — Invopop generates either from the same GOBL invoice.
What's the workflow for issuing Peppol invoices in Germany?
What's the workflow for issuing Peppol invoices in Germany?
Generate a GOBL invoice with the
de-xrechnung-v3 addon, then run the Peppol Send workflow. Invopop emits XRechnung (UBL or CII per recipient preference), looks up the recipient’s Access Point, and delivers via Peppol.Which XRechnung syntax should I choose, UBL or CII?
Which XRechnung syntax should I choose, UBL or CII?
Both syntaxes are equally valid and contain the same information, so in the majority of cases the choice has no consequences.If you plan on sending invoices through the Peppol network, we recommend using UBL as it is the supported format. If you plan on also issuing invoices in ZUGFeRD or Factur-X, it might be more convenient to use CII, as it is the syntax also supported by ZUGFeRD and Factur-X.
How can I view an XML attached to a PDF?
How can I view an XML attached to a PDF?
For ZUGFeRD PDFs, the XML file is embedded within the PDF itself. To extract and view it, you can use the
Attachments section in Adobe Acrobat Reader.Alternatively, you can use specialized tools like the SysTools PDF Extractor to extract the XML file.Where do I find Germany-specific GOBL documentation?
Where do I find Germany-specific GOBL documentation?
See the Germany tax regime in GOBL for tax categories and identifiers. The XRechnung mapping lives in
de-xrechnung-v3; ZUGFeRD/Factur-X share the EN 16931 CII profile.What should we do if the customer doesn't belong to the Peppol network?
What should we do if the customer doesn't belong to the Peppol network?
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
How do I handle B2C invoices in Peppol?
How do I handle B2C invoices in Peppol?
B2C invoices typically lack the structured customer information required for Peppol delivery, and most consumers don’t have inboxes. Use a conditional workflow:
- Add an If/Else step that checks for a customer inbox using
count(customer.inboxes, true) > 0. - On the
falsebranch, generate a PDF and email it to the customer, then stop the flow.
How do I handle 'Receiver Not Found' errors?
How do I handle 'Receiver Not Found' errors?
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.Should I set the `$regime` field when using Peppol?
Should I set the `$regime` field when using Peppol?
No. The regime is automatically derived from the supplier’s settings, which is the recommended approach for Peppol — leave it unset on the document.
Where do I find Peppol GOBL documentation?
Where do I find Peppol GOBL documentation?
See the
oasis-ubl-v2 addon and the Peppol app reference for required fields, supported document types, and Participant ID schemes.Participate in our community
Ask and answer questions about your Chargebee integration →