Peppol BIS Billing Validator - UBL & EN 16931
Pricing
from $4.00 / 1,000 invoice validateds
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
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
7 days ago
Last modified
Categories
Share
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.
ACCEPTEDdoes not establish legal or tax validity, Peppol participant capability, SBDH or AS4 validity, successful network delivery, or recipient acceptance.
Rule decisions
| Result | Rules |
|---|---|
conformanceStatus | Active UBL 2.1, EN 16931 1.3.16, Peppol BIS Billing 3.0.21 |
previewConformanceStatus | Next 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.
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 (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:
- SHA-pinned official Peppol Invoice and CreditNote examples against the active 3.0.21 rule package.
- 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
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.
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.
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