NordInvoice / Guides / EN 16931 validation API
Validate e-invoices against EN 16931 via API
EN 16931 is the European standard every compliant e-invoice must satisfy. NordInvoice runs the full rule set, plus network profiles like Peppol BIS and XRechnung, and returns every violation as machine-readable JSON.
Validate one file
curl -X POST "https://nordinvoice.com/api/validate" \
-H "Authorization: Bearer nord_test_..." \
-F "[email protected]" \
-F "profile=peppol-invoice"
The response lists every failed rule with its official id (for example BR-CO-10), a human explanation and the exact location in the document. Fix, re-run, ship.
With the SDKs
// npm install nordinvoice
const outcome = await nord.validate.file(
{ content: xml, filename: 'invoice.xml' }, 'peppol-invoice')
console.log(outcome.valid, outcome.errors)
# pip install nordinvoice
outcome = nord.validate.file(xml, "invoice.xml", profile="peppol-invoice")
print(outcome["valid"], outcome["errors"])
What you can validate
- Formats: UBL 2.1, CII, and ZUGFeRD or Factur-X PDFs with embedded XML.
- Rule sets: 11 profiles, including
peppol-invoice,peppol-creditnoteandxrechnung-invoice. The full list lives in the validation docs. - Batches: up to 25 files per call on
/api/v1/validate/batch.
Warm validations take around 15 milliseconds per document on production hardware, so validating on every save is realistic.
Try it in the browser first