InvoiceLint.Core
0.1.0-dev.2
dotnet add package InvoiceLint.Core --version 0.1.0-dev.2
NuGet\Install-Package InvoiceLint.Core -Version 0.1.0-dev.2
<PackageReference Include="InvoiceLint.Core" Version="0.1.0-dev.2" />
<PackageVersion Include="InvoiceLint.Core" Version="0.1.0-dev.2" />
<PackageReference Include="InvoiceLint.Core" />
paket add InvoiceLint.Core --version 0.1.0-dev.2
#r "nuget: InvoiceLint.Core, 0.1.0-dev.2"
#:package InvoiceLint.Core@0.1.0-dev.2
#addin nuget:?package=InvoiceLint.Core&version=0.1.0-dev.2&prerelease
#tool nuget:?package=InvoiceLint.Core&version=0.1.0-dev.2&prerelease
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:
- InvoiceLint.Core — rule interface, catalog, validator, diagnostics.
- InvoiceLint.Testing — catalog checks and mutation helpers for pack tests.
- 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 | Versions 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. |
-
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 |