Peppol BIS Billing Preflight Validator - UBL & EN 16931
Pricing
from $4.00 / 1,000 invoice validateds
Peppol BIS Billing Preflight Validator - UBL & EN 16931
Validate UBL invoices against active Peppol BIS Billing 3.0.20 rules and preview the mandatory 3.0.21 rules effective 17 August 2026. Offline e-invoice validation for Belgium's B2B einvoicing mandate and any Peppol access point flow, with EN 16931 findings before network submission.
Pricing
from $4.00 / 1,000 invoice validateds
Rating
0.0
(0)
Developer
Kamer Ozkan
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
7 hours ago
Last modified
Categories
Share
Validate Peppol BIS Billing UBL invoices before network submission. Every document receives the active 3.0.20 result and a separate 3.0.21 forward-preview result for the mandatory 17 August 2026 transition.
Technical preflight only.
ACCEPTEDdoes not establish legal or tax validity, Peppol participant capability, SBDH or AS4 validity, successful network delivery, or recipient acceptance.
Two rule decisions in one call
| Result | Rules |
|---|---|
conformanceStatus | Active UBL 2.1, EN 16931 1.3.15, Peppol BIS Billing 3.0.20 |
previewConformanceStatus | Upcoming UBL 2.1, EN 16931 1.3.16, Peppol BIS Billing 3.0.21 |
The versions.previewRuleset block always identifies Peppol BIS Billing 3.0.21 and effectiveAt: 2026-08-17, so an ERP agent can distinguish active and future findings 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.
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 onceREJECTED: billed onceNOT_EVALUATED: free- Active and 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:
- SHA-pinned official Peppol Invoice and CreditNote examples against the active 3.0.20 and preview 3.0.21 rule packages.
- A deterministic mutation that must be rejected with
BR-02. - Runtime SHA-256 verification of every executed XSD and Schematron artifact.
- 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
On 17 August 2026, the 3.0.21 package must move from preview to active in one release-gated build. The previous active package will then be retired, the real fixtures rerun, and the README versions block updated.
For custom access-point integration or high-volume support, contact the Actor owner through the Apify profile.
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.
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