UBL Invoice Pre-Check for Peppol avatar

UBL Invoice Pre-Check for Peppol

Under maintenance

Pricing

from $0.01 / invoice validated

Go to Apify Store
UBL Invoice Pre-Check for Peppol

UBL Invoice Pre-Check for Peppol

Under maintenance

Fast 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

Alessandro Isidori

Maintained by Community

Actor 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 bounded invoices array (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_data emits one per-document validation record; Actor.set_value("OUTPUT", ...) emits the aggregate result.
  • Smoke input containing only atlas_provenance emits 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.

  • Invoice documents use InvoiceTypeCode, InvoiceLine, and InvoicedQuantity.
  • CreditNote documents use CreditNoteTypeCode, CreditNoteLine, and CreditedQuantity.
  • ChargeIndicator=true or 1 increases the applicable total; ChargeIndicator=false or 0 decreases 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 Srl remains 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.txt
python -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.