PL/FACTUR — Factur-X & ZUGFeRD for Oracle PL/SQL

Create, import, validate and package Factur-X / ZUGFeRD hybrid electronic invoices directly inside Oracle Database. Build EN 16931 invoice data in PL/SQL, work with CII XML and package it into an existing PDF/A-3B invoice.

E-invoicing where your Oracle data already lives

PL/FACTUR provides an Oracle-native programming model for structured electronic invoices. Invoice data, validation, XML generation and Factur-X PDF packaging remain inside the database and are exposed through a PL/SQL API.

Pure PL/SQL API

Create and process electronic invoice data directly from Oracle applications without introducing a separate application-tier invoice engine.

Factur-X / ZUGFeRD

Generate and import Cross Industry Invoice XML and package structured invoice data together with the human-readable PDF document.

Validation built in

Validate the canonical invoice model against supported profiles, business rules, arithmetic rules, invoice-type semantics and embedded code lists before output.

Factur-X profiles from MINIMUM to EXTENDED

Select the structured invoice profile required by your business process while using one consistent PL/SQL programming model.

MINIMUM

Core invoice information for reduced structured-data requirements.

BASIC WL

Basic invoice information without structured line-item serialization.

BASIC

Structured invoice data including invoice line information.

EN 16931

European semantic e-invoicing model and the default PL/FACTUR profile.

EXTENDED

Expanded business information for more complex invoicing scenarios.

Start with invoice data or existing XML

PL/FACTUR supports both application-driven invoice generation and processing of existing Factur-X / ZUGFeRD CII documents.

Data-first workflow

Initialize an invoice model, populate it from your Oracle application, validate the result and serialize standards-based CII XML or create the final hybrid invoice.

pl_factur.Init(
  pl_factur.c_profile_en16931
);

pl_factur.SetInvoice(...);
pl_factur.SetSeller(...);
pl_factur.SetBuyer(...);
pl_factur.AddLine(...);
pl_factur.SetTotals(...);

pl_factur.Validate;

l_xml := pl_factur.GetXML;

XML-first workflow

Load an existing Factur-X / ZUGFeRD CII document into the canonical model, validate it and optionally inspect its invoice data before packaging it into the PDF carrier.

pl_factur.LoadXML(
  l_facturx_xml_blob
);

l_invoice :=
  pl_factur.GetInvoice;

pl_factur.PreparePDFCarrier(
  p_pdf    => l_pdfa3_invoice,
  p_result => l_result_pdf
);

One canonical invoice model

PL/FACTUR keeps invoice information in a canonical session model used consistently for validation, XML serialization, PDF packaging and read-only inspection.

Invoice parties

  • Seller and buyer identity
  • Postal addresses
  • VAT and registration identifiers
  • Electronic addresses
  • Contact information

Business data

  • Invoice and credit-note types
  • Order, contract and project references
  • Payment information
  • Invoice notes
  • Preceding invoice references

Amounts and tax

  • Invoice lines and prices
  • Allowances and charges
  • VAT categories and breakdowns
  • Invoice totals
  • Payment and due amounts

Turn an existing PDF/A-3B invoice into a hybrid Factur-X document

The visible invoice remains your application’s document. PL/FACTUR adds the structured Factur-X XML, associated-file information and required Factur-X XMP metadata to an existing PDF/A-3B carrier.

Preserve the visible invoice

The supplied PDF remains the base document. Existing pages, visible invoice content and existing PDF/A metadata are preserved.

Embed factur-x.xml

The CII invoice XML is embedded as factur-x.xml with the profile-specific associated-file relationship required by the hybrid invoice format.

Incremental PDF update

Carrier preparation uses an incremental PDF update rather than regenerating the visible invoice pages.

pl_factur.PreparePDFCarrier(
  p_pdf     => l_pdfa3_invoice,
  p_result  => l_facturx_pdf,
  p_moddate => sysdate
);

Package first. Sign the completed invoice afterwards.

Factur-X carrier preparation changes the PDF by adding XMP metadata and the embedded invoice XML. Apply the final PDF digital signature only after PL/FACTUR has created the completed hybrid invoice.

For PAdES digital signatures and trusted timestamps directly from Oracle PL/SQL, use PL/SIGN after the Factur-X packaging stage.

Clear responsibility between invoice data and visual PDF

PL/FACTUR handles

  • Canonical invoice data model
  • Factur-X / ZUGFeRD CII XML
  • Supported profile validation
  • EN 16931 business rules and code lists
  • Factur-X XMP metadata
  • Embedded factur-x.xml
  • Hybrid PDF packaging
  • Existing CII XML import

The application supplies

  • The visible invoice layout and pages
  • An already valid PDF/A-3B carrier
  • Required embedded fonts
  • PDF/A output intent and ICC data
  • Final external PDF/A acceptance testing

PL/FACTUR does not perform generic PDF-to-PDF/A conversion and does not claim PDF/A conformance for an arbitrary input PDF.

Built for Oracle business applications

Integrate structured e-invoicing into the same PL/SQL workflows that already manage your customers, orders, invoice data and PDF documents.

Oracle ERP applications

Create structured invoice data directly from existing Oracle business tables and PL/SQL processes.

Oracle APEX

Add Factur-X and ZUGFeRD invoice processing to applications whose business logic already runs in Oracle Database.

Invoice integration

Import external CII XML or create it from application data and package the result with your existing PDF/A invoice.

Try PL/FACTUR

Evaluate Factur-X / ZUGFeRD invoice processing directly in Oracle PL/SQL. Request access to a hosted sandbox or install PL/FACTUR in your own Oracle environment.

PLslash
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.