ZUGFeRD, XRechnung, Peppol and EN 16931 for .NET
New! Version 19.1 with HTML invoice view.
Create, validate and export electronic invoices (ZUGFeRD, XRechnung, Factur-X / EN 16931, Peppol BIS Billing 3.0) in C# and Visual Basic with a library that was built to be a pleasure to work with.
Analyze ZUGFeRD XML and PDF/A-3 invoices quickly and reliably – built on more than 10 years of hands-on experience with ZUGFeRD, XRechnung and EN 16931.
FactoorSharp is the official successor to ZUGFeRD-csharp and has already been downloaded more than 1 million times.
Our customers
More than 100 companies handle their e-invoicing with FactoorSharp – here are a few of them.
FactoorSharp lets us implement e-invoicing in C# quickly, reliably and without any hassle. We are very happy with both the SDK and the support.
We process thousands of invoices every month with FactoorSharp. Integration was straightforward and the product is highly reliable.
As a healthcare software vendor, we depend on reliable and stable libraries. Good support and continuous maintenance of those libraries are essential to us, and so is easy integration into our products. That's why we chose FactoorSharp.
Everything you need for e-invoicing
Focus on your business logic – we take care of the standards.
Integration
A .NET SDK that drops straight into your project, with clear models. Works with C#, Visual Basic and every other .NET language.
Comes with a ready-made Agent Skill so coding agents can take on much of the implementation work for you.
Compliance
Electronic invoicing in line with the German Wachstumschancengesetz (Growth Opportunities Act). Create and process EU-compliant invoices to EN 16931 – in both CII and UBL format. Generate compliant PDF/A-3 invoices.
Peppol BIS Billing 3.0 is supported as a CIUS on top of EN 16931 – including the specification identifier and the electronic addresses.
PDF & XML analysis
Inspect ZUGFeRD XML and PDF/A-3 documents for structure, profile, embedded invoice data and the usual sources of error.
Validation
Checks against ZUGFeRD, XRechnung and Factur-X with clear, actionable messages.
Validation of FatturaPA invoices (Italy), Facturae invoices (Spain) and ebInterface invoices (Austria).
What FactoorSharp can do
ZUGFeRD and XRechnung export
Create electronic invoices straight from your .NET application in ZUGFeRD or XRechnung format – standards-compliant and ready to send. All versions, all profiles.
var invoice = FacturXInvoice.CreateInvoice("Invoice-01",
new DateTime(2025,09,03),
CurrencyCodes.EUR)
.SetSeller("BikeTech GmbH", "10115", "Berlin", ...)
.SetBuyer("City Bikes AG", "20457", "Hamburg", ...);
invoice.AddTradeLineItem(name: "Trekking bike",
netUnitPrice: 799.0m,
unitCode: QuantityCodes.C62,
billedQuantity: 1);
invoice.Save("factur-x.xml",
version: ZUGFeRDVersion.Version25,
profile: Profile.Extended);
Dim invoice = FacturXInvoice.CreateInvoice("Invoice-01",
New DateTime(2025, 9, 3),
CurrencyCodes.EUR) _
.SetSeller("BikeTech GmbH", "10115", "Berlin", ...) _
.SetBuyer("City Bikes AG", "20457", "Hamburg", ...)
invoice.AddTradeLineItem(name:="Trekking bike",
netUnitPrice:=799.0D,
unitCode:=QuantityCodes.C62,
billedQuantity:=1)
invoice.Save("factur-x.xml",
version:=ZUGFeRDVersion.Version25,
profile:=Profile.Extended)
ZUGFeRD and XRechnung import
Reads electronic invoices. Supports every ZUGFeRD and XRechnung version and profile, so you can concentrate purely on your business logic.
var invoice = FacturXInvoice.Load("factur-x.xml");
if (invoice.Buyer.Postcode == "10115")
{
// further processing
}
Dim invoice = FacturXInvoice.Load("factur-x.xml")
If invoice.Buyer.Postcode = "10115" Then
' further processing
End If
// flag the invoice as Peppol BIS Billing 3.0 instead of XRechnung (BT-24)
invoice.SpecificationIdentifier = SpecificationIdentifiers.PeppolBisBilling30;
// electronic addresses of seller and buyer (BT-34 / BT-49)
invoice.SetSellerElectronicAddress("DE123456789", ElectronicAddressSchemeIdentifiers.GermanyVatNumber);
invoice.SetBuyerElectronicAddress("DE987654321", ElectronicAddressSchemeIdentifiers.GermanyVatNumber);
invoice.Save("peppol-invoice.xml", ZUGFeRDVersion.Version25, Profile.XRechnung, ZUGFeRDFormats.UBL);
' flag the invoice as Peppol BIS Billing 3.0 instead of XRechnung (BT-24)
invoice.SpecificationIdentifier = SpecificationIdentifiers.PeppolBisBilling30
' electronic addresses of seller and buyer (BT-34 / BT-49)
invoice.SetSellerElectronicAddress("DE123456789", ElectronicAddressSchemeIdentifiers.GermanyVatNumber)
invoice.SetBuyerElectronicAddress("DE987654321", ElectronicAddressSchemeIdentifiers.GermanyVatNumber)
invoice.Save("peppol-invoice.xml", ZUGFeRDVersion.Version25, Profile.XRechnung, ZUGFeRDFormats.UBL)
Peppol BIS Billing 3.0
XRechnung and Peppol BIS Billing 3.0 are both CIUS on top of EN 16931 and share the same UBL structure. The specification identifier (BT-24) turns the same invoice model into either an XRechnung or a Peppol invoice – including the electronic addresses of seller and buyer (BT-34 / BT-49).
Sending invoices over the Peppol network itself (AS4) is not part of the SDK; that requires an access point.
var invoice = FacturXInvoice.CreateInvoice("Invoice-01",
new DateTime(2025,09,03),
CurrencyCodes.EUR);
await FacturXInvoicePdfProcessor.SaveToPdfAsync(
"FacturX-invoice.pdf",
ZUGFeRDVersion.Version25,
Profile.Extended,
ZUGFeRDFormats.CII,
"Classic-PDF-invoice.pdf",
invoice);
// Read ZUGFeRD information
var loadedInvoice = await FacturXInvoicePdfProcessor.LoadFromPdfAsync(
"FacturX-invoice.pdf");
Dim invoice = FacturXInvoice.CreateInvoice("Invoice-01",
New DateTime(2025, 9, 3),
CurrencyCodes.EUR)
Await FacturXInvoicePdfProcessor.SaveToPdfAsync(
"FacturX-invoice.pdf",
ZUGFeRDVersion.Version25,
Profile.Extended,
ZUGFeRDFormats.CII,
"Classic-PDF-invoice.pdf",
invoice)
' Read ZUGFeRD information
Dim loadedInvoice = Await FacturXInvoicePdfProcessor.LoadFromPdfAsync(
"FacturX-invoice.pdf")
PDF generation and PDF & XML analysis
Generates a valid PDF/A-3 invoice from your existing PDF invoice and the FacturXInvoice structure.
Analyzes existing ZUGFeRD PDFs and XML files quickly for embedded invoice data, profiles and anything structurally suspicious.
var result = FacturXValidator.Validate("factur-x.xml");
if (!result.SummaryStatus)
{
foreach (var item in result.XmlValidationResult.ResultItems)
{
Console.WriteLine(item.Message);
}
}
Dim result = FacturXValidator.Validate("factur-x.xml")
If Not result.SummaryStatus Then
For Each item In result.XmlValidationResult.ResultItems
Console.WriteLine(item.Message)
Next
End If
Built-in validation
Check your invoices automatically against the current standards before you send them.
Evaluates the standard ZUGFeRD rules entirely offline for the basic checks. Extended online validation with Mustang, VeraPDF and Valitool.
The national formats Facturae (Spain), FatturaPA (Italy) and ebInterface (Austria) are validated as well – entirely in-process against the official XSD schemas shipped with the SDK, with no validation server and without consuming the validation quota.
Detailed validation and analysis
Validating invoices
Analyzing PDF files
Supports every feature of ZUGFeRD 2.5
FactoorSharp supports all the special features of ZUGFeRD 2.5, in particular
- Validation of the new business rules
- ManufacturerTradeParty (BG-X-94)
- Exemptions for surcharge taxes (BT-173 – BT-175, BT-X-591, BT-X-592)
- Financial adjustments (BG-34)
- Updated code lists
Supports every feature of ZUGFeRD 2.3 and 2.4
FactoorSharp supports all the special features of ZUGFeRD 2.3 and 2.4, such as
- Logistics Service Charge
- Designated Product Classification (BG-158)
- Applicable Product Characteristics (BG-32)
- Optional distinction between gross and net quantities and prices
- Serial numbers and batch numbers
- Alternative XML namespaces, for example those used by SAP
- Quantities per packaging unit
- Handling of sub-line items
Pricing
Each license covers the stated number of developers and includes the right to use FactoorSharp in production.
Licenses
Features:| License type | 1 year | 2 years -10% |
3 years -20% |
|---|---|---|---|
|
Freelancer
For sole traders, freelancers and micro-businesses with up to 2 developers |
On request. Write to us at sales@factoorsharp.com. | ||
|
SME
Up to 4 developers |
549.00 EUR
plus 19% VAT
|
999.00 EUR
plus 19% VAT
|
1,299.00 EUR
plus 19% VAT
|
|
Corporate
Unlimited developers |
1,099.00 EUR
plus 19% VAT
|
1,999.00 EUR
plus 19% VAT
|
2,599.00 EUR
plus 19% VAT
|
All prices are net prices plus 19 % VAT.
The Freelancer license is not intended for larger companies, corporate groups or enterprises, even if only a handful of developers there use the software. In those cases the SME license is the minimum requirement.
Additional validation calls
Features:| Package | 1,000 validations | 2,500 validations | 5,000 validations |
|---|---|---|---|
| Validation package |
129.00 EUR
plus 19% VAT
|
289.00 EUR
plus 19% VAT
|
509.00 EUR
plus 19% VAT
|
All prices are net prices plus 19 % VAT.
Frequently asked questions
Yes, at the document level: FactoorSharp creates and reads Peppol BIS Billing 3.0 as a CIUS on top of EN 16931 in UBL format. That covers the specification identifier (BT-24), the business process (BT-23) and the electronic addresses of seller and buyer (BT-34 / BT-49).
Transport is not included: sending invoices over the Peppol network (AS4) additionally requires an access point.
Besides ZUGFeRD, Factur-X and XRechnung, FactoorSharp validates the national e-invoicing formats Facturae (Spain, FACe), FatturaPA (Italy, Fattura Elettronica / SdI) and ebInterface (Austria). The version is detected automatically from the XML namespace in each case.
These three checks run entirely in-process against the official XSD schemas shipped with the SDK: no validation server, no network latency and no validation quota consumed. For Facturae, the embedded XAdES signature is evaluated as well.
Yes. Right after signing up you automatically get a 30‑day trial license with the full feature set – no payment details required.
We'll email you a reminder before it expires, so you can switch seamlessly to a paid license without any interruption to your integration.
ZUGFeRD, EN 16931 and XRechnung are fairly involved standards, and there is a certain amount of ground to cover before you are comfortable with them.
To make that easier, we provide extensive documentation, sample code and – above all – a coding agent skill that plugs straight into Claude Code, OpenAI Codex and other coding agents, which takes a great deal of the work out of the implementation.
Yes. Your subscription includes a perpetual right to use the version that was current when it expired. You may keep running that version indefinitely – in production and in software you have already shipped. Your invoicing keeps working.
What ends with the subscription are updates, new versions and support. ZUGFeRD, Factur‑X and XRechnung keep evolving, so we recommend renewing to stay compliant.