Peppol BIS Billing Validator - UBL & EN 16931 avatar

Peppol BIS Billing Validator - UBL & EN 16931

Pricing

from $4.00 / 1,000 invoice validateds

Go to Apify Store
Peppol BIS Billing Validator - UBL & EN 16931

Peppol BIS Billing Validator - UBL & EN 16931

Peppol BIS Billing validator for UBL invoice XML and EN 16931 technical checks. Run offline batch preflight with pinned XSD and Schematron profiles before access-point submission. Inspect the bundled rule versions; validation does not submit invoices or guarantee network acceptance.

Pricing

from $4.00 / 1,000 invoice validateds

Rating

0.0

(0)

Developer

Kamer Ozkan

Kamer Ozkan

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

18 days ago

Last modified

Categories

Features

Limited permissions

Share

Active rules UBL Billing

Validate Peppol BIS Billing UBL invoices before network submission. Every document is checked against Peppol BIS Billing 3.0.21, the release that is mandatory since 17 August 2026, together with EN 16931 1.3.16 and the UBL 2.1 schema.

Technical preflight only. ACCEPTED does not establish legal or tax validity, Peppol participant capability, SBDH or AS4 validity, successful network delivery, or recipient acceptance.

Run the live Actor

Rule decisions

ResultRules
conformanceStatusActive UBL 2.1, EN 16931 1.3.16, Peppol BIS Billing 3.0.21
previewConformanceStatusNext Peppol release, once OpenPeppol publishes one. NOT_EVALUATED while none is published

The versions.activeRuleset block identifies Peppol BIS Billing 3.0.21 and effectiveAt: 2026-08-17. When a newer release is published, a versions.previewRuleset block and preview findings are added again, so an ERP agent can tell active and future findings apart without parsing prose.

The rule packages, Saxon runtime, and Schematron compiler are downloaded only during the build and SHA-256 verified. Every executed XSD and XSLT also has its own SHA-256 in the manifest and is verified again before use. Runtime validation never downloads rules.

Quick start

The default input validates an official accepted Peppol UBL sample:

{
"documents": [
{
"documentId": "official-peppol-valid-sample",
"fileName": "base-example.xml",
"url": "https://raw.githubusercontent.com/itplr-kosit/validator-configuration-bis/release-3.0.20/test-files/good/ubl/base-example.xml"
}
],
"resultDetail": "FINDINGS",
"maxFindingsPerDocument": 100,
"storeXmlReport": false,
"storeHtmlReport": false
}

Each document can use exactly one source:

  • Console file upload
  • HTTPS URL with public-IP and redirect enforcement
  • Inline XML
  • Base64 XML
  • A record in your Apify key-value store

Invoice and CreditNote roots are supported. The input and output schemas work with the Apify API, MCP clients, Make, n8n, webhooks, and standard SDKs.

Input settings

FieldWhat it doesDefault
invoiceFilesUpload up to 100 UBL invoice or credit-note XML files in the Consoleempty
documentsUp to 100 API documents, each with one source: url (HTTPS), xml or base64; documentId and fileName are optionalofficial Peppol sample
sourceKeyValueStoreId + keyValueStoreKeysRead invoices from records in one of your key-value storesempty
resultDetailFINDINGS returns rule IDs, messages and locations; SUMMARY returns status and counts onlyFINDINGS
maxFindingsPerDocumentCaps the findings array (1 to 500); severity counts stay complete100
storeXmlReport / storeHtmlReportStore raw XML or readable HTML reports in the run key-value storeoff

Structured results

Every input produces one dataset item. A technically invalid invoice is a successful evaluation with REJECTED. A source or engine failure is NOT_EVALUATED.

These compact examples are taken from a real three-document Actor run. Every row also returns externalStateStatus: NOT_EVALUATED_EXTERNAL_STATE because participant, network, delivery, and recipient state are outside offline preflight.

Billing

The invoice-validated event costs $0.004.

  • ACCEPTED: billed once
  • REJECTED: billed once
  • NOT_EVALUATED: free
  • Active and (when published) preview decisions share one invoice charge
  • Dataset delivery does not add a second charge
  • The Actor stops before processing unless the event price is exactly $0.004

One malformed or unavailable source does not kill the remaining batch.

Release gates

Every build must pass:

  1. SHA-pinned official Peppol Invoice and CreditNote examples against the active 3.0.21 rule package.
  2. A deterministic mutation that must be rejected with BR-02.
  3. Runtime SHA-256 verification of every executed XSD and Schematron artifact.
  4. Source, security, batch-independence, billing-guard, report, and output-contract tests.

Security and privacy

  • DTDs, XML entities, and external references are blocked
  • HTTPS URL sources reject private, loopback, link-local, and metadata addresses
  • Redirects are revalidated
  • Source XML is not copied into dataset results
  • Optional reports are disabled by default
  • Every loaded document receives a SHA-256 digest
  • The container runs as a non-root user

Transition control

Peppol BIS Billing 3.0.21 became mandatory on 17 August 2026 and is now the active package; 3.0.20 is retired. When OpenPeppol publishes the next release (usually in November with a date the following year), it is added as a preview in one release-gated build, and on its mandatory date it moves to active the same way.

For custom access-point integration or high-volume support, contact the Actor owner through the Apify profile.

Integrations and API

  • ERP or billing pipeline: call the Actor with the Apify API (run-sync-get-dataset-items) right before you send an invoice to your access point, and block sending when conformanceStatus is REJECTED.
  • Batch checks: put up to 100 documents in one run; one bad source does not stop the others.
  • No-code: the official Apify apps for Make, Zapier and n8n can start a run and read the dataset; webhooks can notify your system when a run finishes.
  • AI agents: available through Apify's MCP server, see below.

This Actor is also exposed to AI agents through Apify's MCP server (mcp.apify.com): an agent can discover it by search and run it with the same pay-per-event billing, with no separate integration.

Complete live example records (accepted, rejected, and unevaluated) with the dataset schema: sample repository.

FAQ

Which Peppol BIS version is checked? Peppol BIS Billing 3.0.21 (mandatory since 17 August 2026) with EN 16931 1.3.16 and the UBL 2.1 schema. The active version is returned in versions.activeRuleset on every row.

Does ACCEPTED mean my invoice will be delivered? No. It is an offline technical preflight. Participant lookup, SBDH, AS4 transport and recipient acceptance are outside its scope.

What does a rejected invoice cost? The same $0.004 as an accepted one, because both are full evaluations. Documents that could not be loaded or evaluated (NOT_EVALUATED) are free.

Is my invoice data stored? Source XML is not copied into the dataset. Raw reports, which can contain invoice values, are only stored when you switch them on.

Can I validate credit notes? Yes, both Invoice and CreditNote roots are supported.

Support and feedback

  • Found a bug or missing a field? Open an issue on the Issues tab of this Actor. We reply within 48 hours and ship most fixes within a few days.
  • Have an idea for a feature? Issues are the fastest way to get it built.
  • If the Actor saves you time, a short review on this page helps other users find it.

E-invoice validator family

Same engine, same output contract, one validator per market: XRechnung & ZUGFeRD (Germany) | Poland KSeF FA(3) | France E-Invoice | Italy FatturaPA Parsing: ZUGFeRD & Factur-X PDF to JSON parser