Facturexa Creator

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)
Facturexa.ZugferdCreator
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.

C# – Creator.cs
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.

from 500 EUR net / year
companies outside Germany receive a quote on request