eliDocs
Country Guides

Netherlands

Dutch B2G e-invoicing with Beliq, Peppol BIS 3.0 UBL, EAS 9944 NL:VAT routing, and the Logius / Digipoort / SimplerInvoicing transmission boundary; NLCIUS overlay validation is implemented and fully verified.

The Netherlands’ e-invoicing landscape uses Peppol BIS Billing 3.0 UBL (EN 16931) on the cross-border path. The country also maintains a national CIUS overlay on Peppol BIS, NLCIUS, which Beliq implements and validates (see the NLCIUS section below). Authority: Logius (Dutch government gateway operator); the Dutch Peppol Authority oversees Peppol operations.

So a Dutch invoice in Beliq is a Peppol BIS invoice with Dutch parties (EAS 9944 NL:VAT, or secondary 0106 KvK / 0190 OIN). See the Peppol BIS format reference for the full element layout.

Mandate timing

Dutch public bodies have accepted Peppol e-invoices for years. There is no domestic B2B mandate today; the next hard date is the EU-wide ViDA obligation for cross-border trade.

DateWhat changes
2019Public-sector bodies must be able to receive EN 16931 e-invoices; central government has required them since 2017.
1 July 2030EU ViDA introduces mandatory structured e-invoicing and digital reporting for cross-border B2B.

There is no domestic B2B e-invoicing mandate today; B2B e-invoicing is voluntary and needs the recipient's agreement. The next hard date is the EU ViDA cross-border obligation.

Last verified against the European Commission eInvoicing Netherlands country page on 9 July 2026. Official source.

If you sell to Dutch public-sector buyers today, you are already in scope. B2B remains voluntary until ViDA harmonisation lands. For the dates beliq tracks across every covered country, see the mandate calendar.

What Beliq does today

  • Generate Dutch Peppol invoices via standard: "peppol-bis" (profile peppol), addressed with the Dutch VAT endpoint scheme (NL:VAT, Peppol EAS 9944). Secondary schemes 0106 (KvK Chamber of Commerce) and 0190 (OIN Dutch Originator’s Identification Number) are also accepted.
  • Validate and parse Peppol BIS UBL against the full EN 16931 + Peppol BIS 3.0 Schematron (peppolVersion in the response).
  • Compliance status for netherlands_peppol is supported; it rides the fully-verified Peppol BIS pipeline (9 OpenPeppol positive examples + 227 negative test cases).

NLCIUS validation

NLCIUS is the Netherlands’ national CIUS overlay on Peppol BIS, maintained by the Nederlandse Peppol Autoriteit (NPa) at peppolautoriteit-nl/validation (MIT-licensed; STPE / Stichting Simplerinvoicing copyright). It tightens Peppol BIS for Dutch domestic use cases with BR-NL-* Schematron rules — most notably BR-NL-1 and BR-NL-10 requiring Dutch suppliers + domestic customers to carry a KvK (Chamber of Commerce) or OIN legal-entity identifier in addition to the VAT id.

Beliq implements NLCIUS via the dedicated netherlands-nlcius profile (current artifact: NPa SI-UBL 2.0 version 2.0.3.13). Call POST /v1/generate with standard: "peppol-bis" and profile: "netherlands-nlcius"; validation routes through the dedicated NLCIUS arm in the engine and surfaces netherlandsNlciusVersion in the response. The profile is fully-verified: the full 120-fixture NPa SI-UBL 2.0 authority testset is vendored and asserted by a Schematron-only harness. See the Netherlands NLCIUS format reference for the compliance detail.

For the full technical contract (URN prefix, vendored XSLT, response metadata, BR-NL routing via KvK EAS 0106), see the Netherlands NLCIUS format reference.

In practice, both paths are available. Use the plain peppol profile for cross-border Dutch B2B; use the netherlands-nlcius profile when the receiving party (typically a Dutch public-sector body or a strict private-sector consumer) opts into the stricter overlay.

What Beliq does not do (Peppol transmission boundary)

The Netherlands’ network is the Peppol Network. Beliq is not a Peppol Access Point. It does not:

  • Transmit invoices over Peppol or register you as a Dutch Peppol participant.
  • Operate the 4-corner exchange on your behalf.
  • Submit invoices to Digipoort on your behalf (Digipoort submission is Peppol-AP-routed BYOC).
  • Submit signed documents to Digipoort on your behalf (the gateway is Peppol-AP-routed BYOC).

You send Beliq’s UBL output through your chosen Access Point (BYOC). Beliq’s job ends at a correct, Peppol-valid document.

Integration architecture (Beliq vs Peppol Access Point vs Digipoort)

Concern In Beliq today Outside Beliq (your stack / partner)
Peppol BIS 3.0 UBL invoice XML Generate, Validate, Parse
Peppol Network transmission (4-corner) Not offered, see boundary above Your Access Point provider
Digipoort B2G submission Not offered (Peppol-AP-routed BYOC) Your Access Point provider
NLCIUS overlay validation Offered via the netherlands-nlcius profile (SI-UBL 2.0.3.13) — see Netherlands NLCIUS format reference
SimplerInvoicing routing Not offered Your Access Point provider

Generating a Dutch Peppol invoice

Address both parties with the Dutch VAT endpoint scheme (NL:VAT, EAS 9944) via the peppol block. Use EUR for the invoice currency. Provide either a buyerReference or an orderReference (Peppol requires one). The simpler alternative is to omit the peppol block and pass a vatId (NL…B…) + address.countryCode: "NL"; Beliq then derives the NL:VAT scheme (9944) automatically.

generate-netherlands-peppol.sh
curl -X POST https://api.beliq.eu/v1/generate \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "standard": "peppol-bis",
    "profile": "peppol",
    "output": "xml",
    "invoice": {
      "number": "2026-0001",
      "issueDate": "2026-06-04",
      "currencyCode": "EUR",
      "buyerReference": "NL-PO-7711",
      "seller": {
        "name": "Test Verkoper B.V.",
        "vatId": "NL123456789B01",
        "peppol": { "schemeId": "9944", "id": "NL123456789B01" },
        "address": { "street": "Damrak 1", "city": "Amsterdam", "postalCode": "1012 LG", "countryCode": "NL" }
      },
      "buyer": {
        "name": "Test Koper B.V.",
        "vatId": "NL987654321B02",
        "peppol": { "schemeId": "9944", "id": "NL987654321B02" },
        "address": { "street": "Coolsingel 2", "city": "Rotterdam", "postalCode": "3011 AA", "countryCode": "NL" }
      },
      "lines": [
        {
          "description": "Professional services",
          "quantity": 1,
          "unitCode": "C62",
          "unitPrice": 100.00,
          "lineTotal": 100.00,
          "vatRate": 21,
          "vatCategoryCode": "S"
        }
      ],
      "taxSummary": [
        { "vatCategoryCode": "S", "vatRate": 21, "taxableAmount": 100.00, "taxAmount": 21.00 }
      ],
      "totalNetAmount": 100.00,
      "totalTaxAmount": 21.00,
      "totalGrossAmount": 121.00
    }
  }'

Validation behaviour

On /v1/validate and /v1/generate, Dutch invoices on the plain peppol profile run the full EN 16931 + Peppol BIS 3.0 Schematron; failures carry the relevant BR-* / PEPPOL-* rule id. The response reports profileDetected: "peppol" and a peppolVersion. CreditNote payloads are supported (documentType: "creditnote"). The NLCIUS-specific BR-NL-* rules do not fire on this plain peppol path; select the netherlands-nlcius profile to validate the NLCIUS overlay (see the NLCIUS section above).

Further reading