Validation
xrechnung-csharp supports both semantic validation and profile-specific checks.
EN 16931 semantic validation
var en16931 = new EInvoice.Core.Validation.EN16931Validator();
var result = en16931.Validate(invoice);
By default, En16931Validator only evaluates EN 16931 business rules.
No UBL-CR advisory checks are executed unless you opt in explicitly.
Optional UBL-CR warning checks (opt-in)
For UBL document quality guidance, you can opt in to a dedicated UBL-CR warning set:
UBL-CR-001: UBL extensions are discouragedUBL-CR-002:UBLVersionIDshould be absent or equivalent to UBL 2.1UBL-CR-003:ProfileExecutionIDis discouraged
All UBL-CR findings are emitted as ValidationSeverity.Warning.
using EInvoice.Core.Validation;
var validator = En16931Validator.CreateForUblProfile(new UblCrValidationContext
{
HasUblExtensions = true,
UblVersionId = "2.0",
ProfileExecutionId = "EXEC-1"
});
var result = validator.Validate(invoice);
Model coverage notes
The EN 16931 Invoice model intentionally does not include raw UBL syntax fields such as
UBLExtensions, UBLVersionID, and ProfileExecutionID.
Therefore, UBL-CR checks are designed as explicit metadata-based opt-in:
- if metadata is provided via
UblCrValidationContext, rules are evaluated; - if metadata is absent (
null), the corresponding rule is skipped.
XRechnung validation
var xrechnung = new EInvoice.Core.Validation.XRechnungValidator();
var result = xrechnung.Validate(invoice);
For official KoSIT validation flows, refer to package-level validator integrations documented in the repository README.