InvoiceLint.Core 0.1.0-dev.2

This is a prerelease version of InvoiceLint.Core.
dotnet add package InvoiceLint.Core --version 0.1.0-dev.2
                    
NuGet\Install-Package InvoiceLint.Core -Version 0.1.0-dev.2
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="InvoiceLint.Core" Version="0.1.0-dev.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="InvoiceLint.Core" Version="0.1.0-dev.2" />
                    
Directory.Packages.props
<PackageReference Include="InvoiceLint.Core" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add InvoiceLint.Core --version 0.1.0-dev.2
                    
#r "nuget: InvoiceLint.Core, 0.1.0-dev.2"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package InvoiceLint.Core@0.1.0-dev.2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=InvoiceLint.Core&version=0.1.0-dev.2&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=InvoiceLint.Core&version=0.1.0-dev.2&prerelease
                    
Install as a Cake Tool

InvoiceLint.Core

Native .NET rule engine for e-invoice XML. No Java at runtime. No Saxon. No remote calls.

Install

dotnet add package InvoiceLint.Core --version 0.1.0-dev.2

Quickstart

using System.Xml.Linq;
using InvoiceLint;

var result = Validator.Validate(xml, MyRulePack.Instance);
if (!result.IsValid)
{
    foreach (var issue in result.Issues)
        Console.WriteLine($"{issue.RuleId} {issue.Severity} {issue.Location}: {issue.Message}");
}

Host a pack (IRulePack) with an explicit rule list and catalog. InvoiceLint.Core does not use runtime reflection.

using System.Xml.Linq;
using InvoiceLint;

public sealed class MyRulePack : IRulePack
{
    public static MyRulePack Instance { get; } = new();

    public string Id => "toy";
    public RuleCatalog Catalog { get; } = new(
        "toy",
        "1.0",
        [new RuleCatalogEntry("toy-flag", "Shared", Severity.Fatal, "Flag must be ok.")]);
    public IReadOnlyList<IValidationRule> Rules { get; } = [new ToyFlagRule()];
    public bool Accepts(XElement root) => root.Name.LocalName == "Doc";
}

public sealed class ToyFlagRule : IValidationRule
{
    public string Id => "toy-flag";

    public IEnumerable<ValidationIssue> Evaluate(RuleContext context)
    {
        var flag = context.Root.Element(context.Root.Name.Namespace + "Flag");
        if (flag is null || flag.Value != "ok")
            yield return context.Fail(Id, flag);
    }
}

Load catalog JSON with RuleCatalogJson.Load(stream).

What this package is

MIT engine used by jurisdiction rule packs:

  1. InvoiceLint.Core — rule interface, catalog, validator, diagnostics.
  2. InvoiceLint.Testing — catalog checks and mutation helpers for pack tests.
  3. Commercial rule packs (later) — EN 16931, XRechnung, Peppol BIS, France CTC.

AeInvoice is the UAE PINT AE pack on this engine.

Docs

Resource What
Product page Canonical docs + NuGet link
Getting started gist Same how-to mirror
NuGet Gallery Package versions and downloads
InvoiceLint.Testing Test kit product page

License

MIT.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.0

    • No dependencies.
  • net8.0

    • No dependencies.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on InvoiceLint.Core:

Package Downloads
AeInvoice

Create, read and validate UAE e-invoices (PINT AE 1.0.4, UBL 2.1) natively in .NET. No Java, no remote calls.

InvoiceLint.Testing

Test helpers for InvoiceLint rule packs: catalog checks and XML mutations.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.0-dev.2 74 10/22/2026
0.1.0-dev.1 85 10/14/2026