Create ZUGFeRD invoices in C#: compliant e-invoices straight from your software
The Creator represents an invoice as a typed .NET object model and serializes it as standard-compliant ZUGFeRD/Factur-X XML (CII) – from MINIMUM to EXTENDED, including the German XRechnung.
- .NET Framework 4.8
- .NET 8
- .NET 10
- ZUGFeRD 2.5.2 / Factur-X 1.09.2
- XRechnung 3.0 (CII & UBL)
dotnet add package Facturexa.ZugferdCreator
Install-Package Facturexa.ZugferdCreator
Typed model
EInvoice with descriptive Set/Add methods for parties, lines,
taxes, payment terms, allowances/charges and referenced documents – every field is
documented with its EN 16931 business term (BT).
Complete code lists
Countries, currencies, tax categories, payment means, units (UN/ECE Rec. 20/21) and other official code lists are available as type-safe enums – no more looking up codes by hand.
Built-in pre-check
InvoiceValidator.Validate(...) checks the invoice object against the
chosen profile before it is written – errors show up when you create the invoice,
not at the recipient.
Coverage
All profiles from MINIMUM to EXTENDED plus XRechnung – written as CII.
| Profile | Description | Validator | Creator |
|---|---|---|---|
| MINIMUM | Header data only, not a valid e-invoice format on its own | ✔ Yes | ✔ Yes |
| BASIC WL | Header data without invoice lines | ✔ Yes | ✔ Yes |
| BASIC | Core information including invoice lines | ✔ Yes | ✔ Yes |
| EN 16931 / COMFORT | European core standard – valid e-invoice format | ✔ Yes | ✔ Yes |
| EXTENDED | Extended data set; from ZUGFeRD 2.5.2 including sub-lines, kits & bundles | ✔ Yes | ✔ Yes |
| XRechnung 3.0 (CIUS) | German B2G core variant, two-stage EN 16931 + CIUS | ✔ Yes (CII + UBL) | ✔ Yes (CII) |
| UBL generation | Output XRechnung as UBL instead of CII | n/a (already validated) | Roadmap |
Integration made simple
Set the invoice data, add lines and taxes, choose a profile, save – the example below uses only the library’s actual public API.
using Facturexa.ZugferdCreator;
// Once at application startup.
ZugferdCreatorLicense.RegisterLicense("…");
var invoice = new EInvoice
{
InvoiceNumber = "INV-2026-0001",
InvoiceDate = DateTime.Today,
Currency = InvoiceCurrencyCode.EUR
};
invoice.SetSellerTradeParty("Sample GmbH", "12345", "Berlin", "Musterstraße 1", CountryID.DE);
invoice.AddSellerSpecifiedTaxRegistration("DE123456789", TaxRegistrationSchemeID.VA);
invoice.SetBuyerTradeParty("Customer AG", "54321", "Hamburg", "Kundenweg 2", CountryID.DE);
invoice.AddIncludedSupplyChainTradeLineItem(
name: "Consulting services",
netUnitPrice: 100.00m,
unitCode: UnitCode.C62,
billedQuantity: 3m,
lineTotalAmount: 300.00m,
taxPercent: 19m);
invoice.AddApplicableTradeTax(
basisAmount: 300.00m, percent: 19m, taxAmount: 57.00m,
typeCode: TaxTypeCode.VAT, categoryCode: TaxCategoryCode.S);
invoice.LineTotalAmount = 300.00m;
invoice.TaxBasisAmount = 300.00m;
invoice.TaxTotalAmount = 57.00m;
invoice.GrandTotalAmount = 357.00m;
invoice.DuePayableAmount = 357.00m;
// Optional: check against the profile before writing.
var findings = InvoiceValidator.Validate(invoice, InvoiceProfile.Comfort);
using var xmlStream = new MemoryStream();
invoice.Save(xmlStream, InvoiceProfile.Comfort);
// xmlStream is then ready at position 0, e.g. for PDF/A-3 embedding.
Validator and Creator in one license
Validate and create e-invoices – for incoming and outgoing invoices alike. The Reader is free.