Free · no account · for the Netherlands

SI-UBL 2.0 / NLCIUS checker for Dutch e-invoices

Paste or drop your XML invoice. We check 30 rules of the Dutch SI-UBL 2.0 standard (NLCIUS, the format behind SimplerInvoicing), Peppol's 9 Netherlands rules and 103 EN 16931 rules — and say for every error what to change in your accounting software.

  • KvK number, address and reference
  • Payment means and VAT
  • SI-UBL 2.0 and Peppol BIS

Ook in het Nederlands:SimplerInvoicing-factuur controleren

Your invoice stays with you. The check runs in your browser: the invoice is not sent and not stored. We only count, anonymously, that the checker was used.

Not the official validator. We re-implement the official rules, but not all of them. For a final check before go-live, use the Dutch Peppol Authority's validator. What exactly is checked?

Sample
si-ubl-2-fouten.xml

Drop an XML file (or a PDF with embedded XML) here, max. 15 MB. Nothing is uploaded.

Sample invoice loaded. Replace the text with your own XML, or pick another sample.

4 errors found

A receiver validating against the official rules would reject this invoice. Below, each error says what to change.

Standard
SI-UBL 2.0 (NLCIUS, UBL)
Invoice
2026-0412 · 09/11/2026
Supplier
Studio Grachtwerk B.V.
Customer
Bakkerij De Korenschoof B.V.
Reference
–
Amount due
€2,457.71

Supplier in the Netherlands: the Dutch rules apply · 144 rules checked · 4 findings come from the Dutch rules.

  1. ErrorBR-NL-2line 2BT-10, BT-13

    No buyer reference or purchase order number

    An SI-UBL 2.0 invoice from a Dutch supplier must contain the customer's reference or the purchase order number, so the customer can route and match the invoice.

    Fix: Ask the customer for their reference or purchase order number; government customers usually state it in the order. Fill it in as the buyer reference (BT-10) or the order reference (BT-13). Export the invoice again.
    Technical message

    Neither a buyer reference (BT-10) nor a purchase order reference (BT-13) is given.

    About this rule
  2. ErrorBR-NL-1line 11BT-30

    Supplier's KvK number or OIN is missing

    A Dutch supplier must put its KvK (Chamber of Commerce) number on an SI-UBL 2.0 invoice as its legal registration number, with scheme 0106. Government bodies use their OIN with scheme 0190.

    Fix: Enter your 8-digit KvK number in the company settings as the legal registration number. Make sure it is exported with scheme 0106 (government: OIN with 0190). Export the invoice again.
    Expected
    schemeID 0106 (KvK) or 0190 (OIN)
    Technical message

    The seller has no KvK or OIN number (BT-30).

    About this rule
  3. ErrorBR-NL-4line 39BT-50, BT-52, BT-53

    Dutch customer's address is incomplete

    When a Dutch supplier invoices a customer in the Netherlands in SI-UBL 2.0, the customer's address must contain street, city and post code.

    Fix: Complete the customer record: street and house number, post code and city. Export the invoice again.
    Technical message

    The Dutch buyer's address has no post code.

    About this rule
  4. ErrorBR-NL-12line 59BT-81

    Payment method code not allowed

    An SI-UBL 2.0 invoice from a Dutch supplier may only use payment method codes 30, 48, 49, 57, 58 or 59.

    Fix: Use 58 for a SEPA credit transfer or 30 for a credit transfer. Use 59 for SEPA direct debit, 49 for direct debit, 48 for card payment and 57 for a standing agreement. Export the invoice again.
    Found
    31
    Expected
    30, 48, 49, 57, 58 or 59
    Technical message

    Payment means code 31 is not one of 30, 48, 49, 57, 58 or 59.

    About this rule

What this check does and doesn't do

The Dutch rules come from the Dutch Peppol Authority's SI-UBL 2.0 validatieset 2.0.3.13 (published 21 May 2026, in force from 17 August 2026), and we test them against the Authority's official test files. Errors from those official rules decide the verdict; our own extra checks are shown separately.

Checked

  • 30 SI-UBL 2.0 / NLCIUS rules: 13 errors (KvK number, address, reference, payment means…) and 17 warnings for fields the standard advises against
  • Peppol BIS Billing 3.0's 9 Netherlands rules (NL-R-001 … 009), for Peppol invoices from Dutch suppliers
  • 103 EN 16931 rules: mandatory fields, VAT categories and every calculation
  • UBL and CII (NLCIUS CII), invoices and credit notes
  • Separately: check digits of VAT numbers and IBANs (not an official rule)

Not checked

  • XML Schema (XSD): element order and unknown elements
  • Not every EN 16931 rule, and not the UBL syntax rules (UBL-SR, UBL-CR)
  • The CII warning BR-NL-22 (subject code on an invoice note)
  • Extensions of NLCIUS, such as SETU for staffing
  • Whether the receiver is on Peppol — use the Peppol ID lookup for that

The official check

The Dutch Peppol Authority offers its own validation tool and publishes the validation rules on GitHub. Use that for the final check; your Peppol service provider also validates every invoice before sending.

How it works

  1. 1

    Export the XML

    Download the UBL or SI-UBL invoice from your accounting software, or open the XML file you received.

  2. 2

    Paste or drop the file

    The check starts right away. Nothing is uploaded; you can also try one of the sample invoices.

  3. 3

    Fix each finding

    For every error you see the rule, the line in the XML file and what to change. Change it in your software and export again.

For integrations and AI agents: the same check over the REST API and as the free MCP tool check_si_ubl. REST API · MCP

Frequently asked questions

What is SI-UBL 2.0, and what does SimplerInvoicing have to do with it?
SI-UBL 2.0 is the Dutch implementation of the European e-invoicing standard EN 16931, also called NLCIUS. The name comes from SimplerInvoicing, the foundation that rolled out Peppol in the Netherlands. Since 1 October 2020 the Dutch Peppol Authority (NPa) runs that framework, but many accounting packages still call sending 'SimplerInvoicing'.
Is this the official validator?
No. InvoiceVerify re-implements the official rules and tests them against the Peppol Authority's test files, but it doesn't check the XML Schema or every EN 16931 rule. For the final check use the Dutch Peppol Authority's validator; your service provider also validates every invoice before sending.
How is SI-UBL 2.0 different from Peppol BIS Billing 3.0?
Both are based on EN 16931 and travel over the same Peppol network. Peppol BIS Billing 3.0 is the international standard; SI-UBL 2.0 is the Dutch variant with its own rules, such as the supplier's mandatory KvK number or OIN and a reference or order number. According to the Peppol Authority, service providers in the Netherlands must support both. An invoice states its standard in the CustomizationID; this check reads it.
Why don't I get any KvK or address findings?
Most Dutch rules only apply when the supplier is in the Netherlands (country code NL in the seller's address), and some only when the customer is too. With another country we skip those rules, as the official validator does.
My file has no SI-UBL 2.0 identifier. Can I still check it?
Yes. Without the identifier we check it as a plain EN 16931 or Peppol invoice. The 'Check as SI-UBL 2.0 anyway' button applies the Dutch rules; rule SI-V20-INV-R000 then also reports the missing identifier.
Is my invoice stored?
No. The check runs in your browser and the invoice is not sent. We only count, anonymously, how often the checker is used — no file name, no contents.

Read next