The free eConnect Validator: check whether your XML complies with UBL, BIS Billing, and NLCIUS.
Before sending an e-invoice, you want to be sure that the XML file is technically correct. The eConnect Validator checks your invoice against XML schemas, Schematron rules, and country-specific validations. The tool is freely available as an online validator.
The eConnect Validator performs multiple checks on your e-invoice file:
XML schema validation. Is the basic structure of the file correct? Are all required XML elements present and properly nested?
Schematron validation. Does the invoice comply with the business rules of the selected profile? This includes rules for VAT calculations, mandatory fields, and code lists.
Profile detection. The system automatically recognises which profile your invoice follows (BIS Billing V3, NLCIUS, PINT, XRechnung) and applies the corresponding validation rules.
Country-specific rules. Additional validation rules apply per country. For the Netherlands these are the NL-R rules, for Germany the DE-R rules, for Denmark the DK-R rules, and so on. The validator applies these automatically based on the country code in the invoice.
The validator supports all common e-invoice formats:
The online validator is available at /en/validator. You do not need to create an account.
When errors are found, the validator provides the exact error code, a description of the problem, and the location in the XML file (XPath). This tells you precisely what needs to be corrected.
The validator produces three types of messages:
Common error codes begin with a prefix indicating the domain: PEPPOL- for Peppol-wide rules, NL-R- for Dutch rules, BR- for base rules from EN 16931. The error description always states the expected behaviour.
When sending a credit note, a few specific validation errors occur regularly. The error appears at Peppol level (for API submissions, for example, as [API400.AT04] Invalid payload). Per rule, the cause and solution:
cac:Delivery/cbc:ActualDeliveryDate), or provide an invoicing period (BG-14). One of the two is mandatory.cac:Delivery/cac:DeliveryLocation/cac:Address/cac:Country/cbc:IdentificationCode) with an ISO 3166-1 alpha-2 code.cac:BillingReference/cac:InvoiceDocumentReference/cbc:ID with the invoice number of the original invoice. Mandatory for credit notes. See also Credit note variants.BR-IC-11 and BR-IC-12 are EN 16931 base rules that only apply when the credit note contains an intra-community VAT category; they do not occur for domestic supplies.
An invoice can contain a period at two levels: an invoice period at document level (BG-14) and a line period per invoice line (BG-26, for recurring services or subscriptions at line level). When both are used, Peppol requires each line period to fall within the overarching invoice period. The following errors appear if that condition is not met:
cac:InvoiceLine/cac:InvoicePeriod/cbc:StartDate) is equal to or later than the invoice period start date BT-73 (cac:InvoicePeriod/cbc:StartDate at document level).cac:InvoiceLine/cac:InvoicePeriod/cbc:EndDate) is equal to or earlier than the invoice period end date BT-74 (cac:InvoicePeriod/cbc:EndDate at document level).YYYY-MM-DD): end date greater than or equal to the start date. If no line period is needed, omit the entire cac:InvoiceLine/cac:InvoicePeriod block (BG-26), not just the dates. An empty or invalid date field still counts as present. Fill in at least a start or end date if the group is used (BR-CO-20).The underlying check for R110 is that the line period start date is equal to or later than the invoice period start date. If the error persists while the line period looks correct, check whether the issue lies at document level: either the invoice period (BT-73) is set too late, or the line period is unintentionally wider than intended. Both periods must contain each other: the invoice period is the outer boundary, and each line period must fall within it.
BR-30 (EN 16931) is a different rule from R110/R111: R110/R111 check whether the line period falls within the invoice period, while BR-30 only checks the order of two present line period dates (BT-135 greater than or equal to BT-134).
Additional period rules that can occur in the same context:
YYYY-MM-DD.These rules apply to both invoices (ubl:Invoice) and credit notes (ubl:CreditNote).
In addition to the manual validator, the eConnect platform also performs automatic validation at the moment of sending. If an invoice does not meet the requirements, sending is blocked and you receive an error message with the relevant validation rule.
For API users: the PSB validates every invoice at submission time and returns the validation results in the API response. This allows you to build validation into your own software process.
Validation rules are updated with every new release of the Peppol BIS Billing specification. eConnect updates the Schematron artefacts and code lists as soon as a new version becomes mandatory. The online validator always validates against the current release.
Tip: after a specification update, verify that your invoices are still valid. New rules may impose stricter requirements on fields that were previously optional.
For each error, the validator shows the exact error code, a description of the problem, and the location in the XML file (XPath). Errors must be resolved before sending, otherwise the invoice will be rejected on the Peppol network. Warnings are points of attention but do not block sending.
The validator supports Peppol BIS Billing V3, NLCIUS/SI-UBL 2.0, all PINT variants, XRechnung, and CII (Cross-Industry Invoice, including Factur-X). The format is detected automatically when you upload your XML file.
Yes. The eConnect platform automatically performs validation at the moment of sending. If an invoice does not meet the requirements, sending is blocked with an error message. API users receive the validation results in the API response.
Want to review sample files to check your own XML structure? Download sample files.
Validate your invoice