Skip to main content

Search OfficeIMO

Enter a topic, API type, or PowerShell command.

Electronic invoice engine

OfficeIMO.Invoicing

Create, read, convert and validate EN 16931, Factur-X/ZUGFeRD, XRechnung, Peppol BIS and Polish FA(3) electronic invoices from one typed .NET model.

MIT licensed No Office required Cross-platform .NET
Install dotnet add package OfficeIMO.Invoicing

Start with a working example

Find the input, generated output, and source for the document workflow you need.

Browse document examples →

One invoice model, several standards

OfficeIMO.Invoicing writes and reads CII and UBL invoices from a single typed Invoice. Each output names an exact specification release, syntax and profile, and projection rejects data loss unless you explicitly allow a profile's declared reduction.

using OfficeIMO.Invoicing;

var parsed = InvoiceParser.Read(File.ReadAllBytes("invoice.xml"));
if (parsed.HasCompleteMapping && parsed.Invoice.Lines.Count > 0) {
    parsed.Invoice.Lines[0].Quantity = 2m;
    InvoiceCalculator.UpdateDeclaredAmounts(parsed.Invoice);
    File.WriteAllBytes("invoice-ubl.xml", parsed.Write(new InvoiceXmlOptions(
        InvoiceSpecificationRelease.En16931_1_3_16, InvoiceSyntax.Ubl, InvoiceProfile.En16931)));
}

Useful for

  • Issuing Factur-X/ZUGFeRD 2.5.2 (all five profiles), EN 16931, XRechnung 3.0.2 and Peppol BIS Billing 3.0.21 invoices.
  • Converting between CII and UBL with every unsupported field reported instead of dropped.
  • Writing and reading Polish FA(3) invoices with national amounts kept separate from EN totals.
  • Producing a visible PDF and a hybrid PDF/A-3 Factur-X file from one snapshot with OfficeIMO.Invoicing.Pdf.
  • Checking exact bytes against pinned XSD and Schematron releases with OfficeIMO.Invoicing.Validation.
  • Submitting FA(3) invoices to KSeF online sessions and retrieving bound UPO receipts with OfficeIMO.Invoicing.KSeF.

The core has no external runtime dependencies and targets .NET Standard 2.0, .NET 8, .NET 10 and .NET Framework 4.7.2. Validation and KSeF target .NET 8 and .NET 10; business-rule validation needs a Java runtime and the rule archives you download. Validation results describe structure and pinned rules; they do not certify tax treatment, network delivery or KSeF acceptance.

Start with the invoicing guide or read the package README.

Same engine, other surfaces

Use OfficeIMO another way

Next step

Turn the package into a working document.

Follow a focused guide and inspect the API reference for this package.

Example source