UBL Invoice Pre-Check for Peppol
Under maintenancePricing
from $0.01 / invoice validated
UBL Invoice Pre-Check for Peppol
Under maintenanceFast deterministic pre-checks for UBL invoices before Peppol submission. Validates core invoice structure and consistency rules. Not a full EN 16931 or official Peppol conformance validator.
Pricing
from $0.01 / invoice validated
Rating
0.0
(0)
Developer
Alessandro Isidori
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
23 days ago
Last modified
Categories
Share
Deterministic restricted Peppol BIS Billing 3.0 subset validator
Private Atlas Actor for bounded, offline validation of inline UBL Invoice and CreditNote documents.
Contract
- Input is one inline
invoice_xml, a boundedinvoicesarray (maximum 8 documents), or the provenance-only smoke contract. - Each XML document is limited to 131,072 UTF-8 bytes; the combined XML in a single or batch input is limited to 1,048,576 UTF-8 bytes. Schema and runtime also cap each XML string at 131,072 characters.
- The Actor performs no network fetches and accepts no URL, file, credential, or remote-document input.
- Runtime egress remains disabled by the Actor policy (
external_hosts: []). Actor.push_dataemits one per-document validation record;Actor.set_value("OUTPUT", ...)emits the aggregate result.- Smoke input containing only
atlas_provenanceemits a smoke dataset record and a separate zero-count aggregate output.
Validation scope
This implementation is a deterministic restricted subset, not a complete Peppol conformance engine. It checks the declared Peppol BIS Billing 3.0 identifiers, selected UBL structure, mandatory parties and electronic addresses, country and VAT scheme fields, line arithmetic, line- and document-level allowances and charges, tax totals, currencies, monetary-total reconciliation, and XML declaration safety.
Invoicedocuments useInvoiceTypeCode,InvoiceLine, andInvoicedQuantity.CreditNotedocuments useCreditNoteTypeCode,CreditNoteLine, andCreditedQuantity.ChargeIndicator=trueor1increases the applicable total;ChargeIndicator=falseor0decreases it. Other values are invalid at both line and document level.- DTD and entity declarations are rejected before XML parsing, while ordinary text containing words such as
Public Systems Srlremains valid.
No official OpenPeppol ruleset is vendored or executed offline. This Actor therefore makes no full-conformance, national-CIUS, legal, or accounting claim. Documents requiring national extensions or rules outside this subset need separate validation.
Offline schemas
.actor/actor.json links Apify to output_schema.json, whose results output exposes the default Dataset items. input_schema.json defines inline inputs and smoke contracts; dataset_schema.json defines each pushed record; and provenance_schema.json defines the bounded provenance object. .actor/actor_schema.json validates the private bounded atlas-apify.json configuration. The remaining offline schemas use schemaVersion: 1.
Local checks
python -m pip install --require-hashes --requirement requirements.txtpython -m unittest discover -s tests -p 'test_*.py'docker build --tag peppol-bis-invoice-validator:local .
These are source-only checks. They do not run the Actor, call Apify services, publish, deploy, or change provider lifecycle state.