eliDocs
Country Guides

Netherlands

Dutch B2G e-invoicing with Peppol BIS 3.0 UBL, EAS 9944 NL:VAT routing, NLCIUS overlay validation, and the Digipoort / SimplerInvoicing boundary.

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

Mandate timing

Dutch public bodies have had to accept EN 16931 e-invoices since 18 April 2019. There is no domestic B2B mandate today. On 11 September 2026 the cabinet announced that it plans to make domestic B2B e-invoicing mandatory from 1 July 2030, the date the EU-wide ViDA obligation starts for cross-border B2B trade inside the EU, with domestic reporting to the Belastingdienst following on 1 July 2031. That plan is not law yet: the draft bill goes to consultation in autumn 2026.

DateWhat changes
18 April 2019Every contracting authority, central and decentral alike, must be able to receive and process EN 16931 e-invoices, under the law of 20 December 2017 that transposed the EU e-invoicing directive.
1 July 2030EU ViDA makes structured e-invoicing and digital reporting mandatory for intra-EU B2B. Planned, not law yet: the cabinet extends mandatory e-invoicing to domestic B2B on the same date.
1 July 2031Planned, not law yet: businesses report a selection of data from their domestic B2B e-invoices to the Belastingdienst.

Domestic B2B e-invoicing is voluntary today and needs the recipient's agreement. The 2030 and 2031 domestic dates are a cabinet decision announced to parliament on 11 September 2026, not law: a draft bill goes to internet consultation in autumn 2026 and to the Tweede Kamer before the 2027 summer recess. Businesses under the small-business scheme (KOR) are exempt from the domestic obligation. Which network domestic e-invoices must travel over is not decided yet; research the government commissioned advised prescribing Peppol.

Last verified against the State Secretary for Finance's letter to parliament of 11 September 2026 on e-invoicing and reporting, the law of 20 December 2017 (Staatsblad 2018, 1) with its commencement decree (Staatsblad 2018, 216), the Belastingdienst's invoicing guidance, and Council Directive (EU) 2025/516 (ViDA) for the cross-border date on 23 September 2026. Official source.

If you sell to Dutch public-sector buyers today, you are already in scope. B2B stays voluntary, with the recipient’s agreement, until the 2030 obligations take effect. For the dates Beliq tracks across every covered country, see the mandate calendar.

What Beliq does today

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 Peppol BIS UBL against the full EN 16931 + Peppol BIS 3.0 Schematron (peppolVersion in the response). Parse reads its fields and runs no rules.
  • Validation depth on the plain Peppol path is Authority-checked: Beliq asserts verdict parity against OpenPeppol’s own unit-test corpus (335 cases) plus its published example invoices. OpenPeppol’s own Dutch rules (the NL-R-* family, which is not the NLCIUS overlay described below) ride that same pinned Schematron, and OpenPeppol’s Dutch unit-test suite (21 cases) is vendored and asserted beside the shared one. See how verification works for the tier definitions and the verificationTier field that reports them.
NLCIUS validation

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 overlay is Authority-checked: 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)

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).

Today you send Beliq’s UBL output through your chosen Access Point (BYOC). Managed delivery over Peppol is in build.

Integration architecture (Beliq vs Peppol Access Point vs Digipoort)

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 n/a
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 n/a
SimplerInvoicing routing Not offered Your Access Point provider
Generating a Dutch Peppol invoice

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 }
      ],
      "paymentMeans": {
        "typeCode": "30",
        "iban": "NL91ABNA0417164300"
      },
      "totalNetAmount": 100.00,
      "totalTaxAmount": 21.00,
      "totalGrossAmount": 121.00
    }
  }'
Validation behaviour

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

Further reading