Taskr.Bis3 1.0.0

dotnet add package Taskr.Bis3 --version 1.0.0
                    
NuGet\Install-Package Taskr.Bis3 -Version 1.0.0
                    
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="Taskr.Bis3" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Taskr.Bis3" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="Taskr.Bis3" />
                    
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 Taskr.Bis3 --version 1.0.0
                    
#r "nuget: Taskr.Bis3, 1.0.0"
                    
#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 Taskr.Bis3@1.0.0
                    
#: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=Taskr.Bis3&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=Taskr.Bis3&version=1.0.0
                    
Install as a Cake Tool

Taskr.Bis3

Taskr.Bis3 is a lightweight .NET library for generating and validating BIS 3 compliant UBL invoice XML.

It is designed for:

  • ERP and billing backends
  • PEPPOL/BIS 3 invoice export workflows
  • validation pipelines before e-invoice delivery

Highlights

  • Invoice and credit note XML generation (Invoice / CreditNote)
  • Built-in BIS 3 rule checks and code-list validation
  • Deterministic totals and VAT rounding helpers
  • Unit-tested behavior (3 tests currently)

Quick Start

using System.Text;
using System.Xml.Linq;
using Taskr.Bis3;

var invoice = new Invoice
{
    InvoiceNumber = 1,
    OrderId = 1,
    IssueDate = new DateTime(2025, 1, 10),
    DueDate = new DateTime(2025, 1, 17),
    CurrencyCode = "DKK",
    BuyerReference = "BuyerRef-001",
    Seller = new InvoiceParty
    {
        Name = "Taskr ApS",
        VatId = "DK12345678",
        EndpointId = "7300010000001",
        Address = new InvoiceAddress
        {
            StreetName = "Example Street 1",
            CityName = "Copenhagen",
            PostalCode = "1050",
            CountryCode = "DK"
        }
    },
    Buyer = new InvoiceParty
    {
        Name = "Sample Customer",
        VatId = "DK87654321",
        EndpointId = "7300010000001",
        Address = new InvoiceAddress
        {
            StreetName = "Customer Road 2",
            CityName = "Aarhus",
            PostalCode = "8000",
            CountryCode = "DK"
        }
    },
    Payment = new InvoicePayment
    {
        PaymentMeansCode = PaymentMeansCode.PaymentToBankAccount,
        BankAccountId = "DK5000400440116243",
        BankAccountName = "Taskr ApS",
        BankAccountRegistrationId = "1234"
    },
    Lines =
    [
        new InvoicingInvoiceLine
        {
            LineId = "1",
            Description = "Consulting hours",
            Quantity = 4.25m,
            UnitCode = "HUR",
            UnitPrice = 150.50m,
            TaxRate = 25m,
            IsTaxable = true
        }
    ]
};

var xmlBytes = InvoiceXmlGenerator.Generate(invoice);
var document = XDocument.Parse(Encoding.UTF8.GetString(xmlBytes));
var errors = InvoiceXmlValidator.Validate(document);

Console.WriteLine($"Validation errors: {errors.Count}");

Requirements

  • .NET SDK 10.0

Install

Install from NuGet:

dotnet add package Taskr.Bis3

Public API

  • InvoiceXmlGenerator.Generate(Invoice invoice)byte[]
  • InvoiceXmlValidator.Validate(XDocument document)IReadOnlyList<string>
  • Invoice
    • Core fields: invoice id, dates, currency, buyer reference, seller/buyer/payment, lines
    • Helpers: GetTotals(), GetLineAmounts(InvoicingInvoiceLine line)
  • InvoiceParty, InvoiceAddress, InvoicePayment, InvoicingInvoiceLine, InvoiceTotals
  • PaymentMeansCode for supported payment types

License

This project is licensed under the MIT License. See LICENSE.

Product Compatible and additional computed target framework versions.
.NET 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.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0 88 2/20/2026